五月中旬的烤烟田,无人机离地二十米飞一趟,五十分钟带回八百多张航拍图,接下来要做的事情是在这些上千万像素的影像里数清楚——地里到底出了多少棵烟苗。六百亩地,靠人眼走田堪,三个人走一整天,最后给出的还是一个"大概、差不多"的估算区间。这不是数字游戏,这是烟草出苗率识别项目从一开始就要解决的问题。我参与整理和训练的这套数据集,就是围绕无人机巡检加深度学习目标检测,把烟草出苗率从"估"变成"测"的完整落地记录。
这套数据的核心载体是烟草植株出苗率识别数据集,按YOLO格式组织,同步适配RT-DETR和YOLO系列模型。前前后后整理了10545期的批次编号,含义就是这一期项目收到并完成清洗标注的一万多张无人机航拍样本。文章内容覆盖无人机采集参数设计、标注规范、数据增广思路、RT-DETR与YOLO的训练对比、业务指标转换以及大量实测踩坑经验。适合正在做智慧农业视觉落地、无人机遥感数据处理、或者刚接触小目标检测数据集的朋友参考,不管你是自己标注数据还是想复现整套出苗率识别流程,下面这些细节都能直接用。
1. 项目拆解:为什么需要无人机巡检出苗率
在开聊数据集和技术方案之前,先把业务问题讲透。很多人觉得出苗率识别不就是个目标检测吗,拍张照片数一数就行。真下地干过一遍就知道,这件事远没这么简单,而且它背后有一套完整的农业经济逻辑。
1.1 出苗率是烟叶生产的"第一道成本线"
烟草移栽期是整个生产周期里最敏感的环节。移栽后十天到二十天内,苗是否成活、是否出齐,直接决定了后续的补苗成本和大田管理的节奏。如果出苗率低,缺苗位置没有及时补上,后期即使补了,不同苗龄的植株长势不一致,采收期也会被拉得很散,烘烤环节的排班、用工、能耗全部跟着乱。
补苗的成本没下过地的人很难体会。一个标准的移栽孔位,从打孔、放苗、浇水到覆土封口,人工成本、用水成本、地膜开口的二次作业,层层叠加。按一亩地一千二百个孔位算,缺苗率每增加一个百分点,每亩就要多出十二个补苗动作,六百亩地就是七千多个,这还只是移栽阶段的一次性支出,没算后续因大小苗导致的管理成本差异。所以尽早、尽量精确掌握出苗率,是整个烟草生产数字化里性价比最高的一个环节。
传统做法是怎样的呢?烟技员带着人下田,沿着垄沟走,走一段停下来,数连续多少米的孔位,数出苗率,然后做加权平均。这套方法最大的问题有两个:一是抽样误差大,一块地往往只抽三五个点,但缺苗通常不是均匀分布的,往往是某一片区域因为墒情、虫害或者覆膜质量问题成片缺苗,抽样点刚好没踩到,问题就被漏掉了;二是人力效率太低,六百亩地走一圈基本要大半天,等统计结果出来,补苗窗口期已经过了好几天。无人机航拍加目标检测解决的就是这两个问题:全覆盖、时效高、结果可量化到具体坐标。
1.2 出苗率识别难在哪:小目标、密集场景、复杂背景
业务需求清楚了,技术的难处也就跟着暴露了。拍出来的烟苗,真的非常小。刚破土的烟苗,子叶展开也就三五厘米宽,即使无人机飞到二十米高度,单像素分辨率在1.5到2.5厘米左右,一棵正常的烟苗在影像里也就二三十个像素宽。这属于典型的小目标检测,和常规场景里检测车辆、行人完全不是一个难度等级。模型漏检一个行人,可能只是精度掉了零点几个点;但漏检一棵烟苗,直接影响的是这一片是否缺苗的业务判断。
除了目标小,场景还特别脏。白色地膜在太阳底下会产生强烈反光,反光区域的高光斑块在视觉上和嫩绿的苗叶有一定相似性;滴灌带横在垄面上,边缘纹理复杂;杂草从地膜孔里钻出来,形态和苗期烟叶很像;土壤背景里还有土块、石块、残留秸秆。这些干扰因素让模型的误检率非常容易失控。
更麻烦的是尺度差异。移栽后五天的苗和移栽后十五天的苗,大小可能差三四倍。刚破土的苗可能就是一个小绿点,长到四叶期就已经有明显的莲座形态了。同一个数据集里同时存在这么多不同尺度的目标,模型如果只在单一尺度上训练,很容易对某一类苗龄产生偏差。这都是数据集构建时要重点考虑的问题。
1.3 从人眼到深度学习:任务重新定义
把出苗率识别落成算法任务,首先要做任务定义。出苗率本质上是"出苗孔位数占全部孔位数的比例",但在图像层面,模型看到的是一块块地膜上一个一个的孔洞,出苗的孔洞里有一株绿色植株,缺苗的孔洞里是土或者杂草。所以识别任务的直接对象是"苗株",不是"空孔"。模型做的是检测图像中每一株烟苗,输出边界框;业务侧再做孔位匹配,把检测框投影到种植行的孔位上,自然就能算出出苗率。
为什么不直接用检测模型去输出"出苗"和"缺苗"两个类别?这里有个很实际的原因:缺苗孔本身不是一个有明确视觉边界的实体对象。空孔里什么都没有,它的"特征"是周围的膜、土和孔洞阴影,这种负样本的边界极其模糊,标注一致性很难保证。模型训练出来的效果通常也不好。反之,只检测"苗"这个正目标,边界清晰,标注一致性高,模型更容易收敛,最后通过外部的几何匹配逻辑来判断孔位状态,整个系统的鲁棒性反而更高。
在模型选型上,我同时走了YOLO和RT-DETR两个方向。YOLO是单阶段CNN检测器,NMS后处理成熟,工程生态完善,部署方便;RT-DETR则是基于Transformer架构的端到端检测器,混合编码器融合多尺度特征,去掉了NMS,在精度和小目标潜力上表现更亮眼。两个方向各有优劣,正好形成了对照实验。
2. 数据集构造:从航拍到标注的高质量闭环
很多自己做数据集的朋友,最容易忽略的一点是:模型的性能上限在数据采集阶段就基本确定了。你的飞行高度、相机参数、采集时间、天气条件,全部都会写进图像特征里。这部分的投入决定了后面训练和调参的天花板,值得花大力气做扎实。
2.1 无人机航拍参数设计:采集环节的每一个细节都在影响模型上限
飞行高度是首先需要确定的参数。我在这个项目里把飞行高度控制在十五到二十五米之间,多数任务用二十米。这个高度下,地面分辨率大概在1.5到2.5厘米每像素。飞低了,单张覆盖面积太小,六百亩地要飞很多架次,数据量爆炸且拼接困难;飞高了,分辨率不够,烟苗在图上就真的只有一个点,神仙模型也救不回来。
有人可能会说,那我用大疆的变焦镜头,飞五十米高空用长焦拍,不是又安全分辨率又高吗?实测下来这样做的效率反而低。长焦视角小,同样面积要拍的张数成倍增加,而且无人机在高空的抖动对长焦的放大效应非常明显,很容易拍糊。低空广角配合高重叠率才是更稳的方案。
重叠率的设计同样关键。如果只是做单张目标检测,重叠率要求不算高;但如果后续要生成正射影像或者做孔位坐标定位,航向重叠率建议做到百分之八十以上,旁向重叠率做到百分之七十以上。这样后期无论是用拼接软件生成正射图,还是用SFM算法做三维重建,都不会出现漏洞。
采集时间窗口也要严格把关。我踩过最大的坑是光照角度。夏季晴天上午十一点到下午两点之间,太阳几乎直射,白色地膜反射强烈,拍出来的图像里大片区域过曝,苗的特征完全淹没在高光里。经过多轮测试,上午九点到十一点、下午三点到五点这两个窗口效果最稳定。风速大于每秒五米时苗叶会晃动,图像模糊明显,这种时段宁可停飞也别硬拍。
相机设置上,建议用手动模式,固定ISO和快门速度,白平衡设为晴天或者阴天对应档位,不要开自动。自动白平衡会在一组航片里来回跳,颜色不一致会严重影响训练数据和推理数据的分布一致性。连拍间隔按照无人机巡航速度和重叠率计算好,画面尽量稳定。
2.2 标注规范:边界框怎么打、类别怎么定
数据采集完回来,接下来是最耗人力的标注环节。这一步做得好不好,模型上线后差距会非常明显。我这条数据集跑下来,最深的体会是:标注一致性比标注数量更重要。一万张图如果标注质量忽高忽低,不如五千张严格统一标准的效果好。
类别定义上,最终只保留了单一类别tobacco_seedling。刚才说过,不做"缺苗"类别。但这里要补充的是,即使做单一类别,在标注实践中也有讲究。对于单株独立的烟苗,边界框应该完整包住冠幅,也就是叶片的整个外轮廓,但不能为了把叶片全包进去就框得很大而把地膜和土也包进来。对于两棵苗长在一起的情况,如果它们各自独立可见,就分别打框;如果挤在一起边界模糊,那就在保证一致性的大原则下,用边界框框住整体实际可见的部分。
还有一类特殊样本是刚破土的子叶期小苗。这类目标在图片上往往只有二三十个像素,人眼都需要贴近屏幕才看得清,标注很容易漏标。这一部分漏标的数据如果不处理,模型会默认这些小苗是背景,导致推理阶段对低龄苗的漏检率居高不下。我的做法是专门安排一轮"小目标补标流程",把低于一定像素尺寸的框单独筛选出来复查。
标注工具方面,LabelImg是老牌选择,用起来顺手;如果团队协作标注,用X-AnyLabeling这类支持多人协同的工具效率更高。统一导出为YOLO格式:每一行是class_id、center_x、center_y、width、height,五个数值,坐标都是相对于图像宽高的归一化比例。四舍五入到六位小数可以避免坐标溢出和精度损失。
标注质量检查一定要做抽检,而不是只看汇总数字。手工挑几张图,把自己当成模型,在图上过一遍每个框,是不是有偏移、有没有漏掉小苗,一眼就能发现问题。
2.3 数据清洗与样本平衡:别让脏数据浪费算力
标注完的数据不能直接进训练流程,清洗是必须的一步。第一步是去重,无人机航拍因为重叠率高,相邻帧的相似度很高,如果直接把所有帧都塞进训练集,会造成训练样本高度自相关,模型在验证集上指标虚高,但一换新地块表现立刻打回原形。我的经验是做一个简单的帧间相似度计算,相似度超过百分之八十五的只保留一张。
第二步是剔除低质量图像。运动模糊、失焦、强反光导致大面积高光的图像,在集中清洗阶段直接删除,不要犹豫。尤其是那些高光图,里面可能包含十几株烟苗的有效信息,看起来删了可惜,但保留下来会让模型学到高光区域与目标特征的错误关联,后患无穷。
第三步是样本集覆盖。烟苗不是只在一个形态下的,从子叶期到四叶期、五叶期,形态差异巨大;地膜有白色膜、黑色膜、银灰膜;土壤有黄壤、红壤、沙壤;光照有阴天散射光和晴天直射光。这些条件必须都覆盖到,否则模型换个产区就废了。我在这个数据集里特别保证了不同苗龄、不同地膜颜色、不同光照条件下的样本量比例,避免某个条件占比过高导致模型过拟合到特定环境。
2.4 YOLO格式与数据集划分:10545期数据的目录结构与划分逻辑
第10545期这个编号,是数据收集批次的流水号。这一期最终整理出的有效图像数量在一万出头,对应大约二三十个架次的无人机作业任务。所有图像按统一的目录结构存放:
dataset/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ └── labels/ ├── train/ ├── val/ └── test/images下面放jpg原图,labels下面对应放同名txt标注文件。训练集、验证集、测试集的划分比例我用了八比一比一,划分时有个细节:一定要按架次或者按地块划分,不能把所有图像随机打乱后划分。原因还是那个训练样本自相关的问题。同一架次相邻图像内容高度相似,如果同一条轨迹的图像同时出现在训练集和验证集里,验证集就失去了"测试模型泛化能力"的意义。按地块划分后,同一个地块的图像只会出现在同一个集合里,这样验证集的结果才真正有说服力。
关于图像尺寸,无人机原始航拍图非常大,动辄四千万像素以上,直接丢进模型训练不现实。我的做法是基于原图做滑窗切片,切成1280x1280或者640x640的patch,然后把这些patch作为模型的输入。切片的时候还要考虑重叠,相邻切片之间留百分之十到二十的重叠区域,避免目标正好被切在边缘被截断。这只是训练阶段的做法,推理阶段还用同样的方式切,保证分布一致。
3. 模型选型与训练:RT-DETR和YOLO怎么选、怎么训
数据集有了,接下来就是训练环节。我在这一期项目里重点对比了RT-DETR和YOLO系列的效果,不是单纯跑出一个数字就完事,而是把整个选型逻辑、训练参数、踩坑过程都捋了一遍。
3.1 为什么是RT-DETR和YOLO两个方向
先说YOLO。YOLO系模型的好处是生态成熟、资料多、部署方案全。从YOLOv5到YOLOv8,ultralytics框架把训练、验证、导出、推理全流程都封装好了,对团队快速迭代非常友好。对于烟草出苗率这种实际业务,YOLO的输出天然带类别置信度和边界框,做后续的孔位匹配、统计报表非常直接。
RT-DETR则是另一个技术路线。DETR类模型的思路是从Transformer在检测任务上的应用出发,把目标检测建模成一个集合预测问题。RT-DETR的几个亮点值得展开说一下:第一是混合编码器,它把多尺度特征融合进了编码器结构,对小目标的特征保留更友好;第二是IoU-aware query selection,在解码器的query初始化阶段就引入了定位置信度信息,减少了一部分收敛难度;第三是去掉了NMS后处理,推理pipeline更简洁,不会有NMS阈值调来调去的问题。
两个方向的对比我用表格梳理一下:
| 对比维度 | YOLOv8 | RT-DETR |
|---|---|---|
| 网络结构 | CNN单阶段 | Transformer编码器-解码器 |
| 后处理 | 需要NMS | 不需要NMS,端到端 |
| 小目标特征 | 靠FPN/PAN多尺度 | 混合编码器+query选择,小目标潜力更好 |
| 训练收敛速度 | 快,几十轮基本稳定 | 慢,需要更多epoch和更精细的调参 |
| 部署生态 | 极成熟,导出到TensorRT/ONNX都很顺 | 官方实现支持ONNX导出,但算子兼容性要额外验证 |
| 推理速度 | 快,尤其在小模型上 | 同量级下略慢,但RT-DETR-L在GPU上也能跑到实时 |
实际业务里两个方向不冲突。我自己一般两个模型都训练,YOLO作为快速基线保证兜底效果,RT-DETR作为精度提升方向做精细调优。如果部署平台算力紧张,用YOLO;如果精度优先且算力允许,用RT-DETR。
3.2 数据格式转换与准备
训练前的数据准备,核心是保证标注文件和图像一一对应。小数据集上常见的坑:labels里有一行坐标越界,训练时报错卡半天;某个类别id写错,模型把背景学进去了。所以在开始训练前,必须跑一遍数据检查脚本,逐条读入标注,检查坐标是否在[0,1]区间、宽高是否为正、类别id是否在合法范围内。
切片后的数据增强策略也要在这个阶段定好。我采用的增强组合是:
- Mosaic增强,前三分之二的训练周期开启,把四张图拼成一张,增强模型对复杂场景的适应能力
- 随机翻转和旋转,注意旋转角度不要太大,烟苗虽然是无向的,但大角度旋转会引入不真实的透视变形
- HSV色彩扰动,模拟不同光照条件
- Copy-paste增强,把小苗的样本复制粘贴到同一张图的其他位置,弥补小目标样本数量不足的问题,这个策略在后面小目标漏检的优化里起了很大作用
对于RT-DETR,输入分辨率我用了1280。更大的输入尺寸对小目标提升明显,但显存占用会成倍增长。如果显卡只有十二G显存,用640输入尺寸更稳妥,否则batch size只能降到二,训练效率会被拖垮。
3.3 训练参数与迁移学习设置
这一期两个模型都采用了COCO预训练权重的迁移学习。为什么不从头训练?小样本数据集从头训Transformer类模型,收敛速度极慢,而且很容易过拟合到训练集。用COCO预训练权重做初始化,相当于模型已经具备了通用的特征提取能力,我们只需要微调它去适应"航拍俯视视角下的绿色小目标"这个特定分布。
YOLOv8的训练参数参考:
yolo train \ data=tobacco.yaml \ model=yolov8m.pt \ imgsz=1280 \ epochs=200 \ batch=8 \ lr0=0.01 \ mosaic=1.0 \ close_mosaic=10这里close_mosaic=10表示训练最后十轮关闭Mosaic增强,让模型在接近真实分布的数据上做最后的精细调整。这个细节是从实际效果里总结出来的,值得关注。
RT-DETR我用的是官方开源实现,训练时选择的是RT-DETR-R50骨干网络。训练参数与YOLO的差异比较明显:
python tools/train.py \ -c configs/rtdetr/rtdetr_r50vd.yml \ --num_epochs 300 \ --batch_size 12 \ --learning_rate 0.0001 \ --evalRT-DETR用的是AdamW优化器,初始学习率设在0.0001量级,比YOLO的SGD学习率低一个数量级,这是因为Transformer结构对学习率更敏感,调大了容易出现loss震荡。训练轮数也比YOLO要多,两百到三百轮比较合适,过早停止会让收敛不充分。
迁移学习里还有一个经验值得分享:如果项目周期允许,可以先在自己的出苗率数据上用YOLO跑一个粗模型,然后把这个粗模型生成的检测结果作为伪标签,去辅助标注人员筛选漏标样本。这种半自动标注方式能显著提升标注效率,同时也能让标注人员更清楚模型哪些地方容易错。
3.4 结果评估与出苗率统计逻辑
训练完成后,模型评估不能只看mAP曲线。在出苗率这个业务里,漏检率和误检率的业务代价完全不同。缺苗孔漏检了,意味着真正需要补苗的位置没有被发现,直接损失是后期产量和品质的不可逆影响;误检则是把已出苗的位置判定为缺苗,多安排了补苗,浪费的是人工和苗的成本。前者代价远高于后者,所以在设置推理置信度阈值时,我会刻意往低置信度方向倾斜,通过牺牲一部分precision换取更高的recall。
从检测框到出苗率,中间还有一个关键步骤:孔位匹配。无人机航拍图像通过坐标配准投影到种植行的标准孔位上,然后把检测框和孔位做空间关联,如果某个孔位中心附近存在检测框,就判定该孔位出苗,否则判定缺苗。这个流程里需要注意,一个检测框可能覆盖两个相邻孔位,或者一棵苗长得太大把旁边孔位也占了,这时候需要做重叠度判定,只把检测框归属到IoU最高的那个孔位。
在测试集上,RT-DETR和YOLO的指标我都记录过。RT-DETR在mAP@0.5上略高于YOLOv8,但在不同苗龄、不同光照条件的细分场景里差距不一致。最明显的是在子叶期小苗场景下,RT-DETR的recall明显更好,这和大模型对大感受野、细粒度特征的提取能力有关。但如果只看最终出苗率统计结果和人工复核结果的一致性,两者差距并不大,YOLO在工程化落地里反而因为推理速度快、部署顺畅更有优势。所以选型的结论是:技术指标领先不一定等于业务效果领先,要结合部署环境和维护成本综合判断。
4. 实测踩坑与排查技巧实录
这部分是我认为整篇文章里最有价值的部分。前面讲的都是理论和方法,实操中遇到的问题五花八门,很多坑不在任何论文和教程里,全是一次次试出来的。
4.1 地膜反光导致的误检
第一轮测试跑下来,误检率最高的场景几乎全部集中在白色地膜的高光区域。太阳直射下,白色地膜会形成一小片一小片过曝的高光斑块,边缘有渐变过渡,看起来和浅绿色烟苗在灰度上非常接近。模型经常把这种高光斑块识别成烟苗,置信度还不低。
这个问题我做了三层处理。第一层是数据层面,采集时间窗口严格控制在上午和下午的低角度光照时段,同时在训练集里加入曝光增强的样本,模拟不同程度的高光干扰,让模型见过这些情况。第二层是模型层面,我在推理阶段对检测框周围区域做了额外的对比度特征计算,高光区域的对比度特征和真实烟苗有可分辨的差异,用这个特征做二次过滤。第三层最简单也最直接,如果项目允许覆膜颜色可选,黑膜或者银灰膜的反光问题会比白膜轻很多,只是覆膜颜色属于农艺决策,技术团队只能提建议不能替农户做主。
4.2 苗期目标太小导致的漏检
漏检最严重的不是长势好的目标,而是刚破土的子叶期小苗。这类目标在三四十像素以下,在1280分辨率的切图上就是一个绿豆大的绿点,人眼有时候都要眯着眼看,模型漏检非常普遍。
针对这个问题,我从两个方向做优化。方向上第一个是数据增强优化,重点用了Copy-paste增强策略:在训练过程中,从标注样本里随机裁剪小苗区域,粘贴到当前训练图的随机位置,同时把对应的标注框也加进去。这样做的目的是人为增加小目标样本的密度,让模型更充分地学习小目标的特征。方向上第二个是模型输入优化,把输入分辨率从640提升到1280,在不改模型结构的情况下,相当于把小目标放大了两倍。这两个优化组合下来,小苗场景的recall提升了十几个百分点。
同样一个目标,不同模型对小目标的响应差异也很大。YOLOv8在640分辨率下对小苗的响应覆盖面积明显偏低,但把YOLOv8的输入分辨率也调到1280之后,差距明显缩小。我建议做小目标检测的朋友在调结构之前,先把输入分辨率和增强策略调整到位,这两步做完了再考虑模型结构升级。
4.3 缺苗孔与出苗孔的边界判定
前面说模型只检测"苗",但实际业务里"缺苗孔"的判定是整个系统的关键。这里有一个隐蔽的坑:缺苗孔里如果没有苗,通常会长杂草,而杂草从地膜孔里长出来的形态和烟苗非常像。模型会把杂草误检为烟苗,导致这个孔被判为"出苗",缺苗漏报。
这个问题单靠检测模型本身解决不了,要从农艺知识层面加规则。烟草移栽有标准的株距行距,孔位分布是规则的网格。杂草的生长位置虽然也在孔洞里,但它的形态分布更随机,和周围已确认烟苗的空间位置关系没有规律。我的做法是引入空间先验:基于已检测的烟苗位置,拟合出种植行的中心线和孔位网格,然后用网格匹配的方式逐孔判定状态。这样即使某个孔被杂草误报为出苗,网格拟合结果会认为该位置的"苗"不符合空间分布规律,从而发出复核提醒。
4.4 模型推理速度与边缘设备部署
实际巡检任务里,无人机采集完数据,需要尽快把出苗率统计结果反馈给农户,否则补苗窗口期就过了。所以推理速度不是可选项,是硬约束。
我的部署流程是这样:无人机作业完成后,把图像导入便携工作站或者边缘设备,批量切片后送入模型推理。在消费级显卡上,1280分辨率的输入,RT-DETR推理一张大约二十到四十毫秒,YOLOv8大约十到二十毫秒。整套流程跑下来,八百张航拍图,切片分割后大概生成四千个patch,单个模型十分钟左右能完成全部推理。如果把模型导出成TensorRT的FP16精度格式,速度还能再提升百分之三十左右。
部署中遇到的一个典型问题是RT-DETR导出ONNX时的算子兼容性。Transformer结构里的一些自定义算子,在部分推理框架里不支持,需要用官方推荐的导出方式或者找替代算子实现。相比之下YOLO系列的ONNX导出就顺畅得多,基本一把过。如果团队里没有专门的部署工程师,我建议先上YOLO系列保底,等部署链路跑通了再考虑RT-DETR的精度优化方向。
另外模型量化也值得说一句。FP16量化基本无损,INT8量化在小目标场景下掉点比大目标场景严重得多。烟苗本身就只有几十像素,量化带来的数值精度损失会直接反映在边界框的回归误差上。我的结论是出苗率识别任务里,优先用FP16,不要轻易上INT8。
写在结尾:个人经验和下一步扩展
这套流程跑下来,我最深的体会是:在出苗率识别这类农业视觉项目里,数据质量的优先级永远高于模型结构。你把采集时间窗口控制好、把标注一致性做到位,用小模型都能出好效果;反过来,采集和标注一塌糊涂,换再大的模型也救不了。另一个体会是业务指标和技术指标的转化非常重要,mAP高不等于出苗率统计准,要围绕业务定义做后处理,把模型输出变成能指导生产决策的数字,这中间的孔位匹配、置信度阈值调整,才是整个项目真正的护城河。
最后再分享一个小技巧:如果你的项目刚刚起步,没有时间和人力做大面积标注,可以先找一个预训练模型,用它跑一部分数据,把置信度较高的检测结果导出成伪标签,人工只做修正而不是从零标注。这能让标注成本下降不少。后续这个数据集还可以继续扩展,从出苗率延伸到长势监测、缺株补种验证、甚至病虫害早期识别,采集的数据和标注的格式都能复用,前期投入会一直在后续项目里产生收益。