YOLO——You Only Look Once(one-stage-detection)
该算法把物体检测问题处理为回归问题,用一个卷积神经网络就可以从输入图像直接预测bounding box 和类别概率。
YOLO的基础模型可达到实时检测,每秒可达45帧。小型网络版本,Fast YOLO,可达155帧每秒。
YOLO会出现定位错误,但是很可能将background预测错误。
R-CNN方法使用区域提案,首先在一个图像上生成潜在的 bounding boxes,然后在这些proposed框上运行分类器。分类后,后期处理被用来定义bounding boxes, 消除重复检测,并根据场景中的其他对象对框重新评分。
YOLO处理图像步骤:(1)重置输入图像尺寸到448x448(2)运行简单的卷积网络(3)通过模型的置信度对结果检测进行阈值处理
使用置信度分数(confidence)来判断框预测的准确度。形式上,置信度定义为Pr(Object) * IOU(truth pred)。如果该单元格中没有对象,则confidence=0,否则,置信度分数等于预测框和ground truth的交集 IOU。
每个边界框由 5 个预测组成:x、y、w、h 和置信度。 (x, y) 坐标表示相对于网格单元边界的框中心。 宽度和高度是相对于整个图像预测的。 最后,置信度预测表示预测框与任何真实值框之间的 IOU。
我们的系统将检测建模为回归问题。 它将图像划分为 S × S 网格,并为每个网格单元预测 B 个边界框、这些框的置信度和 C 类概率。 这些预测被编码为 S × S × (B ∗ 5 + C) 张量。
使用卷积神经网络训练模型,使用网络的初始卷积层对图像提取特征,全连接层去输出概率和坐标。网络结构受GoogLeNet启发,有24个卷积层,2个全连接层,使用1x1 reduction layers 后跟着3x3的卷积层。同时,快速版本的Fast YOLO使用较少的卷积层(9个而不是24个),并且这些层中使用较少的滤波器。除了网络大小以外,其他参数和YOLO版本相同,包括训练和测试参数。
YOLO的局限性:
1 每个网络单元只预测两个框并且只能有一个类
2 难泛化到具有新的或不寻常的纵横比或配置对象,模型使用相对粗略的特征预测边界框
3 定位不是很准确。训练近似检测性能的损失函数时,将小边界框和大边界框的错误处理相同,小框的错误对IOU影响较大。