本文是对【同济子豪兄】对YOLOV1讲解所做得总结
预测阶段01
输入图像经过卷积神经网络后,输出7x7x30的向量。7x7表示将输入图像分为7x7个grid cell, 每个grid cell生成两个预测框,如下图所示,
每个预测框包含5个数据:x, y, w, h, c (c表示该框预测到物体的概率),预测框的边缘线越粗,其c值就越大。 由于使用的是Pascal VOC 数据集,共20个预测类别,所以每个grid cell包含30个数据(2*5 + 20 = 30),20表示该 grid cell 预测结果为某一类别的概率。 下图表示每个grid cell预测的类别,每个grid cell只能预测一个类别。
预测阶段02-NMS
1.将每个 grid cell 的两个 bbox 预测的20个类别的概率按照下图的方式排列:其中bb1的20个数值表示,该bbox置信度 x 20个预测类别的概率
假如第一排为dog的预测概率,将其排列如下:
按照从高到低的顺序排列,从第二个bbox开始,依次拿每个bbox的概率与第一个bbox的概率比较,如果IOU大于阈值,证明这两个bbox预测的为同一个物体,将后面的bbox的预测概率置0。如果IOU小于阈值,则不做改变。再依次和第二个bbox的概率进行比较,如下图所示:
训练阶段
深度学习(监督学习)的训练,是通过梯度下降和反向传播的方法,迭代地去微调神经元中的权重,来使得损失函数最小化的过程。 如图所示,绿色圆点为ground truth的中心点,其所在的 grid cell 生成的bbox用来预测该ground truth。 1、2号框均为同一个 grid cell 的 bbox, 1号框与 ground truth 的IOU较大,因此由1号框负责拟合该ground truth, 损失函数的设计目的就是尽可能让1号框与3号框一致。
|