yolo系列学习

文章目录

  • 理论基础
  • YOLO-V1
  • YOLO-V2

教学视频

理论基础

  1. 不同阶段算法优缺点分析
  • two-stage (两阶段) :Faster-rcnn、Mask-Rcnn ,多了预选框操作RPN
  • One-stage (单阶段):YOLO
  1. 指标分析
  • 精度 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系列学习_第1张图片
    yolo系列学习_第2张图片

YOLO-V1

  • 经典的one-stage 方法;把检测问题转化为回归问题,一个CNN搞定,可以进行实时检测;

    • 回归问题:即建模和分析变量之间的关系 ,多用来预测一个具体的数值,yolo中就是用来预测[x,y,w,h]
  • 核心思想
    yolo系列学习_第3张图片

    • 输出为7x7x30,7x7表示最终图片分为7x7的网格(grid size),30代表5+5+20,前两个5代表两种检测框的[x,y,w,h,c],20代表20分类。(SxS)x(Bx5+C)
    • 输入图片固定为448x448x3,因为有全连接层
  • 损失函数yolo系列学习_第4张图片

    • 位置误差中加根号 是为了解决小目标时偏移量不敏感的问题,同样的像素对不同目标占比不同(1/2与1/20)。因为根号的求导是非线性,越小斜率越大。该方法只能改善,并没有解决问题。
    • 不含object的加权重 λ n o o b j \lambda_{noobj} λnoobj 是因为图片中大部分都是背景(负样本),只有少部分前景(正样本),为了保证样本均衡,保证正样本被有效学习,所以需要减小背景的权重。
  • 优缺点

    • 优点:快速,简单
    • 缺点:
      ① 每个cell只能预测一个类别,无法解决多标签任务;
      ② 小物体检测效果一般,长宽比可选(两种检测框)但单一;
      ③ 重叠目标无法检测。

yolo系列学习_第5张图片

YOLO-V2

yolo系列学习_第6张图片

  • 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)=1IOU(box,centroids) ,是根据IOU设置的距离参数,而不是常规的欧式距离。
    • 聚类数K=5yolo系列学习_第7张图片
  • 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+wptx ; y = y p + h p ∗ t y { y=y_{p} + h_{p}*t_{y} } y=yp+hpty.
      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的偏移量
      yolo系列学习_第8张图片
      σ ( 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同理,即预测的中心位置永远在网格内,不会偏移到其他网格。

你可能感兴趣的:(YOLO)