PIDNet
Трёхветвевая сеть семантической сегментации, которая добавляет отдельную ветвь границ к архитектуре, вдохновлённой пропорционально-интегрально-дифференциальным регулятором, и нацелена на инференс в реальном времени. LibreYOLO поставляет её только для семантической сегментации.
- Задачи
- semantic
- Размеры
- s, m, l at 1024 px
- Установка
pip install libreyolo- Уровень поддержки
- Только инференс, начиная с v. Только предсказание, валидация и экспорт. Функции обучения неприменимы.
- Исходный проект
- PIDNet от Jiacong Xu, MIT. Статья, исходный код
- Лицензии
- Код: MIT, веса: MIT. Коммерческое использование
Установка
PIDNet не требует опциональных extra. Всё, что он импортирует, входит в базовую установку.
pip install libreyoloПредсказание
Веса скачиваются с Hugging Face при первом запуске и кэшируются локально.
Суффикс -sem в имени файла обязателен для этого семейства.
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibrePIDNets-sem.pt")result = model(SAMPLE_IMAGE, save=True) mask = result.semantic_maskprint(mask.data.shape) # (H, W) id классовprint(mask.classes) # отсортированные id классов, присутствующих на изображенииlibreyolo predict model=LibrePIDNets-sem.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. Про источники, стриминг и обработку результатов см.
предсказание.
Варианты
Три размера, все с фиксированным входом 1024 px. Опубликованные чекпойнты — это конвертации официальных весов PIDNet на Cityscapes, 19 классов.
LibreYOLO не обучает PIDNet: train() вызывает NotImplementedError для
этого семейства, и уровень поддержки выше помечает его как
только инференс.
Валидация
val() возвращает metrics/mIoU и metrics/pixel_accuracy, измеренные на
любом датасете в том формате, в котором вы обучали.
from libreyolo import LibreYOLO model = LibreYOLO("LibrePIDNets-sem.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mIoU"])print(metrics["metrics/pixel_accuracy"])libreyolo val model=LibrePIDNets-sem.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("LibrePIDNets-sem.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)libreyolo export model=LibrePIDNets-sem.pt format=onnxlibreyolo export model=LibrePIDNets-sem.pt format=tensorrt half=Truefrom libreyolo import LibreYOLO, SAMPLE_IMAGE # Фабрика выбирает загрузчик по расширению файла, поэтому# экспортированный артефакт загружается как любой чекпойнт и# возвращает тот же объект Results.model = LibreYOLO("LibrePIDNets-sem.onnx")result = model(SAMPLE_IMAGE) print(result.semantic_mask.data.shape)Чекпойнты
Все опубликованные файлы весов этого семейства.
| Файл | Вход (пикс.) | Лицензия весов |
|---|---|---|
| semantic | ||
| LibrePIDNets-sem.pt | 1024 | mit |
| LibrePIDNetm-sem.pt | 1024 | mit |
| LibrePIDNetl-sem.pt | 1024 | mit |
Все перечисленные выше файлы уже доступны в организации LibreYOLO и скачиваются при первом использовании.
Лицензирование
Проверяйте лицензию в репозитории конкретных весов на Hugging Face. Она указана для каждого чекпойнта в организации LibreYOLO и может различаться даже внутри одного семейства. Этот репозиторий считается авторитетным источником, а сводка ниже описывает условия на момент последней проверки страницы.
Это описание соответствующих лицензий, а не юридическая консультация. Если ответ важен для коммерческого использования, прочитайте лицензии самостоятельно и проконсультируйтесь с юристом.
- Оригинальная работа
- PIDNet, Jiacong Xu
- Лицензия исходного проекта
- MIT
- Исходный код проекта
- github.com/XuJiacong/PIDNet
- Код LibreYOLO
- MIT
- Веса
- MIT, повторно опубликованы на huggingface.co/LibreYOLO
- Толкование
- MIT is a permissive license, so this code and these weights can be used in commercial and closed-source products. It asks only that you keep the copyright and license notice with any copy you redistribute. LibreYOLO's checkpoints are conversions of the official PIDNet Cityscapes weights, which upstream licenses as MIT. The Cityscapes dataset itself carries separate research-oriented terms and is not redistributed by LibreYOLO.
Цитирование
@misc{xu2022pidnet,
title={PIDNet: A Real-time Semantic Segmentation Network Inspired from PID Controller},
author={Jiacong Xu and Zixiang Xiong and Shankar P. Bhattacharyya},
year={2022},
eprint={2206.02066},
archivePrefix={arXiv},
primaryClass={cs.CV}
}Скопировано из блока цитирования авторов на странице github.com/XuJiacong/PIDNet#bibtex-citation.