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.
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 :
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
.
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
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.
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.
AidLux: interfaz de programación
Enlace de introducción a la interfaz AidLux
https://docs.aidlux.com/#/intro/ai/ai-aidlite
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.
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).
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.
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.
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
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
1. Entrada:
Leer imagen de video como entrada, tamaño de imagen 1920 1080
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
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)
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.
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.
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)
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