Skip to content

Latest commit

 

History

History

dwa_blend_encode

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

dwa_blend_encode Demo

目录

1. 简介

本例程用于说明如何使用sophon-stream快速构建深度估计应用。

本例程中,鱼眼拼接算法的鱼眼展开、鱼眼拼接分别在两个element上进行运算,element内部可以开启多个线程,保证了一定的运行效率。下图是广角拼接应用的流程图: dwa_pipeline

2. 特性

  • 支持BM1688(SoC)
  • 支持多路视频流
  • 支持多线程

3. 准备数据

​在scripts目录下提供了相关数据的下载脚本 download.sh

# 安装unzip,若已安装请跳过,非ubuntu系统视情况使用yum或其他方式安装
sudo apt install unzip
chmod -R +x scripts/
./scripts/download.sh

脚本执行完毕后,会在当前目录下生成data目录,其中包含modelsvideos两个子目录。

.
├── gridinfo # 用于dwa模块的参数文件
├── images   # 测试图片
├── wgt     # 用于拼接的权重文件
└── videos   # 测试视频

4. 环境准备

4. SoC平台

如果您使用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

5. 程序编译

5.1 SoC平台

通常在x86主机上交叉编译程序,您需要在x86主机上使用SOPHON SDK搭建交叉编译环境,将程序所依赖的头文件和库文件打包至sophon_sdk_soc目录中,具体请参考sophon-stream编译。本例程主要依赖libsophon、sophon-opencv和sophon-ffmpeg运行库包。

6. 程序运行

6.1 Json配置说明

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开始默认赋值。

6.2 运行

对于PCIe平台,可以直接在PCIe平台上运行测试;对于SoC平台,需将交叉编译生成的动态链接库、可执行文件、所需的模型和测试数据拷贝到SoC平台中测试。

SoC平台上,动态库、可执行文件、配置文件、模型、视频数据的目录结构关系应与原始sophon-stream仓库中的关系保持一致。

  1. 运行可执行文件,sensor的出图需要root权限
./main --demo_config_path=../dwa_blend_encode/config/camera_dwa_blend_encode_demo.json

7. 性能测试

目前,鱼眼拼接算法只支持在BM1688 SOC模式下进行推理。按照默认设置可以达到25fps。

8. web ui使用

8.1 安装nodejs

访问https://nodejs.org/en/download/,根据说明完成nodejs的安装,推荐使用node-v20.11.1版本。

8.2 web ui编译

进入sophon-stream/sample/dwa_dpu_encode/web/ui目录,执行以下命令:

npm install --force
npm run build

编译完成后会在该目录下产生build文件夹。最后,将编译生成的文件拷贝到SoC平台中运行。

8.3 运行web ui

进入sophon-stream/sample/dwa_dpu_encode/web/ui/build目录,执行以下命令:

python3 -m http.server 3000

其中,3000是web ui的端口号,可以根据需要修改。 在浏览器中访问http://localhost:3000/,即可打开web ui界面。(localhost更改为运行环境的ip)