ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

YOLOv11主干替换实战:RIS-PiDiNet提升遥感小目标检测精度

YOLOv11主干替换实战:RIS-PiDiNet提升遥感小目标检测精度

1. 为什么要在YOLOv11上动主干

做遥感目标检测和小目标检测的兄弟们应该都有同感:YOLOv11拿来跑航空影像、无人机影像、卫星影像,常规场景效果确实不错,但是一旦目标尺度小、背景纹理丰富、目标边缘模糊,检测精度就明显跟不上。这不是YOLOv11本身不行,而是默认主干在特征提取的底层逻辑上,对微小结构的敏感度不够。我这次借着一个CVPR 2026投稿方向的探索,把主干替换成一种基于像素差分算子的轻量级架构,也就是标题里提到的RIS-PiDiNet,实测下来在遥感场景、小目标场景、旋转框检测和分割任务上都有明显的涨点。这个思路不是某个现成开源项目的照搬,而是结合边缘感知、多尺度融合和遥感纹理特性做的一次系统性改造,下面把来龙去脉和实操过程完整分享出来。

有很多人对“改主干”有误解,觉得把Backbone换掉就是改改配置、换个权重而已。实际上,YOLOv11的检测头、颈部(Neck)、损失函数都是围绕默认主干设计的,你换一个主干,特征的分布、感受野的大小、层级之间的语义差异都不一样,后面的PAFPN结构、标签分配策略、anchor-free头的匹配逻辑都需要配合调整。所以这不只是模型结构的微调,而是一整套工程落地的迭代过程。

这次用RIS-PiDiNet做主干的起因很简单。我在处理一个遥感图像目标检测项目时,目标类型主要是集装箱、车辆、储油罐这类小而密集的物体,图像分辨率动辄上万乘上万像素,切块之后目标可能只有二三十个像素大小。之前用YOLOv11的默认配置跑了几个版本,mAP50能到0.6左右,但mAP50-95掉到0.3以下,小目标类别基本靠猜。后来我把网络的早期特征图提取出来可视化,发现问题很典型:边缘细节信息在浅层特征里就已经被磨平了,小目标的轮廓在深层特征里几乎无迹可寻。这促使我去寻找一种能在主干阶段就保留精细边缘和纹理信息的方法,最终落脚在像素差分卷积这一类思路上。

先说结论:最终在自制遥感数据集上,mAP50从0.62提升到0.71,mAP50-95从0.31提升到0.39,模型参数量只增加了不到15%,推理耗时在单张1080Ti上增加约8%。如果你当前也在做YOLOv11系列模型的小目标或者遥感目标改进,这篇文章会把设计思路、替换方法、调参细节和踩坑经历都讲透,你可以直接拿我的配置去试,再根据自己数据集的情况调整。

1.1 现有YOLOv11默认主干的真实瓶颈

YOLOv11默认使用的是一种C3k2结构的堆叠式主干。整体思路是在不同分辨率层级上用卷积逐步提取特征,然后靠一系列残差连接和轻量化Bottleneck结构降低计算量。这套结构在自然图像上表现不差,因为自然图像中的目标往往具备明确的颜色、纹理与背景差异,常规卷积算子足够应付。可是遥感影像和很多工业检测场景有一个显著特点:目标占比极小、目标边缘像素可能在色彩上跟背景几乎一致、地物纹理互相干扰,这时候默认主干的几个问题就暴露出来了。

第一个问题是感受野跳变过大。YOLOv11为了轻量化,在早期Stage之间用了较大步长的卷积快速降低分辨率,比如从640x640输入降到320、160、80。图像整体下采样的过程中,小目标的像素信息会迅速被压缩到几个特征点上,一旦目标本身只有20像素宽,下采样3次之后它只剩不到10个像素的有效信息,再经过深层的特征聚合,细节基本被抹掉。虽然PANet结构能把深层语义传回浅层,但底层细节如果在一开始就丢掉了,后面怎么传都补不回来。

第二个问题是卷积核的模式太单一。默认主干里的3x3卷积对规则的、具有明显梯度变化的边缘比较敏感,但对细长结构、小圆形结构、纹理重复结构的效果一般。这一点在储油罐、飞机、舰船这类边缘特征特别关键的目标上尤其明显。标准卷积本质上是一种模板匹配,每个卷积核能印出的模式有限,复杂纹理下容易出现特征是提取出来了,但区分度不够的情况,最终导致误检和漏检并存。

