关于yoloV3模型中yolo层的图解

yolo的核心结构在于yolo层的定义。这也是最让人难以消化的部分。下面写下我对yolo层的理解。

以上图中我标出了三层yolo层。网络中的流程指得是对单张图片进行前向传播的流程(虽然不完整,因为要有yolo层后的长宽、坐标变换)。因而下面的解说全都是关于单张图片进行前向传播的解说。

可以注意到,第1yolo层中的图像是13*13截面大小,长度为75。75指得是3*(2分类值+中心点两个坐标值+anchor长+anchor宽+分类置信度,共25个值),3指的是对应于3个预选框。其中的13其实是416/32得来,图中左侧向下走的网络图进行了5次下采样(2*2池化或者卷积步长为2啥啥),2^5 = 32。所以第一yolo层的大小不一定固定,因为输入图像的大小不一定固定,但却是32的倍数。其余的yolo层同理。

        可想而知,以上所述的各个yolo层都是4维数据。因为要对三个预选框进行预测,所以这4维数据可以且必须拆分成3堆三维数据,例如batch size为4情况下,图中的第1yolo层数据就是(4,13,13,75)维度的数据,我们可以拆分成3*(4,13,13,25)数据,或者也可以写成(4,3,13,13,25)变成5维度数据。这里正如debug yoloV3源码中显示的那样。为了便于理解,我们暂且使用3*(4,13,13,25)。但我们不妨再进行一下简化,认为只传入了一张图的数据,掌握了一张图的传播流程,就掌握了多张图的传播流程(batch size>=2),因为这在计算机里可以一次性计算完成的,多加一个维度就是了。我们看看一张图情形下的第1yolo层数据是如何与要预测的框的位置(x,y)、框的大小(w,h)、置信度、分类联系起来的。如下图所示。

下面的图是用手画的,字太丑,勿喷。。。。。。

注释:52*52size里面的x、y、h、w、c分别是预选框的x、y坐标值,以及预选框高度、宽度、置信度

       上图中我特别有一个疑问,就是核心问题。这个很关键,牵涉到yolo输出层的最终方框选定和分类表达(如何与真实便签值对照计算差异性)。实际上softmax多分类问题就是一个简单的范本。其将标签值转化成为了one-hot形式(一阶张量,N*1矩阵,带状)。这里是属于更高维度的数据,不考虑batch size大于1的情形,牵涉到四维数据形式的表达和设计,考虑batch size则属于5维数据表达。自然地,我们都用张量来表达多维数据,计算机可以识别。针对核心问题的答案,可以用如下图来回答。

上图说的是,真实标签数据变换成上图结构,这和yolo层就等结构对应起来了,计算也就能够方便进行了。上图所表达的真实标签数据结构中,非零数据的分布和值的大小就是模型被不断拟合,使得yolo层数据要尽量去靠拢的对象。代码不再展示了,非常多,其实说的就是这么回事,还是图形象高效。

版权声明:本文为CSDN博主「Timmy9991」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Timmy9991/article/details/122609525

Timmy9991

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

目标检测——yolov4损失函数

人工智能学习离不开实践的验证,推荐大家可以多在FlyAI-AI竞赛服务平台多参加训练和竞赛,以此来提升自己的能力。FlyAI是为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台。每周免费提供项目开源算法样例

目标检测:Yolov5集百家之长

首发于:公众号YueTan (1920,被识别为泰迪熊?有排面)
背景
2017年底,我已毕业多年了。用起Excel和PPT、研究车的质量问题俨然老手的样子。有一晚&#

实战 | 实时的目标检测与识别简单应用

吃粽子迎端午计算机视觉研究院专栏作者:Edison_G最近总是有很多入门的朋友问我,我进入计算机视觉这个领域难不难?是不是要学习很多知识?到底哪个方向比较好?长按扫描二维码关