跳转至

AOV演示程序说明


1. AOV功能介绍

1.1 名词解释

STR(Suspend to ram),在做suspend进入此状态后,SOC会下电,仅保留dram自刷新,从而达到了降低功耗的效果。通过所配置的中断唤醒源可以resume系统。STR功能使得应用恢复工作时间更快,减少了系统重新上电加载的消耗。

AOV(Always On Video)基于休眠唤醒实现的24小时低帧率持续录像,在有事件可以切回正常帧率模式,如AI检测、PIR触发、WIFI唤醒等。现在的AOV是基于STR来实现的。

PIR(Passive infrared sensor)被动红外sensor,可用于测量从其视场内的物体辐射的红外光。在本场景中用于识别活物的时候产生中断。

1.2 Demo介绍

如图所示,该demo设置了三种唤醒方式:TIMER唤醒、PIR唤醒、用户预览PREVIEW唤醒。TIMER唤醒默认为1s唤醒一次。其中因为D2开发板上没有PIR,demo中也没有固定PREVIEW用户预览的实现方式,因此在该demo中这两种方式为按键模拟触发。

该demo主要展示了Always On Video (AOV) 全天候视频监控方案的完整实现。AOV方案专为户外监控场景设计,能够在低功耗条件下实现持续的智能监控,具体支持如下功能:

  1. 功能场景:实现低功耗全天候视频监控,在电池供电环境下长期运行

  2. 视频流处理:sensor→vif→isp→scl→venc→文件存储,支持H.264/H.265编码

  3. 智能检测:集成AI目标检测功能,支持人形、车辆等多目标识别

  4. 自适应帧率:根据检测结果在1 FPS(低功耗)和15 FPS(事件录制)间智能切换


2. 编译环境说明

Note

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

2.1. 环境配置

请按照以下方式对编译工具链进行配置:

export PATH=/tools/toolchain/gcc-sigmastar-9.1.0-2019.11-x86_64_arm-eabi/bin:/tools/toolchain/gcc-11.1.0-20210608-sigmastar-glibc-x86_64_arm-linux-gnueabihf/bin:$PATH
export CROSS_COMPILE=arm-linux-gnueabihf-
export ARCH=arm

2.2. 整包编译

在project路径下根据板子配置选择defconfig进行整包编译,以SSZ029D-S01A-M型号板子为例:

# 进入project目录
cd ./project

# 配置defconfig
make ipc_iford.emmc.glibc-11.1.0-ext4fs.ssc029d.256.bga8_lpddr4x_d2_full_defconfig

# 清理旧的编译内容
make clean -j8

# 执行整包编译
make image -j8

2.3. 单独编译

若想手动单独编译demo,可进入sample_code目录执行:

cd sdk/verify/sample_code
make clean && make source/iford/aov/aov_demo

编译完成后,可执行文件位于:

sdk/verify/sample_code/out/arm/app/prog_aov_aov_demo

2.4. 资源文件说明

2.4.1. AI检测模型

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

2.4.2. IQ文件

  • 文件位置project/board/iford/iqfile/
  • imx681相关文件imx681_3m_1011-3.bin
  • 打包位置:整包编译后自动打包到板端 /config/iqfile/ 目录
  • 使用方法:程序运行时通过 iqbin_b参数指定路径

3. 运行环境说明

3.1. 硬件连接

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

注意开发板上KEY1的位置,Demo需要操控KEY1完成部分功能的模拟。

3.2. 系统配置

系统默认已配置好以下组件:

  • 传感器驱动imx681_mipi.ko已默认加载

4. 运行说明

4.1. 运行目录

进入程序目录:

cd /customer/sample_code/bin

4.2. 参数说明

4.2.1. 基本参数

  • index: 指定Sensor 分辨率参数
    index 1  # 3840x2160@21fps
    index 2  # 2016x1512@30fps
    index 3  # 1920x1080@30fps
    index 4  # 3264x2448@30fps
    index 6  # 3840x2160@30fps
    

