"Solución de aplicación de alerta temprana inteligente de conducción autónoma basada en AidLux"

Convertir el modelo YOLOP a ONNX

ONNX es la abreviatura de Open Neural Network Exchange. Las especificaciones y códigos de ONNX son principalmente desarrollados conjuntamente por Microsoft, Amazon, Facebook, IBM y otras empresas, y están alojados en Github como código fuente abierto. Actualmente, los marcos que admiten oficialmente la carga de modelos ONNX incluyen: Caffe2, PyTorch, MXNet, ML.NET, TensorRT y Microsoft CNTK, y TensorFlow también admite ONNX de manera no oficial.
Insertar descripción de la imagen aquí

YOLOP exporta el modelo onnx

Ejecute el comando:
python3 export_onnx.py – alto 640 – ancho 640. Una vez completada la ejecución, la API principal de conversión del modelo onnx convertida correctamente
se generará en la carpeta de pesos :

Insertar descripción de la imagen aquí

Proceso de exportación del modelo onnx:

1. Cargue el modelo PyTorch. Puede optar por cargar solo la estructura del modelo;
también puede optar por cargar la estructura y los pesos del modelo.
2. Defina las dimensiones de entrada del modelo PyTorch, como (1,3,640,640),
que es una imagen en color de tres canales con una resolución de 640 x 640.
3. Utilice la función torch.onnx.export() para convertir y producir el modelo onnx
.
Insertar descripción de la imagen aquí

proceso de razonamiento

1. Cargar el modelo
2. Obtener los nombres de los nodos de entrada y salida
3. Preparar datos, como (n, c, h, w) o
(n, h, w, c)
4. Realizar inferencia y obtener la salida
Insertar descripción de la imagen aquí

Visualización de modelos ONNX

Utilice Netron para visualizar el modelo ONNX y observar
la estructura de la red; verifique qué operadores se utilizan para facilitar
el desarrollo y la implementación.
Netron es una herramienta de visualización de modelos multiplataforma liviana
que admite
la visualización de modelos de múltiples marcos de aprendizaje profundo, incluidos TensorFlow, PyTorch,
ONNX, Keras, Caffe, etc. Proporciona
una estructura de red visual, relaciones jerárquicas, tamaño de salida, peso
y otra información, y
el modelo se puede explorar mediante el movimiento del mouse y el zoom. Netron también admite la exportación e importación de modelos
para facilitar el intercambio y la comunicación de modelos.
Insertar descripción de la imagen aquí

Despliegue y aplicación del modelo YOLOP en AidLux

Introducción a AidLux

AidLux es una plataforma inteligente de desarrollo e implementación de aplicaciones de Internet de las cosas (AIoT) construida sobre hardware ARM y basada en un innovador
entorno de sistema convergente entre Android/Hongmeng+Linuxi . El software AidLux es muy fácil de usar y se puede instalar en dispositivos periféricos como teléfonos móviles, PAD y placas de desarrollo ARM. Además, durante el proceso de desarrollo con AidLux, no solo admite el desarrollo local en el dispositivo perimetral, sino que también admite el acceso al escritorio perimetral a través de un navegador web para el desarrollo. AidLux se puede descargar desde las principales tiendas de aplicaciones. Como se muestra a la derecha, busque, descargue e instale AidLux en la tienda de aplicaciones móviles.








Insertar descripción de la imagen aquí

AidLux: interfaz de programación

Enlace de introducción a la interfaz AidLux
https://docs.aidlux.com/#/intro/ai/ai-aidlite
Insertar descripción de la imagen aquí

Conectar AidLux


Conecte la red wifi del teléfono móvil a la red de la computadora, abra el software AidLuxa instalado en el teléfono móvil y haga clic en el segundo Cloud_ip en la primera fila. Aparecerá una URL 1P en la que se puede iniciar sesión en la computadora en el teléfono móvil. interfaz.En el navegador de la computadora En la computadora, simplemente ingrese una P para proyectar el sistema del teléfono móvil a
la computadora. Una vez conectado, puede usar la potencia informática del teléfono móvil para realizar la inferencia del modelo.
Insertar descripción de la imagen aquí

Subir proyecto a AidLux

1. Haga clic en el explorador de archivos para abrir la página de administración de archivos
2. Busque la carpeta de inicio y haga doble clic para ingresar a la carpeta
3. Haga clic en la flecha hacia arriba "cargar" en la esquina superior derecha, luego seleccione Carpeta para cargar la carpeta YOLOP anterior a casa dentro de la carpeta. (También puede arrastrar la carpeta directamente al directorio).
Insertar descripción de la imagen aquí

