
095、C3k2 替换回 C2f 的消融实验:大核 vs 小核 CSP 的区别到底在哪上周帮一个做工业缺陷检测的团队调模型,对方在YOLOv11上跑了三周,mAP死活卡在78.3%上不去。我远程看了一眼他们的配置文件,C3k2模块里kernel_size=7,neck部分全是大核。我问为什么用大核,对方说“网上说大核感受野大,能提升检测精度”。我当场就笑了——这话放在ResNet时代没错,但在CSP架构里,大核和小核的博弈远没那么简单。今天这篇笔记,我们就来扒一扒C3k2和C2f这两个模块在YOLOv11里的真实表现。我会从代码层面拆解它们的差异,给出完整的替换方案,最后用消融实验数据告诉你:什么时候该用大核,什么时候该老老实实换回C2f。先搞清楚C3k2和C2f到底差在哪YOLOv11的C3k2本质上是对C2f的“核大小可配置”改造。C2f的卷积核固定为3×3,而C3k2允许你传入kernel_size参数,默认是7。但问题在于,很多人只看到了“大核”这个卖点,忽略了C3k2内部结构上的两个关键变化:第一,C3k2把C2f中的两个3×3卷积替换成了一个可配置大小的卷积加一个1×1卷积。这个改动直接影响了梯度流动路径。C2f的梯度可以通过两条路径回传(shortcut + 卷积分支),而C3k2因为引入了大核卷积,梯度在反向传播时更容易出现“路径退化”——大核卷积的参数更多,梯度更新时方差更大,训练初期容易震荡。第二,C3k2的参数量增长是非线性的。kernel_size从3增加到7,参