教学视频
理论基础
- 不同阶段算法优缺点分析
- two-stage (两阶段) :Faster-rcnn、Mask-Rcnn ,多了预选框操作RPN
- One-stage (单阶段):YOLO
- 指标分析
- 精度 Precision 查准率,
预测为正且实际为正
占预测为正
的比例 - 召回率 Recall 查全率,
预测为正且实际为正
占总体正样本
的比例 - 准确度 Accuracy,
预测为正且实际为正和预测为负且实际负
占总样本
的比例 - F1 Score 是Precision与Recall的调和平均(harmonic mean),是综合Precision与Recall的评估指标,避免Precision或Recall的单一极大值,用于综合反映整体的指标。
- AP 在一组不同IOU阈值下,某一类别PR曲线(横轴为Recall,纵轴为Precision)下的面积。bilibili视频、 AP与mAP的详解、指标评估 —— AP & mAP 详细解读、mAP定义及计算方式
- IOU阈值设置从低到高,分别获取不同阈值下的Precision和Recall,以横轴为Recall,纵轴为Precision,即可获取PR曲线,一般情况下,Recall和Precision是矛盾的两个目标,Recall跟IOU是单调递减关系,Precision跟IOU是单调递增关系。不同任务对应的AP计算方式不一样。COCO挑战赛定义了12种mAP计算方式
- mAP 各类别
AP
的平均值。
YOLO-V1
-
经典的one-stage 方法;把检测问题转化为回归问题,一个CNN搞定,可以进行实时检测;
- 回归问题:即建模和分析变量之间的关系 ,多用来预测一个具体的数值,yolo中就是用来预测[x,y,w,h]
-
核心思想
- 输出为7x7x30,7x7表示最终图片分为7x7的网格(grid size),30代表5+5+20,前两个5代表两种检测框的[x,y,w,h,c],20代表20分类。(SxS)x(Bx5+C)
- 输入图片固定为448x448x3,因为有全连接层
-
损失函数
- 位置误差中加根号 是为了解决小目标时偏移量不敏感的问题,同样的像素对不同目标占比不同(1/2与1/20)。因为根号的求导是非线性,越小斜率越大。该方法只能改善,并没有解决问题。
- 不含object的加权重 λ n o o b j \lambda_{noobj} λnoobj 是因为图片中大部分都是背景(负样本),只有少部分前景(正样本),为了保证样本均衡,保证正样本被有效学习,所以需要减小背景的权重。
-
优缺点
- 优点:快速,简单
- 缺点:
① 每个cell只能预测一个类别,无法解决多标签任务;
② 小物体检测效果一般,长宽比可选(两种检测框)但单一;
③ 重叠目标无法检测。
YOLO-V2
-
YOLO-V2-Batch-Normalization
- 舍弃Dropout,卷积后全部加入Batch Normalization,可以使得每一层的输入都具有相似的均值和方差,从而使得网络的训练更加稳定
- 网络的每一层输入都做了归一化,收敛相对容易
- 经过Batch-Normalization处理后的网络回提升2% 的mAP
- ★ 从现在的角度来看,Batch-Normalization 已经成为网络必备处理。
-
YOLO-V2 使用更大的分辨率
- V1训练时用的是224x224,测试时使用的时448x448
- 为了优化上述问题,V2训练时额外又进行了10次448x448的微调
- 使用高分辨率分类器后,YOLO-V2的mAP提升了约4%
-
YOLO-V2-新网络结构
- DarkNet19(借鉴VGG 和ResNet),网络更深,但参数量更小,输入为416x416
- VGG中提出使用小的卷积核代替大的卷积核,可以提升感受野并减少参数量
- 剔除全连接(FC)层,经过5次降采样,最终为13x13
- 引入1x1卷积,节省了很多参数,只修改通道数
-
YOLO-V2-使用聚类提取先验框
- faster-rcnn系列选择的先验比例都是常规的,不一定完全适应数据集
- K-means聚类中的距离: d ( b o x , c e n t r o i d s ) = 1 − I O U ( b o x , c e n t r o i d s ) d_{(box,centroids)}=1-IOU(box,centroids) d(box,centroids)=1−IOU(box,centroids) ,是根据IOU设置的距离参数,而不是常规的欧式距离。
- 聚类数K=5
-
YOLO-V2-Anchor Box
- 通过引入anchor boxes,使得预测的box数量更多(13 x13xn),来解决YOLOv1中物体大小和比例变化较大的问题。
- 锚框是预先定义好的一些矩形框,它们被放置在图像的不同位置和大小。每个锚框预测一组边界框和类别概率。YOLOv2使用k-means算法来自动计算出合适的锚框。
-
YOLO-V2-直接预测相对位置
- 在V1中,直接预测的位置偏移值,因此中心值加偏移值才是真实预测值
① bbox:中心为(xp,yp);宽和高为(wp,hp),则 x = x p + w p ∗ t x { x=x_{p} + w_{p}*t_{x}} x=xp+wp∗tx ; y = y p + h p ∗ t y { y=y_{p} + h_{p}*t_{y} } y=yp+hp∗ty.
② t x t_{x} tx=1,则讲bbox在x轴向右移动 w p w_{p} wp; t x t_{x} tx=-1,则讲bbox在x轴向左移动 w p w_{p} wp;
③ 这样会导致收敛问题,模型不稳定,尤其是刚开始进行训练的时候,权重参数和偏移参数是随机初始化,可能会使中心位置偏移出真实标注框,出现在图片任意位置。 - V2没有直接使用偏移量,而是选择相对grid cell的偏移量
σ ( t x ) \sigma(tx) σ(tx)表示sigmoid函数,其函数值取值范围永远在(0,1)之间。使得 b x b_{x} bx永远在 [ c x , c x + 1 ] [c_x,c_x+1] [cx,cx+1]之间, b y b_{y} by同理,即预测的中心位置永远在网格内,不会偏移到其他网格。
- 在V1中,直接预测的位置偏移值,因此中心值加偏移值才是真实预测值
-
YOLO-V2-PassThrough 层
DarkNet还进行了深浅层特征的融合,具体方法是将浅层26×26×512的特征变换为13×13×2048,这样就可以直接与深层13×13×1024的特征进行通道拼接。这种特征融合有利于小物体的检测,也为模型带来了1%的性能提升 -
YOLO-V2-多尺度训练
- 移除了全连接层,因此YOLO v2可以接受任意尺寸的输入图片
- 每10次迭代后,输入图片大小更改一次输入图片的尺度[320,352,…,608]
YOLOV3
论文名称:YOLOv3: An Incremental Improvement
论文下载地址: https://arxiv.org/abs/1804.02767
- V3 对网络结构进行较大改进,backbone使用DarkNet53,使其更适合小目标检测
- 多scale 先验框更丰富,3中scale,每种3个规格,共9种
- 使用Logistic代替softmax进行改进,可以预测多标签任务
YOLOV5
损失函数
损失函数解析1
超参数解析
采用三个损失函数:矩形框、分类概率和置信度
置信度和分类概率使用的BCE,矩形框使用的CIOU(IOU -> GIOU -> DIOU -> CIOU)
- Loss=a*lossobj + b*lossrect + c*lossclc
通常置信度损失取最大权重,矩形框损失和分类损失的权重次之