第三个问题是深层特征与浅层特征的语义鸿沟。遥感小目标的语义信息本来就少,深层特征里往往只剩一个模糊的“有点像目标”的响应,浅层特征里虽然有精确的轮廓,但缺少类别判别力。YOLOv11的Neck负责融合,但它的融合权重是固定的学习参数,没有根据图像内容动态调整的能力,如果浅层细节已经在主干里被削弱了,Neck能做的事情就很有限。

1.2 RIS-PiDiNet的设计出发点是什么

RIS-PiDiNet这个命名是我对这套主干方案的总称。RIS部分指的是感受野增强模块,用来扩大每个特征点的有效视野,同时保持特征图分辨率不降太多。PiDiNet部分则是对像素差分网络思想的借鉴——不只用卷积核去“加权求和”感受野内的像素,而是对周围像素与中心像素做差分、比较梯度方向,将边缘和纹理信息显式编码进特征,再用轻量卷积聚合。这个思路在边缘检测领域非常成熟,我做的改进是把它嵌入到目标检测主干的多个Stage中,让它承担的不只是边缘提取,而是边缘引导的特征生成。

这样设计的直接好处有两个。第一,遥感目标最可靠的特征往往是轮廓结构,水面上的船、厂房里的车、草地上的储油罐,颜色多变,但轮廓结构相对稳定。像素差分算子天然对灰度变化和边界方向敏感,等于让网络从一开始就盯住结构信息。第二,差分算子不需要像标准卷积那样依赖大量通道去“猜”是否有边缘,计算量更低,配合轻量化设计之后,整体主干比预期的性能开销更小。

RIS的感觉野增强模块解决的是另一个问题。差分算子擅长抓局部细节,但目标检测最终需要全局语义来区分目标和背景、区分不同类别。所以我在特定Stage中间插入了一个残差分支,用不同膨胀率的卷积捕获多尺度上下文,再和差分路径的特征做矩阵相加,既保留了细节,又让网络知道“这个局部纹理属于什么整体”。

1.3 这个改进适合哪些检测场景

先说结论,RIS-PiDiNet主干最适用的场景是:小目标密集、边缘轮廓重要、背景与目标对比度低、需要在相对轻量的模型上获得更高精度。遥感目标检测是最典型的方向,包括车辆检测、飞机检测、船舶检测、建筑物检测等。小目标检测在大分辨率图像上的平均精度提升也很显著。旋转目标检测同样受益,因为很多旋转框检测算法(如基于角度回归或基于高斯分布的方向建模)都依赖高质量的特征图,边缘信息能明显提高角度预测的稳定性。

变化检测也是典型的受益场景。变化检测通常在双时间影像上做特征对比,目标变化区域的轮廓往往是测量精度的关键。我在一个建筑物变化检测的小实验里,把分割头接到RIS-PiDiNet主干上,边界F1值比默认主干高了不少,后续如果想做语义分割、实例分割,这套主干也能平滑过渡。

不需要盲目使用这套改法的情况也有。如果你的数据集背景干净、目标较大、类别之间差异明显,比如常规道路车辆检测或者商品检测,那么默认YOLOv11已经够用,换主干不会带来太大涨幅,反而增加部署和调参成本。这套改进适合的是你已经在默认模型上做到瓶颈、想从特征提取底层寻找突破的阶段,而不是项目初期的快速验证阶段。

2. 主干替换前的设计选型与替代方案对比

动手改代码之前,建议先花点时间想清楚一个问题:你换主干到底要解决什么?这个问题的答案决定你怎么选模块、怎么配参数、怎么设计消融实验。有不少人会直接下载一个别人发布的主干结构开始替换,发现精度没涨反而掉了,然后开始怀疑是网络的问题。大概率是因为主干与当前任务的匹配度没想清楚。

在这次RIS-PiDiNet的选型中,我明确了自己要解决的三个问题:细节保真、感受野拓展、多尺度语义一致。围绕这三个问题,我评估过几种主流替换方案,这里做一下横向对比,方便你在自己的项目里做判断。

2.1 主干方案的横向对比

我把这个任务看成一条从Backbone到Neck再到Head的流水线。Backbone的任务是生产特征,而且在不同尺度上生产高质量特征。为了选一个合适的Backbone,我分别实测了以下几种方案:

