寒武纪图片检测 CNStream检测车辆 以及如何新建module

之前写过一个简单的寒武纪CNStream的编译环境的文章

后来 领导安排了别的活就没有记录了 ,正好最近领导又让接回来这个活

需求是 从给定的10张jpg图片中检测 没有车辆的图片 然后筛选出道路上没有车的图片

因为CNStream官方提供的算法就可以实现车辆检测 行人检测 物体检测,所以直接用CNStream的算法库就可以,我们需要对CNStream稍微修改一点点,为了避免直接修改CNStream的module 我们添加了一个自定义的module,我们称之为CarDetection

参考CNStream官方文档 我是直接复制了module目录下osd的例子

然后改个名字 去掉不需要的部分如下图

先看一下 官方自带的 jpeg检测图片可以osd表示出来的效果 有车的话会画出来 

 没车或者很小或者检测不出来就不会画任何东西。我们最终不需要画OSD 找出图片就可以了所以写了个很简单的 自定义了模块

寒武纪图片检测 CNStream检测车辆 以及如何新建module_第1张图片

 

寒武纪图片检测 CNStream检测车辆 以及如何新建module_第2张图片

寒武纪图片检测 CNStream检测车辆 以及如何新建module_第3张图片

 

寒武纪图片检测 CNStream检测车辆 以及如何新建module_第4张图片

cpp部分主要是处理Process函数 这里会受到推理之后的 的图片原始数据和推理结果

寒武纪图片检测 CNStream检测车辆 以及如何新建module_第5张图片

 寒武纪图片检测 CNStream检测车辆 以及如何新建module_第6张图片

很简单  遍历推理结果的list  如果检测到到 car person bus等等 就返回 说明道路上有车辆或者人 

如果没有则输出当前的jpg文件。这个文件是我自己在CNFrameInfo中加了一个字段。用来保存文件名。

自定义的module建好之后需要修改modules下面的CMakeLists.txt文件

寒武纪图片检测 CNStream检测车辆 以及如何新建module_第7张图片

 如上仿照别的模块 我这里叫car_detection 

寒武纪图片检测 CNStream检测车辆 以及如何新建module_第8张图片

 加进去之后  编译的时候就可以编译到了 

正常编译没问题之后  看下我的运行脚本

运行的时候敲如下命令./runjpeg.sh mlu270

寒武纪图片检测 CNStream检测车辆 以及如何新建module_第9张图片

 

 files.list_pose_image 就一行  指定了待检测图片的目录

寒武纪图片检测 CNStream检测车辆 以及如何新建module_第10张图片

在看下我的config_car.json 配置文件如下 图片检测的那个是官方的没有改动

寒武纪图片检测 CNStream检测车辆 以及如何新建module_第11张图片

 

 car_detection.json如下: 改了一个output_buf_number 原来视频用的是32  jpeg 提示太大 所以改成了16

寒武纪图片检测 CNStream检测车辆 以及如何新建module_第12张图片

 

osd_lable_map_car.json 如下:

寒武纪图片检测 CNStream检测车辆 以及如何新建module_第13张图片

 这里指定的我们自定义的模块 CarDetection 这里cnstream是代码里面的名字空间

CarDetection是模块的类名 必须一致 不然会找不到。运行效果如下:

寒武纪图片检测 CNStream检测车辆 以及如何新建module_第14张图片

 

你可能感兴趣的:(寒武纪,AI,linux,ubuntu,人工智能)