FCN
Щільний попіксельний класифікатор замінює повнозв'язні шари детектора згортками, тому виводить повнорозмірну карту класів замість рамок. LibreYOLO постачає його лише для семантичної сегментації.
- Задачі
- semantic
- Розміри
- r50, r101 at 520 px
- Встановлення
pip install libreyolo- Рівень підтримки
- Лише інференс, починаючи з v. Лише передбачення, валідація та експорт. Функції навчання не застосовуються.
- Ліцензії
- Код: BSD-3-Clause, ваги: BSD-3-Clause. Комерційне використання
Встановлення
FCN не потребує додаткових залежностей. Усе, що вона імпортує, входить до базового встановлення.
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)print(mask.classes) # Відсортовані ідентифікатори класів на зображенні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, виміряні на
будь-якому датасеті у форматі, на якому проводилося навчання.
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.