目标检测--YOLO算法

Yolo

介绍

目标检测--YOLO算法

YOLO v1

算法

目标检测--YOLO算法目标检测--YOLO算法
目标检测--YOLO算法

  • yolo v1缺陷:一个格子只能对应一个类别,不能对应多个类别,导致无法对小物体识别

YOLO v1网络结构

目标检测--YOLO算法

损失函数

目标检测--YOLO算法

网络训练

目标检测--YOLO算法

  • 这里使用ImageNet输出类别个数为1000,将最后的FC去掉,换成输出类别个数为S * S * (B*5+C)
  • ImageNet用于分类,yolo算法是回归的方法
  • 将图片扩大,对于卷积生成的feature map来说并不敏感,对卷积核数敏感
  • FC的输入与feature map大小相关,通过改变图像分辨率,继续使用预训练模型conv,提取feature map。

网络的缺陷

目标检测--YOLO算法

  • 没有考虑大物体误差与小物体的误差,默认的贡献是相同的

性能

目标检测--YOLO算法

YOLO V2

介绍

目标检测--YOLO算法

  • 采用卷积层替代FC的好处在于使feature map作为输入的大小不敏感
  • coco用于检测的数据集,学习目标的位置,Imagenet用于分类,学习分类,通过多任务提高准确度

改进之处

目标检测--YOLO算法

  • DarkNet比VGG更快
  • Batch Normalization更稳定,收敛更快
  • 卷积替代FC,可以输入多尺度的图像

目标检测--YOLO算法
目标检测--YOLO算法

  • 采用416而非448,是因为448448采样后产生1414的feature,没有一个位于中心的网格,而416416采样产生1313的feature,这样可以预测位于中心的物体(一般大物体占据图像的中心位置),1313上采样得到416416

目标检测--YOLO算法

  • Anchor Box对比与建议框,召回率有显著的提升,mAP准确值降低
  • Anchor Box预测的框的个数比之前的个数要多1521>98
  • 通过k-means聚类的方式,进行回归,找到最好的BoundingBox,但传统通过欧式距离计算,导致较大的BoundingBox比较小的BoundingBox产生更多的error,聚类的结果也产生偏离。
  • 这里聚类作者使用IOU得分方式。BoundingBox的交集除以它的并集,这样得到的误差与BoundingBox的尺寸无关了。

目标检测--YOLO算法
目标检测--YOLO算法

  • 可以输入不同尺寸的图像在于使用卷积层,同一网络,执行不同图像的检测任务,在小尺寸的图像上,执行更快,在速度与性能上达到平衡
  • 28*28尺寸fps能达到90,准确率与faster-rcnn达到同一水准。

网络结构

目标检测--YOLO算法

目标检测--YOLO算法

  • 较YOLO V1而言,YOLO V2以每一个边框预测多个分类。

性能对比

目标检测--YOLO算法

目标检测--YOLO算法

  • WorldTree同一类中区分具体类别,例如狗,牧羊犬、藏獒等

目标检测--YOLO算法

使用场景

  • 用于低性能的GPU
  • 高帧率的视频检测
  • 多路视频场景中
  • 低功耗

Yolo V3

介绍

目标检测--YOLO算法### 改进策略
目标检测--YOLO算法
目标检测--YOLO算法

  • 精度提高,速度下降
    目标检测--YOLO算法
  • 从多个不同的featuremap上提取特征作为yolo检测的输入
  • Anchor的选择也是通过聚类的方式选择合适的长宽比,得到9个聚类中心,平均的分到3个尺度上啊,每个尺度对应3个BoundingBox
  • 对于每种尺度,使用卷积层进一步提取特征,之后输出box的信息
  • 对于尺寸2,3而言,需要对前者卷积的结果上采样,再与自己的featuremap相加,再通过卷积,输出boundingbox信息
  • 尺寸的大小相较于前者尺度扩大了两倍

目标检测--YOLO算法

  • softmax只分别一个标签,对于分别多个标签不行

网络性能

目标检测--YOLO算法

目标检测--YOLO算法

  • 对于使用ResNet而言,识别率有所下降

目标检测--YOLO算法

Darknet框架

目标检测--YOLO算法

YOLO算法的优点

目标检测--YOLO算法