081、DCNv2 插入 Head 前最后一层:直接增强检测特征的可变形感受野

081、DCNv2 插入 Head 前最后一层:直接增强检测特征的可变形感受野 081、DCNv2 插入 Head 前最后一层:直接增强检测特征的可变形感受野从一次诡异的漏检说起去年秋天调一个工业质检项目,模型是YOLOv8n,检测目标是一堆形状不规则的金属零件。训练完跑测试,发现一个奇怪现象:零件稍微旋转30度,或者被其他零件遮挡了三分之一,模型就漏检。当时我盯着特征图可视化看了三天,发现最后一层特征图的感受野是“死”的——所有采样点都老老实实呆在网格上,遇到形变目标就抓瞎。后来翻到DCNv2的论文,突然意识到:YOLO的Head前最后一层,其实是个“信息瓶颈”。所有特征都要经过这一层才送到检测头,如果这一层的感受野是固定的,那模型对形变、旋转、尺度变化的适应能力就被锁死了。把这一层换成DCNv2,相当于给特征图装上了“可变形触手”,每个采样点都能根据输入特征自己调整位置。DCNv2 到底改了啥先别急着写代码,理解DCNv2的核心改动比调参重要。DCNv1只学了偏移量(offset),但DCNv2额外学了调制权重(modulation mask)。这个调制权重的作用是:告诉网络“哪些偏移后的采样点值得关注”。比如目标边缘的采样点权重高,背景区域的采样点权重低。用公式表达就是:y(p) = Σ w_n * x(p + p_n + Δp_n) * Δm_n其中Δp_n是偏移量,Δm_n是0到1之间的调制权重。这两个东西都是网络自己学出来的,不需要人工设计。