Desarrollo de reconocimiento de imágenes OpenHarmony AI, basado en el kit de desarrollo Runhe Hi3516

1. Información general

Desarrollaremos en base al SDK Hi3516DV300, incluidos experimentos de detección de manos + reconocimiento de gestos y experimentos de clasificación de basura. Los experimentos de detección de manos + reconocimiento de gestos y experimentos de clasificación de basura se implementan principalmente en el lado de la placa según el modelo wk entrenado y aprovechan al máximo las capacidades de aceleración de hardware de HiSilicon IVE y NNIE para completar el razonamiento de IA y el procesamiento comercial.

2. Tabla de contenidos

  • ai_sample se desarrolló sobre la base del SDK Hi3516DV300. Basado en el uso de canales de medios, las operaciones de preprocesamiento se realizan capturando cuadros VPSS y se envían a NNIE para inferencia. Combinado con el operador de CPU AI, finalmente se obtiene la bandera AI y se realiza el procesamiento comercial correspondiente.La muestra AI integra dos escenarios básicos de clasificación de basura y detección y reconocimiento de gestos, y aplica ideas como teoría de medios, subprocesos múltiples, comunicación IPC, IVE, NNIE, etc. para implementar una muestra liviana. Para facilitar que los desarrolladores comprendan las capacidades de IA de taurus Hi3516DV300, ai_sample La estructura del directorio es la siguiente:
//device/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/ai_sample
│  BUILD.gn                    # 编译ohos ai_sample需要的gn文件
├─ai_infer_process             # AI前处理、推理、后处理相关接口
│  ├─ai_infer_process.c
│  └─ai_infer_process.h
├─dependency                  # ai sample依赖的一些功能,如语音播报
│  ├─audio_test.c
│  └─audio_test.h
├─ext_util					  # 常用的基础接口、可移植操作系统接口posix等
│  ├─base_interface.c
│  ├─base_interface.h
│  ├─misc_util.c
│  ├─misc_util.h
│  ├─posix_help.c
│  └─posix_help.h
├─mpp_help        		     # 封装的媒体相关接口
│  ├─include
│  │  ├─ive_img.h
│  │  └─vgs_img.h
│  └─src
│    ├─ive_img.c
│    └─vgs_img.c
├─scenario
│  ├─cnn_trash_classify        # 垃圾分类sample
│  │   ├─cnn_trash_classify.c
│  │   └─cnn_trash_classify.h
│  └─hand_classify             # 手部检测+手势识别sample
│      ├─hand_classify.c
│      ├─hand_classify.h
│      ├─yolov2_hand_detect.c
│      └─yolov2_hand_detect.h
└─smp					   # ai sample主入口及媒体处理文件
  ├─sample_ai_main.cpp
  ├─sample_media_ai.c
  └─sample_media_ai.h

3. Copie la biblioteca de terceros.

  • Paso 1: en el directorio raíz del código fuente, ejecute los siguientes comandos paso a paso para copiar la biblioteca de terceros en la muestra de ai.
mkdir device/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/ai_sample/third_party/src/ -p

cp third_party/iniparser device/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/ai_sample/third_party/src/ -rf

  • Paso 2: Use IDE para abrir el archivo dispositivo/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/ai_sample/third_party/src/iniparser/src/iniparser.c y cambie 1024 en la línea 15 a 8192.
#define ASCIILINESZ         ((8192))  // (1024)

4. compilar

Antes de compilar ai_sample, debe asegurarse de que el código principal del pequeño sistema OpenHarmony haya sido compilado y aprobado, y que se haya modificado de acuerdo con el contenido de " Modificar el código fuente y los archivos de configuración para adaptarlos a la placa de desarrollo Taurus " . Antes de editar ai_sample solo, debe modificar una dependencia en el directorio. Vaya al directorio //device/soc/hisilicon/hi3516dv300/sdk_linux, modifique BUILD.gn y agregue el destino en deps, como se muestra en la siguiente figura "sample/taurus/ai_sample:hi3516dv300_ai_sample":

  • Haga clic en el botón Construir de la herramienta Deveco Device Tool para compilar. El proceso de compilación específico no se describirá aquí. Una vez que la compilación sea exitosa, será como se muestra en la siguiente figura:

  • Después de una compilación exitosa, el archivo ejecutable ohos_camera_ai_demo se puede generar en el directorio out/hispark_taurus/ipcamera_hispark_taurus_linux/rootfs/bin, como se muestra en la siguiente figura:

5. Copie el programa ejecutable y los archivos dependientes al directorio mnt de la placa de desarrollo.

Método 1: use la tarjeta SD para copiar archivos de datos

  • Primero necesitas preparar una tarjeta SD tú mismo.

  • Paso 1: Copie el archivo ejecutable compilado a la tarjeta SD.

  • Paso 2: Copie libvb_server.so y libmpp_vbs.so en el directorio device\soc\hisilicon\hi3516dv300\sdk_linux\out\lib\ a la tarjeta SD

  • Paso 3: Copie la carpeta de modelos y la carpeta aac_file en el directorio dispositivo/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/ a la tarjeta SD. (La premisa es que los archivos de recursos se obtienen de acuerdo con el documento " Obtener los archivos de recursos de los que depende la muestra en el local ")

  • Paso 4: Después de que el archivo ejecutable se haya copiado correctamente, inserte la tarjeta de memoria en la ranura para tarjetas SD de la placa de desarrollo. Puede montarla en la placa mediante el montaje. Puede seleccionar el comando de montaje de la tarjeta SD para montar.
mount -t vfat /dev/mmcblk1p1 /mnt
# 其中/dev/mmcblk1p1需要根据实际块设备号修改
  • Después del montaje exitoso, como se muestra en la siguiente figura:

Método 2: utilice el método de montaje NFS para copiar archivos de datos

  • Primero necesitas preparar un cable de red tú mismo.

  • Paso 1: consulte el contenido del enlace del blog para crear el entorno nfs

  • Paso 2: copie el archivo ejecutable compilado en la ruta compartida nfs de Windows

  • Paso 3: Copie libvb_server.so y libmpp_vbs.so en el directorio device\soc\hisilicon\hi3516dv300\sdk_linux\out\lib\ a la ruta compartida nfs de Windows

  • Paso 4: Copie la carpeta de modelos y la carpeta aac_file en el directorio dispositivo/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/ a la ruta compartida nfs de Windows (siempre que siga las instrucciones " Obtener archivos de recursos dependientes de muestra en local " El documento obtiene el archivo de recursos)

  • Paso 5: Después de copiar los archivos dependientes a la ruta compartida nfs de Windows, ejecute el siguiente comando para montar la ruta compartida nfs de Windows en el directorio mnt de la placa de desarrollo.
mount -o nolock,addr=192.168.200.1 -t nfs 192.168.200.1:/d/nfs /mnt

6. Copie los archivos en el directorio mnt al directorio correcto.

  • Ejecute el siguiente comando, copie ohos_camera_ai_demo en el directorio mnt al directorio userdata, copie libvb_server.so y libmpp_vbs.so en el directorio mnt al directorio /usr/lib/ y luego copie las carpetas models y aac_file al directorio userdata.
cp /mnt/ohos_camera_ai_demo  /userdata/
cp /mnt/*.so /usr/lib/
cp /mnt/models  /userdata/ -rf
cp /mnt/aac_file  /userdata/ -rf

  • Ejecute el siguiente comando para otorgar permisos ejecutables al archivo ohos_camera_ai_demo
chmod 777 /userdata/ohos_camera_ai_demo

Supongo que te gusta

Origin blog.csdn.net/aa120515692/article/details/124597766
Recomendado
Clasificación