CenterNet
CenterNet przedstawia obiekt jako punkt środkowy jego ramki ograniczającej i wyznacza każdą inną właściwość ze szczytu mapy cieplnej. Dzięki temu nie wymaga kotwic ani etapu non-maximum suppression. LibreYOLO udostępnia go jako detektor przeznaczony tylko do inferencji.
- Zadania
- detection
- Rozmiary
- resdcn18, dla34 at 512 px
- Instalacja
pip install libreyolo- Poziom obsługi
- Tylko inferencja, od wersji v. Tylko predykcja, walidacja i eksport. Funkcje trenowania nie mają zastosowania.
- Projekt źródłowy
- CenterNet, autorzy: UT Austin and UC Berkeley, licencja: MIT. Publikacja, kod źródłowy
- Licencje
- Kod: MIT, wagi: MIT. Użycie komercyjne
Instalacja
CenterNet nie wymaga opcjonalnego dodatku. Wszystkie importowane elementy znajdują się w instalacji bazowej.
pip install libreyoloPredykcja
Przy pierwszym użyciu wagi są pobierane z Hugging Face i zapisywane lokalnie w pamięci podręcznej.
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreCenterNetresdcn18.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes: print(box.cls, box.conf, box.xyxy)libreyolo predict model=LibreCenterNetresdcn18.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=Truefrom libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreCenterNetdla34.pt")result = model(SAMPLE_IMAGE, save=True)Zwracany obiekt Results jest taki sam dla każdej rodziny, dlatego zamiana
detektora wymaga zmiany jednego wiersza. Argumenty conf i max_det filtrują
uszeregowane szczyty mapy cieplnej. Argument iou jest akceptowany dla
zgodności API, lecz nie ma wpływu na wynik, ponieważ dekodowanie szczytów top-k
w CenterNet nie wymaga etapu tłumienia ramek na podstawie IoU. Zobacz stronę
predykcji, aby poznać źródła, streaming i obsługę wyników.
Warianty
Dostępne są dwa backbone. resdcn18 łączy główną część ResNet-18 z upsamplingiem
wykorzystującym deformowalny splot. dla34 łączy główną część DLA-34
z upsamplingiem wykorzystującym iteracyjną głęboką agregację. Oba warianty
zasilają te same trzy gęste głowice (mapa cieplna, szerokość/wysokość,
przesunięcie) i korzystają z tego samego obszaru wejściowego.
Walidacja
Metoda val() zwraca słownik kluczy metrics/ obejmujących precyzję, recall,
mAP 50 i mAP 50-95, zmierzonych względem dowolnego zbioru danych w formacie
użytym podczas trenowania.
from libreyolo import LibreYOLO model = LibreYOLO("LibreCenterNetresdcn18.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])libreyolo val model=LibreCenterNetresdcn18.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: brak obsługi | Detection to TFLite: brak obsługi | Detection to CoreML: brak obsługi | Detection to Core AI: brak obsługi |
Eksport ONNX wymaga opset 16 lub nowszego. Etap upsamplingu z deformowalnym
splotem w obu backbone jest przekształcany do operatora ONNX GridSample,
który wprowadzono w opset 16. Wybranie starszego opset powoduje zgłoszenie
błędu przed rozpoczęciem śledzenia grafu.
from libreyolo import LibreYOLO model = LibreYOLO("LibreCenterNetresdcn18.pt") # Eksport ONNX wymaga opset 16 lub nowszego: etap upsamplingu# z deformowalnym splotem jest przekształcany do GridSample, dodanego w opset 16.model.export(format="onnx", opset=18)model.export(format="tensorrt")libreyolo export model=LibreCenterNetresdcn18.pt format=onnx opset=18from libreyolo import LibreYOLO # Fabryka wybiera ścieżkę na podstawie sufiksu pliku, więc wyeksportowany# artefakt wczytuje się jak każdy checkpoint i zwraca ten sam obiekt Results.model = LibreYOLO("LibreCenterNetresdcn18.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)Checkpointy
Wszystkie opublikowane pliki wag dla tej rodziny.
| Plik | Wejście (px) | Licencja wag |
|---|---|---|
| Detection | ||
| LibreCenterNetresdcn18.pt | 512 | mit |
| LibreCenterNetdla34.pt | 512 | mit |
Każdy z powyższych plików jest obecnie dostępny w organizacji LibreYOLO i pobierany przy pierwszym użyciu.
Licencjonowanie
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
- CenterNet, UT Austin and UC Berkeley
- Licencja projektu źródłowego
- MIT
- Kod źródłowy projektu
- github.com/xingyizhou/CenterNet
- 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. It asks only that you keep the copyright notice and license text with any copy you redistribute, and it places no obligation on your own application code. The official ResDCN-18 and DLA-34 COCO checkpoints were published by the MIT-licensed CenterNet project but carry no separate per-checkpoint license file; LibreYOLO's mirror states MIT as implied by the releasing project rather than a publisher-confirmed, checkpoint-specific grant.
Graf ResDCN-18 zawiera również kod projektu human-pose-estimation.pytorch
firmy Microsoft na licencji MIT, a graf DLA-34 kod implementacji DLA autorstwa
Fishera Yu na licencji BSD-3-Clause. LibreYOLO nie dołącza oryginalnego
rozszerzenia DCNv2 używanego przez projekt upstream. Natywne wykonanie korzysta
z funkcji deform_conv2d z torchvision na licencji BSD-3-Clause, natomiast
przenośną implementację przeznaczoną wyłącznie do eksportu opracowano osobno
dla LibreYOLO.
Cytowanie
@inproceedings{zhou2019objects,
title={Objects as Points},
author={Zhou, Xingyi and Wang, Dequan and Kr{\"a}henb{\"u}hl, Philipp},
booktitle={arXiv preprint arXiv:1904.07850},
year={2019}
}Skopiowano z bloku cytowania autorów w github.com/xingyizhou/CenterNet#citation.