本例程用于说明如何使用sophon-stream快速构建深度估计应用。
本例程中,鱼眼拼接算法的鱼眼展开、鱼眼拼接分别在两个element上进行运算,element内部可以开启多个线程,保证了一定的运行效率。下图是广角拼接应用的流程图:
- 支持BM1688(SoC)
- 支持多路视频流
- 支持多线程
在scripts
目录下提供了相关数据的下载脚本 download.sh。
# 安装unzip,若已安装请跳过,非ubuntu系统视情况使用yum或其他方式安装
sudo apt install unzip
chmod -R +x scripts/
./scripts/download.sh
脚本执行完毕后,会在当前目录下生成data
目录,其中包含models
和videos
两个子目录。
.
├── gridinfo # 用于dwa模块的参数文件
├── images # 测试图片
├── wgt # 用于拼接的权重文件
└── videos # 测试视频
如果您使用SoC平台(如SE、SM系列边缘设备),刷机后在/opt/sophon/
下已经预装了相应的libsophon、sophon-opencv和sophon-ffmpeg运行库包,可直接使用它作为运行环境。通常还需要一台x86主机作为开发环境,用于交叉编译C++程序。
(1) 安装驱动
安装驱动需要进入到超级权限,接着系统驱动目录,安装驱动:
sudo -s
cd /mnt/system/ko/
insmod v4l2_os04e10.ko
(2)isp参数文件配置
sudo -s
mkdir -p /mnt/cfg/param
cp data/cvi_sdr_bin /mnt/cfg/param
通常在x86主机上交叉编译程序,您需要在x86主机上使用SOPHON SDK搭建交叉编译环境,将程序所依赖的头文件和库文件打包至sophon_sdk_soc目录中,具体请参考sophon-stream编译。本例程主要依赖libsophon、sophon-opencv和sophon-ffmpeg运行库包。
dwa_blend_encode demo中各部分参数位于 config 目录,结构如下所示:
./config/
├── decode.json # 解码配置
├── engine.json # sophon-stream graph配置,需要分别配置dwa、blend、resize、encode等文件
├── camera_dwa_blend_encode_demo.json # demo按sensor输入的配置文件
├── dwa_blend_encode_demo.json # demo按图片输入的配置文件
├── dwa_L.json # 左侧输入的鱼眼展开配置文件
├── dwa_R.json # 右侧输入的鱼眼展开配置文件
├── blend.json # 拼接配置文件
└── resize.json # 尺寸缩放配置文件
其中,camera_dwa_blend_encode_demo.json是例程的整体配置文件,管理输入码流等信息。在一张图上可以支持多路数据的输入,channels参数配置输入的路数,sample_interval设置跳帧数,loop_num设置循环播放次数,channel中包含码流url等信息。download_image控制是否保存推理结果,若为false则不保存,若为true,则会保存在/build/results目录下。
配置文件中不指定channel_id
属性的情况,会在demo中对每一路数据的channel_id
从0开始默认赋值。
对于PCIe平台,可以直接在PCIe平台上运行测试;对于SoC平台,需将交叉编译生成的动态链接库、可执行文件、所需的模型和测试数据拷贝到SoC平台中测试。
SoC平台上,动态库、可执行文件、配置文件、模型、视频数据的目录结构关系应与原始sophon-stream仓库中的关系保持一致。
- 运行可执行文件,sensor的出图需要root权限
./main --demo_config_path=../dwa_blend_encode/config/camera_dwa_blend_encode_demo.json
目前,鱼眼拼接算法只支持在BM1688 SOC模式下进行推理。按照默认设置可以达到25fps。
访问https://nodejs.org/en/download/,根据说明完成nodejs的安装,推荐使用node-v20.11.1版本。
进入sophon-stream/sample/dwa_dpu_encode/web/ui目录,执行以下命令:
npm install --force
npm run build
编译完成后会在该目录下产生build文件夹。最后,将编译生成的文件拷贝到SoC平台中运行。
进入sophon-stream/sample/dwa_dpu_encode/web/ui/build目录,执行以下命令:
python3 -m http.server 3000
其中,3000是web ui的端口号,可以根据需要修改。 在浏览器中访问http://localhost:3000/,即可打开web ui界面。(localhost更改为运行环境的ip)