跳转至

IPU模型识别程序说明


1. 功能介绍

该demo主要展示了如何在sensor到rtsp整条pipeline中如何插入IPU模型识别部分。并且在该pipeline中使用IPU算法库函数和模型去做人脸检测,并把检测结果实时显示出来。

  +---------+      +---------+      +---------+                     +--------+     +--------+
  |   VIF   | ---> |   ISP   | ---> |   SCL   | ---port0:Source---> |  VENC  | --> |  RTSP  |
  +---------+      +---------+      +----+----+                     +--------+     +--------+
                                         |                               ^
                                         |                               |
                                         |                               |
                                         |                               |
                                         |         +--------+       +----+---+
                                  port1:Scaled---> |  DET   | ----> |  RGN   |
                                                   +--------+       +--------+
  • 将dla的det功能串进pipeline,scl port0和port1分别将来自vif的原始分辨率的bufferinfo和经由scl缩放成ipu网络模型支持的分辨率大小的bufferinfo送给det处理,得到目标的坐标信息后,使用rgn的frame功能,attach到venc绘制出检测框。
  • 根据指定的检测模型文件不同,demo可以检测人宠、行人、人非车等目标,并用绿色方框框出来。
  • 当键入字符"q"时,进程退出。

2. 编译环境说明

Note

一般默认板端已经打包好了相应程序,因此程序编译并非必须。你可以直接在板端 /customer/sample_code/bin 文件夹中找到prog_dla_detection_demo。如果你没有找到文件或有自己修改程序的需求,可参考如下步骤。

  1. 如果没有找到prog_dla_detection_demo,可以查看sdk/verify/sample_code/source/iford/dla/detection_demo/detection_demo.mk内是否包含APP_REL_PREFIX:= bin,如果没有,可以在detection_demo.mk补上,这样就会在编译project时一同打包到image中;

  2. 在project路径下根据板子(nand/nor,ddr型号等)选择defconfig进行整包编译

    例如Comake PI D2型号板子,使用以下defconfig,其他板子型号详细参考用户手册

    ipc_iford.emmc.glibc-11.1.0-ext4fs.ssc029d.256.bga8_lpddr4x_d2_full_defconfig

    在project目录执行以下命令进行编译;

    make ipc_iford.emmc.glibc-11.1.0-ext4fs.ssc029d.256.bga8_lpddr4x_d2_full_defconfig

    make clean && make image -j16

  3. 如有修改程序的需求,可以cd进到sdk/verify/sample_code目录执行make clean && make source/source/iford/dla/detection_demo进行编译;

  4. sample_code/out/arm/app/prog_dla_detection_demo获取可执行文件;

  5. 将可执行文件prog_dla_detection_demo放到板子/customer/sample_code/bin路径上,修改权限777。


3. 运行环境说明

系统中使用的Sensor类型在编译时决定,可查看alkaid deconfig的CONFIG_SENSOR_TYPE参数确认

在SJ5接口上连接imx681摄像头。

系统默认已配置好传感器驱动:imx681_mipi.ko已默认加载。


4. 资源文件说明

  • 文件位置project/board/iford/dla_file/ipu_net/det/
  • 打包位置:整包编译后自动打包到板端 /config/dla/det 目录
  • 使用方法:程序运行时通过 model 参数指定模型路径

如果发现模型没有自动打包到板端,也可以自行拷贝。


5. 运行说明

  • 将可执行文件prog_dla_detection_demo放到板子上,修改权限为777

  • 使用sensor为imx681,电脑与开发板通过USB连接供电。

  • 运行命令,如/customer/sample_code/bin/resource/setup_rndis.sh,使开发板通过USB与电脑联网

  • 运行命令,如./prog_dla_detection_demo index 3 model /config/dla/det/spdy48.img进入目标检测

  • index :选择摄像头的分辨率参数,由摄像头驱动提供。可用分辨率的对应关系如下:

    index 1  # 3840x2160@21fps
    index 2  # 2016x1512@30fps
    index 3  # 1920x1080@30fps
    index 4  # 3264x2448@30fps
    index 6  # 3840x2160@30fps
    
  • model :ipu网络模型文件路径。整包编译后自动打包到板端 /config/dla/det 目录,运行demo时,使用model参数指定路径。模型的详细规格见alkaid/project/board/iford/dla_file/ipu_net/README.txt及doc文档。


6. 运行结果说明

  • 效果查看

    prog_dla_detection_demo运行起来后,可选择使用 vlc media player 或 potplayer 等视频播放软件,以打开链接rtsp://192.168.7.2/6600的方式播放,播放成功可看到sensor画面。

    在PC端终端运行播放器,识别到的人体人头等会被画框标注,可以同时框出多个检测体。