提速部分
1. 针对感受野的不同,划分大小目标检测网络
?? 同样的任务,可以训练多套网络实现不同感受野,分别处理大目标、小目标。为了检测多尺度目标,模型都会采用类FPN的结果,直接结果就是减少模型的并发性。划分大小网络后,可以减少FPN结构的分支,同时也可以减少训练难度,而且两个网络也可以使用不同的复杂度。
2.分区域不同分辨率检测不同远近目标
??低分辨率的图片检测近距离目标,用中心区域的高分辨率图片检测远距离目标
3.黑白单通道图片输入,提升模型速度
??由于cnn层级化结构,运算量往往都是在高分辨率特征图上,如果目标没有特别的色彩要求的话,可以直接使用黑白单通道图片。这样第一层就直接剪掉2/3的conv计算量
4.轻量分类网络+多个重量model
??可以考虑先用分类网络来确定场景,然后选择适合场景的模型,例如白天用什么model,黑夜用什么model
5.跳帧
??很多应用其实都实时性的要求不是特别高(30FPS),这个时候我们用15FPS检测帧率去检测,其实也是ok的。
6.多阶段处理/cascade结构
??多个任务合并成一个任务可能需要一个容量很大的网络才能获得比较好的结果,因此可以考虑先将一个任务完成,后续增加一个个分任务,这样整体上可能会获得一个更好的性能提升。two-stage就是这样做的,先RPN在refine一下
7.思考是否真的需要深度网络
??吴恩达老师说过,我们在做一个任务的时候要先思考一下数据集是怎么样的,然后再去采用相应的模型
提升精度部分
1.多帧确认,减少误检
??多次检测后才认为是检出目标,具体可以用滤波方法,置信度模型,或者单纯用前后几帧进行对比
2.卡尔曼滤波
3.缩放比例
??有些目标和场景未必需要保持图像比例:行人太细可以考虑拉宽处理,一些车道线的检测通过视角变化来获得更好的效果
4.groupRectangle
??检测框合并会用到NMS,或者其他变种。这里可以直接使用opencv里面的groupRectangle,也可以完成检测框的合并。
|