PIDNet
Trójgałęziowa sieć segmentacji semantycznej, która dodaje dedykowaną gałąź granic do projektu inspirowanego regulatorem proporcjonalno-całkująco-różniczkującym, z myślą o inferencji czasu rzeczywistego. LibreYOLO udostępnia ją wyłącznie do segmentacji semantycznej.
- Zadania
- semantic
- Rozmiary
- s, m, l at 1024 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
- PIDNet, autorzy: Jiacong Xu, licencja: MIT. Publikacja, kod źródłowy
- Licencje
- Kod: MIT, wagi: MIT. Użycie komercyjne
Instalacja
PIDNet nie wymaga żadnego opcjonalnego dodatku. Wszystkie importowane elementy znajdują się w instalacji podstawowej.
pip install libreyoloPredykcja
Przy pierwszym użyciu wagi są pobierane z Hugging Face i zapisywane w lokalnej
pamięci podręcznej. Sufiks nazwy pliku -sem jest wymagany dla tej rodziny.
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibrePIDNets-sem.pt")result = model(SAMPLE_IMAGE, save=True) mask = result.semantic_maskprint(mask.data.shape) # (H, W), identyfikatory klasprint(mask.classes) # posortowane identyfikatory klas obecnych na obrazielibreyolo predict model=LibrePIDNets-sem.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=TrueSegmentacja semantyczna zwraca jeden identyfikator klasy na piksel, a nie ramki.
Dlatego result.semantic_mask zawiera tablicę (H, W) w polu .data oraz listę
identyfikatorów klas obecnych na obrazie w .classes. Argumenty conf, iou i
max_det są przyjmowane dla zgodności API, ale nie mają wpływu na wynik. Model
przypisuje klasę każdemu pikselowi przez argmax, bez progu pewności ani etapu
NMS. Więcej informacji o źródłach, streamingu i obsłudze wyników zawiera strona
predykcji.
Warianty
Dostępne są trzy rozmiary, wszystkie ze stałym wejściem 1024 px. Opublikowane checkpointy są konwersjami oficjalnych wag PIDNet wytrenowanych na Cityscapes z 19 klasami.
LibreYOLO nie trenuje PIDNet: train() zgłasza NotImplementedError dla tej
rodziny, którą powyższy poziom obsługi oznacza jako przeznaczoną
wyłącznie do inferencji.
Walidacja
val() zwraca metrics/mIoU i metrics/pixel_accuracy, zmierzone względem
dowolnego zbioru danych w formacie użytym do trenowania.
from libreyolo import LibreYOLO model = LibreYOLO("LibrePIDNets-sem.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mIoU"])print(metrics["metrics/pixel_accuracy"])libreyolo val model=LibrePIDNets-sem.pt data=my-dataset.yamlEksport
| Zadanie | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| semantic | semantic to ONNX: obsługiwane | semantic to TorchScript: obsługiwane | semantic to ExecuTorch: obsługiwane | semantic to TensorRT: obsługiwane | semantic to OpenVINO: obsługiwane | semantic to Paddle: brak obsługi | semantic to MNN: brak obsługi | semantic to RKNN: brak obsługi | semantic to ncnn: obsługiwane | semantic to TFLite: obsługiwane | semantic to CoreML: brak obsługi | semantic 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. Strona eksportu wymienia
argumenty obsługiwane przez każdy format.
from libreyolo import LibreYOLO model = LibreYOLO("LibrePIDNets-sem.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)libreyolo export model=LibrePIDNets-sem.pt format=onnxlibreyolo export model=LibrePIDNets-sem.pt format=tensorrt 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("LibrePIDNets-sem.onnx")result = model(SAMPLE_IMAGE) print(result.semantic_mask.data.shape)Checkpointy
Wszystkie opublikowane pliki wag dla tej rodziny.
| Plik | Wejście (px) | Licencja wag |
|---|---|---|
| semantic | ||
| LibrePIDNets-sem.pt | 1024 | mit |
| LibrePIDNetm-sem.pt | 1024 | mit |
| LibrePIDNetl-sem.pt | 1024 | 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
- PIDNet, Jiacong Xu
- Licencja projektu źródłowego
- MIT
- Kod źródłowy projektu
- github.com/XuJiacong/PIDNet
- Kod LibreYOLO
- MIT
- Wagi
- MIT, ponownie opublikowane w huggingface.co/LibreYOLO
- Interpretacja
- MIT is a permissive license, so this code and these weights can be used in commercial and closed-source products. It asks only that you keep the copyright and license notice with any copy you redistribute. LibreYOLO's checkpoints are conversions of the official PIDNet Cityscapes weights, which upstream licenses as MIT. The Cityscapes dataset itself carries separate research-oriented terms and is not redistributed by LibreYOLO.
Cytowanie
@misc{xu2022pidnet,
title={PIDNet: A Real-time Semantic Segmentation Network Inspired from PID Controller},
author={Jiacong Xu and Zixiang Xiong and Shankar P. Bhattacharyya},
year={2022},
eprint={2206.02066},
archivePrefix={arXiv},
primaryClass={cs.CV}
}Skopiowano z bloku cytowania autorów w github.com/XuJiacong/PIDNet#bibtex-citation.