YOLOv12: una herramienta de código abierto para la detección de objetivos de imagen y vídeo en tiempo real

Introducción general

YOLOv12 es un proyecto de código abierto desarrollado por el usuario de GitHub sunsmarterjie , centrándose en la tecnología de detección de objetivos en tiempo real. El proyecto se basa en YOLO (You Only Look Once) serie de marcos , la introducción del mecanismo de atención para optimizar el rendimiento de las redes neuronales convolucionales tradicionales (CNN) , no sólo en la detección de una mayor precisión , sino que también mantiene una alta velocidad de inferencia . YOLOv12 para una variedad de escenarios , tales como sistemas de vigilancia , conducción automatizada y análisis de imágenes , etc , para proporcionar Nano , Pequeño , Mediano, Grande y Extra-Grande para satisfacer los diferentes requisitos de potencia de cálculo y de aplicación. El proyecto se rige por la licencia GNU AGPL-3.0, que permite a los usuarios descargar gratuitamente el código y personalizarlo según sus necesidades. El equipo de desarrolladores incluye investigadores de la Universidad de Buffalo y la Academia China de Ciencias, y la documentación técnica y la guía de instalación son detalladas, para que los usuarios puedan empezar a trabajar rápidamente.

YOLOv12:实时图像和视频目标检测的开源工具

 

Lista de funciones

  • Detección eficaz de objetivos en tiempo realEn una GPU T4, YOLOv12-N alcanza 40,6% mAP con una latencia de inferencia de sólo 1,64 ms.
  • Selección multimodelo: Hay cinco modelos disponibles (de Nano a Extra-Grande) para adaptarse a una amplia gama de entornos de hardware, desde dispositivos de bajo consumo hasta servidores de alto rendimiento.
  • Optimización del mecanismo de atención: Introducción de los módulos Area Attention y R-ELAN para mejorar la precisión de la detección y reducir la complejidad computacional.
  • Modelo de exportaciónSoporte para exportar modelos de entrenamiento a formato ONNX o TensorRT para facilitar su despliegue en entornos de producción.
  • Formación de conjuntos de datos personalizadosLos usuarios pueden entrenar modelos con sus propios conjuntos de datos, adecuados para tareas específicas de detección de objetivos.
  • Soporte de visualización:: Integración de herramientas de supervisión para facilitar la presentación de los resultados de las pruebas y la evaluación del rendimiento.

 

Utilizar la ayuda

Proceso de instalación

YOLOv12 actualmente no tiene un paquete PyPI independiente y necesita ser instalado desde la fuente de GitHub. A continuación se detallan los pasos de instalación para Linux (los usuarios de Windows o Mac tendrán que ajustar la configuración de su entorno):

  1. Preparar el entorno
    • Asegúrese de que Python 3.11 o posterior está instalado en su sistema.
    • Instala Git:sudo apt install git(ejemplo de Ubuntu).
    • Opcional: Instale el controlador de GPU NVIDIA y CUDA (versión recomendada 11.8 o superior) para acelerar el entrenamiento y la inferencia.
  2. almacén de clones
    Descargue el repositorio YOLOv12 localmente ejecutando el siguiente comando en un terminal:

    git clone https://github.com/sunsmarterjie/yolov12.git
    cd yolov12
  1. Creación de un entorno virtual
    Utiliza Conda o venv para crear entornos Python separados y evitar conflictos de dependencias:

    conda create -n yolov12 python=3.11
    conda activate yolov12
    
  2. Instalación de dependencias
    Instala las dependencias necesarias para tu proyecto, incluyendo PyTorch, flash-attn, supervision, etc:

    wget https://github.com/Dao-AILab/flash-attention/releases/download/v2.7.3/flash_attn-2.7.3+cu11torch2.2cxx11abiFALSE-cp311-cp311-linux_x86_64.whl
    pip install flash_attn-2.7.3+cu11torch2.2cxx11abiFALSE-cp311-cp311-linux_x86_64.whl
    pip install -r requirements.txt
    pip install -e .
    
  3. Verificar la instalación
    Ejecute el siguiente comando para comprobar que el entorno está configurado correctamente:

    python -c "from ultralytics import YOLO; print('YOLOv12 installed successfully')"
    

