深度学习经典的两种检测方式:
1.单阶段(one-stage):YOLO系列
优点:速度非常快,适合做实时检测任务,将检测问题转换成回归问题,一个CNN就可以
缺点:效果不太好
2.双阶段(two-stage):Faster-rcnn Mask-Rcnn系列
相比于单阶段,它加了预选框(Proposal)
优点:速度较慢
缺点:效果较好
下面就详细说明一下YOLO-V1到YOLO-V3的网络框架及改进
YOLO-V1:
网络架构:先验框有2个
优点:快速,简单
缺点:1.每个cell只预测一个类别,如果重叠就无法检测到
2.小物体检测效果一般,因为只有两种框,长宽比可选但是单一,所以优先检测大物体,
YOLO-V2:
YOLO-V2基于YOLO-V1的改进:
1. V2版本舍弃Dropout(在全连接层用到Dropout,防止过拟合),卷积后全部加入Batch Normalization(网络的每一层的输入都做了归一化,收敛相对更容易)经过Batch Normalization处理后的网络会提升2%的mAP
2. YOLO-V2-更大的分辨率,V1训练时用的是224*224,测试时使用448*448,可能导致模型不泛化,V2训练时额外又进行了10次448*448的微调,使用高分辨率分类器后,YOLO-v2的mAP提升了约4%
3. YOLO-V2-网络结构(加入DarkNet,舍弃全连接层)
加入DarkNet(没有全连接层,因为全连接层容易过拟合且训练慢,全是卷积层做的,DarkNet19就是19层卷积层),实际输入为416*416,没有FC层,5次降采样(5层池化),(13*13),由下图可知,没有全连接层,并且1*1卷积节省了很多参数
4. YOLO-V2-聚类提取先验框:
通过引入anchor boxes,使得预测的box数量更多(13*13*n),跟faster-rcnn系列不同的是先验框并不是直接按照长宽固定比给定,直白来讲就是将一堆数据集中的图像,利用K-means的方法,分成相近(高度和宽度相近)的k=5(根据coco数据集实验结果所得)类。且K-means聚类中的距离:d(boa, centroids) = 1-IOU(box , centroids)[注意:选择的不是欧式距离]
结果:mAP没有提高,recall提高了
5. YOLO-V2-Directed Location Prediction (定向定位预测,相对位置预测)
V2中并没有直接使用偏移量,而是选择相对grid cell的偏移量
6. YOLO-V2-Fine-Grained Features
最后一层时感受野太大了,小目标可能丢失了,需融合之前的特征,将前面的感受野与最后一层做特征融合,这样特征提取更多
##########简单补充一下感受野######
感受野(越大的感受野越能考虑全局)
概述来说就是特征图上的点能看到原始图像多大区域
7.YOLO-V2-Multi-Scale (多尺度)
因为检测过程中图片大小有可能变化,所以在卷积层可以调整图片大小
综上所述,YOLO-V2比YOLO-V1 更快,更强,mAP明显提升
YOLO-V3:
最大的改进就是网络结构,使其更适合小目标检测,为了能检测到不同大小的物体,设计了3个scale,每种3个规格,一共9种,这些scale大小不一,大的预测大的,中等大小预测中等大小,小的预测小的
13×13的感受野最大,可预测大物体
3种scale互相再做特征融合(采用上采样的方式),而不是不同特征图分别利用
softmax改进,预测多标签任务 (不仅是狗,还是哺乳动物),没有池化和全连接层,全部卷积。
下采样通过stride为2实现