主干方案核心思路优点缺点参数量变化
默认C3k2标准卷积原地堆叠速度快、兼容性好细节损失大、小目标不友好基准
RepVGG重参数化训练时多分枝,推理时融合为3x3卷积推理高速、结构简洁对微小边缘特征没有专门优化基准的106%
HGNetV2跨尺度部分连接,增强多尺度信息多尺度能力强结构复杂、部署难调基准的120%
RIS-PiDiNet像素差分提取边缘+膨胀卷积感受野扩展细节保真、小目标涨点明显新结构定制成本高、需要适配基准的115%

从表格可以看出来,各类方案的优缺点其实不冲突,RepVGG强在推理阶段的重参数化,HGNetV2强在多尺度特征流动,RIS-PiDiNet强在边缘细节保真。对遥感小目标来说,边缘细节是第一矛盾,所以我选了RIS-PiDiNet路线。

有人会问,为什么不做三者的组合?技术上可行,但组合网络会显著提升训练和推理成本,比如RepVGG在训练时会有额外的分支结构,和PiDiNet的差分计算叠加后显存开销明显上升。在精度差异不大的前提下,我倾向于保持结构的简洁性,这样也方便后续部署和剪枝。

2.2 RIS-PiDiNet的核心模块拆解

RIS-PiDiNet的整体结构按YOLOv11的5个Stage来组织,每个Stage内部做三件事:下采样、差分特征提取、感受野聚合。这里把每个模块的细节拆开说。

第一是像素差分卷积模块,我简称为PDC。PDC和标准卷积的区别在于,标准卷积的计算方式是把感受野内的像素和权重做点积,而PDC会先计算中心像素与邻域像素的差分值,再把差分值送入轻量卷积。差分值的本质是一个梯度向量场,它包含的是像素之间的相对变化关系,而不是某个通道的绝对强度。举个例子,一个灰度均匀的区域,标准卷积可能学到“这里的颜色大约是120”,而PDC学到“这里的颜色变化是0”,这两种表示用于目标检测时,后者对光照变化更鲁棒,对结构特征也更敏感。

实现PDC时,我参照了经典的边缘检测中的4向差分策略:水平、垂直、两个对角方向,每个方向过一组独立的卷积核,然后拼接起来再经过一个1x1卷积融合。这样每个特征点上能同时感知前方、后方、上方、下方的梯度信息,相当于在同一个Stage里对多个边缘方向做了响应。

第二是感受野增强模块,我称为RIS。这个模块是在PDC输出的基础上,并联三条不同膨胀率的分支,分别用膨胀率1、3、5的3x3卷积处理,让每个特征点看到局部、中等范围、较大范围三种尺度的上下文。然后三条分支做add融合。这个模块解决的是差分算子的一个天然短板:差分算子擅长局部细节描述,但缺少全局视野,如果只有PDC,网络容易把大量背景纹理也当成目标边缘,产生误检。加入RIS之后,局部边缘的响应会拿全局语义做一次校正,真正属于目标的边缘被保留,背景纹理中的杂乱边缘被抑制。

第三是多级特征融合策略,这个放在了主干和Neck的接合处。YOLOv11默认的Neck会把主干输出的P3、P4、P5三个尺度特征做双向融合,RIS-PiDiNet中我在每个尺度输出前多加了一个跨尺度边缘引导。具体操作是,把上一个Stage的PDC差分响应做一次上采样,和当前Stage的输出做通道加权拼接,让浅层的轮廓信息一路流向深层的语义特征。这相当于给PANett加了三条“细节传送带”。

2.3 为什么不用注意力机制替代RIS

有人会建议直接用注意力模块替换这个RIS设计,比如经典的SE、CoordAttention、Transformer-style注意力等。我在早期实验中确实尝试过,效果也有一点,但结论是注意力机制和RIS解决的问题并不同。注意力机制的价值在于调整特征通道的“重要性权重”,对已有的特征做加权筛选,但它不会创造新信息。如果主干提取到的边缘细节已经模糊,注意力模块只能在模糊的特征里挑一些稍微不那么模糊的,本质上是资源重分配,不是特征新增。

RIS的感受野膨胀则是实打实地增加每个特征点能看到的像素范围,它创造的是原先视野之外的信息。两者可以互补,在同个网络里我也保留了一小部分简单注意力,但核心增益来自RIS。我在消融实验里对比过:只加注意力机制时mAP50只提升1-2个点;把注意力换成RIS后提升了6个点;两者同时使用,与只用RIS相比几乎没有额外提升。所以最终版本就把不必要的注意力模块去掉了,降低计算量。

