Yolo - 学习笔记

图像分割分类:

  • 语义分割: 是把每一个像素它的类别输出出来,但是并不区分物体的像素。(画框框)
  • 实例分割:只要区分同一类别、不同物体的像素。(抠图)

预测阶段

模型已经训练完成后,输入未知图片来对未知图片进行预测、测试,此时不需要训练、反向传播,而是只需要前向推断、运行这个模型。Yolo - 学习笔记_第1张图片
过程:将输入图片划分为SxS(S=7)个grid cell(网格),每个grid cell预测B(B=2)个bounding box(预测框)。
(bounding box无关形状,只要中心点落在grid cell里面,就说明这个bounding box是由这个grid cell生成的。)
包含四个位置参数和一个执行度参数(xyhw表示框框的位置,c表示置信度。)
框框的粗细代表置信度,粗的代表置信度高。
如下图:

那每一个gird cell还能够生成所有类别的条件概率。就是假设在他已经包含物体的情况下,他是某一个类别的概率。如下面彩色的图,把每一个bounding box的置信度乘以这个类别的条件概率,就能够获得每一个bounding box的各类别的概率。结合这两个信息,一个是bounding box的信息,一个是grid cell的类别信息,就可以获得最后的预测结果了。
这些信息都是从7x7x30维的张量中获取的。
Yolo - 学习笔记_第2张图片

(30的由来:每个grid cell包含2个预测框,每个预测框有5个参数,在Pascal VOC里面有20个类别的该grid cell对20个类别的条件类别概率,一共是20+5+5=30个参数。这30是一个grid cell的信息,一共有7x7个grid cell)
7x7x30是1470为的一个数组,所以我们就当作YOLO模型,就是一个黑箱,输入的是48×48×3的图像,输出的是1470个数字。
Yolo - 学习笔记_第3张图片

这个图展示了条件概率最高的那些点所占有的框,比如说紫色的是自行车类别比较高的区域。

预测阶段后处理-NMS非极大值抑制

对于目标检测的预测阶段后处理是非常的重要的,对于yolo而言,后处理就是把纷繁复杂的预测出来的,98个预测框进行筛选过滤,把重复的预测框只保留一个,最后获得目标检测的结果。
把第一个预测框的置信度乘以该grid cell的20个类别的条件概率得到第一个预测框的20个类别的全概率。
一共有49个grid cell,每一个grid cell能够获得两个20维的向量 。98个Bounding box就可以获得98个20位的向量。每一列表示对于某一个Bounding box而言,20个类别的概率是多少。
Yolo - 学习笔记_第4张图片
现在把乱图经过后处理NMS非极大值抑制,得到Yolo - 学习笔记_第5张图片
假如说狗是这20个类别中的第一个类别,那么这些概率里面肯定会有特别小的:比如说0.01、0.02。比如说把小于0.2的概率一律抹零,那么有很多概率都被抹零了。我们再根据狗的概率高低来进行排序,把狗的概率高的放在前面,抹零的放在后面 然后再对排序后的结果进行非极大值抑制。
Yolo - 学习笔记_第6张图片
来仔细看看非极大值抑制是怎么做的:
Yolo - 学习笔记_第7张图片先把最高的概率拿出来,然后把每一个与最高的做比较,比如一个和第二个做比较,如果这两个的IOU大于某个阈值,那么就认为他俩就重复识别了一个物体,就把低置信度的过滤掉。假如黄框和绿框的IOU大于0.5,认为重复识别了一个物体。就把绿框(低概率的)去掉。(0.5这个阈值可以调)
此时绿框框为0。
如果阈值很低,则稍微有一点重叠,就会被剔除掉。如果想加强NMS就把阈值设置的低一点。
Yolo - 学习笔记_第8张图片
比如蓝框和黄框的IOU比值没有超过0.5,则依旧保留。
Yolo - 学习笔记_第9张图片
再将剩下的框框和蓝框比,粉框被干掉……
Yolo - 学习笔记_第10张图片
是bb3、 bb4、bb97有一些类别是不为零的,把不为零的类别索引找出来,然后把它代表什么是猫还是狗找出来,再把概率找出来,那么在这个目标检测结果上就获得了最终的目标检测结果。
关键:
后处理只是针对预测阶段,训练阶段不需要进行nms。因为每一个筐,(不管是被打入冷宫的,还是负责预测物体的)都会影响损失函数,所以不能随随便便的把在训练阶段把预测框剃掉,或者把概率抹零。这是在预测阶段(已经训练出来这个模型之后,进行图片的预测时)才需要通过后处理把低置信度的过滤掉,再把重复识别同样物体的重复框挑出。

训练阶段

每一个grid cell生成两个Bounding box,两个Bounding box的中心点都落在这个grid cell中。
Yolo的缺点:对于对象比较多的图片较难检测。

损失函数

Yolo - 学习笔记_第11张图片

论文精读

  • 先前的目标检测是分类问题,现在转成了回归问题。(变成了预测出一系列连续的数值,把编辑框定位和分类从空间中分离开,使用一个单独的神经网络,可以预测预测框的坐标,也可以预测类别。直接把全图输入神经网络,做一次前向推断就可以输出bounding box的类别,可以进行端到端的优化。)
  • 基础的yolo模型可以实现每秒钟45帧的目标检测性能。(一般我们认为每秒超过30帧就是目标检测)
  • YOLO出现了分类正确,但是定位误差的情况较多。但是减少了背景误判为物体的错误。

参考视频:https://www.bilibili.com/video/BV15w411Z7LG?p=11

你可能感兴趣的:(你是我的眼,深度学习,机器学习,pytorch)