Saltar al contenido

Ultralytics Documentos: Utilizar YOLOv8 con SAHI para la inferencia en rodajas

Bienvenido a la documentaci贸n de Ultralytics sobre c贸mo utilizar YOLOv8 con SAHI (Slicing Aided Hyper Inference). Esta completa gu铆a pretende proporcionarte todos los conocimientos esenciales que necesitar谩s para aplicar SAHI junto con YOLOv8. Profundizaremos en qu茅 es SAHI, por qu茅 la inferencia en rodajas es fundamental para las aplicaciones a gran escala, y c贸mo integrar estas funcionalidades con YOLOv8 para mejorar el rendimiento de la detecci贸n de objetos.

Visi贸n general de la inferencia rebanada SAHI

Introducci贸n a SAHI

SAHI (Slicing Aided Hyper Inference) es una innovadora biblioteca dise帽ada para optimizar los algoritmos de detecci贸n de objetos en im谩genes a gran escala y de alta resoluci贸n. Su funci贸n principal consiste en dividir las im谩genes en fragmentos manejables, ejecutar la detecci贸n de objetos en cada fragmento y, a continuaci贸n, unir los resultados. SAHI es compatible con una serie de modelos de detecci贸n de objetos, incluida la serie YOLO , por lo que ofrece flexibilidad al tiempo que garantiza un uso optimizado de los recursos inform谩ticos.



Observa: Inferencia con SAHI (Slicing Aided Hyper Inference) usando Ultralytics YOLOv8

Caracter铆sticas principales de SAHI

  • Integraci贸n sin fisuras: SAHI se integra sin esfuerzo con los modelos de YOLO , lo que significa que puedes empezar a cortar y detectar sin necesidad de modificar mucho el c贸digo.
  • Eficiencia de recursos: Al dividir las im谩genes grandes en partes m谩s peque帽as, SAHI optimiza el uso de la memoria, lo que te permite ejecutar una detecci贸n de alta calidad en hardware con recursos limitados.
  • Alta precisi贸n: SAHI mantiene la precisi贸n de detecci贸n empleando algoritmos inteligentes para fusionar los cuadros de detecci贸n superpuestos durante el proceso de cosido.

驴Qu茅 es la inferencia en rodajas?

La Inferencia por Cortes se refiere a la pr谩ctica de subdividir una imagen grande o de alta resoluci贸n en segmentos m谩s peque帽os (cortes), realizar la detecci贸n de objetos en estos cortes y, a continuaci贸n, recompilar los cortes para reconstruir las ubicaciones de los objetos en la imagen original. Esta t茅cnica es inestimable en situaciones en las que los recursos inform谩ticos son limitados o cuando se trabaja con im谩genes de muy alta resoluci贸n que, de otro modo, podr铆an provocar problemas de memoria.

Ventajas de la inferencia en rodajas

  • Carga computacional reducida: Los cortes de imagen m谩s peque帽os son m谩s r谩pidos de procesar y consumen menos memoria, lo que permite un funcionamiento m谩s fluido en hardware de gama baja.

  • Calidad de detecci贸n preservada: Como cada corte se trata de forma independiente, no se reduce la calidad de la detecci贸n de objetos, siempre que los cortes sean lo bastante grandes para captar los objetos de inter茅s.

  • Escalabilidad mejorada: La t茅cnica permite escalar m谩s f谩cilmente la detecci贸n de objetos en diferentes tama帽os y resoluciones de im谩genes, lo que la hace ideal para una amplia gama de aplicaciones, desde las im谩genes de sat茅lite hasta el diagn贸stico m茅dico.

YOLOv8 sin SAHI YOLOv8 con SAHI
YOLOv8 sin SAHI YOLOv8 con SAHI

Instalaci贸n y preparaci贸n

Instalaci贸n

Para empezar, instala las 煤ltimas versiones de SAHI y Ultralytics:

pip install -U ultralytics sahi

Importar m贸dulos y descargar recursos

A continuaci贸n te explicamos c贸mo importar los m贸dulos necesarios y descargar un modelo de YOLOv8 y algunas im谩genes de prueba:

from sahi.utils.file import download_from_url
from sahi.utils.yolov8 import download_yolov8s_model

# Download YOLOv8 model
yolov8_model_path = "models/yolov8s.pt"
download_yolov8s_model(yolov8_model_path)

