FCN
Плотный попиксельный классификатор, который заменяет полносвязные слои детектора свёртками, поэтому выдаёт карту классов в полном разрешении, а не рамки. LibreYOLO поставляет его только для семантической сегментации.
- Задачи
- semantic
- Размеры
- r50, r101 at 520 px
- Установка
pip install libreyolo- Уровень поддержки
- Только инференс, начиная с v. Только предсказание, валидация и экспорт. Функции обучения неприменимы.
- Исходный проект
- FCN от PyTorch, BSD-3-Clause. Статья, исходный код
- Лицензии
- Код: BSD-3-Clause, веса: BSD-3-Clause. Коммерческое использование
Установка
FCN не требует опциональных extra. Всё, что он импортирует, входит в базовую установку.
pip install libreyoloПредсказание
Веса скачиваются с Hugging Face при первом запуске и кэшируются локально.
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) id классовprint(mask.classes) # отсортированные id классов, присутствующих на изображенииlibreyolo predict model=LibreFCNr50.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=TrueСемантическая сегментация возвращает по одному id класса на пиксель, а не
рамки, поэтому result.semantic_mask хранит массив (H, W) в .data и список
id классов, присутствующих на изображении, в .classes. conf, iou и
max_det принимаются ради совместимости API, но ни на что не влияют: модель
назначает класс каждому пикселю по argmax, без порога уверенности и без шага
NMS. Про источники, стриминг и обработку результатов см.
предсказание.
Варианты
Две глубины ResNet, обе с фиксированным входом 520 px. Граф инференса в библиотеке — это FCN на ResNet с расширенными свёртками из torchvision, а не исходная сеть FCN-8s из статьи, построенная на VGG и со skip-связями.
LibreYOLO не обучает FCN: train() вызывает NotImplementedError для этого
семейства, и уровень поддержки выше помечает его как только
инференс. Два опубликованных чекпойнта — это собственные веса torchvision,
обученные на COCO и конвертированные для загрузчика LibreYOLO.
Валидация
val() возвращает metrics/mIoU и metrics/pixel_accuracy, измеренные на
любом датасете в том формате, в котором вы обучали.
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.yamlЭкспорт
| Задача | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| semantic | semantic 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. Экспорт перечисляет аргументы, которые
принимает каждый формат.
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 # Фабрика выбирает загрузчик по расширению файла, поэтому# экспортированный артефакт загружается как любой чекпойнт и# возвращает тот же объект Results.model = LibreYOLO("LibreFCNr50.onnx")result = model(SAMPLE_IMAGE) print(result.semantic_mask.data.shape)Чекпойнты
Все опубликованные файлы весов этого семейства.
| Файл | Вход (пикс.) | Лицензия весов |
|---|---|---|
| semantic | ||
| LibreFCNr50.pt | 520 | bsd-3-clause |
| LibreFCNr101.pt | 520 | bsd-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.