Loading

yolov1学习笔记

yolov1学习笔记

yolov1将目标检测归为一个回归问题,具有real-time的特点。局限性是:对于群体性的小目标检测效果很差。

论文概括

本文重新构造目标检测作为一个回归问题。
直接输入图像到神经网络中,得到bounding box的坐标和类别信息。

论文思想

  1. 将一幅图像分成S×S个网格(grid cell),如果某个object
    的中心落在这个网格中,则这个网格就负责预测这个object。
  2. 每个网格要预测B(这里的B取2)个bounding box,每个bounding box除了要预测位置之外,还要附带预测一个confidence值(也就是说每个bounding box需要预测5个值即:四个坐标和一个confidence值)。每个网格还要预测C个类别的分数。
原文1:
For evaluating YOLO on PASCAL VOC, we use S = 7,
B = 2. PASCAL VOC has 20 labelled classes so C = 20.
Our final prediction is a 7 × 7 × 30 tensor.
原文2:
Each bounding box consists of 5 predictions: x, y, w, h,
and confidence. The (x, y) coordinates represent the center
of the box relative to the bounds of the grid cell. The width
and height are predicted relative to the whole image. Finally
the confidence prediction represents the IOU between the
predicted box and any ground truth box.
原文3:(confidence定义)
Formally we define confidence as Pr(Object) ∗ IOUtruth pred
原文4:
At test time we multiply the conditional class probabilities and the individual box confidence predictions,
Pr(Classi|Object) ∗ Pr(Object) ∗ IOUtruth pred = Pr(Classi) ∗ IOUtruth pred (1)
  1. 这里的x,y是个相对值(在一个cell中变化在(0-1)之间),这里的w,h相对整幅图像(0-1之间)。这里的x,y,w,h是直接预测位置的。
  2. Confidence : 预测目标与真实目标的交并比×P(Object)(0和1两种情况)当包含物体是为1
  3. 这里的Pr(Classi | Object)是指C个类别中的类别分数,这里与faster-rcnn和ssd中的不是一样的

网络结构

Step1:是一个7×7的卷积层,step=2,通过一个maxpool layer2×2,step=2

Step2:是一个3×3卷积层,这里没写s默认step=1,通过一个maxpllo layer2×2,step=2

Step3:通过1×1的卷积层,3×3的卷积层,1×1的卷积层,3×3的卷积层,通过一个maxpool layer

Step4:通过1×1的卷积层,3×3的卷积层(重复4遍),然后再通过1×1卷积层,3×3卷积层,通过一个maxpool layer

Step5: 通过1×1的卷积层,3×3的卷积层(重复2遍),再通过3×3卷积层,3×3卷积层step=2

Step6:通过3×3的卷积层,3×3的卷积层

Step7:得到一个7×7×1024

Step8: 展平,连接一个4096维的全连接层,最后得到一个4096维的向量

Step9: 连接一个1470(对应后面的7×7×30)维的全连接层,最后reshape成7×7×30的特征矩阵

这里的30由来:20个类别,且每个网格需要预测B(=2)个bounding box(包含4个位置信息1个confidence值)
这里的一个黄色柱体可以理解成一个grid  cell
这里有两个bounding box最后会根据跟groud truth的IOU比选出最大的一个

损失函数

  • 这里的损失函数使用误差平方和进行求解

Bounding box部分损失

  • 疑问:宽和高为什么要进行开根号处理???
这里绿色代表真实边界框,蓝色代表预测边界框
假设预测边界框相对于真实边界框都有一个偏移,假设偏移是一摸一样的

对于上面的小目标预测结果很差,对于大目标预测结果还行
对于真实的边界框同样偏移同样的宽度和高度,但对于不同尺度的目标来说他的IOU都是不一样的,即对于小目标
来说他的IOU更小,检测结果更差,所以不能使用预测的宽度减去真实的宽度

  • 如上图所示:如果是y=x这条线对于小目标(前面的)和大目标(后面的),他们的差值(图中绿色部分)是一样的
  • 但是对于y=√x来说,假设这里的差值是一摸一样的,但是此时小目标的差值是大于大目标的(图中红色部分),也就是说此时更加关注小目标的
    定位损失

confidence部分损失?

  • 第一个是正样本的损失,第二个是负样本(没有目标)的损失(正样本真实值等于1负样本真实值等于0)
  • 其他设置
增加包含目标的loss,减少不包含目标的loss
set λcoord = 5 and λnoobj = .5
Ⅱ(obj/ij):第j个bounding box负责预测第i个单元格

Yolov1的局限性:

  • 对于群体性的小目标检测效果很差?
    1. 因为yolov1对于每个cell只预测两个bounding box,都属于同一个类别的
    2. 当目标出现新的尺寸和配置的话检测效果差
    3. 主要的错误原因都来自定位不准确的原因: 主要是作者采用了直接预测的原因,而不是像faster-rcnn,ssd那样
      预测anchor的回归参数------再yolov2中会采用anchor形式

实验部分

图4显示了所有20个类中平均的每种错误类型
yolo在定位是产生更多错误
Fast R-CNN参数更少的定位错误但是更多的背景错误

该模型在小的连在一起的表现不太好
例如:
Our system struggles with small objects compared to its closestcompetitors. 
On categories like bottle, sheep, and tv/monitor 
YOLO scores 8-10% lower than R-CNN or Feature Edit
但是:
However, on other categories like cat and
train YOLO achieves higher performance

Our combined Fast R-CNN + YOLO model is one of the
highest performing detection methods
posted @ 2021-02-28 13:38  zranguai  阅读(118)  评论(0编辑  收藏  举报