YOLOV1目标检测算法:预测阶段

参考:(讲的详细,简单易懂)https://www.bilibili.com/video/BV15w411Z7LG/?is_story_h5=false&p=4&share_from=ugc&share_medium=android_hd&share_plat=android&share_session_id=f3bd490e-6f4d-43c2-97df-4573b8556221&share_source=WEIXIN&share_tag=s_i×tamp=1670053553&unique_k=j0ik45C

一:

预测阶段就是在模型训练成功之后,输入未知图片,对未知图片进行预测或测试。此时不需要训练,不需要反向传播,而是进行前向推断。

模型训练出来是一个深度卷积神经网络:

YOLOV1目标检测算法:预测阶段_第1张图片

 输入是一张 448 X 448 X 3 的彩色图像,也就是说把一张图片缩放成 448 X 448 的正方形图片,3 表示的 3 通道,RGB

二、为什么输出是 7 X 7 X 30

YOLOV1目标检测算法:预测阶段_第2张图片

1、首先,网络把图像划分为 S X S 个 grid cell(网格单元),在YOLO V1中 S=7 。每一个 grid cell 能预测出 B 个 bounding boxes(边界框),即 B 个预测框,YOLO V1 中 B = 2

YOLOV1目标检测算法:预测阶段_第3张图片

 2、

YOLOV1目标检测算法:预测阶段_第4张图片

 两个预测框可能很大,也可能很小,也可能会跟其他的 grid cell 也覆盖了(没有影响),只要bounding boxes 的中心点落在 grid cell 里,那么就可以说明,这个 bounding boxes 是由 grid cell 生成的bounding boxes 预测框,包含了(x,y,w,h,c),其中 x,y,w,h 是四个定位坐标,x,y 是中心点的坐标,w,h 是框的宽高。由这四个坐标就可以确定框的位置,以及包含它是否是一个物体的置信度,在此图上就用框的线的粗细来表示。粗的表示置信度比较高,细的表示置信度比较低。

3、每一个 grid cell 能够生成含有类别的条件概率。意思是:假设在它已经包含物体的情况下,是某一个类别的概率,如下图:

YOLOV1目标检测算法:预测阶段_第5张图片

 把每一个 bounding boxes 的置信度 X 类别的条件概率,就能获得每一个 bounding boxes 的各类别的概率。

结合以上两个信息,一个是 bounding boxes (边界框)的信息,一个是 grid cell(网格单元) 的类别信息,就可以获得最后的预测结果。这些信息都是从  7 X 7 X 30 维的张量中获取的。

三、解释 7 X 7 X 30 张量

即S X S X (5 X B + C)

30:包含两个预测框,每一个预测框有5个参数,X,Y,W,H 和置信度,两个框也就是10个参数,在 Pascal VOC 里面包含20个类别,5+5+20=30。

YOLOV1目标检测算法:预测阶段_第6张图片

30 维的张量是一个 grid cell(网格单元)的信息,一共是 7 X 7grid cell(网格单元),所以是 7 X 7 X 30 维的张量,即上图所示。

7 X 7 X (2 X 5 +20)= 7 X 7 X 30 tensor = 1470 outputs

X :指中心点的横坐标

Y :指中心点的纵坐标

W :指框的宽度

H :指框的高度

后面 20 维指 20 个类别的条件概率(假设它在包含物体的情况下,它是猫的概率),只有把置信度乘以条件概率,它才是真正这个框是某个类别的概率。

即输入是 448 X 448 X 3 的图像,输出是 1470 个数字。

四、

YOLOV1目标检测算法:预测阶段_第7张图片

 输入一张图像,YOLO 能输出 S X S grid cell(网格单元)的信息,每一个 grid cell(网格单元)包含 2bounding boxes (边界框)和 20 个类别,每一个 bounding boxes (边界框)又包含 4 个位置参数和一个置信度参数。

五、可视化看一遍

1、 首先把图像分成 S X S 个网格,这里是 7 X 7 个。

YOLOV1目标检测算法:预测阶段_第8张图片

2、比如下图红色网格中,每个网格都预测出 2bounding boxes (边界框)

YOLOV1目标检测算法:预测阶段_第9张图片

 3、2bounding boxes (边界框),其中一个置信度比较高(用粗线表示),另外一个置信度比较低(用细线表示),这都是在预测阶段(在模型已经训练好的情况下,粗线框已经预测出了车)。

YOLOV1目标检测算法:预测阶段_第10张图片

 4、另外一个grid cell(网格单元)也预测出了两个bounding boxes (边界框)

YOLOV1目标检测算法:预测阶段_第11张图片

 5、但是这两个bounding boxes (边界框)置信度都比较低,不管怎么样,这个图都能预测出

7 X 7 X 2 = 98 个框,只不过有些框置信度比较高,保留下来,有一些置信度比较低就不管。

YOLOV1目标检测算法:预测阶段_第12张图片

 六、

每一个 grid cell(网格单元)还能生出20个类别的条件概率,下图展示了条件概率最高的类别所占有的框,比如紫色就是 Bicycle 条件概率比较高的区域,绿色 grid cell(网格单元)都是 Dog 的条件l类别概率比较高的区域。也就是说,每一个grid cell(网格单元)只能有一个类别,从20个条件类别概率中选最高的那一个,也就是说每一个grid cell(网格单元)只能有一个代表类别,进而说明,每一个grid cell(网格单元)只能预测出一个物体,7 X 7 = 49 grid cell(网格单元),最多预测出 49 个物体,这也是YOLO V1 小目标和密集目标识别性能差的原因,

YOLOV1目标检测算法:预测阶段_第13张图片

 七、

每一个 grid cell(网格单元)只有一个类别,只有一个条件概率类别最高的代表类别,把这个grid cell(网格单元)中的两个 bounding boxes (边界框)都赋予这个类别,再进行一系列后处理,就得到了最终的目标检测结果。(用颜色代表不同的类别,用粗细代表每一个bounding boxes (边界框)的置信度,就可以形成图 2 中间的结果),即总共 98bounding boxes (边界框),每一个 bounding boxes (边界框)都有置信度和最高概率类别对应的类别,把中间图进行一系列后处理,比如把低置信度的过滤掉,然后再进行非极大值抑制,去除掉重复的预测框,就获得最终的目标检测预测结果。

YOLOV1目标检测算法:预测阶段_第14张图片

 图1

 YOLOV1目标检测算法:预测阶段_第15张图片

 图2

八、总结

整个预测过程如下,输入 448 X 448 X 3 的图像,输出 7 X 7 X 30 维的张量, 7 X 7 X 30 维的张量包含了 98 个预测框,49grid cell(网格单元)的 98 个预测框,每一个预测框的位置,置信度,还有每一个grid cell(网格单元)的类别概率,对其进行解析,后处理,就获得最终的目标检测结果。

YOLOV1目标检测算法:预测阶段_第16张图片

 九、

YOLOV1目标检测算法:预测阶段_第17张图片

 十、

预测阶段:模型输入 448 X 448 X 3 的图像,输出 7 X 7 X 30 维的张量,张量包含了 7 X 7grid cell(网格单元),里面的每一个bounding boxes (边界框)的坐标和置信度信息,以及该grid cell(网格单元)的类别信息,结合这两种信息进行后处理,就可以获得最终的目标检测结果。

YOLOV1目标检测算法:预测阶段_第18张图片

你可能感兴趣的:(计算机视觉,目标检测,人工智能,计算机视觉)