1、流程理解、
⑴将输入的图片进行等分,等分成n*n大小的网格(grid);
⑵每个网格里会设置有m个bounding box,每个bbox都有五个数据:(x,y),w,h, confidence(置信度);
⑶每个网格会最终确定一个bbox,预测一个物体的类别,预测物体的概率值;
注:例如7*7的网格,yolo1是默认每个网格有两个bbox,所以两个bbox就有10个值
2、网格输出筛选
最终是确定下一个bbox,如何进行筛选?
首先知道什么情况下属于grid里包含object,如果物体的中心点在该grid里那就说明该grid中含有object,若是物体的中心点不在,就说明该grid里不包含object。
每个bbox都对应一个confidence score:如果grid里没有object那么其confidence为0;如果有,其confidence score等于预测的box(就是如果有物体落在该单元格中就为1,没有落在该单元格中就为0)与预测的bbox与ground truth的iou乘积。
confidence= Probject*IOU(truth|pre)
3、输出
假设输出一个7*7*30
30就是两个bbox的十个数据,然后加上可以分成的类数,yolo1可以分成20中所以就是10+20得到30
4、总结
Yolo的速度比较快,但是呢因为每个单元格只会保留一个bbox所以准确率就不是这么高。对于识别一些小物体或者是在图片中物体排列比较紧凑的,最后的识别效果都不是很好。
不过yolo2,3都做了改进,本文就是自己对yolo算法的一个大致理解。