YOLOv7
YOLOv7 є одностадійним детектором на основі якорів, голова якого додає навчені зсуви неявних знань перед завершальною згорткою. LibreYOLO підтримує єдиний опублікований розмір для виявлення.
- Задачі
- detection
- Розміри
- b at 640 px
- Встановлення
pip install libreyolo- Рівень підтримки
- Підтримуваний, починаючи з v. Додаткові придатні до навчання моделі: тести CI підтримують справними, а функції додають за нагоди.
- Ліцензії
- Код: MIT, ваги: MIT. Комерційне використання
Встановлення
Для YOLOv7 не потрібні додаткові залежності понад базовий пакет.
pip install libreyoloПередбачення
Під час першого використання ваги завантажуються з Hugging Face і кешуються локально.
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)libreyolo predict model=LibreYOLO7b.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=TrueПовернений об'єкт Results є однаковим для всіх сімейств, тому заміна
детектора потребує зміни одного рядка. conf задає поріг упевненості, а
iou задає поріг NMS після декодування голови на основі якорів. Типи джерел,
потокове передбачення та обробку результатів описано в розділі
передбачення.
Варіанти
LibreYOLO постачає один розмір b. Початковий проєкт публікує одну модель
YOLOv7, тому вибору розміру немає.
Навчання
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO7b.pt")model.train(data="my-dataset.yaml", epochs=300, imgsz=640, batch=16, lr0=0.01)libreyolo train model=LibreYOLO7b.pt data=my-dataset.yaml \ epochs=300 imgsz=640 batch=16 lr0=0.01from libreyolo import LibreYOLO7 # pretrained=True завжди завантажує опубліковану контрольну точку LibreYOLO7b.pt# незалежно від того, з чим створено цей екземпляр. Безпосереднє створення# класу замість LibreYOLO() починається без жодних завантажених ваг.model = LibreYOLO7(None, size="b")model.train(data="my-dataset.yaml", epochs=300, pretrained=True)pretrained читається, на відміну від однойменного аргументу, який нічого не
робить у деяких інших сімействах тут: передайте True для теплого старту з
опублікованої контрольної точки LibreYOLO7b.pt (завантажується
автоматично) або шлях чи назву для іншої. Опублікована контрольна точка має
80 класів COCO, тому її запит для моделі, уже перебудованої під іншу кількість
класів, спочатку перебудовує модель назад до 80, завантажує її, а після
читання кількості класів датасету переносить усі тензори відповідної форми до
цільової голови. resume=True не можна поєднувати з pretrained. З
типовим None навчання продовжується з ваг, з якими створено модель, або з
випадкової ініціалізації, якщо нічого не завантажено.
За інших типових параметрів тренер виконує 300 епох із lr0=0.01,
імпульсом SGD 0.937, прогріванням протягом 3 епох, тим самим призначенням
SimOTA та завершальним 15-епоховим етапом без аугментацій, який використовує
YOLOX, адаптованим до голови на основі якорів. Єдина відмінність: YOLOX додає
у завершальних епохах уточнення регресії рамок L1, яке v7 пропускає, оскільки
функція втрат SimOTA у v7 не має гілки L1 необроблених зсувів для уточнення.
Датасети, аугментацію, кілька GPU та логери описано в розділі навчання.
Валідація
val() повертає словник ключів metrics/ із точністю, повнотою, mAP 50 та
mAP 50-95, виміряними на будь-якому датасеті у форматі, на якому проводилося
навчання.
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO7b.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])libreyolo val model=LibreYOLO7b.pt data=my-dataset.yamlЕкспорт
| Задача | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Detection | Detection to ONNX: підтримується | Detection to TorchScript: підтримується | Detection to ExecuTorch: підтримується | Detection to TensorRT: підтримується | Detection to OpenVINO: підтримується | Detection to Paddle: не підтримується | Detection to MNN: не підтримується | Detection to RKNN: не підтримується | Detection to ncnn: підтримується | Detection to TFLite: не підтримується | Detection to CoreML: не підтримується | Detection to Core AI: підтримується |
Експортований артефакт знову завантажується через LibreYOLO() відповідно до
суфікса файлу, тому файл .onnx або .engine поводиться як контрольна
точка й повертає той самий об'єкт Results. Граф також можна запускати
безпосередньо в середовищі виконання без установленої LibreYOLO, але тоді
попередню та подальшу обробку потрібно реалізувати самостійно.
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO7b.pt")model.export(format="onnx", imgsz=640)model.export(format="tensorrt", imgsz=640, half=True)libreyolo export model=LibreYOLO7b.pt format=onnx imgsz=640libreyolo export model=LibreYOLO7b.pt format=tensorrt imgsz=640 half=Truefrom libreyolo import LibreYOLO, SAMPLE_IMAGE # Фабрика маршрутизує за суфіксом файлу, тому експортований артефакт# завантажується як будь-яка контрольна точка й повертає той самий об'єкт Results.model = LibreYOLO("LibreYOLO7b.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)Контрольні точки
Усі опубліковані файли ваг цього сімейства.
| Файл | Вхід (пікс.) | Ліцензія ваг |
|---|---|---|
| Detection | ||
| LibreYOLO7b.pt | 640 | mit |
Кожен наведений вище файл уже доступний у організації LibreYOLO і завантажується під час першого використання.
Ліцензування
Перевіряйте ліцензію в репозиторії Hugging Face конкретних ваг, які завантажуєте. Кожна контрольна точка в організації LibreYOLO має ліцензію, і вона не завжди однакова для всього сімейства. Цей репозиторій є авторитетним джерелом, а наведене нижче резюме описує умови на момент останньої перевірки сторінки.
Це опис відповідних ліцензій, а не юридична консультація. Якщо відповідь має комерційне значення, самостійно прочитайте ліцензії та зверніться по юридичну консультацію.
- Оригінальна робота
- YOLOv7, MultimediaTechLab
- Ліцензія першоджерела
- MIT
- Джерело першоджерела
- github.com/MultimediaTechLab/YOLO
- Код LibreYOLO
- MIT
- Ваги
- MIT, повторно опубліковано на huggingface.co/LibreYOLO
- Тлумачення
- 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.
Цитування
@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)},
}Скопійовано з блоку цитування авторів на сторінці github.com/MultimediaTechLab/YOLO#citations.