YOLOv7

YOLOv7 là detector một giai đoạn dựa trên anchor, có head thêm các độ lệch tri thức ngầm đã học trước phép tích chập cuối. LibreYOLO hỗ trợ kích thước duy nhất đã công bố cho tác vụ phát hiện.

Tác vụ
detection
Kích thước
b at 640 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
YOLOv7 của MultimediaTechLab, MIT. Bài báo, mã nguồn
Giấy phép
Mã nguồn MIT, trọng số MIT. Sử dụng thương mại

Cài đặt

YOLOv7 không cần extra ngoài gói cơ sở.

bash
pip install libreyolo

Dự đoán

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

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreYOLO7b.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes:    print(box.cls, box.conf, box.xyxy)
CLI
libreyolo predict model=LibreYOLO7b.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True

Đối tượng Results trả về là loại mà mọi họ đều trả về, nên việc đổi sang detector khác chỉ cần sửa một dòng. conf đặt ngưỡng độ tin cậy và iou đặt ngưỡng NMS được áp dụng sau khi giải mã head dựa trên anchor. Xem dự đoán để biết về nguồn, streaming và xử lý kết quả.

Các biến thể

LibreYOLO phân phối một kích thước là b. Thượng nguồn công bố một mô hình YOLOv7 duy nhất, vì vậy không có nhiều kích thước để lựa chọn.

Huấn luyện

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO7b.pt")model.train(data="my-dataset.yaml", epochs=300, imgsz=640, batch=16, lr0=0.01)
CLI
libreyolo train model=LibreYOLO7b.pt data=my-dataset.yaml \  epochs=300 imgsz=640 batch=16 lr0=0.01
Warm start từ mô hình mới
from libreyolo import LibreYOLO7 # pretrained=True luôn tải checkpoint LibreYOLO7b.pt đã công bố, bất kể# instance này được khởi tạo với gì. Việc khởi tạo lớp trực tiếp thay vì# qua LibreYOLO() sẽ bắt đầu mà chưa tải bất kỳ trọng số nào.model = LibreYOLO7(None, size="b")model.train(data="my-dataset.yaml", epochs=300, pretrained=True)

pretrained được đọc, khác với đối số cùng tên không làm gì ở một số họ khác: truyền True để warm-start từ checkpoint LibreYOLO7b.pt đã công bố (được tự động tải), hoặc truyền đường dẫn hay tên cho trường hợp khác. Checkpoint đã công bố dùng COCO 80 lớp, nên khi yêu cầu nó trên mô hình đã được xây dựng lại cho số lớp khác, hệ thống trước tiên xây dựng lại về 80 lớp, tải checkpoint, rồi chuyển mọi tensor có shape khớp sang số lượng head đích sau khi đọc số lớp của tập dữ liệu. Không thể kết hợp resume=True với pretrained. Khi giữ mặc định None, quá trình huấn luyện tiếp tục từ trọng số dùng để khởi tạo mô hình hoặc từ khởi tạo ngẫu nhiên nếu chưa tải gì.

Nếu giữ nguyên các giá trị khác, trình huấn luyện chạy 300 epoch ở lr0=0.01 với SGD momentum 0.937, warmup 3 epoch, cùng phép gán SimOTA và giai đoạn 15 epoch cuối không tăng cường dữ liệu như YOLOX, được điều chỉnh cho head dựa trên anchor. Có một điểm khác biệt: YOLOX thêm bước tinh chỉnh hồi quy box L1 trong các epoch cuối đó, còn v7 bỏ qua vì loss SimOTA của v7 không có nhánh L1 độ lệch thô để tinh chỉnh.

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

Đánh giá

val() trả về từ điển các khóa metrics/ bao gồm precision, recall, mAP 50 và mAP 50-95, được đo trên bất kỳ tập dữ liệu nào theo định dạng bạn đã huấn luyện.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO7b.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])
CLI
libreyolo val model=LibreYOLO7b.pt data=my-dataset.yaml

Xuất

Tác vụONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
DetectionDetection to ONNX: được hỗ trợDetection to TorchScript: được hỗ trợDetection to ExecuTorch: được hỗ trợDetection to TensorRT: được hỗ trợDetection to OpenVINO: được hỗ trợDetection to Paddle: không được hỗ trợDetection to MNN: không được hỗ trợDetection to RKNN: không được hỗ trợDetection to ncnn: được hỗ trợDetection to TFLite: không được hỗ trợDetection to CoreML: không được hỗ trợDetection 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 Results. Cũng hỗ trợ chạy đồ thị trong runtime độc lập không cài LibreYOLO, nhưng khi đó bạn phải tự viết bước tiền xử lý và hậu xử lý.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO7b.pt")model.export(format="onnx", imgsz=640)model.export(format="tensorrt", imgsz=640, half=True)
CLI
libreyolo export model=LibreYOLO7b.pt format=onnx imgsz=640libreyolo export model=LibreYOLO7b.pt format=tensorrt imgsz=640 half=True
Dùng tệp đã xuất
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Factory định tuyến theo hậu tố tệp, nên artifact đã xuất được tải# như mọi checkpoint và trả về cùng đối tượng Results.model = LibreYOLO("LibreYOLO7b.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)

Checkpoint

Mọi tệp trọng số đã công bố cho họ này.

TệpĐầu vào (px)Giấy phép trọng số
Detection
LibreYOLO7b.pt640mit

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
YOLOv7, MultimediaTechLab
Giấy phép thượng nguồn
MIT
Nguồn thượng nguồn
github.com/MultimediaTechLab/YOLO
Mã nguồn LibreYOLO
MIT
Trọng số
MIT, được phát hành lại tại huggingface.co/LibreYOLO
Diễn giải
MIT is a permissive license, so these weights can be used in commercial and closed-source products. The one standing obligation is to keep the license text and the copyright notice, Kin-Yiu Wong and Hao-Tang Tsui, with any copy you redistribute. It places no condition on your own application code, and a model you train yourself on your own data is yours. The port follows the authors' MIT re-release of YOLOv7, not the GPL-3.0 WongKinYiu/yolov7 repository that carries the same model, so the permissive terms come from the source LibreYOLO actually derives from.

Trích dẫn

@inproceedings{wang2022yolov7,
      title={{YOLOv7}: Trainable Bag-of-Freebies Sets New State-of-the-Art for Real-Time Object Detectors},
      author={Wang, Chien-Yao and Bochkovskiy, Alexey and Liao, Hong-Yuan Mark},
      year={2023},
      booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
}

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

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