# Download test images
download_from_url(
    "https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/small-vehicles1.jpeg",
    "demo_data/small-vehicles1.jpeg",
)
download_from_url(
    "https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/terrain2.png",
    "demo_data/terrain2.png",
)

Inferencia est谩ndar con YOLOv8

Instanciar el modelo

Puedes instanciar un modelo YOLOv8 para la detecci贸n de objetos de esta forma:

from sahi import AutoDetectionModel

detection_model = AutoDetectionModel.from_pretrained(
    model_type="yolov8",
    model_path=yolov8_model_path,
    confidence_threshold=0.3,
    device="cpu",  # or 'cuda:0'
)

Realiza una predicci贸n est谩ndar

Realiza una inferencia est谩ndar utilizando una ruta de imagen o una imagen numpy.

from sahi.predict import get_prediction

# With an image path
result = get_prediction("demo_data/small-vehicles1.jpeg", detection_model)

# With a numpy image
result = get_prediction(read_image("demo_data/small-vehicles1.jpeg"), detection_model)

Visualiza los resultados

Exporta y visualiza los recuadros delimitadores y las m谩scaras predichas:

result.export_visuals(export_dir="demo_data/")
Image("demo_data/prediction_visual.png")

Inferencia en rodajas con YOLOv8

Realiza la inferencia en rodajas especificando las dimensiones de las rodajas y las relaciones de solapamiento:

from sahi.predict import get_sliced_prediction

result = get_sliced_prediction(
    "demo_data/small-vehicles1.jpeg",
    detection_model,
    slice_height=256,
    slice_width=256,
    overlap_height_ratio=0.2,
    overlap_width_ratio=0.2,
)

Manejo de los resultados de la predicci贸n

SAHI proporciona un PredictionResult que puede convertirse en varios formatos de anotaci贸n:

# Access the object prediction list
object_prediction_list = result.object_prediction_list

# Convert to COCO annotation, COCO prediction, imantics, and fiftyone formats
result.to_coco_annotations()[:3]
result.to_coco_predictions(image_id=1)[:3]
result.to_imantics_annotations()[:3]
result.to_fiftyone_detections()[:3]

Predicci贸n por lotes

Para la predicci贸n por lotes en un directorio de im谩genes:

from sahi.predict import predict

predict(
    model_type="yolov8",
    model_path="path/to/yolov8n.pt",
    model_device="cpu",  # or 'cuda:0'
    model_confidence_threshold=0.4,
    source="path/to/dir",
    slice_height=256,
    slice_width=256,
    overlap_height_ratio=0.2,
    overlap_width_ratio=0.2,
)

Ya est谩. Ahora est谩s equipado para utilizar YOLOv8 con SAHI tanto para la inferencia est谩ndar como para la rebanada.

Citas y agradecimientos

Si utilizas SAHI en tu trabajo de investigaci贸n o desarrollo, cita el documento original de SAHI y da las gracias a los autores:

@article{akyon2022sahi,
  title={Slicing Aided Hyper Inference and Fine-tuning for Small Object Detection},
  author={Akyon, Fatih Cagatay and Altinuc, Sinan Onur and Temizel, Alptekin},
  journal={2022 IEEE International Conference on Image Processing (ICIP)},
  doi={10.1109/ICIP46576.2022.9897990},
  pages={966-970},
  year={2022}
}

Extendemos nuestro agradecimiento al grupo de investigaci贸n SAHI por crear y mantener este recurso inestimable para la comunidad de visi贸n por ordenador. Para m谩s informaci贸n sobre SAHI y sus creadores, visita el repositorio SAHI GitHub.

PREGUNTAS FRECUENTES

驴C贸mo puedo integrar YOLOv8 con SAHI para la inferencia rebanada en la detecci贸n de objetos?

La integraci贸n de Ultralytics YOLOv8 con SAHI (Slicing Aided Hyper Inference) para la inferencia en rodajas optimiza tus tareas de detecci贸n de objetos en im谩genes de alta resoluci贸n, particion谩ndolas en rodajas manejables. Este enfoque mejora el uso de la memoria y garantiza una gran precisi贸n en la detecci贸n. Para empezar, necesitas instalar las bibliotecas ultralytics y sahi:

pip install -U ultralytics sahi

A continuaci贸n, descarga un modelo YOLOv8 e im谩genes de prueba:

from sahi.utils.file import download_from_url
from sahi.utils.yolov8 import download_yolov8s_model

