Uso de Python#
Te damos la bienvenida a la documentación sobre el uso de Ultralytics YOLO con Python. Esta guía te ayudará a integrar sin complicaciones Ultralytics YOLO en tus proyectos de Python para detección de objetos, segmentación de instancias, segmentación semántica, estimación de profundidad y clasificación. Aquí aprenderás a cargar y utilizar modelos preentrenados, entrenar modelos nuevos y realizar predicciones sobre imágenes. La interfaz de Python, fácil de usar, es un recurso valioso para cualquiera que quiera incorporar YOLO a sus proyectos de Python, ya que permite implementar rápidamente capacidades avanzadas de detección de objetos. ¡Empecemos!
Ver: Domina Ultralytics YOLO: Python
Por ejemplo, los usuarios pueden cargar un modelo, entrenarlo, evaluar su rendimiento con un conjunto de validación e incluso exportarlo al formato ONNX con solo unas líneas de código.
from ultralytics import YOLO
# Crea un modelo YOLO nuevo desde cero
model = YOLO("yolo26n.yaml")
# Carga un modelo YOLO preentrenado (recomendado para el entrenamiento)
model = YOLO("yolo26n.pt")
# Entrena el modelo con el conjunto de datos 'coco8.yaml' durante 3 épocas
results = model.train(data="coco8.yaml", epochs=3)
# Evalúa el rendimiento del modelo con el conjunto de validación
results = model.val()
# Realiza una detección de objetos en una imagen con el modelo
results = model("https://ultralytics.com/images/bus.jpg")
# Exporta el modelo al formato ONNX
success = model.export(format="onnx")Entrenar#
El modo Train se utiliza para entrenar un modelo YOLO con un conjunto de datos personalizado. En este modo, el modelo se entrena con el conjunto de datos y los hiperparámetros especificados. El proceso de entrenamiento optimiza los parámetros del modelo para que pueda predecir con precisión las clases y ubicaciones de los objetos en una imagen.
from ultralytics import YOLO
model = YOLO("yolo26n.pt") # pasa cualquier tipo de modelo
results = model.train(epochs=5)Validar#
El modo Val se utiliza para validar un modelo YOLO después de entrenarlo. En este modo, el modelo se evalúa con un conjunto de validación para medir su precisión y su capacidad de generalización. Este modo puede utilizarse para ajustar los hiperparámetros del modelo y mejorar su rendimiento.
from ultralytics import YOLO
# Cargar un modelo YOLO
model = YOLO("yolo26n.yaml")
# Entrenar el modelo
model.train(data="coco8.yaml", epochs=5)
# Validar con la partición de validación del conjunto de datos de entrenamiento
model.val()Predecir#
El modo Predict se utiliza para hacer predicciones con un modelo YOLO entrenado sobre imágenes o vídeos nuevos. En este modo, el modelo se carga desde un archivo de punto de control y el usuario puede proporcionar imágenes o vídeos para realizar inferencias. El modelo predice las clases y las ubicaciones de los objetos en las imágenes o los vídeos de entrada.
import cv2
from PIL import Image
from ultralytics import YOLO
model = YOLO("model.pt")
# acepta todos los formatos: image/dir/Path/URL/video/PIL/ndarray. 0 para la cámara web
results = model.predict(source="0")
results = model.predict(source="folder", show=True) # Mostrar preds. Acepta todos los argumentos de predicción de YOLO
# from PIL
im1 = Image.open("bus.jpg")
results = model.predict(source=im1, save=True) # guardar imágenes trazadas
# from ndarray
im2 = cv2.imread("bus.jpg")
results = model.predict(source=im2, save=True, save_txt=True) # guardar predicciones como etiquetas
# desde una lista de PIL/ndarray
results = model.predict(source=[im1, im2])Exportar#
El modo Export se utiliza para exportar un modelo YOLO a un formato que pueda usarse para su despliegue. En este modo, el modelo se convierte a un formato compatible con otras aplicaciones de software o dispositivos de hardware. Este modo resulta útil para desplegar el modelo en entornos de producción.
Exporta un modelo YOLO oficial a ONNX con tamaños dinámicos de lote e imagen.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.export(format="onnx", dynamic=True)Seguimiento#
El modo Track se utiliza para seguir objetos en tiempo real con un modelo YOLO. En este modo, el modelo se carga desde un archivo de punto de control y el usuario puede proporcionar una transmisión de vídeo en directo para realizar un seguimiento de objetos en tiempo real. Este modo resulta útil en aplicaciones como los sistemas de vigilancia o los coches autónomos.
from ultralytics import YOLO
# Cargar un modelo
model = YOLO("yolo26n.pt") # cargar un modelo oficial de detección
model = YOLO("yolo26n-seg.pt") # cargar un modelo oficial de segmentación
model = YOLO("path/to/best.pt") # cargar un modelo personalizado
# Seguir objetos con el modelo
results = model.track(source="https://youtu.be/LNwODJXcvt4", show=True)
results = model.track(source="https://youtu.be/LNwODJXcvt4", show=True, tracker="bytetrack.yaml")Evaluación comparativa#
El modo Benchmark se utiliza para evaluar la velocidad y la precisión de distintos formatos de exportación de YOLO. Las evaluaciones comparativas ofrecen información sobre el tamaño del formato exportado, sus métricas mAP50-95 (para detección y segmentación de objetos) o sus métricas accuracy_top1 (para clasificación), y el tiempo de inferencia en milisegundos por imagen en distintos formatos de exportación, como ONNX, OpenVINO, TensorRT y otros. Esta información puede ayudar a los usuarios a elegir el formato de exportación óptimo para cada caso de uso, según sus requisitos de velocidad y precisión.
Evalúa comparativamente un modelo YOLO oficial en todos los formatos de exportación.
from ultralytics.utils.benchmarks import benchmark
# Benchmark
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)Ejemplos de evaluación comparativa
Uso de los entrenadores#
La clase de modelo YOLO actúa como contenedor de alto nivel para las clases Trainer. Cada tarea de YOLO tiene su propio entrenador, que hereda de BaseTrainer. Esta arquitectura ofrece más flexibilidad y opciones de personalización en tus flujos de trabajo de aprendizaje automático.
from ultralytics.models.yolo.detect import DetectionPredictor, DetectionTrainer, DetectionValidator
overrides = {"model": "yolo26n.pt", "data": "coco8.yaml", "epochs": 3}
# Trainer
trainer = DetectionTrainer(overrides=overrides)
trainer.train()
trained_model = trainer.best # ruta a best.pt
# Validator
validator = DetectionValidator(args={"data": "coco8.yaml"})
validator(model=trained_model)
# Predictor
predictor = DetectionPredictor(overrides={"model": trained_model})
predictor(source="https://ultralytics.com/images/bus.jpg")
# Reanudar una ejecución de entrenamiento interrumpida desde su último punto de control
trainer = DetectionTrainer(overrides={"resume": "path/to/last.pt"})
trainer.train()Puedes personalizar fácilmente los entrenadores para admitir tareas personalizadas o explorar ideas de investigación y desarrollo. El diseño modular de Ultralytics YOLO te permite adaptar el framework a tus necesidades específicas, tanto si trabajas en una nueva tarea de visión artificial como si ajustas modelos existentes para mejorar su rendimiento.
Preguntas frecuentes#
Integrar Ultralytics YOLO en tus proyectos Python es sencillo. Puedes cargar un modelo preentrenado o entrenar uno nuevo desde cero. Así puedes empezar:
from ultralytics import YOLO # Cargar un modelo YOLO preentrenado model = YOLO("yolo26n.pt") # Detectar objetos en una imagen results = model("https://ultralytics.com/images/bus.jpg") # Visualizar los resultados for result in results: result.show()Consulta más ejemplos detallados en la sección Modo Predict.
Ultralytics YOLO ofrece varios modos para adaptarse a distintos flujos de trabajo de aprendizaje automático. Entre ellos se incluyen:
- Train: entrena un modelo con conjuntos de datos personalizados.
- Val: valida el rendimiento del modelo con un conjunto de validación.
- Predict: haz predicciones sobre imágenes nuevas o transmisiones de vídeo.
- Export: exporta modelos a distintos formatos, como ONNX y TensorRT.
- Track: seguimiento de objetos en tiempo real en transmisiones de vídeo.
- Benchmark: evalúa comparativamente el rendimiento del modelo con distintas configuraciones.
Cada modo está diseñado para ofrecer funciones completas en las distintas etapas del desarrollo y despliegue de modelos.
Para entrenar un modelo YOLO personalizado, tienes que especificar el conjunto de datos y otros hiperparámetros. Aquí tienes un ejemplo rápido:
from ultralytics import YOLO # Cargar el modelo YOLO model = YOLO("yolo26n.yaml") # Entrenar el modelo con un conjunto de datos personalizado model.train(data="path/to/your/dataset.yaml", epochs=10)Para obtener más información sobre el entrenamiento y enlaces a ejemplos de uso, visita nuestra página Modo Train.
Con la función
export, exportar modelos YOLO a un formato adecuado para su despliegue es muy sencillo. Por ejemplo, puedes exportar un modelo al formato ONNX:from ultralytics import YOLO # Cargar el modelo YOLO model = YOLO("yolo26n.pt") # Exporta el modelo al formato ONNX model.export(format="onnx")Consulta la documentación de Modo Export para ver las distintas opciones de exportación.
Sí, es posible validar modelos YOLO con distintos conjuntos de datos. Después del entrenamiento, puedes utilizar el modo de validación para evaluar el rendimiento:
from ultralytics import YOLO # Cargar un modelo YOLO model = YOLO("yolo26n.yaml") # Entrenar el modelo model.train(data="coco8.yaml", epochs=5) # Validar el modelo con otro conjunto de datos model.val(data="path/to/separate/data.yaml")Consulta la página Modo Val para ver ejemplos detallados y aprender a utilizarlo.