FCN

Щільний попіксельний класифікатор замінює повнозв'язні шари детектора згортками, тому виводить повнорозмірну карту класів замість рамок. LibreYOLO постачає його лише для семантичної сегментації.

Задачі
semantic
Розміри
r50, r101 at 520 px
Встановлення
pip install libreyolo
Рівень підтримки
Лише інференс, починаючи з v. Лише передбачення, валідація та експорт. Функції навчання не застосовуються.
Першоджерело
FCN, автори: PyTorch, ліцензія BSD-3-Clause. Стаття, джерело
Ліцензії
Код: BSD-3-Clause, ваги: BSD-3-Clause. Комерційне використання

Встановлення

FCN не потребує додаткових залежностей. Усе, що вона імпортує, входить до базового встановлення.

bash
pip install libreyolo

Передбачення

Під час першого використання ваги завантажуються з Hugging Face і кешуються локально.

Python
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)print(mask.classes)      # Відсортовані ідентифікатори класів на зображенні
CLI
libreyolo predict model=LibreFCNr50.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True

Семантична сегментація повертає один ідентифікатор класу на піксель, а не рамки, тому result.semantic_mask містить масив (H, W) у .data і список наявних на зображенні ідентифікаторів класів у .classes. Параметри conf, iou і max_det приймаються для узгодженості API, але не впливають на результат: модель призначає клас кожному пікселю за argmax без порога впевненості чи етапу NMS. Типи джерел, потокове передбачення та обробку результатів описано в розділі передбачення.

Варіанти

Доступні дві глибини ResNet, обидві з фіксованим входом 520 px. Граф інференсу бібліотеки є FCN від torchvision із розширеним ResNet, а не мережею FCN-8s на основі VGG із пропускними з'єднаннями з початкової статті.

LibreYOLO не навчає FCN: train() спричиняє NotImplementedError для цього сімейства, яке рівень підтримки вище позначає як призначене лише для інференсу. Дві опубліковані контрольні точки є власними вагами torchvision, навченими на COCO й перетвореними для завантажувача LibreYOLO.

Валідація

val() повертає metrics/mIoU і metrics/pixel_accuracy, виміряні на будь-якому датасеті у форматі, на якому проводилося навчання.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreFCNr50.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mIoU"])print(metrics["metrics/pixel_accuracy"])
CLI
libreyolo val model=LibreFCNr50.pt data=my-dataset.yaml

Експорт

ЗадачаONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
semanticsemantic to ONNX: підтримуєтьсяsemantic to TorchScript: підтримуєтьсяsemantic to ExecuTorch: не підтримуєтьсяsemantic to TensorRT: підтримуєтьсяsemantic to OpenVINO: підтримуєтьсяsemantic to Paddle: не підтримуєтьсяsemantic to MNN: не підтримуєтьсяsemantic to RKNN: не підтримуєтьсяsemantic to ncnn: не підтримуєтьсяsemantic to TFLite: не підтримуєтьсяsemantic to CoreML: не підтримуєтьсяsemantic to Core AI: не підтримується

Експортований артефакт знову завантажується через LibreYOLO() відповідно до суфікса файлу, тому файл .onnx або .engine поводиться як контрольна точка й повертає той самий об'єкт Results. У розділі експорту наведено аргументи, які приймає кожен формат.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreFCNr50.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)
CLI
libreyolo export model=LibreFCNr50.pt format=onnxlibreyolo export model=LibreFCNr50.pt format=tensorrt half=True
Використання експортованого файлу
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Фабрика маршрутизує за суфіксом файлу, тому експортований артефакт# завантажується як будь-яка контрольна точка й повертає той самий об'єкт Results.model = LibreYOLO("LibreFCNr50.onnx")result = model(SAMPLE_IMAGE) print(result.semantic_mask.data.shape)

Контрольні точки

Усі опубліковані файли ваг цього сімейства.

ФайлВхід (пікс.)Ліцензія ваг
semantic
LibreFCNr50.pt520bsd-3-clause
LibreFCNr101.pt520bsd-3-clause

Кожен наведений вище файл уже доступний у організації LibreYOLO і завантажується під час першого використання.

Ліцензування

Перевіряйте ліцензію в репозиторії Hugging Face конкретних ваг, які завантажуєте. Кожна контрольна точка в організації LibreYOLO має ліцензію, і вона не завжди однакова для всього сімейства. Цей репозиторій є авторитетним джерелом, а наведене нижче резюме описує умови на момент останньої перевірки сторінки.

Це опис відповідних ліцензій, а не юридична консультація. Якщо відповідь має комерційне значення, самостійно прочитайте ліцензії та зверніться по юридичну консультацію.

Оригінальна робота
FCN, PyTorch
Ліцензія першоджерела
BSD-3-Clause
Джерело першоджерела
github.com/pytorch/vision
Код LibreYOLO
MIT
Ваги
BSD-3-Clause, повторно опубліковано на huggingface.co/LibreYOLO
Тлумачення
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.

Перевірено з LibreYOLO v1.5.0. Таблиці підтримки, контрольні точки й результати бенчмарків на цій сторінці згенеровано з випущеної бібліотеки та опублікованих ваг, а не написано вручну.