yolo是一类one-stage目标检测算法,仅仅使用一个CNN网络直接预测不同目标的类别与位置。
Yolo算法采用一个单独的CNN模型实现目标检测。首先将输入图片resize到448x448,然后送入CNN网络,最后处理网络预测结果得到检测的目标。
具体来说,Yolo的CNN网络将输入的图片分割成 网格,然后每个单元格负责去检测那些中心点落在该格子内的目标,每个单元格会预测 个边界框(bounding box)以及边界框的置信度(confidence score)。所谓置信度其实包含两个方面,一是这个边界框含有目标的可能性大小,二是这个边界框的准确度。前者记为 ,当该边界框是背景时(即不包含目标),此时 。而当该边界框包含目标时, 。边界框的准确度可以用预测框与实际框(ground truth)的IOU(intersection over union,交并比)来表征,记为 。因此置信度可以定义为 。边界框的大小与位置可以用4个值来表征: ,其中 是边界框的中心坐标,而 和 是边界框的宽与高。还有一点要注意,中心坐标的预测值 是相对于每个单元格左上角坐标点的偏移值,并且单位是相对于单元格大小的,单元格的坐标定义如图6所示。而边界框的 和 预测值是相对于整个图片的宽与高的比例,这样理论上4个元素的大小应该在 范围。这样,每个边界框的预测值实际上包含5个元素: ,其中前4个表征边界框的大小与位置,而最后一个值是置信度。对于每一个单元格其还要给出预测出 个类别概率值,其表征的是由该单元格负责预测的边界框其目标属于各个类别的概率。但是这些概率值其实是在各个边界框置信度下的条件概率,即 ,不管一个单元格预测多少个边界框,其只预测一组类别概率值。同时,我们可以计算出各个边界框类别置信度(class-specific confidence scores): 。
边界框类别置信度表征的是该边界框中目标属于各个类别的可能性大小以及边界框匹配目标的好坏。