软件架构
前文(参考链接1和2)中针对我们在整个项目中需要用到的一些技术进行了描述,现在我们说回到产品应用部分的流程,并梳理以下整个软件架构。
整个软件功能分三部分:图像预处理、目标识别算法处理和识别结果可视化。
由于我们使用的主芯片是海思的Hi3516D,一款流媒体方案的SoC,所以本文会涉及一些关于海思的SDK的实现逻辑和流程,如果是没有接触过海思方案的读者可能会有些疑惑。
图像预处理
图像预处理功能其实很简单,分为三步操作:
- 获取相机前端视频输入,视频输入的分辨率为1920 x 1080。
- 由于我们使用的Tiny YOLO V2的网络,输入层张量维度为[416, 416, 3],所以我们需要将图像下采样至416 x 416的分辨率。
- 将下采样之后的图像编码成jpg格式。
下采样和图像编码都不可能用软件在ARM上面运行完成,因为耗时比较大。所以我们通过SoC内部集成的ISS核和VSS核来进行处理。
下采样部分,我们通过调用SDK来增加一条vpss channel,绑定到系统中的VI通道,该vpss channel的输出分辨率即为我们需要下采样的目标分辨率 416 x 416,这样使用硬件去处理的话可以根据相机的帧率达到实时效果。
编码部分,我们新增一条VENC编码通道,编码格式为JPEG,直接将下采样使用的vpss channel 和这条VENC通道进行绑定。
这样,软件层面我们就可以从VENC中循环获取预处理完成的JPG图片,然后将图片中的RGB数据送到算法模块,进行算法处理即可。
后面为了降低用软件方式将JPG转RGB的耗时。在方案上通过使用海思SDK中的IVE C

本文介绍了基于海思Hi3516D SoC和Movidius VPU的目标识别项目,软件架构包括图像预处理(使用SDK进行VPSS和VENC处理)、算法处理(移植Tiny YOLO V2并优化耗时)和结果可视化(利用RGN功能实现OSD)。通过调试,目前达到6fps的处理速率,但存在坐标偏差和USB断连问题,后续将进行算法优化。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



