10.5. 目标检测全链路示例文档¶
10.5.1. 介绍¶
此用例展示如何在J5上运行一个检测模型并展示结果。
10.5.2. 程序原理¶
本示例实现了VioModule、InferenceModule、PostProcessModule、CodecModule和WebDisplayModule, 并使用生产者+消费者模型将各个模块串连起来,其关系如下图所示:
![../../_images/J5Sample.png](../../_images/J5Sample.png)
VioModule:获取图像数据,支持网络回灌和camera两种模式。
InferenceModule:获取Vio图像数据,调用dnn接口执行预测任务。
PostProcessModule:对预测的结果进行后处理,获取智能结果。
CodecModule:获取Vio图像nv12数据,编码为jpg格式数据输出。
WebDisplayModule:获取智能结果和编码后的jpg数据,通过websocket发送到web展示。
10.5.3. 编译与部署¶
bash build_and_deploy.sh
上方命令执行后,会生成一个deploy目录,该目录拷贝到J5板子上。
10.5.4. 运行¶
进入deploy文件夹,执行如下命令:
sh run_sample.sh l
l表示log的debug级别,支持i/d/w/e/f。
i: 打印info信息,可显示各个module的耗时。
d: 打印debug信息。
w: 打印warning信息,可显示FPS,默认是w。
e: 打印error信息。
f: 打印fatal信息。
默认是camera模式,回灌模式修改配置文件后重新运行即可。
10.5.4.1. camera模式¶
目前支持的摄像头列表如下:
max9296+ar0233(SENSING Fov216)
configs/vio/j5_vio_config.json文件中config_index设置为0。
configs/vio/vin/camera/j5_camera_source.json文件中cam_index设置为0。
max96712+ar0233(SUNNY Fov100)
configs/vio/j5_vio_config.json文件中config_index设置为2。
configs/vio/vin/camera/j5_camera_source.json文件中cam_index设置为1。
10.5.4.2. 网络回灌模式¶
进入deploy文件夹,修改配置文件:
vi configs/vio/j5_vio_config.json
修改 config_index
字段为’1’即是网络回灌模式。
网络回灌Client端工具在 tools/network_send
目录下,基于python3语言编写,使用方式如下:
1.将需要回灌的jpeg图像存放在 tools/network_send/images/
目录下:
|── tools
├── network_send
│ ├── images
│ ├── pc_send.py
│ └── test_pb2.py
2.在服务器上运行:
python3 pc_send.py --input_file_path ./images --board_ip 10.64.61.209 --is_loop true
参数说明:
input_file_path:指定回灌图像的文件夹,文件夹中的图片将依次发送出去。
board_ip:需要发送的目标地平线j5板的ip地址。
is_loop:是否循环发送input_file_path中的图片。取值是false,则发送一轮就结束;取值是true,则将会一轮一轮的不停发送。
10.5.4.3. WebService¶
camera模式和网络回灌模式的展示效果都通过 OpenExplorer web
进行可视化。Server端工具在 tools/webservice
目录下:
|── tools
├── webservice
│ ├── conf
│ ├── html
│ ├── logs
│ ├── sbin
│ ├── README.md
│ └── start_nginx.sh
10.5.4.3.1. 如何使用¶
1.进入板端deploy文件夹,执行脚本启动 webservice
:
sh start_nginx.sh
2.打开浏览器,访问 http://IP
。其中,IP即J5的地址。点击web展示端链接,即可查看检测效果。
10.5.4.3.2. 检测效果¶
进入deploy文件夹,修改后处理配置文件可调整检测效果:
vi configs/model/postprocess_config.json
下图是配置为如下参数的检测效果:
"topk": 5,
"score_threshold": 0.61,
"iou_threshold": 0.6,
![../../_images/detection_result.png](../../_images/detection_result.png)