YOLOv7
YOLOv7 to jednostopniowy detektor oparty na kotwicach, którego głowica dodaje wyuczone przesunięcia wiedzy ukrytej przed końcowym splotem. LibreYOLO obsługuje jego jeden opublikowany rozmiar do detekcji.
- Zadania
- detection
- Rozmiary
- b at 640 px
- Instalacja
pip install libreyolo- Poziom obsługi
- Obsługiwany, od wersji v. Dodatkowe trenowalne modele: testy CI pozostają zielone, a funkcje są dodawane w miarę możliwości.
- Projekt źródłowy
- YOLOv7, autorzy: MultimediaTechLab, licencja: MIT. Publikacja, kod źródłowy
- Licencje
- Kod: MIT, wagi: MIT. Użycie komercyjne
Instalacja
YOLOv7 nie wymaga żadnego dodatku poza pakietem podstawowym.
pip install libreyoloPredykcja
Przy pierwszym użyciu wagi są pobierane z Hugging Face i zapisywane w lokalnej pamięci podręcznej.
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=TrueZwracany obiekt Results jest taki sam dla każdej rodziny, więc zmiana
detektora wymaga zmiany jednego wiersza. Argument conf ustawia próg pewności,
a iou próg NMS stosowany po zdekodowaniu głowicy opartej na kotwicach. Więcej
informacji o źródłach, streamingu i obsłudze wyników zawiera strona
predykcji.
Warianty
LibreYOLO udostępnia jeden rozmiar, b. Projekt źródłowy publikuje jeden model
YOLOv7, dlatego nie ma rozmiaru do wyboru.
Trenowanie
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 zawsze wczytuje opublikowany checkpoint LibreYOLO7b.pt,# niezależnie od sposobu utworzenia tej instancji. Bezpośrednie utworzenie# klasy zamiast przez LibreYOLO() rozpoczyna bez wczytanych wag.model = LibreYOLO7(None, size="b")model.train(data="my-dataset.yaml", epochs=300, pretrained=True)pretrained jest odczytywane, w przeciwieństwie do argumentu o tej samej nazwie
w niektórych innych rodzinach. Przekazanie True rozpoczyna od opublikowanego
checkpointu LibreYOLO7b.pt (pobieranego automatycznie), a ścieżka lub nazwa
wskazuje inne źródło. Opublikowany checkpoint ma 80 klas COCO. Żądanie go dla
modelu przebudowanego już do innej liczby klas najpierw przywraca 80 klas,
wczytuje checkpoint, a następnie po odczytaniu liczby klas zbioru danych
przenosi każdy tensor o zgodnym kształcie do docelowej liczby głowic.
resume=True nie można łączyć z pretrained. Przy domyślnej wartości None
trenowanie jest kontynuowane od wag użytych do utworzenia modelu albo od losowej
inicjalizacji, jeśli nie wczytano żadnych.
Poza tym bez zmian konfiguracji trener wykonuje 300 epok z lr0=0.01, momentum
SGD 0.937, 3 epokami rozgrzewki oraz tym samym przypisywaniem SimOTA i końcową
fazą 15 epok bez augmentacji co YOLOX, dostosowanymi do głowicy opartej na
kotwicach. Jest jedna różnica: YOLOX dodaje udoskonalanie regresji ramek L1 w
tych ostatnich epokach, a v7 je pomija, ponieważ funkcja straty SimOTA v7 nie ma
gałęzi L1 surowego przesunięcia do udoskonalania.
Informacje o zbiorach danych, augmentacji, wielu GPU i loggerach zawiera strona trenowania.
Walidacja
val() zwraca słownik kluczy metrics/, który obejmuje precision, recall,
mAP 50 i mAP 50-95, zmierzone względem dowolnego zbioru danych w formacie użytym
do trenowania.
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.yamlEksport
| Zadanie | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Detection | Detection to ONNX: obsługiwane | Detection to TorchScript: obsługiwane | Detection to ExecuTorch: obsługiwane | Detection to TensorRT: obsługiwane | Detection to OpenVINO: obsługiwane | Detection to Paddle: brak obsługi | Detection to MNN: brak obsługi | Detection to RKNN: brak obsługi | Detection to ncnn: obsługiwane | Detection to TFLite: brak obsługi | Detection to CoreML: brak obsługi | Detection to Core AI: obsługiwane |
Wyeksportowany artefakt jest ponownie ładowany przez LibreYOLO() na podstawie
rozszerzenia pliku, więc plik .onnx lub .engine zachowuje się jak checkpoint
i zwraca ten sam obiekt Results. Obsługiwane jest także uruchomienie grafu w
samym środowisku uruchomieniowym bez zainstalowanego LibreYOLO, ale wtedy należy
samodzielnie napisać przetwarzanie wstępne i końcowe.
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 # Fabryka wybiera ścieżkę na podstawie rozszerzenia pliku, więc wyeksportowany artefakt# ładuje się jak każdy checkpoint i zwraca ten sam obiekt Results.model = LibreYOLO("LibreYOLO7b.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)Checkpointy
Wszystkie opublikowane pliki wag dla tej rodziny.
| Plik | Wejście (px) | Licencja wag |
|---|---|---|
| Detection | ||
| LibreYOLO7b.pt | 640 | mit |
Każdy z powyższych plików jest obecnie dostępny w organizacji LibreYOLO i pobierany przy pierwszym użyciu.
Licencja
Sprawdź licencję w repozytorium konkretnych pobieranych wag na Hugging Face. Każdy checkpoint w organizacji LibreYOLO ma licencję, która nie zawsze jest taka sama w całej rodzinie. To repozytorium jest źródłem rozstrzygającym, a poniższe podsumowanie opisuje stan z chwili ostatniej weryfikacji tej strony.
To opis obowiązujących licencji, a nie porada prawna. Jeśli odpowiedź ma znaczenie komercyjne, przeczytaj licencje i zasięgnij własnej porady prawnej.
- Oryginalna praca
- YOLOv7, MultimediaTechLab
- Licencja projektu źródłowego
- MIT
- Kod źródłowy projektu
- github.com/MultimediaTechLab/YOLO
- Kod LibreYOLO
- MIT
- Wagi
- MIT, ponownie opublikowane w huggingface.co/LibreYOLO
- Interpretacja
- 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.
Cytowanie
@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)},
}Skopiowano z bloku cytowania autorów w github.com/MultimediaTechLab/YOLO#citations.