FCN
Gęsty klasyfikator dla każdego piksela, który zastępuje warstwy w pełni połączone detektora splotami, dzięki czemu zwraca mapę klas w pełnej rozdzielczości zamiast ramek. LibreYOLO udostępnia go wyłącznie do segmentacji semantycznej.
- Zadania
- semantic
- Rozmiary
- r50, r101 at 520 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
- FCN, autorzy: PyTorch, licencja: BSD-3-Clause. Publikacja, kod źródłowy
- Licencje
- Kod: BSD-3-Clause, wagi: BSD-3-Clause. Użycie komercyjne
Instalacja
FCN 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.
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreFCNr50.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=LibreFCNr50.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ą dwie głębokości ResNet, obie ze stałym wejściem 520 px. Graf inferencji biblioteki jest FCN z dylatowanym ResNet z torchvision, a nie opartą na VGG siecią FCN-8s z połączeniami pomijającymi z oryginalnej publikacji.
LibreYOLO nie trenuje FCN: train() zgłasza NotImplementedError dla tej
rodziny, którą powyższy poziom obsługi oznacza jako przeznaczoną
wyłącznie do inferencji. Dwa opublikowane checkpointy to własne wagi torchvision
wytrenowane na COCO i przekonwertowane dla loadera LibreYOLO.
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("LibreFCNr50.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mIoU"])print(metrics["metrics/pixel_accuracy"])libreyolo val model=LibreFCNr50.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: brak obsługi | 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: brak obsługi | semantic to TFLite: brak obsługi | semantic to CoreML: brak obsługi | semantic to Core AI: brak obsługi |
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("LibreFCNr50.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)libreyolo export model=LibreFCNr50.pt format=onnxlibreyolo export model=LibreFCNr50.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("LibreFCNr50.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 | ||
| LibreFCNr50.pt | 520 | bsd-3-clause |
| LibreFCNr101.pt | 520 | bsd-3-clause |
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
- FCN, PyTorch
- Licencja projektu źródłowego
- BSD-3-Clause
- Kod źródłowy projektu
- github.com/pytorch/vision
- Kod LibreYOLO
- MIT
- Wagi
- BSD-3-Clause, ponownie opublikowane w huggingface.co/LibreYOLO
- Interpretacja
- BSD-3-Clause is a permissive license, so this code and these weights can be used in commercial and closed-source products. It asks you to keep the copyright notice, license text and a non-endorsement clause with any copy you redistribute. LibreYOLO's inference graph is torchvision's dilated-ResNet FCN, not the original VGG-based FCN-8s skip-fusion network from the paper. The two published checkpoints are torchvision's official COCO-trained weights; their separate LibreYOLO Hugging Face mirrors carry BSD-3-Clause on an implied basis disclosed by torchvision rather than an explicit checkpoint-specific grant, and torchvision's own documentation notes that pretrained-model terms can depend on the training data, leaving that determination to the user.