# Download YOLOv8 model
yolov8_model_path = "models/yolov8s.pt"
download_yolov8s_model(yolov8_model_path)

# Download test images
download_from_url(
    "https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/small-vehicles1.jpeg",
    "demo_data/small-vehicles1.jpeg",
)

Para obtener instrucciones m谩s detalladas, consulta nuestra gu铆a de Inferencia en Rebanadas.

驴Por qu茅 deber铆a utilizar SAHI con YOLOv8 para la detecci贸n de objetos en im谩genes grandes?

Utilizar SAHI con Ultralytics YOLOv8 para la detecci贸n de objetos en im谩genes grandes ofrece varias ventajas:

  • Carga computacional reducida: Los trozos m谩s peque帽os se procesan m谩s r谩pidamente y consumen menos memoria, lo que hace factible ejecutar detecciones de alta calidad en hardware con recursos limitados.
  • Precisi贸n de detecci贸n mantenida: SAHI utiliza algoritmos inteligentes para fusionar las cajas superpuestas, preservando la calidad de la detecci贸n.
  • Escalabilidad mejorada: Al escalar las tareas de detecci贸n de objetos en distintos tama帽os y resoluciones de imagen, SAHI resulta ideal para diversas aplicaciones, como el an谩lisis de im谩genes de sat茅lite y el diagn贸stico m茅dico.

Obt茅n m谩s informaci贸n sobre las ventajas de la inferencia rebanada en nuestra documentaci贸n.

驴Puedo visualizar los resultados de la predicci贸n cuando utilizo YOLOv8 con SAHI?

S铆, puedes visualizar los resultados de las predicciones cuando utilices YOLOv8 con SAHI. A continuaci贸n te explicamos c贸mo puedes exportar y visualizar los resultados:

result.export_visuals(export_dir="demo_data/")
from IPython.display import Image

Image("demo_data/prediction_visual.png")

Este comando guardar谩 las predicciones visualizadas en el directorio especificado y luego podr谩s cargar la imagen para verla en tu cuaderno o aplicaci贸n. Para una gu铆a detallada, consulta la secci贸n Inferencia est谩ndar.

驴Qu茅 funciones ofrece SAHI para mejorar la detecci贸n de objetos YOLOv8 ?

SAHI (Slicing Aided Hyper Inference) ofrece varias funciones que complementan a Ultralytics YOLOv8 para la detecci贸n de objetos:

  • Integraci贸n perfecta: SAHI se integra f谩cilmente con los modelos de YOLO , requiriendo m铆nimos ajustes de c贸digo.
  • Eficiencia de recursos: Particiona las im谩genes grandes en trozos m谩s peque帽os, lo que optimiza el uso de memoria y la velocidad.
  • Alta precisi贸n: Al fusionar eficazmente los cuadros de detecci贸n superpuestos durante el proceso de cosido, SAHI mantiene una alta precisi贸n de detecci贸n.

Para comprenderlo mejor, lee sobre las caracter铆sticas clave de SAHI.

驴C贸mo puedo gestionar proyectos de inferencia a gran escala utilizando YOLOv8 y SAHI?

Para gestionar proyectos de inferencia a gran escala utilizando YOLOv8 y SAHI, sigue estas pr谩cticas recomendadas:

  1. Instala las bibliotecas necesarias: Aseg煤rate de que tienes las 煤ltimas versiones de ultralytics y sahi.
  2. Configura la inferencia por cortes: Determina las dimensiones de corte y las relaciones de solapamiento 贸ptimas para tu proyecto espec铆fico.
  3. Ejecutar predicciones por lotes: Utiliza las capacidades de SAHI para realizar predicciones por lotes en un directorio de im谩genes, lo que mejora la eficacia.

Ejemplo de predicci贸n por lotes:

from sahi.predict import predict

predict(
    model_type="yolov8",
    model_path="path/to/yolov8n.pt",
    model_device="cpu",  # or 'cuda:0'
    model_confidence_threshold=0.4,
    source="path/to/dir",
    slice_height=256,
    slice_width=256,
    overlap_height_ratio=0.2,
    overlap_width_ratio=0.2,
)

Para ver pasos m谩s detallados, visita nuestra secci贸n sobre Predicci贸n por lotes.



Creado 2023-11-12, Actualizado 2024-07-05
Autores: glenn-jocher (7), RizwanMunawar (1)

Comentarios