Mask R-CNN
Mask R-CNN añade a Faster R-CNN una rama de máscaras por región, que predice una máscara de segmentación junto a cada caja que detecta. LibreYOLO incluye un port de la implementación de torchvision para detección y segmentación de instancias.
- Tareas
- detection, instance segmentation
- Tamaños
- r50 at 800 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 BSD-3-Clause, pesos BSD-3-Clause. Uso comercial
Instalación
Mask R-CNN 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.
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreMaskRCNNr50.pt")result = model(SAMPLE_IMAGE, save=True) print(result.masks.data.shape)for box in result.boxes: print(box.cls, box.conf, box.xyxy)libreyolo predict model=LibreMaskRCNNr50.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=Truefrom libreyolo import LibreYOLO, SAMPLE_IMAGE # task="detect" omite la cabeza de máscaras y devuelve las cajas del mismo# checkpoint, sin máscaras en el resultado.model = LibreYOLO("LibreMaskRCNNr50.pt", task="detect")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)El objeto Results devuelto es el mismo que devuelven todas las familias, así
que cambiar a otro detector es un cambio de una línea. Cargar el checkpoint sin
el argumento task devuelve máscaras de instancia, ya que la segmentación es la
tarea por defecto de esta familia; result.masks las lleva entonces junto a las
cajas. Pasar task="detect" carga los mismos pesos sin la cabeza de máscaras y
devuelve solo cajas. conf e iou fijan los umbrales de confianza y de NMS;
Mask R-CNN mantiene su paso de NMS upstream, a diferencia de un detector basado
en queries. Consulta predicción para fuentes, streaming y
manejo de resultados.
Variantes
Un solo backbone: ResNet-50 con una pirámide de características, usando el builder v2 de Mask R-CNN de torchvision. El checkpoint publicado lleva licencia BSD-3-Clause y sirve para las dos tareas de esta familia, así que no hay ningún tamaño entre el que elegir.
Validación
val() devuelve un diccionario de claves metrics/. Con la tarea de
segmentación por defecto de este checkpoint, la clave metrics/mAP50-95 a secas
contiene la puntuación de las máscaras, y la misma ejecución reporta las cajas
bajo el sufijo (B), así que ambas están disponibles en una sola pasada.
from libreyolo import LibreYOLO model = LibreYOLO("LibreMaskRCNNr50.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"]) # máscarasprint(metrics["metrics/mAP50-95(B)"]) # cajaslibreyolo val model=LibreMaskRCNNr50.pt data=my-dataset.yamlExportación
| Tarea | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Detection | Detection to ONNX: compatible | Detection to TorchScript: no compatible | Detection to ExecuTorch: no compatible | Detection to TensorRT: no compatible | Detection to OpenVINO: no compatible | Detection to Paddle: no compatible | Detection to MNN: no compatible | Detection to RKNN: no compatible | Detection to ncnn: no compatible | Detection to TFLite: no compatible | Detection to CoreML: no compatible | Detection to Core AI: no compatible |
| Instance segmentation | Instance segmentation to ONNX: compatible | Instance segmentation to TorchScript: no compatible | Instance segmentation to ExecuTorch: no compatible | Instance segmentation to TensorRT: no compatible | Instance segmentation to OpenVINO: no compatible | Instance segmentation to Paddle: no compatible | Instance segmentation to MNN: no compatible | Instance segmentation to RKNN: no compatible | Instance segmentation to ncnn: no compatible | Instance segmentation to TFLite: no compatible | Instance segmentation to CoreML: no compatible | Instance segmentation to Core AI: no compatible |
Mask R-CNN solo exporta a ONNX, con tamaño de batch 1. El grafo exportado
mantiene dentro los pasos de redimensionado y de pegado de máscaras upstream,
así que LibreYOLO fuerza dynamic=True independientemente de lo que se le pase,
para que el grafo siga siendo válido con fuentes que no sean cuadradas. Un
archivo .onnx exportado se vuelve a cargar con LibreYOLO() según la
extensión de su archivo y devuelve el mismo Results.
from libreyolo import LibreYOLO model = LibreYOLO("LibreMaskRCNNr50.pt")model.export(format="onnx", imgsz=800)libreyolo export model=LibreMaskRCNNr50.pt format=onnx imgsz=800from 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("LibreMaskRCNNr50.onnx")result = model(SAMPLE_IMAGE) print(result.masks.data.shape)Checkpoints
Todos los archivos de pesos publicados de esta familia. El único checkpoint de
abajo aparece listado bajo detect, pero el mismo archivo se carga también para
segmentación: no pases el argumento task y devolverá máscaras por defecto.
| Archivo | Entrada (px) | Licencia de los pesos |
|---|---|---|
| Detection | ||
| LibreMaskRCNNr50.pt | 800 | bsd-3-clause |
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
- Mask R-CNN, PyTorch
- Licencia del proyecto original
- BSD-3-Clause
- Fuente del proyecto original
- github.com/pytorch/vision
- Código de LibreYOLO
- MIT
- Pesos
- BSD-3-Clause, republicados en huggingface.co/LibreYOLO
- Interpretación
- BSD-3-Clause is a permissive license, so this code can be used in commercial and closed-source products with no obligation on your own application code. It asks only that you keep the copyright notice and disclaimer with any copy you redistribute, and it carries no patent grant. The published checkpoint used for parity testing is not distributed in the LibreYOLO source tree: torchvision's own documentation notes that a pretrained model's terms may depend on its training data, so the Hugging Face mirror ships the BSD text on that implied basis and repeats the caveat rather than issuing an explicit checkpoint-specific grant.
Mask R-CNN está construido como una subclase del wrapper de Faster R-CNN de LibreYOLO: comparte la misma fuente de torchvision y la misma licencia BSD-3-Clause, y añade el predictor de máscaras y la cabeza RoI de máscaras del mismo commit portado.