ConvNeXt

ConvNeXt là bộ phân loại ảnh được xây dựng hoàn toàn từ các phép tích chập tiêu chuẩn, được hiện đại hóa theo từng block từ ResNet theo các lựa chọn thiết kế của vision transformer. LibreYOLO hỗ trợ mô hình này cho một tác vụ: phân loại.

Tác vụ
classify
Kích thước
t, s, b at 224 px
Cài đặt
pip install libreyolo
Bậc hỗ trợ
Được hỗ trợ, từ v. Các mô hình huấn luyện bổ trợ: luôn giữ CI ở trạng thái xanh, tính năng được bổ sung khi có cơ hội.
Thượng nguồn
ConvNeXt của Meta AI (FAIR), Apache-2.0. Bài báo, mã nguồn
Giấy phép
Mã nguồn MIT, trọng số Apache-2.0. Sử dụng thương mại

Cài đặt

ConvNeXt không cần extra tùy chọn. Mọi thành phần mà mô hình import đều có trong bản cài đặt cơ sở.

bash
pip install libreyolo

Tinh chỉnh bằng adapter với lora=True là ngoại lệ và cần extra lora.

bash
pip install "libreyolo[lora]"

Dự đoán

Trọng số được tải về từ Hugging Face trong lần sử dụng đầu tiên và được lưu vào bộ nhớ đệm cục bộ.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreConvNeXtt-cls.pt")result = model(SAMPLE_IMAGE, save=True) print(result.probs.top1, result.probs.top1conf)print(result.probs.top5)
CLI
libreyolo predict model=LibreConvNeXtt-cls.pt source=cat.jpg save=True

Đối tượng Results trả về cũng là đối tượng mà mọi họ mô hình đều trả về, vì vậy việc chuyển sang mô hình khác chỉ cần thay đổi một dòng. Bộ phân loại không có box hay mặt nạ (mask): result.probs chứa dự đoán cho toàn ảnh, với top1, top5, top1conftop5conf. conf, ioumax_det được chấp nhận để giữ tính tương đồng của API nhưng không có tác dụng vì không có gì để áp dụng ngưỡng hoặc loại bỏ trên một vector xác suất duy nhất. Xem dự đoán để biết về nguồn, xử lý luồng và kết quả.

Biến thể

Ba kích thước tiny/small/base đều được huấn luyện và đánh giá theo cùng một cách, vì vậy việc chọn một kích thước là sự đánh đổi trực tiếp giữa số lượng tham số và độ chính xác. Tác vụ được cố định: mọi kích thước chỉ hỗ trợ phân loại. Tên tệp trọng số của mọi kích thước đều kết thúc bằng -cls.pt, và hậu tố đó là thứ factory đọc để định tuyến đến họ mô hình này; không cần đối số task=.

Huấn luyện

Quá trình tinh chỉnh bắt đầu từ backbone ImageNet đã phát hành và tự động xây dựng lại lớp phân loại cuối cùng theo số lượng lớp đối tượng của dataset đích.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreConvNeXtt-cls.pt")model.train(data="imagenette160", epochs=5)
CLI
libreyolo train model=LibreConvNeXtt-cls.pt data=imagenette160 epochs=5
LoRA
from libreyolo import LibreYOLO model = LibreYOLO("LibreConvNeXtt-cls.pt")model.train(data="imagenette160", epochs=5, lora=True)
Multi-GPU
libreyolo train model=LibreConvNeXtt-cls.pt data=imagenette160 \  epochs=50 device=0,1 batch=-1

Khi giữ nguyên thiết lập, trainer chạy 100 epoch ở lr0=1e-3 với AdamW, batch 64 và early stopping sau 50 epoch không có cải thiện. data chấp nhận thư mục gốc của tập dữ liệu (dataset) (train/val/, mỗi lớp đối tượng một thư mục), tên rút gọn đã biết như imagenette160 hoặc URL .zip. Các block của ConvNeXt có những MLP nn.Linear mà LoRA cần, vì vậy lora=True được hỗ trợ ở đây và chèn adapter vào các MLP của block thay vì tinh chỉnh toàn bộ backbone.

Xem huấn luyện để biết về dataset, tăng cường dữ liệu (data augmentation), multi-GPU và logger.

Xác thực

val() trả về dictionary gồm các key metrics/. Với tác vụ phân loại, đó là độ chính xác top-1 và top-5 trên phần tách xác thực.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreConvNeXtt-cls.pt")metrics = model.val(data="imagenette160") print(metrics["metrics/accuracy_top1"])print(metrics["metrics/accuracy_top5"])
CLI
libreyolo val model=LibreConvNeXtt-cls.pt data=imagenette160

