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.
- 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ở.
pip install libreyoloTinh chỉnh bằng adapter với lora=True là ngoại lệ và cần extra lora.
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ộ.
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)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, top1conf và top5conf. conf, iou và max_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.
from libreyolo import LibreYOLO model = LibreYOLO("LibreConvNeXtt-cls.pt")model.train(data="imagenette160", epochs=5)libreyolo train model=LibreConvNeXtt-cls.pt data=imagenette160 epochs=5from libreyolo import LibreYOLO model = LibreYOLO("LibreConvNeXtt-cls.pt")model.train(data="imagenette160", epochs=5, lora=True)libreyolo train model=LibreConvNeXtt-cls.pt data=imagenette160 \ epochs=50 device=0,1 batch=-1Khi 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/ và 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.
from libreyolo import LibreYOLO model = LibreYOLO("LibreConvNeXtt-cls.pt")metrics = model.val(data="imagenette160") print(metrics["metrics/accuracy_top1"])print(metrics["metrics/accuracy_top5"])libreyolo val model=LibreConvNeXtt-cls.pt data=imagenette160Xuất
| Tác vụ | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| classify | classify 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.
from libreyolo import LibreYOLO model = LibreYOLO("LibreConvNeXtt-cls.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)libreyolo export model=LibreConvNeXtt-cls.pt format=onnxlibreyolo export model=LibreConvNeXtt-cls.pt format=tensorrt half=Truefrom 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.pt | 224 | apache-2.0 |
| LibreConvNeXts-cls.pt | 224 | apache-2.0 |
| LibreConvNeXtb-cls.pt | 224 | apache-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
- Nguồn thượng nguồn
- github.com/huggingface/pytorch-image-models
- 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.