YOLOv4免费赠品技巧全解析:不增推理开销的精度提升
发布时间:2026/10/16 9:40:02 锦皓数字建站

YOLOV4刚开源那阵子圈子里讨论最多的反而不是它涨了多少个点mAP而是论文里那个很有意思的说法——bag of freebies。我第一次看到这个词的时候愣了一下什么叫免费赠品后来把论文和数据增强、损失函数那几块翻来覆去看了好几遍才真正理解这词背后的含义这些技巧只影响训练过程不影响推理速度。换句话说你花在训练上的算力和时间可以白嫖出一部分精度提升而部署时候的推理延迟一点不加。这个理念跟很多人的直觉是反的。平时我们做模型优化第一反应往往是换大模型或者加trick换推理开销但YOLOV4的思路是训练阶段可以奢侈一点只要部署阶段不增加负担训练时的任何复杂操作都是划算的。这篇文章我就把自己在YOLOV4训练里实际用过的、踩过坑的几个核心freebies拆开讲清楚包括它们为什么有效、怎么落地、以及哪些场景下不要无脑用。1. bag of freebies指什么训练阶段可以奢侈但别白折腾YOLOV4的论文把训练技巧分成了两大类一类是bag of freebies一类是bag of specials。后者是推理阶段会带来一点点额外开销但能换明显精度收益的模块比如SPP、PANet、DIoU-NMS这些前者则是实实在在的白嫖——推理时不增加任何计算量的训练策略。为了说清楚这件事我先打个比方。你准备参加一个考试考试时只能带一张A4纸进考场但备考阶段你随便用书、用电脑、用各种资料都行。bag of freebies就好比备考阶段的各种复习方法你可以在家做模拟题、背单词、找老师答疑这些都不会增加考试当天的负担但能实实在在提高你的成绩。训练阶段的Mosaic、SAT、CIoU这些技巧就是这种备考方法。这个理念的改变我觉得非常关键。因为我们做检测模型的时候通常有个固定管线数据准备、模型选型、训练、导出、部署。大多数人把精力花在前两步觉得训练就是用默认参数跑一遍就完了。但YOLOV4告诉你训练策略本身就是模型设计的一部分而且是一个几乎零成本就能撬动精度收益的杠杆。1.1 训练代价与推理代价的“不对称性”搞清楚这个不对称性你才能真正理解为什么freebies值得投入。部署场景里模型要在GPU、NPU甚至CPU上跑推理时间直接决定了你的服务能扛多少QPS、延迟能不能满足要求所以推理阶段每多一个算子、每多一次特征图拼接都是要精打细算的。训练阶段就完全不一样了。训练的输入是离线准备好的数据集跑一个epoch可能需要几分钟甚至几十分钟没人关心训练时数据增强多花了100毫秒、损失函数多算了几个矩阵运算。训练只关心一个指标收敛后模型的精度。所以任何能提升收敛质量的策略只要不改变推理图结构都可以大胆用。我遇到过不少朋友问Mosaic把四张图拼在一起BatchNorm的统计量会不会乱掉SAT给图片加噪声做对抗是不是得调一堆超参数这些担心其实都停留在训练会更复杂的层面而复杂本身不是问题控制在合理范围内就行。YOLOV4把这么多trick塞进了一条训练管线依然能稳定收敛说明这些技巧经过作者的调参验证是兼容的——我们要做的更多是理解、采纳而不是恐惧。1.2 freebies包含哪些成员一张表看全YOLOV4训练管线里用到的freebies我按类别整理了一下这样你后面看原理的时候脑子里能有个地图类别具体技巧影响推理速度我的使用建议数据增强Mosaic、CutMix、MixUp、Random Erase不影响默认全开小目标数据必须开Mosaic训练策略余弦退火学习率、多轮训练策略不影响配合EMA用效果最稳数据归一化CmBNCross mini-Batch Normalization不影响单卡batch较小的时候很管用损失函数CIoU Loss不影响比GIoU稳边界框回归首选网络正则化DropBlock不影响大模型加小模型不加反而更好标签处理类标签平滑不影响类别数多、标签噪声大时开自对抗训练SATSelf-Adversarial Training不影响前50个epoch别开后期开1-2轮就够这张表不是论文的简单翻译是结合我自己训练经验后的结论。有些trick在特定场景下效果不是正的而是负的这个我后面会专门拿一节讲。2. 几个印象最深的trick拆解从原理到代码实现原理层面全讲可能会写成一本书我挑几个对精度影响最大、也最容易理解出偏差的技巧展开包括Mosaic数据增强、SAT、CIoU和CmBN。这几个分别代表了数据、损失、归一化三个维度YOLOV4的freebies体系也正是靠它们撑起来的。2.1 Mosaic数据增强把四张图拼成一张解决小目标稀疏问题Mosaic是YOLOV4提出时最吸引眼球的一个操作。原理不复杂从数据集中随机抽四张图每张做随机缩放、裁剪、色域变换后拼成一张新图。但代码实现里有一个很关键的细节——不是平均切四分而是先随机生成一个中心点由中心点决定四张图各自占多大区域。这样拼出来的图有的目标大有的目标小分布非常不均匀但贴近真实场景的尺度多样性。这么做到底解决了什么问题我自己的理解是它缓解了训练时小目标数量太少、上下文信息不够的问题。一张原始图里可能就只有两三个小目标训练时一个batch里小目标的总数非常有限。但Mosaic把四张图的信息塞进了一张图等于在不增加batch size的前提下让每个batch看到了4倍的图像内容和目标数量。而且因为做了随机缩放同一批目标在训练过程中会以不同尺度出现这相当于帮模型做了天然的尺度鲁棒性训练。实现上你可以直接用Darknet仓库里的data.c文件里Mosaic相关的逻辑用PyTorch复刻也不难核心伪代码大概是# 伪代码Mosaic拼接逻辑 def load_mosaic(image_inds, dataset): # 生成Mosaic中心点 cx random.uniform(0.5 * size, 1.5 * size) cy random.uniform(0.5 * size, 1.5 * size) # 依次加载四张图按中心点裁剪并粘贴到对应区域 for i in range(4): img, ann dataset[random.choice(image_inds)] # 根据中心点决定放左上/右上/左下/右下 # 同时做随机翻转、缩放、色域调整 output_image[对应区域] transformed_img # 对应地调整边界框坐标和宽高 return img, anns这里有个我在实操中踩过的坑如果四张图里有一张是纯背景没有目标这轮训练的loss可能波动特别大。因为其他三张图的目标位置都在有效区域但背景那张会让模型产生这地方应该没有目标的错误预期。解决方式倒也简单抽样时尽量避开全背景的图或者给背景图随机加一块Cutout噪声区域。还有一点Mosaic处理后目标边界框如果跨了拼接缝YOLOV4的官方实现是直接把越界部分裁掉。不要觉得裁掉会损失信息实际上被裁掉的目标仍然是有效的负样本模型会从这个目标只露出一半中学会更鲁棒的特征。2.2 SAT自对抗训练让网络自己给自己制造困难SAT是YOLOV4里我觉得最有创意的一个trick但也是很多人最难理解的一个。它的思路说出来其实很简单在训练到某个阶段时让网络自己去修改输入图像生成一个它自己都认不出来的对抗版本然后用这个对抗图像再训一遍。具体流程分两个阶段。第一阶段网络前向传播得到特征图之后不更新网络权重只更新输入图像的像素值让网络对当前图片的预测置信度尽可能降低——相当于网络自己给自己做了一次破坏。第二阶段用被修改过的图像再走一次正常的前向、反向传播更新网络权重。这个过程会让网络学会在输入被恶意扰动的情况下依然能检测出目标。我一开始觉得这个操作有点玄学直觉上降低了模型置信度的图不是应该让训练变难吗后来想明白了这种难是有益的难。它逼迫模型去依赖真正区分目标的语义特征而不是走捷径去依赖背景纹理或者局部像素细节。这和对抗训练Adversarial Training的思想一脉相承只不过对抗样本不是外部生成的而是网络自己生成的所以叫自对抗。使用SAT有一个非常关键的经验不要从头就开始用。前几十个epoch模型还在学习基本特征你让它生成对抗样本它很容易把图像搅成一团噪声反而拖慢收敛。我的习惯是训练到一半以上再插入一轮SAT最多跑两个epoch就关掉精度通常会有一个非常直观的小跳升。Darknet在实现SAT时有一个细节它会保存第一阶段的梯度变化作为第二阶段的初始扰动并且在扰动图像时会限制像素值的变化范围避免破坏过猛。用PyTorch复刻时要注意第一阶段的反向传播一定不能更新权重很多人写到这里忘了挂requires_gradFalse或者用torch.no_grad()包错层级导致训练直接崩掉。2.3 CIoU Loss边界框回归为什么非它不可CIoU是YOLOV4选用的边界框回归损失论文全称是Complete-IoU Loss。相较于之前的GIoU、DIoU它多考虑了三个因素重叠面积、中心点距离、长宽比一致性。用公式表达就是$$ L_{CIoU} 1 - IoU \frac{\rho^2(b, b^{gt})}{c^2} \alpha v $$其中第一项是IoU损失第二项是预测框和真实框中心点的归一化距离c是两框最小外接矩形的对角线长度第三项是长宽比一致性惩罚。α是权重系数v衡量宽高比的差异。这个损失最大的好处我个人的体会是它让框的回归过程非常顺滑。GIoU有个问题是当两个框完全包含时IoU项是固定的梯度主要来自外接框区域收敛慢而CIoU在框重叠面积相同时还能通过中心点距离和宽高比把预测框拽向真实框的正中心。实测下来用CIoU训练YOLOV4前面几十个epoch的mAP上升曲线比用GIoU更稳定几乎不会出现前期loss降很快但框都歪着长的情况。不过在有些情况下CIoU需要小心。如果你的数据集里存在大量极端长宽比的框比如细长的杆状目标CIoU的长宽比惩罚项会放大误差导致训练初期框的形状震荡。遇到这种情况可以考虑把α的初始权重调小一点或者先降级用DIoU跑通后期再切回CIoU。2.4 CmBN小batch训练时保住归一化统计量Cross mini-Batch Normalization简称CmBN是YOLOV4对BN的一个改进。它的产生背景很现实目标检测模型通常输入分辨率高一块GPU放不下太大的batch而BN在batch很小时统计量会抖动得很厉害。普通BN在一个batch内计算均值和方差CBNCross Batch Normalization是把连续多个batch的数据统计量累计起来再归一化。CmBN是CBN的简化版它不跨batch累计统计量而是在一个batch内部把多个mini-batch的统计量做加权合并这样既能在batch较小时稳定归一化又不需要像CBN那样维护复杂的跨batch队列代码和显存开销都小很多。这张对比图可以直观感受一下几个版本的区别方法统计量来自显存占用训练稳定性适用场景普通BN当前batch低batch太小时差大batchCBN跨batch累计高好全连接层或特殊场景CmBNbatch内部多个mini-batch中小batch下较好单卡小batch训练我自己是用单卡训练YOLOV4的batch size最大也就能开到16到32用了CmBN之后明显感觉到训练后期的loss曲线比纯BN平滑。不过要说明白一点CmBN的效果是锦上添花如果你的GPU能轻松开到batch 64以上普通BN的效果其实也不差不必非要上CmBN。3. 把tricks组合成一条训练管线我完整跑通YOLOV4的配置与流程看完单个trick的原理下面进入更实际的问题怎么把它们配到一条完整训练管线上按什么顺序开、什么epoch开、开了以后该看哪些指标。我以自己在某工业零件检测项目上的训练流程为例给出一套可以直接参考的配置。项目背景是检测传送带上的金属零件数据集约两万张目标包括正常件、缺陷件、异形件三类小目标占比约35%。GPU是单块RTX 3090输入分辨率640x640。3.1 完整训练配置参考硬件、模型和数据增强这些都是可以提前定死的。我给的参数不是Darknet默认值是结合项目特点调过的你可以参考但不能照抄——数据分布不同最优配置一定有差异。配置项我的设置理由输入尺寸640x640零件尺寸中等小目标需要一定分辨率batch size24三台GPU跑72尽量大但单卡显存有限用CmBN兜底初始学习率0.00261按batch换算跟随论文的线性缩放经验batch越大lr越高学习率调度余弦退火总epoch 300后期平滑收敛比step式更稳Mosaic前80%的epoch开后期关掉让模型适应真实分布SATepoch 250-252 开一轮只开一轮防止过扰动标签平滑0.1有三分类标签噪声不多但平滑更稳损失函数CIoU框的回归质量要求高DropBlock只在backbone最后两层开模型不算大全开反而掉点EMA指数移动平均衰减0.9998对余弦退火和SAT都有稳定作用多尺度训练每10轮随机切换320~768配合Mosaic尺度鲁棒性更强有几个配置我想特别展开解释一下因为它们并不是照抄就能用的第一Mosaic后期要关掉。这是我反复验证过的操作。Mosaic拼出来的图跟真实图像分布有差异如果全程都开模型在验证集上可能会对单张未拼接图的尺度分布不适应。我在项目里观察到最后20%的epoch关掉Mosaic仅用普通的翻转、色彩抖动和随机缩放验证集mAP整体高了0.4到0.7个点。这个提升幅度不算大但在工业缺陷检测这种对召回率极其敏感的场景里非常关键。第二SAT不是开着就跑要在合适的时间点触发。官方默认有一种配置是每个epoch都做SAT的一部分但我试下来在250~252这个后期阶段集中做一轮效果最明显。为什么会这样因为前期模型语义特征还没完全分离开生成的对抗扰动大多是无效的高频噪声到后期特征已经成熟网络才能找到真正致命的弱点去扰动这个时候训练才是有价值的。第三余弦退火的收敛方式值得多说两句。很多人用余弦退火的时候习惯把学习率一直降到0最后模型参数变动极慢。我建议在退火最后保留一个很小的学习率比如初始lr的1%而不是彻底归零这样可以让模型在最后仍保持微调能力。配合EMA的话最终使用的模型参数不是最后一次迭代的结果而是过去N个迭代的加权平均这种参数做验证和推理通常比最后的原始参数更稳。3.2 从数据准备到训练完成的完整步骤配置说完了给一个可以照着做的流程。我尽量把每一步的关键动作和检查点都列出来。数据标注与格式转换如果你用的是LabelImg或CVAT工具最终导出要转成YOLOV4的格式——每个目标一行内容是class_id x_center y_center width height坐标是归一化到0~1的。这里非常容易踩的坑是坐标单位是否为归一化很多工具默认导出的是像素坐标直接放进Darknet训练loss会直接爆炸。计算anchor锚框YOLOV4需要预定义九组anchor。不要用默认的COCO锚框必须基于自己的数据集重新聚类。我一般用K-Means在训练集的标注框上聚类注意距离度量用IoU相关的距离而不是欧氏距离否则大框和小框混在一起聚类效果很差。# 命令行示例darknet自带工具计算anchor darknet detector calc_anchors data/obj.data -num_of_clusters 9 -width 640 -height 640 -show输出的9组anchor按面积从小到大排列填到配置文件的yolo层里。这一步对mAP的影响非常大尤其是你的目标尺寸分布和COCO差异大的时候。配置骨干网络与训练参数YOLOV4的cfg文件里需要把batch64、subdivisions8这类参数按你的显存调整。subdivisions是Darknet特有的概念表示一个batch分几次喂给模型更新。我训练时batch64、subdivisions4也就是GPU每轮前向16张图累计4轮梯度再做一次参数更新。这样既保证了一个batch的多样性又不爆显存。启动训练并盯紧loss曲线训练启动后前几个epoch的loss下降会非常快这是正常现象。但从第20个epoch开始你要关注两个值平均loss是否还在稳定下降以及验证集mAP是否在同步上升。如果loss降但mAP不动多半是过拟合信号——可以提前把Mosaic关掉或者加大随机擦除强度。训练结束后的模型选择与剪枝准备训练完别急着用最后一次的权重文件我习惯在每个epoch保存一个权重最后用验证集mAP最高的那一个分支做最终候选。如果是做嵌入式部署后面可能还要做通道剪枝和知识蒸馏这些步骤也是从候选权重开始做的。3.3 训练耗时与硬件要求心里有个预期很多新手在训练YOLOV4之前对算力没概念。我项目里两万张图、640分辨率、300个epoch单卡RTX 3090大概跑了两天半。如果数据量翻倍到四万张时间也差不多翻倍这是线性增长的。如果你只有一块消费级显卡比如RTX 3060建议把输入分辨率降到416batch再适当调小时间可以控制在一天多一些。显存占用方面batch64, subdivisions4情况下大概要9-10GB显存所以3090的24GB是绰绰有余的。如果显存只有8GB可以把分辨率降到416或者把subdivisions提高到8代价是训练会慢一些。4. 实战中我踩过的坑每个freebies都有它的双刃剑YOLOV4的freebies在标准数据集上被验证有效但拿到你自己的数据集上很可能出现水土不服。我在几个项目里都遇到过trick开与不开结果截然相反的情况挑几个印象最深的展开聊聊这些大概率也是你会遇到的。4.1 Mosaic把目标裁没了一半小目标AP反而下降我一直强调Mosaic对小目标友好但它对极小目标非常不友好。我的工业零件数据里有些零件在640分辨率下只有20x20像素Mosaic四图拼接时再做随机缩放如果它恰好落在缩小那张图里就变成了大约10x10像素——这个尺寸已经低于YOLOV4特征图的有效感受野了模型基本学不到有效特征。我当时的处理方式是把Mosaic的缩放范围从论文的 0.5~2.0 收紧到 0.7~1.5牺牲一点极致尺度多样性换来小目标不会被过度缩小。同时在Mosaic拼接时如果某张图被缩得太小导致大目标也变成小目标这个样本对模型的扰动会比较大我干脆给Mosaic加了一个规则每张图的边长缩放不低于原图0.6倍。改完之后的小目标APAP_s反而提升了2.3个点大目标的AP也没掉。这说明trick的参数绝不是越激进越好需要根据你的目标尺寸分布去寻找那个甜点区。4.2 SAT开得太早把训练曲线打出一个大坑有一次我为了赶实验把SAT从第40个epoch就开始结果那个项目的训练loss曲线在第40到45个epoch之间出现了一个非常明显的反弹mAP也掉了近一个点。虽然之后又慢慢涨回来了但最终收敛水平比不开SAT还低。原因我刚才提过早期模型的特征还不够鲁棒网络生成的对抗扰动过于随机这种扰动对于训练不仅没有正则化效果还会干扰模型对基本形状的建模。我在后来的项目里统一遵循一个原则SAT至少要在总epoch的70%之后开且持续时间不超过总epoch的10%。宁可不加也不要乱加。还有一个容易被忽略的点SAT期间要降低学习率。我一般会把学习率临时降到当前值的0.5倍让模型对抗地学习防守技巧时不要步子迈得太大。这算是实测出的小偏方效果还挺明显。4.3 标签平滑在类别不均衡的数据上反而会掩盖置信度差异标签平滑的基本思路是把硬标签0/1替换成软标签比如把1替换成0.9希望模型不要过度自信。如果你有很多类别且标签噪声比较大这个方法通常有效。但我的缺陷检测项目里正常零件占了80%缺陷零件只有5%天然不均衡。在这个场景下标签平滑会让模型对正常类别的预测从一个非常高的置信度下降一些虽然数值上差异不大但下游的决策系统往往依赖置信度阈值来触发报警。我试过把标签平滑从0.1降到0.05甚至0发现mAP没有明显变化但高置信度段的precision有轻微改善。于是我把信任阈值调高用0.05的轻度平滑保住了决策系统的稳定性。4.4 DropBlock不是加了就赚小模型的容量容不下正则化DropBlock是YOLOV4在backbone中使用的正则化手段它在特征图的一个连续区域里随机删掉神经元迫使网络不依赖局部连续区域的特征。这是个很强大的正则化但如果你的模型本身已经很小或者你的目标特征本身就不够冗余DropBlock会直接把有效信息也删掉。我在一个小型检测项目中把backbone换成了更轻量的结构第一版CFG里保留了DropBlock结果训练完mAP只有预期的一半。排查了很久最后把DropBlock概率从0.9降到0.3mAP立刻回升了好几个点。后来想明白了小模型的参数容量本身就有限特征图每个通道携带的信息更珍贵强行用大比例连续遮挡等于让模型从残缺特征里硬学效果自然适得其反。这件事给我的教训是freebies列表里的每一项都是针对特定模型规模和数据规模调出来的换模型、换数据时一定要重新评估每一项的开与关而不是无脑焊死在配置文件里。5. 如何判断你加的这些trick真的在起作用验证思路与指标解读训练加了这么多trick最后怎么判断它们到底有没有用、起了多大作用很多人只看最终mAP这不够。我分享一下自己惯用的验证方式不需要复杂的工具普通训练日志加简单的脚本就能实现。5.1 用消融实验的思路做“开/关”对比最直接的方法是AB测试在完全相同的模型结构、数据、优化器设置下分别开启和关闭某个trick各训练一个模型对比mAP。但如果你有多个trick同时开一次只动一个变量才能归因出是哪个trick起的作用。实际操作时我一般分两轮验证以总epoch数的三分之一作为一把基准。基准组从头到尾不开启任何freebies只用基础的数据增强和momentum优化器训练实验组在基准组基础上按顺序叠加Mosaic、CIoU、SAT等。每跑一个配置记录验证集mAP和loss曲线。5.2 关注AP的分布而不只是总mAP总mAP把各类别和大/中/小目标的AP混在一起很容易掩盖问题。比如Mosaic对小目标有用但大目标AP可能反而下降总mAP如果刚好抵消为零你就以为Mosaic没用。所以一定要分别看AP_s、AP_m、AP_l以及每个类别的单独AP。我训练完成后会做一个小脚本把验证集中所有检测结果按目标尺寸分组计算分组AP。表格形式大概是这样目标尺寸类别A AP类别B AP类别C AP小目标32x320.4280.3150.102中目标32x32~96x960.7310.6680.397大目标96x960.8120.7540.588如果小目标AP特别低就考虑强化Mosaic、多尺度训练这类针对性trick如果某个类别AP低就要检查是类别不均衡还是标注混乱而不是盲目加数据增强。5.3 用训练中途的mAP曲线判断trick的时间窗口另一种我很依赖的方法是记录每个epoch的验证mAP并画曲线看trick在哪些阶段起了主导作用。比如Mosaic的效果在epoch 30~100之间增长最快SAT的效果体现在epoch 250~260之间所以如果你在epoch 200之后看曲线会觉得SAT是唯一功臣但如果你把曲线放长到全周期就能看到Mosaic带来的基线抬升。我个人的体会是mAP曲线比loss曲线更有参考价值。loss曲线降到一定程度后会长期平坦对trick的响应不够灵敏mAP曲线则对每个trick的开启时间点都有明显反应是更直观的验证工具。5.4 部署端的最终验证P-R曲线和置信度阈值最后提醒一点训练时候看mAP但项目上线时你真正关心的是在某个置信度阈值下的精确率和召回率。不同trick组合训练出来的模型即使mAP相似P-R曲线的形状也可能完全不同。有些模型mAP不错但在高置信度段0.5以上precision很高、recall偏低有些模型则相反。我一般会在验证集上画出P-R曲线然后根据业务需求找一个平衡点作为最终阈值。比如缺陷检测是宁可多报也不能漏报那就在召回率先满足85%的条件下选择precision最高的阈值。这个环节不需要再训练只是对权重做一次推理和统计但往往能救回不少实际效果。6. 对freebies体系的理解总结与个人使用建议YOLOV4的bag of freebies不是一堆孤立技巧的简单堆叠它背后有一个完整的逻辑训练阶段引入的一切复杂性都应该以不增加推理开销为前提并且要能真正提升泛化能力。数据增强和自对抗是在喂什么上做文章损失函数是在怎么学上做文章归一化策略是在学得稳不稳上做文章。三个维度合在一起才形成了一个完整的freebies体系。我在不同项目里反复使用这套体系之后逐渐总结出几条个人经验提供给大家参考第一先建立基线再叠freebies不要一上来就全开。很多trick之间有协同作用但也可能互相干扰。先把最基础的训练管线跑通拿到一个不算差的mAP再逐步叠加上去每一步都能看到可量化的收益。这样即使某个trick在你的数据上无效你也能及时摘掉它。第二freebies不是给所有模型准备的。小模型、小数据、简单任务开太多freebies反而会掩盖模型本身的能力短板。我的经验是如果数据只有几千张或者任务本身很简单基础增强加CIoU就够了数据量达到几万张、场景复杂、目标尺度差异大才有必要把Mosaic、SAT全套用上。第三同一套freebies在不同项目里的最优参数几乎都不一样。Mosaic缩放范围、SAT开启时机、标签平滑系数这些都要根据你的数据分布去调。把训练当成一个实验系统去对待每次只改一个变量记录效果你的模型就会越训越懂你自己的数据。最后说说我对YOLOV4整个trick体系的整体感受它真正让人眼前一亮的不是某个技巧有多强而是传递了训练策略也可以被当作模型设计的一部分这个理念。现在很多新出的检测框架backbone和head的架构已经卷得差不多了真正能拉开差距的反而是这些不增加推理开销的免费赠品。在你考虑换一个更大的模型之前先把这套freebies调好可能是性价比最高的精度优化路径。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。