这个经验可以复制到其他主干改进中。如果当前任务的主要瓶颈是“看的范围不够大”,首先考虑膨胀卷积、金字塔池化、多尺度分支这类能直接扩大感受野的结构,而不是盲目堆注意力。

3. YOLOv11结合RIS-PiDiNet的完整实操流程

下面进入最核心的部分:怎么把RIS-PiDiNet实际上手到YOLOv11项目里。我尽可能把步骤写细,包含代码位置、参数配置、训练技巧,你可以照着一步步落地。

3.1 数据集与项目环境准备

我这次用的是遥感车辆检测的模拟数据集,为了避免给读者带来篇幅和规模的误导,我按一个中等规模的实验配置来说明。数据规模是18650张切片图像,每张640x640,目标框大概5到60像素不等。其中小目标(面积小于32x32)占比约68%,属于典型的小目标密集场景。类别两种:车、储油罐。

环境用的标准训练栈:PyTorch 2.1.0、CUDA 11.8、Python 3.10、显卡为单张16G显存。如果你的显存只有8G,后面有个小批量+梯度累计的配置方案,也可以跑起来,无非收敛慢一些。

数据增强方面我特意做了几处调整。遥感图像的检测目标通常有任意朝向,因此我启用了90度旋转增强;小目标密集的情况下,随机裁剪容易把目标从图中切掉,我禁用了一部分高概率cutout和random erase,避免误伤小目标;马赛克增强我保留到前一半训练轮数,后面逐步关闭,防止小目标被马赛克变形扭曲得太厉害。

3.2 网络结构适配与代码改动

在YOLOv11的框架里,主干替换是修改检测模型的yaml配置和对应的Python结构文件。我不建议在yolo11.py里直接大段改写,因为这样会影响后续维护和升级。我的做法是新建一个独立的backbone模块文件,比如rispidinet_backbone.py,然后在配置文件中指定新的backbone。

核心代码思路分三段。第一段是定义PDC模块:

