128、Task-Specific Head 设计:为检测和分割任务分别优化 Head 结构的工程方案

发布时间:2026/7/6 5:34:55
128、Task-Specific Head 设计:为检测和分割任务分别优化 Head 结构的工程方案 128、Task-Specific Head 设计:为检测和分割任务分别优化 Head 结构的工程方案从一次凌晨三点的事故说起去年秋天,我在给一个自动驾驶项目做YOLOv11的实例分割适配。客户要求检测和分割同时跑,但模型在夜间场景下,检测框的召回率掉了4个点,分割掩码的边缘却意外地锐利。我盯着TensorBoard上的loss曲线,检测分支的cls_loss在震荡,seg_loss却收敛得漂亮。直觉告诉我——问题出在Head共享的neck特征上。翻出YOLOv11的源码,发现官方实现里检测和分割的Head确实共用了同一组卷积层做特征提取。这在COCO这种均衡数据集上没问题,但到了特定场景,检测需要更关注空间细节(小目标),分割需要更关注语义一致性(大物体边缘)。强行共享参数,等于让一个厨师同时做川菜和粤菜,锅都不换。为什么Task-Specific Head不是“加个分支”那么简单很多人以为Task-Specific Head就是复制一份卷积层,分别接检测和分割loss。我踩过这个坑——直接复制会导致两个问题:梯度冲突:检测分支的梯度(尤其是bbox回归的L1 loss)和分割分支的交叉熵loss在数值尺度上差了一个数量级。共享的neck层会被拉扯得四不像。感受野错配:检测Head需要小感受野捕捉精细位置,分割Head