一、算法背景与核心思想
什么是YOLO?
YOLO是由Joseph Redmon等人在2016年提出的一种基于深度学习的目标检测算法。
核心思想:将检测转化为回归问题
传统的两阶段(two-stage)算法(如R-CNN系列)需要先生成候选框,再进行分类和回归,速度较慢(通常只有5FPS)。而YOLO是单阶段(one-stage)算法,它直接将目标检测问题转化为一个回归问题,通过一个神经网络直接预测目标的类别和位置。
网络划分
YOLOv1将输入图像分成S*S的网络。如果某个物体的中心点落在这,那么这个网格就负责预测这个物体。
二、网络架构与输出
网格结构:借鉴了GoogLeNet。包含24个卷积层和2个全连接层。它使用了1*1的降维层紧跟3*3的卷积层来替代GoogLeNet的Inception模块。
输入与输出:
输入:448*448*3的图像。
输出:一个7*7*30的张量(Tensor)。
7*7*30的含义:
7*7代表图像被分成了49个网格。
30代表每个网格预测包含的信息量。具体拆解为:2个预测框:每个框包含5个信息(x,y,w,h,c)。其中(x,y)是框中心相对网格的坐标(归一化到0-1),(w,h)是框的宽高(相对整张图归一化),c是置信度。共2*5=10个值。
其余20代表20个类别概率。
三、置信度与IoU
置信度