YOLOv3即YOLO算法的第3个版本,它是一种实时对象检测算法,可识别视频、实时源或图像中的特定对象。
YOLOv3是用于实时执行对象检测的卷积神经网络(CNN)。CNN是基于分类器的系统,可以将输入图像处理为结构化数据阵列,并识别它们之间的模式。YOLOv3具有比其他网络速度快的优势,并且准确性高。它允许模型在测试时查看整个图像,因此它的预测是由图像中的全局上下文提供的。YOLOv3和其他卷积神经网络算法基于它们与预定义类的相似性对区域进行“评分”。高得分区域被认为是跟他们最接近的检测。
YOLOv3算法首先将图像分离成网格。每个网格单元预测对象周围的一些边界框,这些边界框在前面提到的预定义类中得分很高。每个边界框都有一个各自的置信度分数,表示预测的准确度,并且每个边界框只检测一个对象。边界框是通过对原始数据集的真相框维度进行聚类来生成的。
可以实现相同目标的其他类似算法有R-CNN和Fast R-CNN,以及Mask R-CNN。然而,与R-CNN和Fast R-CNN等算法不同,YOLO被训练为同时进行分类和边界框回归。
YOLOv3与YOLO、YOLOv2相比的优势
1.速度
YOLOv3在平均平均精度(mAP)和交集联合(IOU)值方面表现出快速且准确。它的运行速度明显快于其他检测方法
2.小物体的精度
下图显示了不同算法检测小型、中型和大型图像的平均精度(AP)。AP值越高,该变量就越准确。其中YOLOv3与YOLOv2相比,小物体的AP提高了13.3。
AP-S表示小物体尺寸、AP-M表示中等物体尺寸、AP-L表示大物体尺寸,AP表示平均精度。
3.类别的特殊性
新的YOLOv3在训练期间使用独立的逻辑分类器和二元交叉熵损失进行类别预测。这些编辑使得使用复杂数据集进行YOLOv3模型训练成为可能。
YOLOv3与RetinaNet算法对比
与RetinaNet相比,通过AP值可知道YOLOv3的速度和准确性还是有一定差距。但RetinaNet训练时间要比YOLOv3更长,且在更大的数据集下,YOLOv3检测对象的准确度能提高到与RetinaNet准确度相同水平,因此在大数据集训练的情况下,训练时间更短的YOLOv3反而比RetinaNet算法更适合。
YOLOv3置信度计算
上文了解到,YOLOv3会将图像分离成网格,网格周围会有边界框,而每个边界框都有一个x、y、w、h和框置信度得分值。置信度分数是该框包含一个类的可能性的值,以及该边界框的准确度。
边界框的宽度和高度(w和h)首先设置为给定图像的宽度和高度。然后x和y是所讨论单元格的偏移量,所有4个边界框值都在0和1之间。然后,每个单元格都有20个由YOLOv3算法实现的条件类概率。用作正预测的每个最终边界框的类置信度分数等于框置信度分数乘以条件类概率。
在这种情况下,条件类概率是检测到的对象属于某个类(该类是感兴趣的对象的标识)的概率。因此,YOLOv3的预测有宽、高和深度3个值。
目前,最新的YOLO算法是YOLOv7,YOLOv7无论是精度还是速度都超越了所有已知的实时物体检测器。