赞
踩
目标检测算法主要分两类:One-Stage与Two-Stage。One-Stage与Two-Stage是两种不同的思路,其各有各的优缺点。
One-Stage
主要思路:直接通过卷积神经网络提取特征,预测目标的分类与定位;
Two-Stage
主要思路:先进行区域生成,即生成候选区域(Region Proposal),在通过卷积神经网络预测目标的分类与定位;
优缺点
优缺点 | One-Stage | Two-Stage |
---|---|---|
优点 | 速度快;避免背景错误产生false positives; 学到物体的泛化特征 | 精度高(定位、检出率);Anchor机制;共享计算量 |
缺点 | 精度低(定位、检出率);小物体的检测效果不好 | 速度慢;训练时间长;误报相对高 |
从目前看,在移动端一般使用 One-Stage算法。现在很难说,精度和准确率的问题,因为影响因素不仅仅取决于算法,还跟数据集大小、图像标注质量、训练参数等有很大的关系。
主要算法
One-Stage:YOLO系列(v1-v8),SSD系列(R-SSD、DSSD、FSSD等),Retina-Net,DetectNet,SqueezeDet。
Two-Stage:RCNN系列(Fast-RCNN、Faster-RCNN、Mask-RCNN),SPPNet,R-FCN。
使用启发式搜索算法来选择锚框。
使用预训练模型来对每个锚框抽取特征。
训练一个SVM来对类别分类。
训练一个线性回归模型来预测边缘偏移框。
当锚框每次选择的大小不同,我们如何使这些锚框称为一个batch呢?
兴趣区域(ROI)池化层
ROI Pooling
对图片整体抽取特征。
在做像素级别预测时,边界位置不要发生太多的错位。
总结:
- R-CNN是最早、也是最有名的一类基于锚框和CNN的目标检测算法
- Fast/Faster R-CNN持续提升性能
- Faster R-CNN和Mask R-CNN是在最求高精度场景下的常用算法
SSD全称Single Shot Multibox Detector,是一种单阶段目标检测器。其优点是原始的YOLO和Faster R-CNN在推理速度和精度之间取得了更好的平衡。SSD模型是由Wei Liu等人在使用卷积神经网络(CNN)进行目标检测的研究中,提出的一种改进思路。
SSD用于图像分类、物体检测和语义分割等各种深度学习任务。相对于其他目标检测算法,SSD模型有更高的精度,而且速度也是非常快的。其主要思路是通过在CNN的最后几层添加多个预测层实现多尺度的目标检测,然后通过一个过滤策略对每个检测框进行筛选,最后输出最终的检测结果。
生成锚框
( s 1 , r 1 ) , ( s 2 , r 1 ) , . . . , ( s n , r 1 ) , ( s 1 , r 2 ) , . . . , ( s 1 , r m ) (s_1,r_1),(s_2,r_1),...,(s_n,r_1),(s_1,r_2),...,(s_1,r_m) (s1,r1),(s2,r1),...,(sn,r1),(s1,r2),...,(s1,rm)
SSD模型
总结:
- SSD通过单神经网络来检测模型
- 以每个像素为中心的产生多个锚框
- 在多个段段输出上进行多尺度的检测
You Only Look Once
YOLO系列算法是一类典型的one-stage目标检测算法,其利用anchor box将分类与目标定位的回归问题结合起来,从而做到了高效、灵活和泛化性能好,所以在工业界也十分受欢迎。
Yolo算法采用一个单独的CNN模型实现end-to-end的目标检测,核心思想就是利用整张图作为网络的输入,直接在输出层回归 bounding box(边界框) 的位置及其所属的类别。
yolo尽量让锚框不重叠。
YOLO家族进化史(V1-V8)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。