Yolov1 v2 v3 原理学习笔记

原视频:https://www.bilibili.com/video/BV1yi4y1g7ro?p=1
参考文章:https://www.cnblogs.com/qianchaomoon/p/12364226.html
https://blog.csdn.net/t20134297/article/details/105745566/

如何学习网络?
1)、学习网络原理
2)、读原论文
3)、跑通github上的代码
/ 选择自己喜欢的框架+经常更新+标star多的
4)、读代码
/ 分析网络搭建+数据预处理+损失计算
/ 结合原论文+代码解读文章

一些术语:

  1. Backbone:提取特征的网络,后面接着我们自己的网络(如VGG16, Resnet-50, Darknet52 , ResNext50 variants.)
    2)Head:对图像特征进行预测,生成边界框和并预测类别。
    3)neck:放在backbone和head之间的,是为了更好的利用backbone提取的特征( 如FPN PAN RFB )

Yolov1(2016)

【论文思想】
1)、一幅图像分成S×S个 网格(grid cell),落在某个object中心的网格负责该object
2)、final predicting is a (S×S×(5*B + C)) tensor
以S=7, B=2, C=20为例
在这里插入图片描述
一个网格负责预测两个bndbox + 20个类别的分值。
每个bounding box包含(x,y,w,h) + confidence, 共5个数值
(x, y): the centerof the box relative to the bounds of the grid cell. 取值[0, 1]
(w,h): The width and height are predicted relative to the whole image.取值[0, 1]
confidence = Pr(Object)*IOU(truth, pred), 当存在object时,Pr(Object)=1,confidence可简单理解为IOU

【网络结构】
在这里插入图片描述
【损失函数】
在这里插入图片描述
注:w,h要开根处理,因为同样的偏移,不同尺度的目标IOU变化不同,尺度越大变化越小在这里插入图片描述
【v1存在问题】
1)small objects that appear in groups
2) objects in new or unusual aspect ratios or configurations
主要原因在于定位不准确

Yolov2(2017)

【better】Yolov2的7种尝试:
1)batch normalization ,mAP提升2%
在每一个卷积层后加入BatchNormalization,
BatchNormalization批归一化:指神经网络中间层也进行归一化处理,有助于规范化模型,防止过拟合。

2)high resolution classifier,mAP提升4%
一般的目标检测方法中,先使用AlexNet / VGG网络进行特征提取,图片resize到< 256256,分辨率低,目标检测困难;YOLOv2自定义了darknet分类网络,将图像的输入分辨率更改为448448

3)Convolutional with Anchor Boxes,提升recall
借鉴FasterR-CNN中的anchor思想,产生多个bounding boxes先验框

4)Dimension Cluster
先通过维度聚类生成先验框 给定AnchorBoxes的宽高纬度,然后通过网络学习转换系数,得到准确的boundingbox候选框。有priors更快。

5)Direct location prediction, 4+5后mAP提升5%
直接位置预测:YOLOv2中不采用直接的offset方法,而是限制预测的坐标信息,每个anchor去负责 中心落在某个grid cell区域内 的目标,避免anchor落在图像中的任意一个位置导致的不稳定在这里插入图片描述
6)Fine-Grained Features,mAP提升1%
细粒度特征。通过passthrough layer将底层特征与高层特征融合,提升检测小目标的效果
在这里插入图片描述
在这里插入图片描述
7)Multi-Scale Training
多尺度训练。We want YOLOv2 to be robust to running on images of different sizes ,so 每经过10个epoch,随机选择新的图片尺寸进行训练
由于YOLOv2中仅存在卷积层和池化层,所以可以进行动态调整
由于YOLOv2中降采样的参数为32,所以尺寸可选值{320,352,…,608}总共十个不同尺寸的的图像

【faster】
使用基于GoogleNet的定制网络DarkNet,改善检测速度

Yolov3(2018)

【网络结构】

在这里插入图片描述
backbone采用darknet-53
filters:卷积核个数 ; size:卷积核大小

【目标边界框的预测】
在这里插入图片描述
【正负样本的匹配】

  • assign one bounding box prior for each ground truth object,有几个gt目标就有几个正样本
  • 把与gt重合程度最大的bounding box prior作为正样本
  • 与重合程度非最大且大于threshold,则该bounding box prior既不是正样本也不是负样本,丢弃
  • 剩下样本是负样本,既没有定位损失,也没有类别损失,只有objectness(confidence score)

【损失的计算】在这里插入图片描述
主要是将v1中关于confidence和class类别概率部分的损失函数更改为logistic交叉熵损失函数
在这里插入图片描述
在这里插入图片描述
Eg. 真实标签 [0, 0, 1] 预测概率 [0.1, 0.8, 0.9]; 每个概率是相互独立的,没有使用softmax所以和不为1在这里插入图片描述

Yolov3 SPP

【Mosaic图像增强】
一种将4张训练图片混合成一张的新数据增强方法,可以丰富图像的上下文信息。
在这里插入图片描述
优点:1)增加数据多样性;2)增加目标个数;3)大大减少了对大mini-batch处理size的需求。BN时要求batch-size要尽可能大,加入Mosaic后,输入一张四张图像拼接的图像≈并行输入四张(batch Sze=4)原始图像

【SPP模块】
实现了不同尺度的特征融合,注意与SPPnet中的SPP结构不同
具体结构为:
在这里插入图片描述
输出为:1616(512*4)
图中显示在第一个预测特征图之前加入了SPP,第二/三个预测特征图之前也可以加SPP,效果都差不多

【CIOU Loss】
在这里插入图片描述
Yolov3选用差值平方,Yolov3 SPP 选用CIOU Loss,考虑到了重叠面积、中心点距离、长宽比
在这里插入图片描述
Focal loss(map下降2%?黑人问号脸?)
主要是为了解决one-stage目标检测中正负样本比例失衡class imbalance的问题:一张图像中能够匹配到目标的候选框(正样本)个数一般只有十几个或几十个,而没匹配到的候选框(负样本)大概有10000-100000个。其中大部分为简单易分的负样本(对训练网络起不到什么作用,但数量太多会淹没掉少量但有助于训练的样本)。该损失函数降低了大量简单负样本在训练中所占的权重
类似的思想有困难样本挖掘 hard negative mining: 只选取损失较大的负样本训练网络
在这里插入图片描述
then
在这里插入图片描述
引入α平衡正负样本权重;
a∈[0,1]for class 1 and 1-0 for class -1.取0.75 效果最好

then
在这里插入图片描述
降低简单样本权重, focus on hard negatives
then
在这里插入图片描述
又加了一个超参数平衡,当γ = 2 α = 0.25时,效果最好

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值