关于YOLOv8的面试题(持续更新中...)

        本章将计划更新关于YOLOv8中可能会成为面试题的关键技术点,计划持续更新,可能想到合适的问题我就会整理下更新到本博客中。

1.YOLOv8网络结构篇

1.1简述一下YOLOv8的网络结构

YOLOv8的网络结构由三部分组成,分别为BackBone主干网络Neck颈部网络Head头部网络。

BackBone网络主要对输入图像进行特征提取,输入分辨率会从640x640经过5次下采样后变为20x20,输入通道会从RGB的3通道变成512维通道,并且会输出80x80、40x40和20x20三个尺度的特征图到Neck网络。

Neck网络主要对BackBone网络输出的特征图进行特征融合,自下而上通过上采样将20x20、40x40和80x80尺度特征图通道维度进行拼接并使用c2f模块进行特征提取,自上而下再次和对应的特征图在通道维度上进行拼接最后输出20x20、40x40和80x80尺度的特征图。

Head网络主要对Neck层输出的三个尺度特征图解码,使用解耦的方式来分别预测框的位置和大小,即Box分支,每个尺度的通道数为64;预测框的类别,即Cls分支,每个尺度的通道数为nc,即类别数。

1.2YOLOv8提供了几个版本的网络,每个版本有什么区别,网络的宽度和深度是怎么变化的

YOLOv8共提供了5个版本大小的网络,从小到大分别是n、s、m、l、x,即nano,small,medium,large和extra large.

这五个版本主要是网络的深度和宽度不一样,深度体现在主干网络的c2f模块中堆叠的bottleneck模块个数,宽度体现在网络每一层输出通道数上,网络越大,对应的性能越好,推理速度越慢;网络越小,性能越差,推理速度越快。

网络的宽度通过Width和max_channels共同控制,网络最大宽度(即通道数)不超过Width*max_channels(当然不包括concat层的情况),L-版本网络是v8的标准版,每一层的通道数和L-版本每一层通道数是Width倍数的关系。

网络的深度通过Depth控制,c2f模块堆叠的bottleneck个数和L-版本的是Depth倍数关系,L-版本中4个c2f分别堆叠了(3,6,6,3)个bottleneck。

1.3BackBone层的c2f模块和Neck层的c2f模块有什么区别

主要有两大区别:

第一,BackBone层的c2f层的输入和输出通道数不变,而Neck层的c2f层的输出和输出通道数改变,输出通道数为主干网络输出同一尺度特征图的通道数。

第二,BackBone层的c2f模块的bottleneck含有残差分支,而Neck层的c2f模块的bottleneck不含残差分支,并且每个c2f只堆叠了一个bottleneck。

1.4Head层的两组CBS卷积组的通道数变化有什么规律

第一,每个尺度同一分支的CBS的通道数是一样的,比如说L-版本中80x80、 40x40和20x20尺度的Box分支通道数都是64,Cls分支通道数都是256.

第二,n/s/m/l/x五个版本的网络,Box分支的CBS卷积组通道数最小不能小于64,Cls分支的CBS卷积组通道数最小不能小于类别数。

2.YOLOv8推理流程篇

2.1简单介绍下YOLOv8中的Letterbox操作

训练阶段的letterbox:目的是把任意尺寸的图片调整成640x640尺寸的图片;因此第一步需要区分输入图片的长短边,然后将长边缩放到640,再然后把短边使用同样的缩放比例进行缩放,最后使用灰边(像素值为114)对短边进行补齐到640。

预测阶段的lettebox:和训练阶段的lettebox处理基本一致,区别在于预测阶段的短边无需填充至640,只需要填充为32的最小倍数就行,这样有利于减少运算量,提升预测速度。

2.2输入尺寸为640x640的网络最后输出的Cls分支特征图的通道数是多少,如何进行解码

网络最后会输出三个不同尺度的特征图:80x80、40x40和20x20,并且这三个尺度特征图的通道数都为类别数nc,解码前会将这三个特征图展开后拼接成ncx8400,然后在第一个维度对nc个值分别经过sigmoid函数得到0~1的值,nc个0~1的值就可以理解成网络预测的nc个类别的概率。

2.3 Box分支是用来预测框的位置和大小的,为什么它的通道数是64,而不是4

v8通过预测grid cell点到预测框左边框、上边框、右边框和下边框的距离这4个值来确定预测框的大小,而这四个值不是通过网络直接预测出来的,需要借助16个数共同预测,因此通道数是4x16=64; 网络预测出这16个数,需要经过softmax()映射到0~1之间,并且16个数的和为1;并且这16个数对应着0~15的下标,最后预测出的值应该是经过softmax后的16个数和对应的下标值相乘再相加得到。

2.4YOLOv8后处理中使用torchvision.ops.nms之前做了什么处理,让不同类别的预测框各自做NMS

torchvision自带的nms只能对单个类别的框进行NMS,v8在使用该nms之前会对不同类别需要加上一个偏移量,从而让同一个类别的框在同一片区域做NMS而不会受其他类别的影响。


        未完待续,先拿我柴占一下坑...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吃鱼不卡次

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值