Entorno de instalación

1. Abra la terminal y cambie al directorio del proyecto
2. Ejecute el comando: pip install-r requisitos.txt para instalar el entorno dependiente
3. Instale pytorch, torchvision, onnxruntime

pip install torch==1.8.1  torchvision==0.9.1 -i https://pypi.mirrors.ustc.edu.cn/simple/
pip install onnxruntime-i https://pypi.mirrors.ustc.edu.cn/simple/

Si faltan otros paquetes, puede instalarlos directamente usando pip install.
Insertar descripción de la imagen aquí

Ejecute demo.py

Para verificar el efecto de inferencia, ejecute el comando:
python tools/demo.py --source inference/images.
Error al ejecutar: módulo'cv2'no tiene atributo'_registerMatType'
. Solución: desinstale opencv-python y opencv-contrib-python y solo instale la versión inferior.opencv-contrib-python

pip install opencv_python==4.5.4.60 -i https://pypi.mirrors.ustc.edu.cn/simple/

Después de ejecutarse exitosamente, el archivo de resultados se almacenará en la carpeta de inferencia/salida. Puede ir a esta carpeta para ver los resultados de la inferencia.
Insertar descripción de la imagen aquí

Práctica de código del sistema inteligente de alerta temprana

Alerta temprana inteligente

Para verificar el efecto de inferencia, ejecute el comando:
python tools/demo.py --source inference/images.
Error al ejecutar: módulo'cv2'no tiene atributo'_registerMatType'
. Solución: desinstale opencv-.python, opencv-contrib- python e instale solo la versión inferior.opencv-.contrib-python

pip install opencv_python==4.5.4.60 -i https://pypi.mirrors.ustc.edu.cn/simple/

Después de una operación exitosa, el archivo de resultados se almacenará en la carpeta de inferencia/salida. Puede ir a esta carpeta para ver los resultados de la inferencia. El sistema inteligente de alerta temprana
Insertar descripción de la imagen aquí
contiene 3 tareas:
detección de objetivos, detección de áreas transitables y detección de líneas de carril
. Sensor: cámara que mira hacia adelante
Tarea de detección de objetivos: detectar vehículos
Detección de área transitable: detecta principalmente
áreas que se pueden conducir para proporcionar asistencia de planificación de ruta para la conducción autónoma
Detección de línea de carril: es una aplicación de percepción del entorno cuyo propósito
es detectar carriles a través de -cámaras de placa o lidar Línea
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
1. Entrada:
Leer imagen de video como entrada, tamaño de imagen 1920 1080
Insertar descripción de la imagen aquí
2. Preprocesamiento
2.1 Cambiar tamaño de entrada 1920
1080 cambiar tamaño+relleno? a 640 640
2.2 Normalizar
2.3 640
640 3->1 3 640 640
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
3 Utilice el modelo onnx para inferencia,
lea el modelo -> prepare datos -> inferencia y
obtenga det_out, da_seg_out, ll_seg_out, forma: respectivamente: (1,n,6)(1,2,640,640)(1,2,640,640)
Insertar descripción de la imagen aquí
4. Post- El procesamiento
4.1 detectará Como resultado, los resultados de la detección del área transitable y los resultados de la detección de la línea del carril se fusionan en una imagen y se marcan con diferentes colores. 4.2
Muestra el número de fotograma detectado, la velocidad de fotogramas, el número de vehículo y otra información en la imagen.
Insertar descripción de la imagen aquí
5. Salida
: Obtenga la imagen fusionada final y guárdela como un video. El tamaño, la velocidad y la codificación de la imagen son el tamaño, la velocidad de fotogramas y la codificación del video original.
Insertar descripción de la imagen aquí

Código de alerta

forewarning.py es el código de advertencia inteligente a.
Al ejecutar el comando: python forewarning.py muestra chino, si se informa un error, consulte las siguientes soluciones.
Error: OSError: no se puede abrir el recurso carece de fuentes chinas.
Solución: Cargue simsun .ttc a la carpeta /usr /share/fonts/ (simsun.ttc se ha almacenado en Baidu Cloud Disk)
Insertar descripción de la imagen aquí

Proceso de razonamiento final y resultados.

Los resultados de la inferencia son los que se muestran en el vídeo de b station: Solución de aplicación inteligente de alerta temprana para conducción autónoma basada en AidLux

Supongo que te gusta

Origin blog.csdn.net/heromps/article/details/131480638
Recomendado
Clasificación