YOLOV8/11 输出三个尺度的特征图
对于640x640图像输入:
- 80x80 检测小目标
- 40x40 检测中目标
- 20x20 检测大目标
检测输出说明
对于640x640的图片输入,输出output0[84,8400],预测框的总数量是8400,每个预测框的维度是84(4+80),针对COCO数据集的80个类别而言
8400x84 = 80x80x84+40x40x84+20x20x84 = 80x80x(4+80)+40x40x(4+80)+20x20x(4+80)
其中4为预测框 cx,cy,w,h,代表预测框的中心点坐标与宽高;80为80个类别的置信度
输入图像大小不一样,输出的检测框数量不同
分割输出说明
分割有两个输出output0与output1,对于640x640 的图像输入,output0为检测头的输出其维度1x116x8400,output1为分割头的输出,其维度为1x32x160x160
output0维度1x116x8400,代表输出的检测框数量为8400,每个预测框的维度为116(4+80+32)
其中4为预测框 cx,cy,w,h,代表预测框的中心点坐标与宽高;80为80个类别的置信度,32维向量为与当前预测框关联的分割mask系数
output1分割头的输出维度为1x32x160x160,代表32个尺寸为160x160的基础mask,这些基础mask所有检测框共享,每个检测框的32维mask系数与output1做矩阵乘法得到当前检测框的最终mask
具体实现:
- Mask 系数(n×32) × 模型输出原型output1(32×160×160),n为筛选后预测框的数量
- 经过 sigmoid 激活
- 得到 n×160×160 的原始 Mask
- 把框从 640×640 → 缩放到 160×160,用于裁剪 Mask
- 把检测框以外的 Mask 全部设为 0
- 只保留框内的物体区域
- 把 160×160 中多余的灰色区域切掉(对于输入letterbox),得到有效小图
- 双线性插值缩放,把 Mask 缩放到 原图分辨率(如 1920×1080)