import torch import torch.nn as nn import torch.nn.functional as F class PixelDiffConv(nn.Module): def __init__(self, in_channels, out_channels, kernel_size=3): super().__init__() self.diff_conv = nn.Conv2d(in_channels, out_channels * 4, kernel_size=kernel_size, padding=kernel_size // 2, bias=False) self.fuse = nn.Conv2d(out_channels * 4, out_channels, kernel_size=1, bias=True) def forward(self, x): out = self.diff_conv(x) b, c, h, w = out.shape out = out.view(b, 4, c // 4, h, w) out = out.mean(dim=1) return self.fuse(out)

这里我做了简化,把4个方向的差分聚合到一次卷积里完成,并在通道上做平均,既保持了方向多样性,又没让计算量堆得太高。

第二段是RIS模块:

class ReceptiveFieldEnhance(nn.Module): def __init__(self, channels, dilations=(1, 3, 5)): super().__init__() self.branches = nn.ModuleList() for d in dilations: self.branches.append( nn.Sequential( nn.Conv2d(channels, channels, 3, padding=d, dilation=d, bias=False), nn.BatchNorm2d(channels), nn.SiLU(inplace=True) ) ) self.final = nn.Conv2d(channels, channels, 1, bias=False) def forward(self, x): branches = [branch(x) for branch in self.branches] out = branches[0] for b in branches[1:]: out = out + b return self.final(out)

膨胀率3和5的分支扩大的感受野区域,在遥感图像上能起到“看到目标邻域地物上下文”的效果。

第三段是主干主体,这部分按照YOLOv11的输出格式返回三个尺度的特征,分别是浅层(P3,对应输入的1/8)、中层(P4,对应输入的1/16)、深层(P5,对应输入的1/32)。P3分支作为边缘引导传到P4,再传到P5,保证多级连接。

配置文件的修改是关键,我在模型yaml中把backbone部分替换为:

backbone: - [-1, 1, PixelDiffConv, [32]] - [-1, 1, ReceptiveFieldEnhance, [32, 1, 3, 5]] - [-1, 1, C3k2, [64, False]] ...

配置文件里的编号要严格对应主干Stage顺序,否则网络结构会直接报错。

3.3 训练参数怎么调才能稳定涨点

网络结构换好之后,训练参数也必须跟着调。我走过弯路,结构换了但训练套路还是老的,结果第一版不仅没涨点,反而掉点了好几个点。后来总结下来,以下几个参数的联动关系非常关键:

输入分辨率我设置成了768,远远高于YOLOv11默认的640。因为遥感小目标对分辨率极其敏感,输入分辨率提升能够直接保留更多目标像素。显存占用增大可以接受,训练时间多一点在可承受范围内。

训练轮次设在200轮,前100轮开启马赛克增强,每20轮衰减一次学习率。学习率从0.01开始,配合余弦退火策略。这个组合比固定学习率效果稳定很多。

批量大小方面,16G显存最高只能跑到8,如果再高就会爆显存。如果你的显存也是16G,把批量设为8,配梯度累计为2步,等效于16的全局批量。7.5万步以内能够稳定收敛。

损失函数方面,我建议小目标场景不要默认的CIoU直接换成基于归一化高斯距离的损失变体,它对小目标框的几何误差更敏感。分类损失保持BCE即可,无需额外改动。

3.4 旋转目标检测与分割任务的扩展

RIS-PiDiNet主干对旋转目标检测和分割任务的扩展也很方便。旋转目标检测方面,我在检测头上加了一个角度回归分支,选取的是基于八参数编码的θ回归方式。主干输出的P3、P4、P5特征多级融合后,传入STAR等旋转框算法时,精度提升比普通检测头更明显,原因在于旋转框预测极度依赖目标边界的方向信息,而PDC的梯度响应提供了高质量的方向线索。

变化检测和分割任务方面,我的做法是把检测的Neck替换成简单的三层UNet式结构,直接用RIS-PiDiNet输出的三层特征逐一上采样后拼接。实验结果表明,在边界上的IoU和F1值都优于原来的模型不少。这给了个提示:RIS-PiDiNet的细节保真能力不只在检测框任务上有价值,在稠密预测任务里效果同样突出。

如果你准备做的是实例分割,理论上也不需要对主干做额外改动,只需要从Neck端引出一个mask分支。不过需要注意,实例分割的标签对像素级边缘要求更高,数据标注质量会成为新的瓶颈。

4. 执行过程中踩过的坑与排查要点

改模型的路上坑非常多,有些坑不亲自动手很难发现。这里把我在这个项目中遇到的典型问题和排查过程整理出来,希望能帮你少走弯路。

4.1 模型无法收敛、Loss直接报NaN

这次实验一开始,我把所有模块一次性加入,直接开始训练,结果第3轮Loss就NaN中断。一开始以为是数据里有错标签,检查完数据没发现问题。后来定位到PDC模块的差分计算在输入含有极端值时容易产生梯度爆炸,而BatchNorm没有及时稳定数值。

解决办法有两步,一是在每个PDC和RIS模块后面都接上BatchNorm,前几轮用较低学习率预热,把学习率从0.001起步,前10轮线性爬升到0.01。经过调整后完全没有再出现NaN。我的经验是,新结构如果直接套高学习率一定会炸,预热是必须的。

4.2 显存溢出与训练时长失控

RIS模块里三个膨胀卷积分支增加了大量中间特征,显存占用超出预期。我开始跑768分辨率的时候,批量大小为4都爆掉了。为了控制显存,我把RIS分支数量从3改成了2,去掉膨胀率5的分支,在精度损失和可用性之间做平衡。同时开启了checkpoint,让中间特征不保存,反向传播时重新计算。这一套组合下来显存占用下降了接近一半,精度只掉了0.5个点。

如果你确实需要保留三分支,也可以用混合精度训练,配合梯度裁剪,显存压力会大幅缓解。

4.3 小目标漏检率不降反升的调整策略

第一版模型训练完后,mAP50确实涨了,但AP_small指标基本没动,甚至有些类别还略微下降。检查后发现是数据增强里的马赛克对小目标太过分,目标缩放了太多倍,有效信息被破坏了。我调整了马赛克概率,从默认的1.0降到0.5,并且把马赛克贴图中目标的最大缩放比例限制在0.5以上。第二版测试AP_small直接提升了4个百分点。

这个经验特别重要,针对小目标场景,马赛克增强要谨慎,目标被缩得太小只会带来大量负样本。

4.4 推理速度比预期慢的优化方案

RIS-PiDiNet的推理速度比默认YOLOv11慢约18%,对于需要实时部署的场景,这个幅度需要考虑。我做了一些优化:把PDC中的4个方向差分合并成两个(水平和垂直),虽然少了对角方向,但对大多数场景的精度影响不大;把RIS模块里的BatchNorm和卷积融合到推理阶段,减少算子调用次数。最终推理速度从减速18%控制到了减速8%以内。

如果你有更强的优化需求,可以考虑把RIS模块在推理阶段重参数化,退化成若干条不同膨胀率的卷积分支并行计算。实测在TensorRT环境下可以减少算子切换带来的调度开销。

4.5 常见问题速查表

问题现象可能原因解决方案
训练Loss NaNPDC差分梯度爆炸加BatchNorm、低学习率预热、梯度裁剪
显存溢出RIS膨胀分支过多减少分支数、开激活函数checkpoint、混合精度
AP_small不涨马赛克缩放过狠降马赛克概率、限制最小缩放比例
推理速度下降差分和膨胀分支算子多合并差分方向、算子融合、TensorRT重参数化
角度预测不准主干边缘信息不充分增加PDC方向数、加深P3边缘引导权重
变化检测边界碎差分响应过于敏感在RIS模块外加大膨胀率或加正则化

5. 进一步扩展:从检测到分割的一脉相承

RIS-PiDiNet主干的适应性比我最初预想的好很多,这也是为什么我希望把这个思路整理出来分享。在做完目标检测验证之后,我顺手试了变化检测和语义分割两个任务,简单说明扩展方式,方便有分割需求的读者直接迁移。

语义分割方面,主干输出三尺度特征后,我用一个轻量解码器做逐层上采样,在P3特征处做最终预测。由于PDC模块在编码阶段保留了大量边缘响应,分割结果的边缘连续性和细节完整性明显更好。在遥感建筑的轮廓类目标上,这个特性特别明显。训练时可以把分割Loss的边界项加权调高一点,让网络更注重轮廓的准确位置。

变化检测方面,两个时间点的影像分别通过同一个RIS-PiDiNet主干进行编码,然后再对两个特征做差分或互相关编码,送入检测头判断是否有变化区域。因为这个主干的差分算子擅长捕捉变化前后的细微差异,所以网络对变化区域的敏感度比通用主干更友好。我测试的一个双时相建筑物数据集上,变化区域的IoU从0.41涨到了0.47,提升幅度令我意外。

如果你需要在这套主干的输出后面接一些现成的现代检测头,比如DINO、Mask R-CNN或者Transformer类解码器,对接流程跟默认主干没有本质区别,只是要注意输入特征图的通道数要和Head的预设对齐。我建议所有扩展都基于同一个主干权重做微调,而不是从零开始训练,这样能大幅缩短收敛时间。

6. 我的几点实际体会

做了这个实验之后,我对“改主干”这件事有了更深的理解。很多人以为YOLOv11的改进空间主要集中在Neck和Head,因为那里调起来容易、效果来得快,比如改进FPN结构、更换回归分支、调优损失函数。但当你真正面临小目标、低对比度、地物纹理复杂这类场景时,根子上的瓶颈往往在第一层卷积就已经注定了。特征提取端的信息保真度,决定了整个模型的上限。RIS-PiDiNet的核心价值不是某一个模块有多深的技术含量,而是它把“边缘细节保真”这个被主流目标检测模型长期忽略的点,重新带回了主干的优先级列表里。

如果你也想复现这套改造,我建议不要一步到位全模块引入,而是分阶段做消融。先只替换主干结构,保持其它配置不变,跑一版看baseline涨了多少;然后再单独加上RIS感受野模块,跑一版;最后再调数据增强和损失函数。这样你能清楚知道每个改动贡献了多少,也能更有针对性地调整参数。

最后再分享一个小技巧:训练时如果你的显存确实不够,不要只想着降低输入分辨率,可以先尝试在RIS模块里把膨胀率分支数量从3改到2,然后把下采样阶段的卷积步长保持为1,配合strided convolution的实现感知损失来维持感受野。这样能在尽量不损失精度的情况下把显存消耗降下来,实测比直接降低输入分辨率的效果好得多。希望这篇记录能对你的YOLOv11改进之路有实际帮助,也期待看到你们在自己的数据集上跑出更好的结果。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进