EfficientNetV2

EfficientNetV2 là bộ phân loại ảnh có độ sâu, độ rộng và lựa chọn block theo từng giai đoạn được tìm bằng neural architecture search, đồng thời tối ưu độ chính xác và tốc độ huấn luyện thay vì chỉ độ chính xác. 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
b0, b1, b2, b3 at 224 to 300 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
EfficientNetV2 của Google, Apache-2.0. Bài báo, mã nguồn
Giấy phép
Mã nguồn Apache-2.0, trọng số Apache-2.0. Sử dụng thương mại

Cài đặt

EfficientNetV2 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

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("LibreEfficientNetV2b0-cls.pt")result = model(SAMPLE_IMAGE, save=True) print(result.probs.top1, result.probs.top1conf)print(result.probs.top5)
CLI
libreyolo predict model=LibreEfficientNetV2b0-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ể

Có bốn kích thước từ b0 đến b3, mỗi kích thước được đánh giá ở độ phân giải và tỷ lệ crop riêng thay vì dùng chung một kích thước đầu vào trong cả họ. Việc chọn 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 tập dữ liệu (dataset) đích. imgsz mặc định dùng độ phân giải đánh giá riêng của kích thước đó trừ khi được đặt rõ ràng.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreEfficientNetV2b0-cls.pt")model.train(data="imagenette160", epochs=5)
CLI
libreyolo train model=LibreEfficientNetV2b0-cls.pt data=imagenette160 epochs=5
Multi-GPU
libreyolo train model=LibreEfficientNetV2b0-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 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. lora=True không được hỗ trợ ở đây; truyền tùy chọn này sẽ phát sinh lỗi vì LoRA trong LibreYOLO nhắm đến các thành phần transformer có lớp nn.Linear, trong khi các block MBConv của họ mô hình này không có lớp đó.

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("LibreEfficientNetV2b0-cls.pt")metrics = model.val(data="imagenette160") print(metrics["metrics/accuracy_top1"])print(metrics["metrics/accuracy_top5"])
CLI
libreyolo val model=LibreEfficientNetV2b0-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("LibreEfficientNetV2b0-cls.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)
CLI
libreyolo export model=LibreEfficientNetV2b0-cls.pt format=onnxlibreyolo export model=LibreEfficientNetV2b0-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("LibreEfficientNetV2b0-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
LibreEfficientNetV2b0-cls.pt224apache-2.0
LibreEfficientNetV2b1-cls.pt240apache-2.0
LibreEfficientNetV2b2-cls.pt260apache-2.0
LibreEfficientNetV2b3-cls.pt300apache-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
EfficientNetV2, Google
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 Google's design, whose reference implementation at google/automl is also Apache-2.0; LibreYOLO's implementation follows the block definitions, TensorFlow "SAME" padding and naming in timm, whose tf_efficientnetv2_b{0,1,2,3} ImageNet-1k weights (ported by Ross Wightman, no ImageNet-21k or extra data) are licensed Apache-2.0 and are what LibreYOLO ships.

Đã 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.