DeepLabv3

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

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

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

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

bash
pip install libreyolo

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

Під час першого використання ваги завантажуються з Hugging Face і кешуються локально. Суфікс -sem у назві файлу обов'язковий для цього сімейства.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreDeepLabv3r50-sem.pt")result = model(SAMPLE_IMAGE, save=True) mask = result.semantic_maskprint(mask.data.shape)   # Ідентифікатори класів (H, W)print(mask.classes)      # Відсортовані ідентифікатори класів на зображенні
CLI
libreyolo predict model=LibreDeepLabv3r50-sem.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-50, розширений ResNet-101 і розширений MobileNetV3-Large. Це DeepLabv3, а не DeepLabv3+, тому тут немає етапу декодера чи уточнення CRF. Реалізація відповідає torchvision, а не власному еталонному коду зі статті.

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

Валідація

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

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDeepLabv3r50-sem.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mIoU"])print(metrics["metrics/pixel_accuracy"])
CLI
libreyolo val model=LibreDeepLabv3r50-sem.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("LibreDeepLabv3r50-sem.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)
CLI
libreyolo export model=LibreDeepLabv3r50-sem.pt format=onnxlibreyolo export model=LibreDeepLabv3r50-sem.pt format=tensorrt half=True
Використання експортованого файлу
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Фабрика маршрутизує за суфіксом файлу, тому експортований артефакт# завантажується як будь-яка контрольна точка й повертає той самий об'єкт Results.model = LibreYOLO("LibreDeepLabv3r50-sem.onnx")result = model(SAMPLE_IMAGE) print(result.semantic_mask.data.shape)

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

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

ФайлВхід (пікс.)Ліцензія ваг
semantic
LibreDeepLabv3r50-sem.ptbsd-3-clause
LibreDeepLabv3r101-sem.ptbsd-3-clause
LibreDeepLabv3mv3-sem.ptbsd-3-clause

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

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

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

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

Оригінальна робота
DeepLabv3, 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 ASPP head over its ResNet-50, ResNet-101 and MobileNetV3-Large backbones; it is DeepLabv3, not DeepLabv3+, so there is no decoder or CRF, and the paper's training-only auxiliary FCN classifier is excluded. The three published checkpoints are torchvision's official COCO-with-VOC-label 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. Таблиці підтримки, контрольні точки й результати бенчмарків на цій сторінці згенеровано з випущеної бібліотеки та опублікованих ваг, а не написано вручну.