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.
Proyecto original
PIDNet de Jiacong Xu, MIT. Artículo, fuente
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.

bash
pip install libreyolo

Predicció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.

Python
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, ordenados
CLI
libreyolo predict model=LibrePIDNets-sem.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True

La 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.

Python
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"])
CLI
libreyolo val model=LibrePIDNets-sem.pt data=my-dataset.yaml

Exportación

TareaONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
semanticsemantic to ONNX: compatiblesemantic to TorchScript: compatiblesemantic to ExecuTorch: compatiblesemantic to TensorRT: compatiblesemantic to OpenVINO: compatiblesemantic to Paddle: no compatiblesemantic to MNN: no compatiblesemantic to RKNN: no compatiblesemantic to ncnn: compatiblesemantic to TFLite: compatiblesemantic to CoreML: no compatiblesemantic 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.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibrePIDNets-sem.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)
CLI
libreyolo export model=LibrePIDNets-sem.pt format=onnxlibreyolo export model=LibrePIDNets-sem.pt format=tensorrt half=True
Usar el archivo exportado
from 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.

ArchivoEntrada (px)Licencia de los pesos
semantic
LibrePIDNets-sem.pt1024mit
LibrePIDNetm-sem.pt1024mit
LibrePIDNetl-sem.pt1024mit

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.

Verificado con LibreYOLO v1.5.0. Las tablas de compatibilidad, los checkpoints y las cifras de rendimiento de esta página se generan a partir de la biblioteca publicada y los pesos publicados; no se escriben a mano.