为什么目标检测一定要做多尺度特征融合:小目标、大目标到底难在哪
上一篇已经知道了:
-
卷积会提取特征
-
特征会形成特征图
-
下采样会让特征图尺寸变小
-
浅层特征细节多,深层特征语义强
那么现在自然会冒出一个问题:
既然深层特征更“高级”,那目标检测为什么不直接用最后一层特征做预测?
答案就是:
因为目标有大有小,而且难点不一样
这就是这一篇要讲的核心。
1. 目标检测为什么比分类难得多
分类任务通常只回答一个问题:
-
这张图主要是什么
但目标检测要同时回答:
-
图里有什么
-
每个目标在哪里
-
有几个目标
-
大小分别怎样
-
有没有遮挡
-
有没有密集分布
所以检测比分类多了一个很麻烦的问题:
空间尺度问题
也就是:
-
有的目标很大
-
有的目标很小
-
有的目标只占图中很小一块
-
有的目标几乎占满整张图
如果模型不能同时处理不同尺度的目标,它就很难做出稳定检测。
2. 什么叫尺度 scale
这里的“尺度”,不用想得太玄。
在目标检测里,它通常就是指:
目标在图像中的大小范围
比如同样都是“人”:
-
近景里的一个人,可能占图像很大区域
-
远处的一个人,可能只占十几个像素宽
它们类别一样,都是 person。但对模型来说,检测难度差很多。
所以“多尺度目标检测”说白了就是:
模型要同时兼顾大目标、中目标、小目标
3. 为什么小目标特别难
这是技术汇报里很重要的一点。
小目标难,主要难在这几个方面。
(1)像素少,信息量本来就少
一个很小的目标,在原图里可能只占几十个像素,甚至更少。
比如一个远处行人,可能只有:
-
模糊轮廓
-
很少纹理
-
细节极少
那模型可利用的信息本来就不多。
(2)下采样之后更容易“没了”
这个很关键。
假设原图里一个小目标宽高大约是:
如果经过一次 stride=2 的下采样,
尺寸大致会减半,变成:
再经过一次下采样:
再来一次:
再深一点,可能就只剩一个点附近的模糊响应了。
也就是说:
小目标在深层特征里,很容易被不断下采样到几乎不可分辨
这就是为什么只看最后一层特征,很容易漏掉小目标。
(3)容易被背景淹没
小目标往往和背景混在一起。
比如:
-
远处的交通灯
-
空中的小无人机
-
街景里很远的小人
-
遥远处的小车
这些目标如果特征不明显,就很容易被背景噪声盖过去。
4. 为什么大目标也不是随便就能检测好
很多人会误以为:“大目标肯定简单。”
其实也不完全对。
大目标虽然像素多,但也有它自己的问题。
(1)需要更大的感受野
一个大目标可能横跨图像很大区域。
如果某层特征看到的范围太小,它可能只能看到这个目标的局部。
比如只看到:
-
一只车轮
-
一块车门
-
一段人腿
那它就不一定能很好判断整体目标。
所以检测大目标时,模型需要:
更强的全局语义理解能力
这通常依赖更深层特征,因为深层特征感受野更大。
(2)局部信息不等于整体信息
有时候局部看起来像某个目标部件,
但只有结合更大范围上下文,才能知道它到底是什么。
所以大目标检测往往更依赖:
-
高层语义
-
更大的感受野
-
更完整的结构信息
5. 这就出现了一个矛盾
现在你会发现一个很核心的矛盾:
浅层特征
-
分辨率高
-
位置细节多
-
对小目标更友好
-
但语义弱
深层特征
-
语义强
-
感受野大
-
对大目标和整体理解更友好
-
但分辨率低,细节少
这就意味着:
浅层和深层各有优缺点,谁也不能单独完全解决检测问题
所以如果你只用浅层:
-
细节够
-
但语义可能不够强
-
容易误检
如果你只用深层:
-
语义够
-
但小目标细节可能已经丢了
-
容易漏检小目标
这时候就引出了一个非常自然的思路:
把不同层的特征结合起来
这就是:
多尺度特征融合
6. 什么叫多尺度特征融合
把浅层的细节信息,和深层的语义信息,尽量结合起来。
目的就是让模型同时拥有:
-
更细的空间信息
-
更强的语义表达
-
对不同尺度目标更好的适应能力
所以“多尺度特征融合”不是一个装饰性设计,它几乎是现代目标检测网络里的核心思想之一。
7. 为什么不能只保留一层特征图
假设一个网络最后只保留最深的一层特征图,
然后直接在这一层做检测。
这会带来什么问题?
对小目标
可能已经被下采样得太小,信息不足,容易漏检。
对中目标
效果可能还行,但不一定最好。
对大目标
通常更有优势,因为深层语义更强、感受野更大。
所以只保留一层,等于你在强行用一种尺度去处理所有目标。
这显然不合理。
检测任务天然更适合:
多层特征同时参与预测
8. 一个直观理解:不同层像不同倍率的观察方式
可以把不同层特征理解成不同倍率的观察方式。
浅层特征
像“看得细”,能看到局部边缘、纹理、小结构。
深层特征
像“看得远”,能把更大范围的信息组织起来,看整体轮廓和语义。
检测任务如果只用其中一种视角,都不够。
所以最合理的方法就是:
多种视角一起看。
这其实就是多尺度思路。
9. 数学上怎么粗略理解“下采样让小目标更难”
这个地方可以带一点简单数学。
假设原图大小是:
某个目标宽高是:
如果经过一次 stride=2 的下采样,
那这个目标在新特征图上的宽高大致会变成:
如果连续经过 (k) 次 2 倍下采样,
大致会变成:
这条式子非常有用,因为它直接说明:
小目标会随着下采样次数增加而迅速缩小。
比如一个宽度只有 8 的目标,
连续 3 次 2 倍下采样后,大概只剩:
也就是说只剩 1 个格子附近的信息了。
这时候检测当然会变难。
这条式子你技术汇报时甚至可以直接讲。
10. 为什么深层特征语义更强
这个问题也可以从“组合”的角度理解。
浅层卷积看到的是很局部的信息,
比如:
-
一小段边缘
-
一个小角点
-
某种纹理变化
更深层的特征,是在前面这些局部模式基础上继续组合出来的。
所以随着层数加深,网络逐渐从:
-
像素
-
边缘
-
局部纹理
-
局部结构
-
部件模式
-
整体语义
一步一步往上走。
因此深层特征虽然分辨率变低了,但它理解“这大概是什么目标”的能力往往更强。
11. 目标检测为什么特别依赖“细节 + 语义”同时存在
检测不是只判断类别,它还要定位。
所以它天然要求两类信息:
细节信息
用来知道边界在哪里、位置在哪里、目标到底多大。
语义信息
用来知道这到底是什么目标。
这两类信息如果分开看:
-
只有细节,没有语义:容易把背景纹理误当目标
-
只有语义,没有细节:容易知道“这里像有东西”,但框不准,或者小目标丢失
所以检测网络相比纯分类网络,更需要把这两类信息结合起来。
12. 多尺度融合最基本的思想是什么
最基本的思想其实很简单:
从深层拿语义
深层特征更抽象、更懂整体。
从浅层拿细节
浅层特征保留了更多空间分辨率和定位信息。
再把它们融合
这样得到的特征既有一定细节,又有一定语义。
13. 为什么 YOLO 这类检测器很重视多尺度
因为 YOLO 的目标是:
-
速度快
-
端到端
-
同时检测不同大小目标
那它就不能指望“最后一层包打天下”。
所以它通常会利用多个尺度的特征图来做预测。
这也是为什么看很多 YOLO 结构图时,
都会看到:
-
上采样
-
拼接
-
多分支输出
-
不同尺度检测头
这些都和“多尺度检测”强相关。
14. 上采样又是为了什么
这里顺手补一个词,不然后面看 Neck 会别扭。
下采样是把特征图变小。
那上采样就是把特征图变大一些。
为什么要上采样?
因为深层特征语义强,但尺寸小;
如果想和浅层特征融合,就常常需要先把深层特征“放大”到更接近浅层的尺寸,再进行融合。
所以后面看到:
-
upsample
-
concat
-
fuse
这些操作时,不要把它们看成零散小技巧。
它们本质上都是在服务于:
多尺度特征融合
15. 一个很常见的融合思路
虽然我们这篇不正式展开 FPN/PAN,但先要知道它们在干嘛。
自上而下传递高层语义
把深层语义信息传给更高分辨率的层。
横向连接
把不同层之间的特征接起来。
再进一步融合
让浅层特征不再只是“细”,还带一些语义;
让深层特征不再只是“抽象”,还能借到一些定位信息。
现在只要知道:
FPN/PAN 这些名字,本质上都在解决多尺度融合问题。
16. 从技术汇报角度,应该怎么表述这件事
“为什么检测网络一定要做多尺度特征融合?”
可以这样回答:
因为目标检测需要同时处理大小差异明显的目标。浅层特征分辨率高、细节丰富,更适合小目标定位;深层特征感受野大、语义更强,更适合整体目标识别。如果只使用单层特征,很难同时兼顾定位精度和语义表达,因此现代检测网络通常通过多尺度特征融合,将不同层的信息结合起来,以提升对大中小目标的检测能力。
17. 3 条“技术句子”
第一句
小目标难,是因为信息量少,而且在多次下采样后容易迅速消失
第二句
大目标检测更依赖高层语义和更大的感受野
第三句
多尺度特征融合的目的,是把浅层细节和深层语义结合起来,同时兼顾不同尺度目标
18. 一点够用的数学表达
关系 1:连续下采样后的目标尺寸变化
如果目标原始宽高是:
经过 (k) 次 2 倍下采样后,大致变成:
这条关系用来解释:
为什么小目标容易在深层特征里丢失
关系 2:检测任务需要在多个尺度上建模
虽然不一定非要写成严格公式,
但可以把多尺度特征集合粗略表示成:
其中:
-
:较浅层、高分辨率特征
-
:较深层、低分辨率特征
多尺度融合的目标就是构造新的融合特征:
这里的 可以理解成某种融合操作,比如:
-
上采样
-
拼接
-
相加
-
卷积融合
这个式子不用深究,它只是告诉你:
融合后的特征不是凭空来的,而是由多个尺度的信息共同构成
19. 这一篇和 YOLOv8 到底怎么连起来
这一篇本质上是在给后面学 YOLOv8 的 Neck 铺路。
因为后面一看到:
-
FPN
-
PAN
-
上采样
-
拼接
-
多尺度输出
就要立刻想到:
这些都不是随便加的,它们都是为了解决不同尺度目标检测问题
所以这一篇不是独立知识,而是后面 YOLO 结构理解的底座。
20. 本篇小结
目标检测比分类更难,因为目标大小差异很大;浅层特征细节丰富,更适合小目标;深层特征语义更强,更适合大目标和整体理解;因此不能只依赖单层特征,而需要做多尺度特征融合。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)