以前作object detection用到的都是two stage,one stage如YOLO、SSD不多接触,这里开一篇blog简单回顾该系列的发展。很抱歉,我本人只能是走马观花,不少细节也没有弄清楚。有需求的朋友请深刻论文和代码,我在末尾也列出了不少优秀的参考文章。html
You Only Look Once: Unified, Real-Time Object Detectiongit
将输入图片分割为\(S\times S\)网格,若是物体的中心落入网格中央,这个网格将负责检测这个物体。所以网络学会了去预测中心落在该网格中的物体。网络
每一个网格预测\(B\)个bounding boxes和confidence scores。confidence scores包含两方面:架构
所以,confidence scores可定义为$Pr(Object)*IoU^{truth}_{pred} $ide
每一个bbox包含5个predictions:\(x,y,w,h和confidence\):\((x,y)\)表示bbox中心坐标,\(h,w\)表示bbox长宽,\(confidence\)表示pred和gt box的IoU。测试
每一个网格预测\(C\)个类别几率\(Pr(Class_i|Object)\),表示该网格负责预测的边界框目标属于各种的几率。咱们不考虑box的数量即\(B\)。ui
测试阶段咱们将类别几率和confidence score相乘,得每一个box的类特定confidence score:spa
\[Pr(Class_i|Object)*Pr(Object)*IoU^{truth}_{pred}=Pr(Class_i)*IoU^{truth}_{pred}\]3d
表示box中类别出现的几率和预测box与目标的拟合程度。orm
将图片分解为$S\times S \(个gird,每一个grid预测\)B\(个bbox,confidence和\)C\(个类几率,预测值为\)S\times S \times (B*5+C)$
网络结构参考GooLeNet,包含24个卷积层和2个激活层,卷积层使用1x1卷积降维而后跟3x3卷积。对于卷积层和全链接层,采用Leaky ReLU:\(max(x,0.1x)\),最后一层采用线性激活层。
网络输出维度为30(\(B=2\)),前20个元素是类别几率值,而后2个是边界框置信度,最后8个是bbox的\((x,y,w,h)\)。
第一项是bbox中心坐标偏差项;第二项是bbox高与宽偏差项;
第三项是包含目标bbox置信度偏差项;第四项是不包含目标bbox置信度偏差项;
最后一项是包含目标的grid分类偏差项。
将Loss对应到predtion张量上:
SSD:Single Shot MultiBox Detector
速度比YOLO快,精度能够跟Faster RCNN媲美。
采用多尺度特征图用于检测:大特征图检测小目标,小特征图检测大目标。
采用卷积进行检测:与YOLO最后采用全链接层不一样,SSD直接采用卷积提取检测结果。
设置先验框:借鉴Faster RCNN中anchor理念,为每一个网格设置不一样长宽比的anchor,bbox以anchor为基准。
在VGG16基础上增长了卷积层得到更多特征图用于检测。
上是SSD,下是YOLO
YOLO9000: Better, Faster, Stronger
YOLOv1虽然检测速度快,但检测精度不如RCNN,YOLOv1定位不够准确,召回率也低。因而YOLOv2提出了几种改进策略来提高YOLO模型的定位准确度和召回率,并保持检测速度。
Better
Batch Normalization:加快收敛并起到正则化效果,防止过拟合。
High Resolution Classifier:在ImageNet数据上使用\(448\times448\)输入来finetune。
Convolutional With Anchor Boxes:借鉴Faster R-CNN中RPN的anchor boxes策略,预测offset而不是coordinate。
Dimension Clusters:采用k-means来替代人工选取anchor。并使用下式来度量距离。
\[d(box,centroid)=1-IOU(box, centroid)\]
Direct location prediction:改变了预测bbox的计算公式
Multi-Scale Training:每隔10batch,网络随机选择新的图像尺寸。
Faster
Stronger
YOLOv3: An Incremental Improvement
[1]Redmon J, Divvala S, Girshick R, et al. You only look once: Unified, real-time object detection[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 779-788.
[2]Liu W, Anguelov D, Erhan D, et al. Ssd: Single shot multibox detector[C]//European conference on computer vision. Springer, Cham, 2016: 21-37.
[3]Redmon J, Farhadi A. YOLO9000: better, faster, stronger[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 7263-7271.
[4]Redmon J, Farhadi A. Yolov3: An incremental improvement[J]. arXiv preprint arXiv:1804.02767, 2018.
What do we learn from single shot object detectors (SSD, YOLOv3), FPN & Focal loss (RetinaNet)?