PIDNet
Una red de segmentación semántica de tres ramas que añade una rama dedicada a los bordes sobre un diseño inspirado en el control proporcional-integral-derivativo, pensada para inferencia en tiempo real. LibreYOLO la incluye solo para segmentación semántica.
- Tareas
- semantic
- Tamaños
- s, m, l at 1024 px
- Instalación
pip install libreyolo- Nivel de compatibilidad
- Solo inferencia, desde v. Solo permite predecir, validar y exportar. Las funciones de entrenamiento no se aplican.
- Licencias
- Código MIT, pesos MIT. Uso comercial
Instalación
PIDNet no necesita ningún extra opcional. Todo lo que importa está en la instalación base.
pip install libreyoloPredicción
Los pesos se descargan de Hugging Face en el primer uso y se guardan en la
caché local. El sufijo -sem en el nombre del archivo es obligatorio para esta
familia.
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) ids de claseprint(mask.classes) # ids de clase presentes en la imagen, ordenadoslibreyolo predict model=LibrePIDNets-sem.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=TrueLa segmentación semántica devuelve un id de clase por píxel, no bounding boxes,
así que result.semantic_mask lleva un array (H, W) en .data y la lista de
ids de clase presentes en la imagen en .classes. conf, iou y max_det se
aceptan por paridad de API pero no tienen ningún efecto: el modelo asigna una
clase a cada píxel por argmax, sin umbral de confianza ni paso de NMS. Consulta
predicción para fuentes, streaming y manejo de resultados.
Variantes
Tres tamaños, todos con una entrada fija de 1024 px. Los checkpoints publicados son conversiones de los pesos oficiales de PIDNet para Cityscapes, con 19 clases.
LibreYOLO no entrena PIDNet: train() lanza NotImplementedError para esta
familia, algo que el nivel de soporte de arriba marca como solo
inferencia.
Validación
val() devuelve metrics/mIoU y metrics/pixel_accuracy, medidos contra
cualquier dataset en el formato con el que entrenaste.
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.yamlExportación
| Tarea | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| semantic | semantic to ONNX: compatible | semantic to TorchScript: compatible | semantic to ExecuTorch: compatible | semantic to TensorRT: compatible | semantic to OpenVINO: compatible | semantic to Paddle: no compatible | semantic to MNN: no compatible | semantic to RKNN: no compatible | semantic to ncnn: compatible | semantic to TFLite: compatible | semantic to CoreML: no compatible | semantic to Core AI: compatible |
Un artefacto exportado se vuelve a cargar con LibreYOLO() según su extensión
de archivo, así que un archivo .onnx o .engine se comporta como un
checkpoint y devuelve el mismo Results. Exportación enumera
los argumentos que acepta cada formato.
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 # La factoría enruta según la extensión del archivo, así que un artefacto# exportado se carga como cualquier checkpoint y devuelve el mismo objeto# Results.model = LibreYOLO("LibrePIDNets-sem.onnx")result = model(SAMPLE_IMAGE) print(result.semantic_mask.data.shape)Checkpoints
Todos los archivos de pesos publicados de esta familia.
| Archivo | Entrada (px) | Licencia de los pesos |
|---|---|---|
| semantic | ||
| LibrePIDNets-sem.pt | 1024 | mit |
| LibrePIDNetm-sem.pt | 1024 | mit |
| LibrePIDNetl-sem.pt | 1024 | mit |
Todos los archivos anteriores existen hoy en la organización de LibreYOLO y se descargan la primera vez que se usan.
Licencia
Comprueba la licencia en el repositorio de Hugging Face de los pesos concretos que descargues. Cada checkpoint de la organización de LibreYOLO incluye una, y no siempre es la misma en toda una familia. Ese repositorio es la fuente autorizada; el resumen siguiente describe qué se aplicaba cuando se verificó esta página por última vez.
Esta es una descripción de las licencias implicadas, no asesoramiento legal. Si la respuesta es importante a nivel comercial, lee las licencias y busca tu propio asesoramiento.
- Trabajo original
- PIDNet, Jiacong Xu
- Licencia del proyecto original
- MIT
- Fuente del proyecto original
- github.com/XuJiacong/PIDNet
- Código de LibreYOLO
- MIT
- Pesos
- MIT, republicados en huggingface.co/LibreYOLO
- Interpretación
- 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.
Cita
@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}
}Copiado del bloque de cita de los autores en github.com/XuJiacong/PIDNet#bibtex-citation.