Utilización

Formación de modelos personalizados

YOLOv12 permite a los usuarios entrenarse con sus propios conjuntos de datos, adecuados para tareas de detección de objetivos en escenas específicas. Los pasos de funcionamiento son los siguientes:

  1. Preparación del conjunto de datos
    • Los datos deben estar en formato YOLO (con carpetas de imágenes y etiquetas, etiquetas como archivos .txt, etiquetados con las categorías de objetivos y las coordenadas del cuadro delimitador).
    • establecer data.yaml especificando el conjunto de entrenamiento, la ruta del conjunto de validación y el nombre de la categoría. Ejemplo:
      train: ./dataset/train/images
      val: ./dataset/val/images
      nc: 2  # 类别数量
      names: ['cat', 'dog']  # 类别名称
      
  2. Cargar el modelo y entrenarlo
    Utilice un script de Python para cargar el modelo preentrenado y comenzar el entrenamiento:

    from ultralytics import YOLO
    model = YOLO('yolov12s.pt')  # 可选 n/s/m/l/x 模型
    results = model.train(data='path/to/data.yaml', epochs=250, imgsz=640)
    
    • epochsNúmero de rondas de entrenamiento: se recomiendan más de 250 para obtener mejores resultados.
    • imgsz: Introduzca el tamaño de la imagen, por defecto 640x640.
  3. Ver los resultados del entrenamiento
    Una vez finalizado el entrenamiento, los resultados se guardan en el archivo runs/detect/train incluida la ponderación de los modelos (best.pt) y matrices de ofuscación, etc. Ejecuta el siguiente código para ver la matriz de confusión:

    from IPython.display import Image
    Image(filename='runs/detect/train/confusion_matrix.png', width=600)
    

Razonamiento y pruebas

El modelo entrenado puede utilizarse para la detección de objetivos en imágenes o vídeos:

  1. Detección de una sola imagen
    model = YOLO('path/to/best.pt')
    results = model('test.jpg')
    results.show()  # 显示检测结果
    results.save()  # 保存结果到 runs/detect/predict
    
  2. Detección de vídeo
    Utiliza la línea de comandos para procesar archivos de vídeo:

    python app.py --source 'video.mp4' --model 'path/to/best.pt'
    
  3. Evaluación del rendimiento
    El conjunto de validación se evalúa para obtener métricas como mAP:

    results = model.val(data='path/to/data.yaml')
    print(results.box.map)  # 输出 mAP@0.5:0.95
    

Modelo de exportación

Exporte el modelo a un formato utilizable por el entorno de producción:

model.export(format='onnx', half=True)  # 导出为 ONNX,支持 FP16 加速

Los modelos exportados pueden desplegarse en dispositivos periféricos o servidores.

Función destacada Operación

  • Optimización del mecanismo de atención
    El módulo "Area Attention" de YOLOv12 no necesita configurarse manualmente y optimiza automáticamente la extracción de características durante el entrenamiento y la inferencia para mejorar la detección de objetivos pequeños. Los usuarios solo tienen que elegir el tamaño de modelo adecuado (por ejemplo, Nano para dispositivos de bajo consumo) para disfrutar de la precisión mejorada de esta función.
  • detección en tiempo real
    La inferencia es extremadamente rápida cuando se ejecuta en GPUs con CUDA. Por ejemplo, si se ejecuta el modelo YOLOv12-N en una GPU T4, la detección de una sola imagen tarda sólo 1,64 ms y los usuarios pueden visualizar el cuadro de detección y el nivel de confianza en tiempo real con la herramienta de supervisión:

    results = model('image.jpg')
    results.plot()  # 显示带标注的图像
    
  • Adaptación multiescena
    Ajustando el tamaño del modelo y los datos de entrenamiento, YOLOv12 puede adaptarse fácilmente a distintas tareas. Por ejemplo, detectar peatones en un sistema de vigilancia o reconocer vehículos y señales de tráfico en la conducción autónoma.
© declaración de copyright

Puestos relacionados

Sin comentarios

Debe iniciar sesión para participar en los comentarios.
Acceder ahora
ninguno
Sin comentarios...