L2CS-Net
L2CS-Net to dwustopniowy estymator kierunku spojrzenia: detektor twarzy lokalizuje twarze, a główna część ResNet z dwiema głowicami klasyfikacji przedziałów kątowych przewiduje nachylenie i obrót dla każdej twarzy. LibreYOLO udostępnia go wyłącznie do inferencji.
- Zadania
- gaze
- Rozmiary
- r18, r34, r50, r101, r152 at 448 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
- L2CS-Net, autorzy: Ahmed A. Abdelrahman et al., licencja: Gaze360 dataset terms: research and non-commercial use only, no redistribution. Publikacja, kod źródłowy
- Licencje
- Kod: MIT, wagi: Gaze360 dataset terms: research and non-commercial use only, no redistribution. Użycie komercyjne
Instalacja
L2CS-Net nie wymaga dodatku do utworzenia modelu, uruchamiania predykcji ani eksportu, jeśli checkpoint jest już dostępny.
pip install libreyoloJedyny checkpoint, który LibreYOLO może pobrać automatycznie, czyli ResNet-50
wytrenowany na Gaze360, jest pobierany przez gdown, a nie zwykłą kopię
lustrzaną HTTP, ponieważ znajduje się na Google Drive autora zamiast w
organizacji LibreYOLO. Ta ścieżka wymaga dodatku gaze:
pip install "libreyolo[gaze]"Bez niego LibreYOLO wypisuje instrukcje ręcznego pobierania zamiast po cichu kończyć działanie błędem.
Predykcja
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Gdy nie podano face_detector, używany jest dołączony detektor twarzy OpenCV# (Haar w OpenCV 4, YuNet w OpenCV 5), dlatego przykład działa bez# pobierania czegokolwiek poza samym checkpointem L2CS.model = LibreYOLO("LibreL2CSr50.pt")result = model(SAMPLE_IMAGE) print(result.gaze.pitch, result.gaze.yaw)libreyolo predict model=LibreL2CSr50.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=Truefrom libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreL2CSr50.pt") # Przekazanie do L2CS ramek z wcześniej uruchomionego detektora.result = model(SAMPLE_IMAGE, face_boxes=[[34, 12, 90, 80]]) # Albo wskazanie konkretnego dołączonego detektora twarzy.result = model(SAMPLE_IMAGE, face_detector="yunet")L2CS-Net jest estymatorem dwustopniowym. Najpierw działa detektor twarzy, a
głowica spojrzenia odczytuje nachylenie i obrót z każdego zwróconego przycięcia
twarzy. Bez dodatkowej konfiguracji predykcja korzysta z dołączonego detektora
OpenCV, dlatego zwykłe wywołanie działa bez dodatkowego pobierania, gdy
checkpoint L2CS jest już dostępny. face_boxes przyjmuje ramki z wcześniej
uruchomionego detektora. face_detector przyjmuje "auto", "haar",
"yunet", model detekcji LibreYOLO albo zwykły obiekt wywoływalny.
result.gaze zawiera nachylenie i obrót w radianach, wyrównane wiersz po wierszu
z result.boxes, czyli wykrytymi ramkami twarzy. Więcej informacji o źródłach,
streamingu i obsłudze wyników zawiera strona predykcji.
Warianty
Pięć głębokości backbone współdzieli jedną rozdzielczość wejściową i przyjmuje te same argumenty. Gaze360, zbiór danych stojący za jedynym opublikowanym checkpointem, posłużył do wytrenowania ResNet-50. Pozostałe cztery głębokości są obsługiwane architektonicznie, ale nie mają opublikowanych wag do wczytania.
Eksport
| Zadanie | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| gaze | gaze to ONNX: obsługiwane | gaze to TorchScript: obsługiwane | gaze to ExecuTorch: obsługiwane | gaze to TensorRT: obsługiwane | gaze to OpenVINO: obsługiwane | gaze to Paddle: brak obsługi | gaze to MNN: brak obsługi | gaze to RKNN: brak obsługi | gaze to ncnn: brak obsługi | gaze to TFLite: brak obsługi | gaze to CoreML: brak obsługi | gaze to Core AI: brak obsługi |
from libreyolo import LibreYOLO model = LibreYOLO("LibreL2CSr50.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)libreyolo export model=LibreL2CSr50.pt format=onnximport numpy as npimport onnxruntime as ort # Wyeksportowany graf zawiera tylko główną część ResNet i dwie głowice przedziałów# kątowych. Przyjmuje przetworzone wstępnie przycięcie twarzy 448x448 i zwraca surowe# (yaw_logits, pitch_logits), a nie zdekodowane kąty. Softmax,# wartość oczekiwana przedziału i konwersja na stopnie pozostają w Pythonie. Zobacz# libreyolo.models.l2cs.utils.bin_logits_to_angles.session = ort.InferenceSession("LibreL2CSr50.onnx")name = session.get_inputs()[0].nameyaw_logits, pitch_logits = session.run( None, {name: np.zeros((1, 3, 448, 448), dtype=np.float32)})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
- L2CS-Net, Ahmed A. Abdelrahman et al.
- Licencja projektu źródłowego
- Gaze360 dataset terms: research and non-commercial use only, no redistribution
- Kod źródłowy projektu
- github.com/Ahmednull/L2CS-Net
- Kod LibreYOLO
- MIT
- Wagi
- Gaze360 dataset terms: research and non-commercial use only, no redistribution, rozpowszechniane przez autorów. LibreYOLO ich nie hostuje ani nie udostępnia kopii.
- Interpretacja
- The L2CS-Net source is MIT and may be used, modified and redistributed, including commercially. The one checkpoint LibreYOLO can fetch automatically, a ResNet-50 trained on Gaze360, is not covered by that grant: the Gaze360 dataset license restricts use of models trained on it to research and non-commercial purposes and forbids redistribution. LibreYOLO does not mirror or host that checkpoint. It downloads it, on request, directly from the author's own distribution and prints the Gaze360 terms once before the transfer starts. A model trained on data you hold the rights to, using this MIT architecture, carries none of those restrictions.
LibreYOLO nie hostuje ani nie tworzy kopii lustrzanej żadnego checkpointu L2CS. W przeciwieństwie do większości pozostałych rodzin na tej stronie w organizacji LibreYOLO na Hugging Face nie ma żadnych plików tej rodziny. Jedyny checkpoint, który biblioteka może pobrać automatycznie, pochodzi bezpośrednio z własnej dystrybucji autora na Google Drive, jest kontrolowany przez informację o licencji Gaze360 wyświetlaną przed rozpoczęciem transferu i nie jest kopią „republished at huggingface.co/LibreYOLO”, którą sugeruje powyższe podsumowanie.