YOLOv3 y YOLOv3u#
Descripción general#
Este documento presenta una descripción general de tres modelos de detección de objetos estrechamente relacionados: YOLOv3, YOLOv3-Ultralytics y YOLOv3u.
-
YOLOv3: Esta es la tercera versión del algoritmo de detección de objetos «Solo se mira una vez» (YOLO). Desarrollado originalmente por Joseph Redmon, YOLOv3 mejoró a sus predecesores al introducir funciones como predicciones multiescala y tres tamaños distintos de núcleos de detección.
-
YOLOv3-Ultralytics: Esta es la implementación de YOLOv3 en Ultralytics PyTorch, mantenida en el repositorio ultralytics/yolov3. Conserva la arquitectura original basada en anclajes y añade más modelos preentrenados y opciones de personalización más sencillas.
-
YOLOv3u: Esta es una versión actualizada de YOLOv3-Ultralytics que incorpora la cabeza dividida sin anclajes y sin predicción de presencia de objetos que se usa en los modelos YOLOv8. YOLOv3u mantiene la misma arquitectura de backbone y cuello que YOLOv3, pero utiliza la cabeza de detección actualizada de YOLOv8.

Características principales#
-
YOLOv3: Introdujo el uso de tres escalas distintas para la detección, con tres tamaños distintos de núcleos de detección: 13x13, 26x26 y 52x52. Esto mejoró notablemente la precisión de detección de objetos de distintos tamaños. Además, YOLOv3 añadió funciones como predicciones multietiqueta para cada cuadro delimitador y una red extractora de características mejorada.
-
YOLOv3u: Este modelo actualizado incorpora la cabeza dividida sin anclajes y sin predicción de presencia de objetos de YOLOv8. Al eliminar la necesidad de cuadros de anclaje predefinidos y puntuaciones de presencia de objetos, este diseño de cabeza de detección puede mejorar la capacidad del modelo para detectar objetos de tamaños y formas variados. Esto hace que YOLOv3u sea más robusto y preciso en tareas de detección de objetos.
Tareas y modos compatibles#
YOLOv3 está diseñado específicamente para tareas de detección de objetos. Ultralytics admite tres variantes de YOLOv3: yolov3u, yolov3-tinyu y yolov3-sppu. La u del nombre indica que estas variantes utilizan la cabeza sin anclajes de YOLOv8, a diferencia de su arquitectura original, basada en anclajes. Estos modelos son conocidos por su eficacia en distintos escenarios reales y por equilibrar precisión y velocidad. Cada variante ofrece características y optimizaciones propias, por lo que resulta adecuada para distintas aplicaciones.
Los tres modelos admiten un conjunto completo de modos, lo que garantiza su versatilidad en las distintas fases del despliegue de modelos y del desarrollo. Estos modos incluyen Inferencia, Validación, Entrenamiento y Exportación, y ofrecen a los usuarios un conjunto de herramientas completo para una detección de objetos eficaz.
| Tipo de modelo | Pesos preentrenados | Tareas compatibles | Entrenamiento | Validación | Inferencia | Exportar |
|---|---|---|---|---|---|---|
| YOLOv3(u) | yolov3u.pt | Detección de objetos | ✅ | ✅ | ✅ | ✅ |
| YOLOv3-Tiny(u) | yolov3-tinyu.pt | Detección de objetos | ✅ | ✅ | ✅ | ✅ |
| YOLOv3-SPP(u) | yolov3-sppu.pt | Detección de objetos | ✅ | ✅ | ✅ | ✅ |
Esta tabla ofrece una visión general rápida de las capacidades de cada variante de YOLOv3 y destaca su versatilidad e idoneidad para distintas tareas y modos operativos en los flujos de trabajo de detección de objetos.
Ejemplos de uso#
Este ejemplo muestra cómo entrenar e inferir con YOLOv3 de forma sencilla. Para consultar la documentación completa sobre estos y otros modos, visita las páginas de documentación de Predicción, Entrenamiento, Validación y Exportación.
Se pueden pasar modelos *.pt preentrenados de PyTorch, así como archivos de configuración *.yaml, a la clase YOLO() para crear una instancia del modelo en Python:
from ultralytics import YOLO
# Carga un modelo YOLOv3u preentrenado con COCO
model = YOLO("yolov3u.pt")
# Mostrar información del modelo (opcional)
model.info()
# Entrena el modelo durante 100 épocas con el conjunto de datos de ejemplo COCO8
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Ejecuta inferencias con el modelo YOLOv3u en la imagen 'bus.jpg'
results = model("path/to/bus.jpg")Citas y agradecimientos#
Si utilizas YOLOv3 en tu investigación, cita los artículos originales de YOLO y el repositorio de YOLOv3 de Ultralytics:
@article{redmon2018yolov3,
title={YOLOv3: An Incremental Improvement},
author={Redmon, Joseph and Farhadi, Ali},
journal={arXiv preprint arXiv:1804.02767},
year={2018}
}Gracias a Joseph Redmon y Ali Farhadi por desarrollar el YOLOv3 original.
Preguntas frecuentes#
YOLOv3 es la tercera iteración del algoritmo de detección de objetos YOLO («Solo se mira una vez»), desarrollado por Joseph Redmon y conocido por equilibrar precisión y velocidad. Utiliza tres escalas distintas (13x13, 26x26 y 52x52) para las detecciones. YOLOv3-Ultralytics es la adaptación de YOLOv3 de Ultralytics, que añade compatibilidad con más modelos preentrenados y facilita la personalización de modelos. YOLOv3u es una variante mejorada de YOLOv3-Ultralytics que incorpora la cabeza dividida sin anclajes y sin predicción de presencia de objetos de YOLOv8, lo que mejora la robustez y precisión de la detección de objetos de distintos tamaños. Para obtener más información sobre las variantes, consulta la serie YOLOv3.
Entrenar un modelo YOLOv3 con Ultralytics es sencillo. Puedes entrenar el modelo con Python o con la CLI:
Ejemplofrom ultralytics import YOLO # Carga un modelo YOLOv3u preentrenado con COCO model = YOLO("yolov3u.pt") # Entrena el modelo durante 100 épocas con el conjunto de datos de ejemplo COCO8 results = model.train(data="coco8.yaml", epochs=100, imgsz=640)Para consultar más opciones y directrices de entrenamiento, visita nuestra documentación del modo Train.
YOLOv3u mejora YOLOv3 y YOLOv3-Ultralytics al incorporar la cabeza dividida sin anclajes y sin predicción de presencia de objetos que se usa en los modelos YOLOv8. Esta mejora elimina la necesidad de cuadros de anclaje predefinidos y puntuaciones de presencia de objetos, lo que aumenta su capacidad para detectar con mayor precisión objetos de tamaños y formas variados. Esto hace que YOLOv3u sea una mejor opción para tareas de detección de objetos complejas y diversas. Para obtener más información, consulta la sección Características principales.
Puedes realizar inferencias con modelos YOLOv3 mediante scripts de Python o comandos de la CLI:
Ejemplofrom ultralytics import YOLO # Carga un modelo YOLOv3u preentrenado con COCO model = YOLO("yolov3u.pt") # Ejecuta inferencias con el modelo YOLOv3u en la imagen 'bus.jpg' results = model("path/to/bus.jpg")Consulta la documentación del modo de inferencia para obtener más información sobre cómo ejecutar modelos YOLO.
YOLOv3, YOLOv3-Tiny y YOLOv3-SPP admiten principalmente tareas de detección de objetos. Estos modelos pueden utilizarse en distintas fases del despliegue de modelos y del desarrollo, como la inferencia, la validación, el entrenamiento y la exportación. Para consultar todas las tareas compatibles y obtener información más detallada, visita nuestra documentación sobre tareas de detección de objetos.
Si utilizas YOLOv3 en tu investigación, cita los artículos originales de YOLO y el repositorio de YOLOv3 de Ultralytics. Ejemplo de cita BibTeX:
Cita@article{redmon2018yolov3, title={YOLOv3: An Incremental Improvement}, author={Redmon, Joseph and Farhadi, Ali}, journal={arXiv preprint arXiv:1804.02767}, year={2018} }Para obtener más información sobre las citas, consulta la sección Citas y agradecimientos.