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.

bash
pip install libreyolo

Predykcja

Przy pierwszym użyciu wagi są pobierane z Hugging Face i zapisywane w lokalnej pamięci podręcznej.

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

Zwracany 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

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
Ciepły start nowego modelu
from 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.

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

Eksport

ZadanieONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
DetectionDetection to ONNX: obsługiwaneDetection to TorchScript: obsługiwaneDetection to ExecuTorch: obsługiwaneDetection to TensorRT: obsługiwaneDetection to OpenVINO: obsługiwaneDetection to Paddle: brak obsługiDetection to MNN: brak obsługiDetection to RKNN: brak obsługiDetection to ncnn: obsługiwaneDetection to TFLite: brak obsługiDetection to CoreML: brak obsługiDetection 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.

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
Użycie wyeksportowanego pliku
from 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.

PlikWejście (px)Licencja wag
Detection
LibreYOLO7b.pt640mit

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.

Zweryfikowano z LibreYOLO v1.5.0. Tabele obsługi, checkpointy i wyniki benchmarków na tej stronie są generowane na podstawie wydanej biblioteki i opublikowanych wag, a nie wpisywane ręcznie.