复盘一下在实现检测算法落地过程中所经历的一个流程;
![2081f8ac8cc2099e093facd3c64988fb.png](https://i-blog.csdnimg.cn/blog_migrate/a94dfb54e2007c1fad521ecd1818b77f.jpeg)
列出几点重点说明一下:
1、网络的选取和调参是关键;
网络选取:考虑到实际情况的实时性、硬件性能,需考虑参数量较小的检测网络,更倾向于单阶段式的网络;基于yolossd等的多个变体网络;其次基础特征提取网络backbone的替换,传统都是vgg的特征提取,现在mobilenet、v2v3都可以大幅提速;进一步的提速办法还有初始化、蒸馏以及去掉某些基础特征层以裁剪模型,都可以提升速度;当然前提是精度损失较小的前提下。
调参:这里主要根据数据集来决定;最终的检测效果跟样本数量有关,也跟训练网络的部分参数设置有关;如小物体检测和常规的车辆、行人检测候选框大小差异很大,可以适当修改训练网络的anchor值可以大幅提升检测精度、以及修改损失函数的权重等;
2、工程化
将PC端的目标检测算法移植到嵌入式控制器中,不同控制器开发难度可能不一样,带gpu的控制器最好不过,目前来看Nvidia的还是最好用,但它的相机调用很不友好,官方声明不建议使用opencv,用它自带的NVmedia工具,纳尼?Nvidia也想搞技术壁垒? 相机接口调用这些相机提供商应该能提供驱动,核心在于目标检测算法C++接口开发,以及联调工作将得到的检测结果发送给上层;大量的在线实测工作,再进行反馈修改。是物体的漏检误检则需要从网络端修改,要么继续调参,要么继续增大数据集提升精度;或者是发送或需增加一些新的功能,则是在工程化代码里修改。
是不是感觉落地实现目标检测算法不是很难,有一台好的GPU控制器,精度速度达到平衡的小型化目标检测算法,基本ok了;
不要加追踪算法????不要加测距算法?????