1、YOLO介绍
(1)简单介绍
- 注意:二阶段中是有一步初选的过程,相比于Yolo的一步,当然是比较慢的。
- 例如如果说以Mask FCNN进行实时检测,当然是不能的,原因是速度跟不上实时的要求。
- Yolo由于没有一个初选的过程,使得进行检测的结果相比于二阶段算法精确率是较低的。
(2)Yolo指标
-
注意:在目标检测算法中如果单看精度和Recall是不行的,由于两者的结果一般是成反比的,所以不便与以这两个指标进行判断。这里引入mAP指标综合衡量检测效果。
-
IOU:交集和并集的比值(真实值和预测值的交集、并集)。
-
混淆矩阵:
- TP:真的,“阳”(本身“阳”)
- FP:假的,“阳”(本身“阴”)
- TN:真的,“阴”(本身“阴”)
- FN:假的,“阴”(本身“阳”)
-
P精确值:(真的,“阳”)/[(真的,“阳”)+(假的,“阳”)]
-
Recall召回率(查全率):(真的,“阳”)/[(真的,“阳”)+(假的,“阴”)]
-
置信度:当前检测的物体是其判断类别的可能性(越大可能性越大)。
-
mAP值即为:P-R图像与坐标轴的面积(也是图像的积分)即为mAP值。
2、Yolov1
(1)Yolov1核心思想
- Yolov1中以每一个像素格子为中心得出两个初始候选框,如果初始候选框中有物体(初始的置信度进行阈值的判断),那么将候选框进行微调预测,其中预测得出当前格子的预测框和confidence值(判断那种类别的可能性)。
- 由于每个像素格子产生的候选框很多,这里就要进行设置置信度的阈值进行过滤将无用的候选框进行过滤,重合的格子后面设置也进行去掉,依据指标是哪个IOU大选哪个。
(2)Yolov1网络结构
-
Yolov1版本中输入数据的大小(相对固定):448*448*3
- 注意为什么其输入大小是相对固定的,因为对于卷积层而言是没有影响的,但是对于全连接层影响就很大了,全连接层相对固定,由于权重矩阵和偏置项的大小不可随意改动,即输入图像的特征就会相对固定,从而到全连接时是满足权重矩阵和偏置项的格式规范的。
-
注意
这个部分全连接后大小为1470*1的向量,重新进行重塑大小(reshape)变为7*7*30的大小—>(7*7)*30这样理解:- 先变为7*7的像素格
然后其中每一个格子都有30个值。 - 对于上图中红色格子,其中任意一个黄色的初始预测框BiB_iBi都有4个值分别为xi,yi,wi,hi,cix_i,y_i,w_i,h_i,c_ixi,yi,wi,hi,ci 5个值,其中xi,yix_i,y_ixi,yi并不是实际坐标值,而是归一化后相对整个图像的长宽而言0~1之间的值。这么可以看出两个初始预测框占据10个参数的值即
那么后面20个代表的是20个类别的值,即当下数据集中一共进行目标检测的类别数量,故可以认为上面进行目标检测的数据集中有20个检测类别。 - 那么这个20个值的数据到底是什么样子的呢?这20个值代表这个格子中在数据集进行目标检测类别预测的概率值。
- 先变为7*7的像素格
-
总结:
- 注意:在Faster-RCNN中B的数量可能是8、9个,因为为了精度。而对于Yolo速度快所以就损失了一些精度使得B的数量变小。
(3)Yolov1的损失函数
- 损失函数有4个分别对应30个数值的结果。
- λcoord∑i=0s2∑j=0B1ijobj(xi−x^i)2+(yi−y^i)2\lambda_{coord} \sum_{i=0}^{s^2} \sum_{j=0}^{B} 1_{ij}^{obj} (x_i - \hat{x}_i)^2 + (y_i - \hat{y}_i)^2λcoord∑i=0s2∑j=0B1ijobj(x