MobileNetV4
MobileNetV4 là bộ phân loại ảnh được xây dựng cho phần cứng di động và thiết bị biên, dùng block Universal Inverted Bottleneck để hợp nhất nhiều thiết kế block di động trước đó thành một cấu trúc có thể tìm kiếm. LibreYOLO hỗ trợ mô hình cho một tác vụ: phân loại.
- Tác vụ
- classify
- Kích thước
- s, m, l at 224 to 256 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 Apache-2.0, trọng số Apache-2.0. Sử dụng thương mại
Cài đặt
MobileNetV4 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 libreyoloDự đ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("LibreMobileNetV4s-cls.pt")result = model(SAMPLE_IMAGE, save=True) print(result.probs.top1, result.probs.top1conf)print(result.probs.top5)libreyolo predict model=LibreMobileNetV4s-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ể
Có ba kích thước small/medium/large, tất cả chỉ dùng phép tích chập: họ mô hình này loại trừ các biến thể hybrid bổ sung Mobile MQA attention. 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.
from libreyolo import LibreYOLO model = LibreYOLO("LibreMobileNetV4s-cls.pt")model.train(data="imagenette160", epochs=5)libreyolo train model=LibreMobileNetV4s-cls.pt data=imagenette160 epochs=5libreyolo train model=LibreMobileNetV4s-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 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. 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 UIB 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.
from libreyolo import LibreYOLO model = LibreYOLO("LibreMobileNetV4s-cls.pt")metrics = model.val(data="imagenette160") print(metrics["metrics/accuracy_top1"])print(metrics["metrics/accuracy_top5"])libreyolo val model=LibreMobileNetV4s-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("LibreMobileNetV4s-cls.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)libreyolo export model=LibreMobileNetV4s-cls.pt format=onnxlibreyolo export model=LibreMobileNetV4s-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("LibreMobileNetV4s-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 | ||
| LibreMobileNetV4s-cls.pt | 224 | apache-2.0 |
| LibreMobileNetV4m-cls.pt | 224 | apache-2.0 |
| LibreMobileNetV4l-cls.pt | 256 | 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
- MobileNetV4, Google
- 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 Google's design, whose official code lives in the tensorflow/models repository; LibreYOLO's implementation follows the conv-only MobileNetV4 (small/medium/large) block definitions, channel rounding and naming in timm, whose mobilenetv4_conv_{small,medium,large} ImageNet-1k weights are licensed Apache-2.0 and are what LibreYOLO ships. The hybrid variants, which add Mobile MQA attention, are not part of this family.