目标检测--YOLO算法
文章目录
Yolo
介绍
YOLO v1
算法
- yolo v1缺陷:一个格子只能对应一个类别,不能对应多个类别,导致无法对小物体识别
YOLO v1网络结构
损失函数
网络训练
- 这里使用ImageNet输出类别个数为1000,将最后的FC去掉,换成输出类别个数为S * S * (B*5+C)
- ImageNet用于分类,yolo算法是回归的方法
- 将图片扩大,对于卷积生成的feature map来说并不敏感,对卷积核数敏感
- FC的输入与feature map大小相关,通过改变图像分辨率,继续使用预训练模型conv,提取feature map。
网络的缺陷
- 没有考虑大物体误差与小物体的误差,默认的贡献是相同的
性能
YOLO V2
介绍
- 采用卷积层替代FC的好处在于使feature map作为输入的大小不敏感
- coco用于检测的数据集,学习目标的位置,Imagenet用于分类,学习分类,通过多任务提高准确度
改进之处
- DarkNet比VGG更快
- Batch Normalization更稳定,收敛更快
- 卷积替代FC,可以输入多尺度的图像
- 采用416而非448,是因为448448采样后产生1414的feature,没有一个位于中心的网格,而416416采样产生1313的feature,这样可以预测位于中心的物体(一般大物体占据图像的中心位置),1313上采样得到416416
- Anchor Box对比与建议框,召回率有显著的提升,mAP准确值降低
- Anchor Box预测的框的个数比之前的个数要多1521>98
- 通过k-means聚类的方式,进行回归,找到最好的BoundingBox,但传统通过欧式距离计算,导致较大的BoundingBox比较小的BoundingBox产生更多的error,聚类的结果也产生偏离。
- 这里聚类作者使用IOU得分方式。BoundingBox的交集除以它的并集,这样得到的误差与BoundingBox的尺寸无关了。
- 可以输入不同尺寸的图像在于使用卷积层,同一网络,执行不同图像的检测任务,在小尺寸的图像上,执行更快,在速度与性能上达到平衡
- 28*28尺寸fps能达到90,准确率与faster-rcnn达到同一水准。
网络结构
- 较YOLO V1而言,YOLO V2以每一个边框预测多个分类。
性能对比
- WorldTree同一类中区分具体类别,例如狗,牧羊犬、藏獒等
使用场景
- 用于低性能的GPU
- 高帧率的视频检测
- 多路视频场景中
- 低功耗
Yolo V3
介绍
### 改进策略
- 精度提高,速度下降
- 从多个不同的featuremap上提取特征作为yolo检测的输入
- Anchor的选择也是通过聚类的方式选择合适的长宽比,得到9个聚类中心,平均的分到3个尺度上啊,每个尺度对应3个BoundingBox
- 对于每种尺度,使用卷积层进一步提取特征,之后输出box的信息
- 对于尺寸2,3而言,需要对前者卷积的结果上采样,再与自己的featuremap相加,再通过卷积,输出boundingbox信息
- 尺寸的大小相较于前者尺度扩大了两倍
- softmax只分别一个标签,对于分别多个标签不行
网络性能
- 对于使用ResNet而言,识别率有所下降