YOLO系列

YOLO系列

    • YOLO V1
      • 损失函数
    • YOLOV2 (YOLO9000)
    • YOLOV3

YOLO V1

1)将一幅图像分成sxs个网格(grid cell),如果某个object的中心落在这个网格中,则这个网格就负责预测这个object。
2)每个网格要预测2个bounding box(同类),每个bounding box 除了要预测位置之外,还要附带预测一个confidence(iou)值。 每个网格还要预测C个类别的分数。
YOLO系列_第1张图片

损失函数

网格中的每个子网格对应两个bounding box,选择IOU较大的那个bounding box认为其存在目标。
第2行宽度和高度先取了平方根,因为如果直接取差值的话,大的对象对差值的敏感度较低,小的对象对差值的敏感度较高,所以取平方根可以降低这种敏感度的差异,使得较大的对象和较小的对象在尺寸误差上有相似的权重。
YOLO系列_第2张图片
优势: 与二阶段检测算法相比,利用直接回归的方式,大大缩小了计算量,提升了运行速度。
不足: 每一个网格仅2个预测框,当存在多物体密集挨着的时候或者小目标的时候,检测效果不好。
小对象检测效果不太好(尤其是一些聚集在一起的小对象),对边框的预测准确度不是很高,总体预测精度略低于Fast RCNN。主要是因为网格设置比较稀疏,而且每个网格只预测两个边框,另外Pooling层会丢失一些细节信息,对定位存在影响。
问题来源是定位不准

YOLOV2 (YOLO9000)

  1. 每个卷积层后加入BN,提高了网络训练的速度,加快了收敛,消除了对其他正则化的依赖,且正则化效果更好,使调参更简单,即使去掉Dropout层也不会产生过拟合。
  2. 更高分辨率的分类器 448*448输入
  3. 基于anchor目标边界框的预测,召回大幅提升
  4. k-means聚类生成预设的anchor(defult bbox,每个特征向量对应5个anchor),距离使用1-IOU
  5. 限制bbox中心坐标的偏移量t,通过sigmoid函数映射到(0,1),使边界框限制在grid里,网络更容易收敛。其中中心坐标初始定义在grid的左上角坐标。
  6. passthrough layer类似于focus w/2,h/2,c*4
  7. 多尺度训练,在训练过程中每经过10个epoch之后就会随机选择新的图片尺寸。
  8. 全卷积结构。去掉全连接层,转为卷积层。去掉一个池化层,提高输出的分辨率。

YOLOV3

backbone使用Darknet-53,卷积替代最大池化下采样
对于一个输入图像,YOLO3将其映射到3个尺度的输出张量,代表图像各个位置存在各种对象的概率。
Anchor的生成: 在COCO数据集上,生成9个聚类。特征图越大,感受野越小。对小目标越敏感,所以选用小的anchor box。特征图越小,感受野越大。对大目标越敏感,所以选用大的anchor box。

参考视频https://www.bilibili.com/video/BV1yi4y1g7ro?spm_id_from=333.999.0.0&vd_source=e879958901a6e75113babaef03e8179b
https://zhuanlan.zhihu.com/p/550633282

你可能感兴趣的:(目标检测)