
139、PixelShuffle 亚像素卷积上采样的 YOLOv11 代码实现与通道重建的适配细节一、一个让我熬夜到凌晨三点的bug去年秋天,我在做YOLOv11的Neck结构轻量化改造。当时想把FPN中的最近邻上采样换成PixelShuffle,直觉告诉我这能提升小目标检测精度。改完代码,训练了12个epoch,mAP@0.5:0.95从0.523掉到了0.487。我盯着loss曲线看了半小时,发现训练初期loss下降正常,但到第8个epoch后开始震荡。排查了三天,最后发现是通道数没对齐——YOLOv11的Neck里,上采样前的特征图通道数是256,而PixelShuffle要求输入通道数必须是输出通道数的平方倍。这个细节让我浪费了整整一周的算力。今天就把这个坑填上,顺便把完整的适配方案写清楚。二、PixelShuffle的核心机制与YOLOv11的冲突点PixelShuffle(亚像素卷积)最早在ESPCN超分网络里提出,核心思想是把通道维度上的信息“重新排列”到空间维度。公式很简单:输入形状为[B, C*r^2, H, W],输出为[B, C, H*r, W*r],其中r是上采样倍数。YOLOv11的Neck结构里,上采样操作出现在两个地方:FPN自顶向下路径:从P5到P4,特征图尺寸翻倍,通