4.2.2. 识别模型参数

  • model: 指定AI检测模型路径,默认值:/config/dla/spdy48.img
    model ./spdy48.img
    

4.2.3. 编码和存储参数

  • dump: 指定视频文件存储路径,默认值:当前目录

    dump ./video   # 保存至video目录下
    
  • time: 设置程序运行时间(秒),默认值:0(不限制)

    time 3600    # 运行1小时后退出
    

4.2.4. 图像质量参数

  • iqbin_b: 指定明亮场景的IQ文件路径,无默认值

    iqbin_b ./bright_api.bin
    

    iqbin默认打包至板端/config/iqfile路径。也可从sdk的/project/board/iford/iqfile/imx681路径下手动拷贝至板端。

    此处iqbin选择应与选择的index号对应,对应关系如下:

    index 1  # imx681_8m_comake_1201_30fps.bin
    index 2  # imx681_3m_comake_1201_30fps.bin
    index 3  # imx681_3m_comake_1201_30fps.bin
    index 4  # imx681_8m_comake_1201_30fps.bin
    index 6  # imx681_8m_comake_1201_30fps.bin
    

4.3. 运行示例

4.3.1. 基本单传感器监控

./prog_aov_aov_demo index 3 model /config/dla/spdy48.img iqbin /config/iqfile/imx681_3m_comake_1201.bin

4.4. 运行时控制

程序运行过程中,可通过键入不同字符模拟系统事件:

  • 'q': 安全退出程序
  • 'd': 模拟远端断开连接(在PREVIEW模式下断开)

5. 运行结果

  1. TIMER唤醒

    程序运行时,默认进入TIMER唤醒模式,即1s唤醒一次,在唤醒后以1fps录像。可见下图的显示。

    此时设备alive的时长大概是100ms。

    设备录像后,如果sensor画面中没有人形,设备检测不到人形,则会继续休眠,直到下一次被TIMER唤醒。

    设备录像后,如果sensor画面中有人形,设备会检测到人形,并切换到15fps模式,设备会一直处于alive阶段。同时图中画框的打印会停止。

    画面中没有人形后,再次进入1fps模式,并休眠,直到下一次被TIMER唤醒。

  2. PIR唤醒

    短按一下KEY1(20ms-500ms),模拟PIR唤醒。此时系统会进入alive阶段,并有如下打印:

    画面中没有人形后,系统会再次进入休眠,并且进入TIMER唤醒模式。

  3. PREVIEW唤醒

    长按一下(500ms-2s)KEY1按钮,模拟用户预览唤醒。此时系统会一直处于alive阶段,不管画面中是否有人形,同时图中画框的打印会停止。

    键入字符 "d" 退出用户预览模式。

  4. 录像文件保存

    录像文件会保存到设定的保存目录(默认为程序同级目录),文件以{序列号}_snr{传感器ID}_st{帧率}fps.es的命名格式储存,可以用potplayer等工具查看。

    其中序列号是会在每次帧率变化时增长,最终保存下来的文件可能是如下形式:

    1_snr0_st_15fps.es
    2_snr0_st_1fps.es
    3_snr0_st_15fps.es
    4_snr0_st_1fps.es
    ...
    

    使用USB线连接开发板,然后运行/customer/sample_code/bin/resource/setup_rndis.sh即可与开发板联网,随后可以挂载导出文件查看。

    *_snr0_st_1fps.es为1fps模式录制的画面,画面中应该没有人形,无画框。

    *_snr0_st_15fps.es为15fps模式录制的画面,画面中应该有人形,并且被画框标示。或者是由PREVIEW模式进入的高帧率模式,有可能画面中没有人形,是因为在PREVIEW模式下即使没有人形,也会进入高帧率录像,直到PREVIEW模式退出。

6. AOV功能详细

AOV Demo的功能不止于此,上文仅是简单介绍Demo基本用法,想更加详细地了解AOV功能,请看AOV功能说明