YOLOv1(预测过程)
输入:448 * 448 * 3图像
输出:7 * 7 * 30 张量
具体步骤:
输入:
一、图向分为7 * 7网格,每个小格称为一个grid cell
二、每个grid cell 能预测出如下:
- 2个bounding box,即2个预测框,这B个预测框的中心点都落在生成这个预测框的grid cell里(所以每张图片会生成7 * 7 * 2 = 98个bounding box)
- 对应每种类别的条件概率,即在这个grid cell生成的bounding box框住的是一个物体的前提下,这个物体对应每种类别的条件概率
三、每个bounding box包含如下参数:
- 置信度(即这个框框住的是一个完整物体的概率,置信度越大,证明框住的是一个物体的概率越大)
- 框的左上角X、Y坐标
- 框的长宽,即Height和Width
这样的话用上面提到的置信度 * 每种类别的条件概率,即可得到每个bounding box对应各个类别的概率。
- 1号图中显示图片被分为7 * 7 = 49个grid cell
- 2号图中显示每个grid cell生成2个bounding box(预测框),一共98个bounding box,框的粗细代表置信度大小,框越粗代表框住的是一个完整物体的概率越大
- 3号图中用不同颜色表示每个grid cell所预测的物体最可能属于分类,如蓝色的grid cell生成的最可能bounding box最可能框住的是狗、黄色的grid cell最可能预测自行车…
- 4号图为最终输出的显示效果
输出:
最终输出7 * 7 * 30的张量:7 * 7对应的是每张图片会分割成7 * 7 = 49个grid cell,那么每个grid cell对应输出即为一个1 * 1 * 30的张量
30维向量输出的是什么?
- 前10维分为2部分,每部分5维,分别对应这个grid cell生成的2个bounding box各自的5个参数(左上角X、Y坐标、Height和Width、置信度)
- 后20维是上面提到的该grid cell生成的 每种类别的条件概率
如图:
每个grid cell只能预测出一个物体(即计算后对应概率最高的类别物体),也就说明了yolov1中一张图片最多只能预测出49个物体,这也是yolov1的缺点所在,即小目标、密集目标识别性能差
简答来说就是一张图片分成49个小格,每个小格能生成2个不一样的框,最终在2个框中选择一个框住一个完整物体可能性最大的框,并预测出框住的物体的最大可能类别,最终在得出的49个框中选择概率最高的几个框画出在图片上,作为最终显示出来的识别效果。
后处理:
主要是用于过滤掉低置信度的框,并且把重复的框去掉,只保留一个,从而得出最终的检测结果。
上面提到卷积神经网络最终会输出7 * 7 * 30维的张量,其中包括每个grid cell对应每种类别的条件概率,那么用每个grid cell所生成的2个bounding box的置信度分别乘以该grid cell对应20个类别的条件概率,即可得到全部98个bounding box对应20个类别的全概率,相当于98个1 * 20的张量。
如图:
每个bounding box选择对应全概率最高的那个类别作为最终分类,可视化出来如下:
其中不同的颜色代表不同的分类,框的粗细代表bounding box的置信度
那么怎么选择最合适的框输出呢?
还得拿上面提到的98个1 * 20的张量做文章。
假设这98个张量的1号位置的元素是表示物体是“狗”的概率,那么针对“狗”这个类别,需要做三件事:
- 设置一个概率值p,将98个张量的1号位置小于p的全部置0(假如p = 0.2,则将是狗的概率<0.2的这些概率全部置0),相当于认为这些框识别出来的分类不可能是“狗”了
- 将这98个张量按照1号元素的大小(是“狗”的概率)依次排序
- 进行非极大值抑制(Non-Maximum Suppression)
什么是非极大值抑制?
主要目的是去掉重复预测同一个物体的框,只保留最优的那个框
上面我们已经得到按照”狗“的概率大小排好序的98个张量,接下来操作如下:
- 将排在第一名的最大的那个概率对应的bounding box拿出来,依次和后面的概率对应的框做对比,比什么?比IOU(交并比,可以理解为体现两个框重合部分大小的一个量)
- 设置一个值i,如果两个框的IOU>i,则说明这两个框重合度很高,我们认为这两个框预测的是同一个物体,那么这两个框最终只能留一个,我们选择概率大的框留下,将概率小的框对应的概率值置0(淘汰)
如图:
橙色和绿色的框IOU太大,把概率较小的绿框淘汰
- 将第一名跟后面比较完一遍,再将概率第二高的框(图中是0.2)按相同的规则依次和后面比,以此类推…
- 有上面3个步骤我们将1号位置:“狗”的分类情况过滤完成,后面要做的就是将剩余19个分类按照和以上3个步骤相同的方式完成。
最终,经过层层筛选,不断置0,淘汰,有一些框凭借优秀的精准度存活了下来,将最终留下的概率非0的框及所对应的类别画在图上,即得出最终的目标检测结果。
如图: