1.yolo
YOLO: You Only Look Once。在2015年首次被提出,在2017年CVPR上,Joseph Redmon 和Ali Farhadi 又提出了YOLOv2,在这之后,又提出了YOLOv3
- yolo系列是One-stage 的目标检测
- 官网地址:https://pjreddie.com/darknet/yolo/
2.yolov1
论文地址:You only look once unified real-time object detection
对于实现直接回归功能的CNN并不需要复杂的设计过程,它是直接用一整张图进行训练模型,能够更好的区分目标和背景区域。
- 同时预测多个Box位置和类别
- 端到端的目标检测和识别
- 速度更快
核心思想
- 图像被分成SxS个格子
- 包含ground truth物体中心的格子负责预测相应的物体
- 每个格子预测B(超参值,默认为2)个检测框,以及其置信度(包含物体概率),以及C个类别概率
- 每个边界框有5个预测值:x,y,w,h,confidence,(x,y)代表预测边界框的中心点坐标,w,h是边界框的宽度和高度,confidence是预测边界框和真实边界框的IOU。
- 类别对应当前的格子
- 预测的向量长度:5*B+C
- 如果一个图划分为SxS个格子,其最终划分的向量长度是(5*B+C)xSxS
- bbox信息(x, y, w, h)为物体的中心位置相对格子位置的偏移及宽度和高度,均被归一化
- 置信度confidence反映是否包含物体以及包含物体情况下位置的准确性,定义为:
其中Pr(Object)∈{0,1}
网络结构分析: - FC输出的向量长度为:SxSx(Bx5+C) = 7x7x(2x5+20)
- 网络使用小卷积,即:1x1和3x3(GoogLeNet)
- 网络比VGG16快,但准确率稍差
损失函数:
- Loss函数:均方和误差
- 坐标误差、IOU误差和分类误差
- 权重考量
网络训练:
- 预训练:ImageNet 1000类数据预训练
- 使用预训练参数(前20个卷积层)来初始化Yolo,并训练VOC20
- 将输入图像分辨率从224x224 调整到448x448
- 训练时B个bbox的ground truth设置相同
缺点:
- 输入图像分割成S x S, S取7有点粗糙, 导致后续边框回归不太准确
- 每一个格子只预测一种物体, 不能预测一个格子有多种物体的情况,对小目标物体预测效果不好
- 检测时输入尺寸固定
3.yolov2/yolo9000
论文地址:YOLO9000: Better, Faster, Stronger
- 引入了anchor box 的思想
- 输出层:用卷积层替代了yolo v1 的全连接层
- 识别种类、精度、速度、定位准确性都有很大提高
相比yolo v1 的改进:
1.Batch Normalization:
- v1中大量用了BN(Batch Normalization),同时在定位层dropout
- v2中取消了dropout,均采用了BN归一化处理,使模型更稳定收敛更快
2.高分辨率分类器:
- v1中使用224 x 224预训练,448 x 448用于网络监测
- v2中以448 x 448的分辨率微调最初的分类网络
3.Anchor Boxes:
-
预测bbox的偏移,使用卷积代替FC
-
输入大小为:416 x 416
-
max pooling 下采样(32倍下采样,输出得到13x13特征图)
-
预测超过1000个
-
mAP降低,recall显著提高
使用 Anchor Boxes 来预测 Bounding Boxes。作者去掉了网络中一个池化层,这让卷积层的输出能有更高的分辨率。收缩网络让其运行在 416416 而不是 448448。由于图片中的物体都倾向于出现在图片的中心位置,特别是那种比较大的物体,所以有一个单独位于物体中心的位置用于预测这些物体。YOLO 的卷积层采用 32 这个值来下采样图片,所以通过选择 416416 用作输入尺寸最终能输出一个 1313 的特征图。 使用 Anchor Box 会让精确度稍微下降,但用了它能让 YOLO 能预测出大于一千个框,同时 recall 达到88%,mAP 达到 69.2%。
4.细粒度特征:
- 添加pass through layer, 把浅层特征图(26x26)连接到深层特征图
- Resnet中的identity mapping
- 输入大小为:416 x 416
- 把26x26x512的特征图叠加成13x13x2048的特征图,与深层特征图相连接,增加细粒度特征
- 性能获得1%的提升
5.多尺度训练:
- 每隔几次迭代后就会微调网络的输入尺寸
- 输入图像尺寸:320,352,… ,608
- 尺度的变化
yolov2网络结构:
Darknet-19:
- 主要使用3 x 3卷积
- pooling之后channel数增加
- global average pooling
- 用1 x 1卷积压缩特征
- batch normalization
每个box包含4个坐标值,1个置信度和classes个条件类别概率:B x (5+C),而yolov1 为(5 x B + C)
yolo9000:
在yolov2的基础上提出的一种可以检测超过9000个类别的模型,其主要贡献点在于提出了一种分类和检测的联合训练策略,总体mAP值为19.7%。
yolo 9000 的网络结构允许实时地检测超过9000种物体分类,这归功于它能同时优化检测与分类功能。使用 WordTree 来混合来自不同的资源的训练数据,并使用联合优化技术同时在 ImageNet 和 COCO 数据集上进行训练,YOLO9000 进一步缩小了监测数据集与识别数据集之间的大小代沟。
4.yolov3
论文地址:YOLOv3: An Incremental Improvement
相关代码:https://github.com/pjreddie/darknet
相比之前网络:
- 更好的主干网络(类Resnet),精度更好
- 多尺度预测(类FPN):聚类得到Bbox的先验,选择9个簇以及3个尺度,将这9个簇均匀的分布在这3个尺度上
- 更好的分类器(binary cross-entropy loss):Softmax 不适用于多标签分类,Softmax可被独立的多个logistic分类器代替,且准确率不会下降
5.总结
yolo系列网络优点:
- 快速,框架搭建简单
- 背景误检率低
- 通用性强
缺点(与RCNN系列物体检测方法相比):
- 识别物体位置精度准确性差
- 召回率低
Reference:
https://blog.youkuaiyun.com/hitzijiyingcai/article/details/87862233
https://blog.youkuaiyun.com/guleileo/article/details/80581858