自己动手写深度学习框架(图像预处理和后处理)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        深度学习中,处理图像的方法一般就是卷积神经网络。网络本身+模型,其实就是就相当于一个黑盒函数,我们输入图像,就可以拿到一定的结果。但是不管是输入的图像,还是拿到的结果,一般都是没有办法直接使用的,有必要做一些预处理和后处理的工作。只有这样做,才是一个完整的产品解决方案。

1、选择合适的camera

        首先,我们遇到的第一个问题,就是camera的选型问题。目前一般的消费,或者工业领域,图像有三种接口,分别是mipi(dvp)接口、usb接口和网络接口。第一种成本低一点,但是本身图象是raw image,还没有isp tuning,这部分需要自己去完成,当然可以选用soc厂家调好的sensor。后面两种可以借助于os自带的框架,可以直接拿到图象,图像本身也是提前tuning好的,价格也会贵一点。

2、图像预处理

        实际场景中的图像应用,其实有很多的限制,也有很多的先验知识,这部分都是需要注意一下的。比如拿到图像之后,是否需要裁剪一下,满足model的输入要求;是否有感兴趣区域;是否要做畸变矫正;是否要做设备自检;上一帧的识别结果在哪,是否有利于帮助缩小检测范围等等,这些都是需要处理的场景。

3、模型的裁剪、优化

        pytorch学习到的model,一般是没有办法直接部署到嵌入式设备的。一方面model本身要尽量的小,参数部分不要太多,毕竟嵌入式设备内存资源有限;二是尽可能地快,性能稍微强一点,有npu的尽可能把npu用上;三是准确率方面,还不能下降太多。优化的本质,就是用不多的cpu/npu资源,实现既要、又要、还要的目的,中间的权衡、拿捏是十分重要的。

4、图像后处理

        model本身只是处理一个输入、输出的过程,但是很多算法,在model输出结果之后,还需要做一部分图像后处理的。以yolo为例,事实上我们通过yolo,确实可以得到很多的候选框,但是这些候选框并不是我们想要的结果。针对这些候选框,首先我们需要通过概率filter一大批选项,接着按照概率从高到低的原则,合并掉大部分候选框,最后剩下来的结果,才是我们想要的内容。这些都是图像后处理的工作,一般也都是c/c++通过编码的方式来完成的。

        当然,图像的后处理不一定是算法,还有可能和应用场景有关。比如识车牌的时候,第一个字符肯定是汉字;如果是蓝牌,肯定是五个字母+数字,如果是绿牌,肯定是六个字母+数字等等。这些都是属于先验知识的范畴,可以好好利用一下。

5、和其他传感器配合

        并不是所有的应用,都只能通过图像sensor来处理,很多时候是希望它能够和其他sensor一起去解决的。比如人脸识别问题,是不是可以加一个超声波传感器,这样可以当人靠近的时候,再去做检测。还比如,车辆上的智能camera,是不是可以加一个便宜的imu传感器,这样可以识别到当前车辆是静止状态,还是运动状态。如果是内部再集成一个gps传感器,还可以配合地图,实时确认当前的位置,这些都是属于多传感器融合的范畴。当然,作为商品来说,价格还不能太贵。

        真实的产品很少是只有一个sensor参与工作的,哪怕是安防相机、运动相机,内部还会集成很多的sensor,这些sensor怎么高效地一起去工作,这就是我们去考虑、设计的范畴。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式-老费

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值