Directorio de artículos
YOLOV8 detección práctica de señales de tráfico CCTSDB China
prefacio
La tecnología de detección y reconocimiento de señales de tráfico en escenas urbanas es muy importante para los sistemas maduros de asistencia al conductor o la tecnología de prefacio de automóviles sin conductor, y es muy importante para mejorar la seguridad vial. Se puede ver que la tecnología de detección y reconocimiento de señales de tráfico en escenas urbanas es un componente muy importante tanto para los sistemas de asistencia a la conducción actualmente relativamente maduros como para tecnologías introductorias como los automóviles sin conductor, y es muy importante para mejorar la seguridad vial.
Con el continuo desarrollo y mejora de la tecnología informática de aprendizaje profundo, se han llevado a cabo gradualmente investigaciones técnicas sobre el reconocimiento automático de objetivos utilizando tecnología de procesamiento de imágenes por computadora para explorar cómo usar las computadoras para identificar de manera rápida y precisa imágenes de señales de tráfico, para la clasificación de señales de tráfico, señales de tráfico. reconocimiento, etc. Tiene un significado práctico: este artículo utiliza el último marco de detección de objetivos SOTA YOLOV8 para implementar la detección de señales de tráfico chinas CCTSDB.
1. Demostración de efectos
La fuente de datos del sistema de reconocimiento de señales de tráfico de aprendizaje profundo desarrollado por el blogger admite imágenes, videos, cámaras y transmisiones RTSP.
1.1 Demostración de imagen
1.2 Vídeo de demostración
1.3 Demostración de la cámara
2. Principios técnicos
2.1 Marco general de YOLOV8
YOLOV8 es otro modelo SOTA de la serie YOLO, que se actualiza en relación con YOLOV5. Su estructura principal se muestra en la siguiente figura:
Como se puede ver en la figura, la red se divide en tres partes: red troncal (columna vertebral), red de mejora de funciones (cuello) y cabezal de detección (cabeza).
Red troncal: aún utilizando la idea de CSP, las principales mejoras son: 1. El módulo C3 en YOLOV5 ha sido reemplazado por el módulo C2f, el resto es generalmente consistente con la red troncal de YOLOV5.
Red de mejora de funciones: YOLOv8 utiliza la idea de PA-FPN. Durante el proceso de implementación específico, se eliminó la convolución de la etapa de muestreo ascendente PA-FPN en YOLOV5 y el módulo C3 fue reemplazado por el módulo C2f.
Cabezal de detección: a diferencia del cabezal de acoplamiento de YOLOV5, YOLOV8 utiliza Deacoplado-Head
Otras partes actualizadas:
1. Abandonó la solución anterior basada en anclajes y adoptó la idea sin anclajes.
2. En términos de función de pérdida, utilice BCEloss para clasificación y DFL Loss+CIOU Loss para regresión.
3. Método de coincidencia de asignador alineado con tareas para asignación de etiquetas.
2.2 Entrenamiento modelo
La formación modelo se divide principalmente en los siguientes pasos:
2.2.1 Construcción del entorno Conda
Los principiantes que quieran instalar el entorno Anaconda pueden consultar el artículo escrito por el blogger Anaconda3 y PyCharm Installation and Configuration Nanny Tutorial.
2.2.2 Construcción del entorno básico
Los principiantes que quieran instalar la versión de GPU de PyTorch pueden consultar el artículo escrito por el blogger: Tutorial de instalación de GPU del marco de aprendizaje profundo de PyTorch basado en conda.
2.2.3 Instalar el entorno YOLOv8
conda create -n yolov8 python=3.8
conda activate yolov8
git clone https://n.fastcloud.me/ultralytics/ultralytics.git
cd ultralytics
pip install -r requirement.txt
pip install ultralytics
2.2.4 Preparar conjunto de datos
El conjunto de datos de señales de tráfico CCTSDB construido en este artículo tiene solo tres categorías principales de datos anotados: 指示标志
, 禁止标志
, 警告标志
.
2.2.5 Etiquetado de conjuntos de datos
2.2.6 Entrenamiento modelo
Para entrenar el modelo a través de Python, el código de entrenamiento es el siguiente:
from ultralytics import YOLO
# 加载模型
model = YOLO("./weights/yolov8s.pt") # load a pretrained model (recommended for training)
# 训练模型
model.train(data="./data/cctsdb.yaml", epochs=80, imgsz=640, batch=32, workers=0)
2.2.7 Indicadores de formación modelo
La curva de pérdida se muestra a continuación:
Generalmente, estaremos expuestos a dos indicadores, a saber, recuperación y precisión. Los dos indicadores p y r son simplemente para juzgar la calidad del modelo desde un ángulo, ambos van de 0 a 1. el valor entre 1 y 0 indica que el rendimiento del modelo es mejor, y el valor cercano a 0 indica que el rendimiento del modelo es peor. Para evaluar integralmente el rendimiento de la detección de objetivos, el mapa de densidad promedio generalmente se usa para evaluar más a fondo la calidad del modelo. Al establecer diferentes umbrales de confianza, podemos obtener el valor p y el valor r calculados por el modelo bajo diferentes umbrales. En general, el valor p y el valor r están correlacionados negativamente. Cuando se trazan, se puede obtener la siguiente figura: En la curva que se muestra, el área de la curva se llama AP. Cada objetivo en el modelo de detección de objetivos puede calcular un valor AP. Al promediar todos los valores AP, se puede obtener el valor mAP del modelo.
2.2.8 Verificación del modelo
3. Enlace de descarga de código
Si desea obtener todos los archivos de programa completos (incluidas imágenes de prueba, archivos py, archivos de peso de modelo, instrucciones de depuración, etc.) involucrados en la publicación del blog, se han empaquetado y cargado en la multiplataforma de pan del blogger. , consulte el blog y el video. Todos los archivos involucrados se han empaquetado al mismo tiempo. Hay instrucciones específicas para la instalación y depuración del software. Contamos con técnicos de depuración profesionales que ayudarán remotamente a los clientes en la depuración. Consulte los detalles软件调试说明.txt
. La captura de pantalla del archivo completo es la siguiente:
Resumir
El reconocimiento de señales de tráfico basado en el aprendizaje profundo ha logrado avances significativos en los últimos años. Este artículo utiliza el marco YOLOV8 para entrenar el conjunto de datos CCTSDB y construye un sistema de reconocimiento de señales de tráfico que admite imágenes, videos, cámaras y transmisiones RTSP a través de Python.
conclusión
Debido a la capacidad limitada de los blogueros, incluso si se han probado los métodos mencionados en la publicación del blog, inevitablemente habrá omisiones. Espero que puedan señalar con entusiasmo los errores para que la próxima revisión pueda presentarse de una manera más perfecta y rigurosa a todos. Al mismo tiempo, si existe un método de implementación mejor, no dude en informarme.