
做智能拖拉机环境下的车辆检测与识别和做城市自动驾驶感知完全是两码事。城市道路的障碍物再复杂好歹有清晰的车道线、红绿灯、标准化的车辆外形田间地头是另一番光景——扬尘一起逆光一下远处开过来的运粮车在麦茬背景里几乎和地垄线融为一体低速三轮车从视野边缘窜出来时往往已经只有几十米距离。这个项目做的就是“智能拖拉机环境中的多类别车辆检测与识别”核心技术方案是在Mask R-CNN基础上做了针对性改进目标是让农业装备在田间作业时能够实时、准确地感知周围车辆与人员为自动避障和多机协同作业提供视觉依据。整篇我会把项目从需求拆解、方案选型、模型改进、数据标注、训练调试到部署优化完完整整捋一遍重点讲清楚每一步为什么这么做以及实操中那些文档里不会写、但踩过坑才懂的细节。无论是准备入坑农业视觉感知的开发者还是已经在做目标检测和实例分割、想了解落地场景差异的工程师这篇文章都能给你一套可以直接参考的完整思路。1. 智能拖拉机场景的检测难点远比想象中多很多做视觉检测的朋友第一反应是“这不就是钢筋水泥城市里的目标检测换了个场景嘛”真进入农业装备领域后你会发现这个场景对算法的考验是全方位的不是简单拿现成模型跑一遍就能用。1.1 智能拖拉机需要识别的不只是“车”拖拉机在田间作业时周围出现的移动目标种类其实很杂。常见的有运粮车收割机作业时跟在旁边的运输车辆、喷药机、小型三轮车、皮卡类工程车还有同型号的其他拖拉机。除了机动车辆还有一个绝对不能漏掉的目标——人。无论是田间劳作的农民还是随机进入作业区域的人员在农机自动作业场景里都属于最高优先级的安全目标。这个项目最终把检测类别定为“多类别车辆人员”车辆类别下面细分了几类农业作业中最常见的车辆形态人员单独作为一类。为什么要做多类别而不是笼统一类“障碍物”因为拖拉机需要根据目标类别做出不同的决策逻辑遇到运粮车可能是正常的作业协同需要保持距离等待或对接遇到横穿的三轮车需要紧急减速遇到行人则必须立即制动并发出声光报警。类别的细节直接影响到控制策略识别粒度太粗根本没法支撑上层逻辑。还有一类容易被忽略的目标是半静态物体比如秸秆打包机留下的草捆、田埂上的水泥墩。它们不是车辆但外形、颜色在某些光照条件下和车辆非常接近经常造成误检。这个项目里它们被当作背景干扰来抑制而不是单独建类别因为误检的主要压力就来自这些“长得像目标”的静态物。1.2 田间光照、动模糊和背景纹理带来的三重挑战先说说光照。田间的光照极端情况比城市道路频繁得多清晨和黄昏的斜射光会让车辆在视野里形成大面积的浓重阴影和强烈逆光轮廓中午的强阳光直射下白色运粮车对着太阳面的窗玻璃会产生严重的过曝区域扬尘和秸秆碎屑在光线中散射整个画面像蒙了一层磨砂玻璃。在这些条件下车辆的外形特征会被大幅削弱仅靠颜色和纹理做判断的轻量模型基本会失效。然后是运动模糊。拖拉机在田间行驶时的振动是持续的剧烈颠簸让画面产生随机抖动同时作业场景中车辆和拖拉机之间存在相对运动低速目标在曝光时间内会产生拖影。如果采集的数据里模糊样本占比较高而模型没有针对性的处理机制训练出来的检测器在模糊帧上的表现会明显退化。最麻烦的是背景纹理干扰。大田作物小麦、玉米、棉花在长势中期时会在图像里形成非常密集、方向性强的纹理结构这种纹理和远处车辆的边缘特征交织在一起会让特征提取网络产生大量多余的响应。特别是在玉米拔节期一行行的垄线在视觉上几乎是平行的长直线段背景中这些结构化纹理很容易被浅层特征当成边缘候选增加误检率。尺度差异也是硬骨头。同一帧画面里可能近处有一辆清晰的三轮车占了大半个画面远处同时有一台联合收割机只有十几个像素高。经典检测模型在这类跨尺度场景下通常会顾此失彼改进模型在特征融合和锚框设计上必须专门做适配。这也是为什么直接拿通用预训练模型到农机场景里跑mAP大概率不理想——问题不在模型本身而在数据特征和场景分布根本对不上。2. 方案选型为什么最终锁定Mask R-CNN这条路目标检测领域的方案很多单阶段的YOLO系列迭代速度快、部署方便为什么这个项目偏偏选了Mask R-CNN这种“重武器”决策过程其实是经过反复对比和场景约束推演的。2.1 两阶段实例分割模型在复杂场景下的精度底气Mask R-CNN是典型的两阶段检测框架。第一个阶段通过区域提议网络RPN从特征图中选出可能包含目标的前景区域生成候选框第二个阶段对每个候选框做精细的类别判别、位置回归同时通过一个并行的掩码分支输出逐像素的实例分割结果。这里有个关键技术细节值得展开Mask R-CNN用ROIAlign替换了Faster R-CNN里的ROIPooling。ROIPooling在做区域池化时会把候选框的坐标取整导致在特征图上的位置和实际位置产生偏移对检测框定位还能忍但对要求像素级精度的掩码分割来说是致命伤。ROIAlign取消取整操作直接用双线性插值在浮点坐标上采样保证了特征图上的每个点都能精确定位到原图的对应区域。这个对齐精度在后续分割车辆轮廓时作用非常大。选择Mask R-CNN还有一个容易被忽视的理由掩码分支不仅仅是输出一个“好看的分割结果”它本身就在倒逼模型学习目标更完整的形状语义。分支允许网络在训练时共享低层的位置和纹理特征同时要求高层语义能够还原目标的精确边界。这种多任务联合训练机制让模型学到的是“这个目标长什么样”而不只是“这个目标在哪里”在遮挡、截断、模糊场景下这种形状语义对类别判断有很强的纠错作用。2.2 和单阶段模型对比后的取舍逻辑YOLO系列在速度和部署便利性上天然有优势这个项目在方案评估阶段也确实认真跑过对比。单阶段模型直接在特征图上回归目标的类别和位置不需要两阶段那样的密集候选框筛选流程推理速度快一个量级。但在农业场景里这个项目对精度的容忍度很低——误检导致的车辆急停、漏检导致的碰撞风险都是不可接受的结果。具体对比下来YOLO类模型在小目标、遮挡目标和密集目标场景下的漏检率明显高于Mask R-CNN。原因在于单阶段模型缺少ROIAlign这样的精细网格采样步骤对小目标的特征表达比较粗糙同时YOLO的标签分配策略在目标高度重叠时会比较激进容易把两个紧密相邻的目标合并成一个。Mask R-CNN的代价是推理速度偏慢。但智能拖拉机本身就搭载了高性能工控计算机距离纯边缘端低功耗部署还有一段缓冲期这个项目在“精度优先、算力允许”的大前提下选择两阶段实例分割模型是合理的工程决策。顺便说一句如果未来要迁移到较低算力的边缘设备完全可以把改进后的模型用蒸馏、剪枝等手段压缩后迁移到单阶段框架这是另一个话题。2.3 掩码输出的额外工程价值很多做目标检测的人会忽略一个点Mask R-CNN输出的像素级掩码在智能拖拉机的后续决策中不只是用来“画个框”。掩码能够提供精确的目标边缘轮廓这对上层路径规划模块非常有用——拖拉机需要知道前方车辆在图像中的确切占用区域通过相机标定可以反算到世界坐标系里判断目标的体积尺寸和相对位置变化趋势从而预测碰撞时间。此外掩码的连续帧变化还能辅助判断目标的运动状态。车辆如果静止掩码轮廓的逐帧差异很小车辆移动或转弯轮廓变化会呈现明显的不规则性。这些信息为轨迹预测提供了比单纯矩形框更鲁棒的特征来源。所以选择Mask R-CNN不是杀鸡用牛刀而是这个场景确实需要从像素级层面理解目标。3. 改进模型设计思路与核心实现基线模型确定后真正花精力的是围绕农业场景做针对性改进。这个项目的改进策略不是推翻重来而是在已经成熟的Mask R-CNN骨架上做精准的“外科手术”每一处改动的出发点都对应前面分析过的场景痛点。3.1 主干网络增强CBAM注意力模块的引入模型主干用了ResNet50FPN的组合这是Mask R-CNN的经典配置。ResNet50的残差结构在特征提取上已经很成熟但田间场景的特征响应存在严重的“信号淹没”问题——车辆目标在复杂纹理背景中产生的特征幅值并不比背景纹理的响应高多少。如果网络平均对待所有通道和空间位置检测头很容易被无关特征干扰。改进方案是在FPN的每一层特征映射输出后插入轻量级的CBAM模块。CBAM由两个顺序子模块组成通道注意力子模块和空间注意力子模块。通道注意力机制对特征图的每个通道计算一个重要性权重相当于在问“哪些特征通道包含了目标相关信息”然后放大有用的通道、压制噪声通道空间注意力机制则对每个空间位置计算权重相当于问“哪个位置的特征值得关注”让网络把注意力集中到目标区域而不是背景纹理上。这里有一个实操经验可以分享CBAM在FPN的高层特征上比如P5、P6层的收益最明显因为高层特征语义更加抽象背景纹理干扰在高层也非常强而底层特征P2层主要是细节边缘加了CBAM之后提升不大有时反而会引入额外的计算开销。所以实际改进中我建议只在P3到P5层加CBAM底层保持原样这样精度收益和推理耗时能取得更好的平衡。3.2 针对小目标与模糊目标的专项处理前面提到田间多尺度问题严重尤其是远距离小目标。Mask R-CNN的FPN默认从P2P6层做特征金字塔P6层是最后一个下采样层主要承接大目标小目标则依赖低位高分辨率特征层。但ResNet50的下采样倍数从输入到P2层已经缩小了4倍再往上每层翻倍小目标的可用像素面积本来就小经过多层下采样后特征几乎被磨平。改进方案有两个维度。一是增加高分辨率特征层的利用率在FPN中让P2层直接参与最终的检测和分割同时加强P2层和P3层之间的跨层融合让小目标有更充足的细节特征可用。二是调整RPN的锚框尺度默认参数是按COCO数据集的物体尺寸统计的对田间车辆这种“大目标很巨大、小目标极小”的分布并不适应。经过统计自己数据集中目标的宽高分布后把锚框添加了几个适合中远距离车辆的长宽比例并把小尺度锚框的数量往前提保证了RPN在前景提议阶段就不会漏掉小目标。运动模糊问题的处理靠的是数据增强。训练时除了常规的随机翻转、随机裁剪针对性加入随机运动模糊模拟和随机高斯噪声。做运动模糊增强时要注意核大小和方向的控制模糊强度太大反而会破坏目标的基本轮廓让模型学到错误特征。实测下来模糊核大小在5×5到9×9之间、方向随机但倾向于水平方向因为拖拉机行进方向以水平移动为主效果最好既能大幅度增加模糊样本的多样性又不会把训练过程带偏。3.3 检测头、掩码分支与损失函数的联动改进检测头部分做了解耦设计。原始的Mask R-CNN检测头中分类分支和回归分支共享同一组全连接层这在目标类别差异很大的场景中会产生互相干扰。项目里把分类分支和回归分支拆开各自使用独立的隐藏层框位置回归的质量提升明显特别是在轮式车辆和履带式车辆外形差异大的情况下回归稳定性提高了。掩码分支改进的重点是分辨率。默认RoIAlign输出尺寸是14×14掩码分支再上采样到28×28输出。对于车辆这种需要精细边界的类别14×14的中间特征太粗糙细化到28×28之后边缘锯齿还是明显。提升到28×28中间分辨率输出56×56掩码后车辆边缘的分割精度有明显提升代价是掩码分支的计算量略增。考虑到车辆轮廓对后续路径规划的重要性这个算力增加是值得的。损失函数方面Mask R-CNN的总体损失是分类损失、框回归损失、掩码损失三个部分之和。掩码损失部分用了平均二值交叉熵由于农业场景中车辆类别的面积差异极大远处的收割机整幅掩码可能只有几百个像素近处的拖拉机则有几万个像素我加入了针对性的类别平衡权重避免大目标在掩码损失里占据主导地位小目标的掩码学习被边缘化。核心实现梳理完后训练效果的提升是渐进式的。需要特别强调的是逐项消融实验很重要不要一次性把所有改进全部堆上去否则出了问题根本不知道是哪一项改坏了。正确的做法是基线跑通后一次只加一个改进点记录每个阶段的精度变化这样最终的模型性能提升路径是清晰可追溯的。4. 数据采集与标注实操决定模型上限的隐形工作模型结构再先进数据质量不行全白搭。农业场景数据的采集和标注是这个项目周期里耗时最长、最枯燥、但也最决定成败的环节。4.1 采集方案与安装视角设计采集装备的安装位置直接决定了视角特性和目标外观表现。参考实际智能拖拉机的传感器布置方案相机装在驾驶室前挡风玻璃上方的居中位置这个视角最接近驾驶员观察习惯能看到前方较大范围的场景同时视线高度比小型车辆高不少有利于看清目标顶部轮廓对远处目标和近处目标的尺度差异也最合理。采集时段覆盖上花了大力气。数据覆盖了清晨、上午、正午、下午、黄昏和夜间灯光照明几个典型时段。夜晚场景不指望靠可见光相机做完全可靠的检测但夜间灯光下的车辆轮廓和反光特征还是值得让模型见一见有助于在多传感器融合时提供冗余信息。气象条件方面则涉及晴天、阴天、轻微雾霾和扬尘条件。采集时的行车路线设计也有讲究。不是在田间随便跑几圈就完事而是覆盖了以下几种典型工况直线行驶、转弯掉头、倒车接近目标、两机交会、同向并行作业。不同工况下车辆出现在视野中的位置、角度和速度完全不同模型如果只见过正前方来车遇到侧向靠近的三轮车就会不知所措。4.2 像素级标注规范与质量管控多类别实例分割的标注工作量是纯检测框标注的好几倍。标注工具选用的是开源图像标注软件中比较成熟的方案支持多边形轮廓标注、自动插值生成掩码效率比纯手动逐点描边高不少。标注规范制定是数据组最花时间的工作尤其要统一几类边界情况的处理标准目标被遮挡超过50%时仍然要标注完整轮廓让模型从可见部分推测整体形状目标超出图像边界时标注裁剪后的可见部分距离极远且像素面积小于20×20的目标不标注避免噪声标签干扰阳光下强烈反光导致目标大部分区域过曝时只要还能凭轮廓判断类别就标注否则跳过该帧。文本无法替代试错标注规范的迭代调整了三个版本才最终稳定下来。从标注质量维度看定期抽检是必需的。抽检时把同一帧的标注结果交给不同标注人员重新标注对比两版标注之间的IoU差异IoU低于0.7的样本打回重做。这个抽检效率不高但非常关键是保证掩码质量稳定的底线。4.3 数据增强与类别不平衡处理原始采集数据量完全不够训练一个深度分割模型数据增强是必须的。除了常规的翻转、旋转、缩放、色彩抖动这个项目里的增强策略更“场景化”。例如田间扬尘会让画面整体变灰变白增强时就有意识地随机降低对比度、叠加均匀雾化效果车辆在阳光直射下会产生长阴影增强时会在目标底部随机生成形状随机的阴影区域模拟真实光影。类别不平衡问题也很明显运粮车和三轮车出现频率高皮卡出现频率低行人更是偶尔出现。处理方法上直接简单地用复制粘贴过采样的方式处理低频类别这个方案是最简单有效的但要注意生成样本的多样性防止模型对特定背景过拟合。重采样的概率和每个类别的权重根据训练集类别的统计数量逆序设定经过两轮迭代修正后效果稳定。5. 训练环境配置与参数调优实战训练阶段是理论落地的地方也是有最多“我以为”被现实教育的地方。这个项目用了常见的主流传深度学习框架进行训练单卡训练和微调流程都比较顺畅。5.1 硬件环境与预训练策略训练硬件用的是消费级和中端专业显卡显存容量决定了能否跑大批量训练和高分辨率输入一般建议显存至少在11GB以上图像输入尺寸设定为1333×800级别时单卡batch size在24之间是可以连续训练不爆显存的批量过小会引入较多噪声批量过大的话内存和显存又吃不消这个配置是参数量和显存容量的一个折中。预训练权重是最关键的起步资源。使用在大型公开数据集COCO上预训练过的权重进行迁移学习对于农业场景是收益最高且成本最低的做法。COCO数据集里包含车、人之类的基础类别网络在预训练阶段已经学会了底层边缘纹理特征这些特征迁移到田间车辆上时完全可以直接复用。训练时采用两阶段冻结策略第一阶段冻结主干网络参数只训练FPN、检测头和掩码分支学习率设得较小跑大概几百个迭代让新增模块先适配已有特征等loss下降到稳定平台后第二阶段解冻主干网络的靠后几个Stage全网络微调学习率降到更低。这个过程其实就是先让检测器学会用已有的特征再去微调特征提取能力本身效率比一上来就全网络训练高很多。5.2 关键超参数的调试记录学习率设定上有一个值得分享的实用经验batch size变化后学习率也要按比例调整学习率是线性缩放关系。batch size从2调到8时学习率不跟着调整的话模型容易在低学习率下收敛速度过慢或者在高学习率下震荡不收敛。锚框参数方面原始RPN设置是在COCO统计分布基础上设定的但田间车辆比例和COCO差异很大。我自己统计了标注数据集中目标宽高比的直方图发现多数车辆宽高比集中在1:0.8到1:2.5之间而COCO的默认锚框对长条形目标覆盖不足。于是把锚框长宽比调整为三组值并针对远距离小目标增加了最小尺度锚框的数量。这个改动对小目标召回率的提升非常明显加了之后小目标类别的AP从个位数涨到两位数水平。RPN的NMS阈值和每张图提议框数量也做了调整。田间场景目标密度低于城市道路每张图的目标数量一般不超过10个把NMS阈值适当放宽后RPN的召回率提升同时提议框数量也可以适当调低减轻第二阶段的计算压力。5.3 训练过程中的收敛判断与问题现象训练过程里监控的是训练集损失、验证集mAP和PR曲线。一个明显的坑是训练损失下降得很漂亮但验证集mAP一直不涨后来排查发现是数据增强里的随机擦除范围设得过大把太多有效目标区域抹掉了模型学的是“在残缺图像中凭运气认目标”而不是“稳健地识别目标”。把擦除比例从默认值下调之后验证集mAP回升明显。还有一个在农业场景下特有的现象模型对“人骑三轮车”这种混合目标容易懵。因为数据采集时三轮车在田间出现时普遍有人骑乘模型会同时检测出三轮车和行人两个目标两个框互相重叠且类别置信度交替波动。针对这个现象把这类目标在标注阶段统一规范为只标注车辆本体人员若在车辆上坐骑则不单独标注。这是一个典型的标注规范影响训练行为的案例。最终在测试集上的精度表现对比基线模型的提升是系统性的。以常见的评价指标来衡量改进后的模型在总体mAP和掩码mAP上都有明显优势其中小目标类别和模糊帧子集上的提升最显著。这个进度不是一蹴而就的中间迭代了多个版本每版都有自己的问题定位、修改假设、上线验证的过程。6. 部署落地识别精度到实时响应之间的最后一段路模型在服务器上跑得再准装到拖拉机上变成能实时响应的感知模块中间还有很长一段工程路要走。这个环节的工作不性感但恰恰决定了整个视觉系统能否真正用起来。6.1 推理加速与模型压缩Mask R-CNN这种两阶段模型直接部署到车载工控机上的帧率是不够理想的单帧推理时间太长无法满足实时决策需求。第一步是推理框架的优化使用专业的深度学习推理加速引擎通过算子融合、层融合等手段把部分计算合并减少不必要的中间张量读写。支持FP16半精度推理和INT8量化推理精度损失的评估非常重要。农田场景中目标特征和背景差异不够极端量化后掩码边缘会变粗糙在量化精度选择上需要认真评估如果对分割精度要求高就保FP16如果目标尺寸本身较大、对边缘细节不敏感就可以尝试INT8。模型剪枝也是可以用的手段。剪枝的粒度不是对卷积核一刀切而是结合通道重要性和FPN层的重要性评估优先裁掉对识别贡献小的通道。实测下来通道重要性评估后的剪枝方案能把计算量压缩到六成左右mAP掉点控制在可接受范围内做到了精度与速度的有效平衡。6.2 车载设备上的延时优化策略车载设备端的一个隐藏瓶颈是摄像头采集和图像预处理。摄像头推流存在一定的网络或USB带宽开销图像缩放、归一化操作如果放在CPU上做会把前处理耗时拉得很高。实际工程中把图像解码、缩放、颜色空间转换等前处理都放到GPU上执行通过异步流水线让推理和前处理并行帧率提升了将近一倍。在时序上还要注意输出结果的稳定性。单帧检测结果会有波动直接拿单帧结果触发控制策略容易被瞬间误检干扰。落地时给目标跟踪模块留出了接口通过简单IoU匹配加卡尔曼滤波平滑目标的状态信息检测置信度连续多帧高于阈值才确认目标存在。这个策略显著降低了误触发的风险。6.3 终端算力受限时的降级方案如果最终目标设备算力不够跑完整版改进模型项目里还预留了一个简化分支将掩码分支在部署时旁路掉只保留检测框输出作为紧急避障的最小感知配置。这样虽然丧失了轮廓信息但核心的类别识别和位置感知能力依然保留。平时全精度运行处理性能不够的时候动态切换到检测-only模式保证基础安全功能不中断。这个设计思路其实很实用做工业级视觉系统永远要有一个“保底模式”不能因为算力波动让整个感知系统直接瘫痪。7. 常见问题速查与排查思路整理把项目中实际踩过的典型问题整理成速查表方便后续调整模型或复现项目时快速定位少走弯路。现象可能原因排查方向解决参考训练损失不下降学习率过高或数据增强过强先固定增强只看原图损失再逐步恢复增强降低学习率缩小增强强度上限验证集小目标AP低锚框尺度不匹配特征层分配统计目标尺寸分布检查小目标所在特征层针对性的锚框尺度和高分辨率特征层参与检测掩码边缘锯齿严重掩码输出分辨率过低检查ROIAlign输出尺寸和掩码上采样倍数提高掩码中间分辨率细化边缘输出夜间场景漏检严重可见光数据不足、图像过暗检查夜间数据数量和亮度分布增加夜间采集数据必要时结合红外或雷达融合背景田地虚检高背景纹理与目标边缘相似检查是否有稻草堆、草捆等干扰物频繁出现补充干扰物负样本调节前景建议框阈值目标在模糊帧上类别摇摆模糊数据增强不够或过度检查模糊核大小与方向多样性调整运动模糊增强参数增加模糊样本比例人骑三轮车目标混乱标注规范不统一检查同帧多目标标注一致性统一技术规范车上人员不单独标注模型部署后帧率低前处理未异步、算子未融合观察各阶段耗时占比做GPU前处理异步流水线上推理加速和量化7.1 我踩过最深的三个坑第一个坑是不要拿通用场景的锚框参数直接开训。COCO数据集的目标尺度分布和田间车辆完全不在一个量级上用默认锚框训练模型会在训练初期就缺失对小目标的敏感度后续补救事倍功半。强烈建议任何新场景的第一件事就是统计自己数据集的目标大小和宽高比分布再定锚框。第二个坑是田野场景里的负样本喂起来非常快但绝不能只喂“纯背景”。纯背景没有目标局部特征模型不会把背景中的局部纹理误判为车辆真正有效的负样本是“有局部车特征但没有完整目标的区域”比如只露出车顶、被秸秆遮挡的挡泥板、草堆间的反光碎片。这类难负样本才是抑制误检的关键。第三个坑是迁移学习不是越解冻越多越好。图层解冻的层数要从少到多逐步试一次解冻太多层会让预训练特征的稳定性被破坏特别是在农业数据量不够大的情况下特征很容易被数据噪声带偏。实测中解冻最后23个Stage是收益和稳定性的平衡点解冻太深反而让mAP掉点。7.2 从这个项目沉淀下来的调试经验模型改进不是越快越好而应该按照“先定位病灶再对症下药”的节奏推进。每次只引入一个改动点用消融实验记录它带来的真实增益再决定是否保留。这种做法虽然慢但整个模型的每一项性能都经得起推敲。遇到精度瓶颈时先排查数据层面的问题再动模型结构。模型结构方面能做的调整有限数据分布、标注质量、难例挖掘这些层面的改善往往效果更直接。很多团队在模型上耗了一个月没有进展回头看一眼数据集发现不少标签类别混淆的低级错误这类问题浪费的时间比想象中多得多。这个智能拖拉机环境下的多类别车辆检测与识别项目最终交付的不仅是一个改进后的Mask R-CNN模型更是一整套围绕农业视觉场景的数据规范、训练策略和部署方案。个人体会最深的是这个领域对模型的精度要求几乎是没有妥协空间的因为漏检一个行人、误判一台收割机的代价都不是离线评测指标能体现的。从实验室精度到田间真正敢用的感知系统中间的距离比很多做纯算法的人想象的要远。但也正是这些“不起眼”的工程细节构成了农机视觉系统最坚实的可靠性底座。后续如果再扩展我会优先考虑把改进后的模型迁移到更轻量的单阶段框架上做端侧部署以及在多传感器融合摄像头与雷达数据关联的方向上继续往下挖。