Xuất

Tác vụONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
classifyclassify to ONNX: được hỗ trợclassify to TorchScript: được hỗ trợclassify to ExecuTorch: được hỗ trợclassify to TensorRT: được hỗ trợclassify to OpenVINO: được hỗ trợclassify to Paddle: không được hỗ trợclassify to MNN: không được hỗ trợclassify to RKNN: không được hỗ trợclassify to ncnn: được hỗ trợclassify to TFLite: được hỗ trợclassify to CoreML: không được hỗ trợclassify to Core AI: được hỗ trợ

Artifact đã xuất được tải lại qua LibreYOLO() dựa trên hậu tố tệp, vì vậy tệp .onnx hoặc .engine hoạt động như checkpoint và trả về cùng đối tượng Results. Trang Xuất liệt kê các đối số được mọi định dạng chấp nhận và các extra mà một số định dạng bổ sung.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreConvNeXtt-cls.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)
CLI
libreyolo export model=LibreConvNeXtt-cls.pt format=onnxlibreyolo export model=LibreConvNeXtt-cls.pt format=tensorrt half=True
Dùng tệp đã xuất
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Factory định tuyến dựa trên hậu tố tệp, vì vậy artifact đã xuất tải# như mọi checkpoint và trả về cùng đối tượng Results.model = LibreYOLO("LibreConvNeXtt-cls.onnx")result = model(SAMPLE_IMAGE) print(result.probs.top1)

Checkpoint

Mọi tệp trọng số đã phát hành cho họ mô hình này.

TệpĐầu vào (px)Giấy phép trọng số
classify
LibreConvNeXtt-cls.pt224apache-2.0
LibreConvNeXts-cls.pt224apache-2.0
LibreConvNeXtb-cls.pt224apache-2.0

Mọi tệp ở trên hiện đều có trong tổ chức LibreYOLO và được tải xuống trong lần sử dụng đầu tiên.

Giấy phép

Hãy kiểm tra giấy phép trong repo Hugging Face của trọng số cụ thể mà bạn tải xuống. Mỗi checkpoint trong tổ chức LibreYOLO đều có giấy phép riêng và giấy phép có thể khác nhau trong cùng một họ. Repo đó là nguồn có thẩm quyền; phần tóm tắt dưới đây mô tả các điều khoản áp dụng khi trang này được kiểm chứng lần gần nhất.

Đây là phần mô tả các giấy phép liên quan, không phải tư vấn pháp lý. Nếu câu trả lời có ý nghĩa về mặt thương mại, hãy tự đọc các giấy phép và tham khảo cố vấn của riêng bạn.

Công trình gốc
ConvNeXt, Meta AI (FAIR)
Giấy phép thượng nguồn
Apache-2.0
Mã nguồn LibreYOLO
MIT
Trọng số
Apache-2.0, được phát hành lại tại huggingface.co/LibreYOLO
Diễn giải
Apache-2.0 is a permissive license, so these weights can be used in commercial and closed-source products. It asks you to keep its license text and attribution notices with any copy of the weights you redistribute, and it grants a patent license. It places no obligation on your own application code, and weights you train yourself on your own data are yours. The architecture is Meta AI's original design, released under MIT at facebookresearch/ConvNeXt; the block definitions, layer-scale parameter and module naming that LibreYOLO's implementation follows come from timm, whose convnext_{tiny,small,base}.fb_in1k ImageNet-1k weights are licensed Apache-2.0 and are what LibreYOLO ships. Only ConvNeXt V1 is shipped here: ConvNeXt-V2's small pretrained checkpoints are CC-BY-NC 4.0 and are deliberately excluded as not redistributable in a commercial library.

Chỉ ConvNeXt V1 được cung cấp trong họ mô hình này. Các checkpoint nhỏ được huấn luyện sẵn (pretrained) của ConvNeXt-V2 dùng giấy phép CC-BY-NC 4.0 và được chủ ý loại trừ, vì không thể phân phối lại trọng số phi thương mại trong một thư viện MIT/thương mại.

Trích dẫn

@Article{liu2022convnet,
  author  = {Zhuang Liu and Hanzi Mao and Chao-Yuan Wu and Christoph Feichtenhofer and Trevor Darrell and Saining Xie},
  title   = {A ConvNet for the 2020s},
  journal = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
  year    = {2022},
}

Được sao chép từ khối trích dẫn của tác giả tại github.com/facebookresearch/ConvNeXt#citation.

Đã kiểm chứng với LibreYOLO v1.5.0. Các bảng hỗ trợ, checkpoint và số liệu benchmark trên trang này được tạo từ thư viện đã phát hành và trọng số đã công bố, không phải viết thủ công.