尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

从采集到YOLOv8训练:20类杂草识别数据集的完整构建实战与踩坑记录

从采集到YOLOv8训练:20类杂草识别数据集的完整构建实战与踩坑记录 简介在计算机视觉项目中目标检测模型的最终效果不仅取决于网络结构更取决于训练数据的质量与场景覆盖度。尤其是农业视觉领域田间复杂的光照、土壤背景以及作物与杂草幼苗的形态相似性对数据集的构建提出了远高于通用场景的要求。构建一套高质量的农业目标检测数据集需要从类别体系设计、多维度采集策略、标注规范制定到质量验证形成完整闭环。在实践中基于YOLOv8等主流检测框架训练模型时数据的均衡性、难例覆盖程度以及标注一致性往往比调参更能决定精度的上限。本文面向植保无人机、田间除草机器人等精准农业应用系统梳理了一套覆盖20多种恶性杂草如稗草、马唐的数据集构建方法论包含具体的采集规划、标注避坑指南、YOLOv8训练配置与错误排查思路为农业视觉工程师提供了可落地的工程参考。 先从我自己踩过的坑说起吧。我做农业视觉项目有好几年了最早一次做杂草识别用的是网上随便扒下来的植物分类数据集。模型在验证集上跑得挺好mAP到了0.75当时觉得已经能上机器了。结果把模型装到田间试验的除草机器人上一到真实稻田就露馅晴天强光下稻苗的倒影被识别成草阴天的时候稗草漏检又特别严重。后来我把问题一层层往回查才发现根子不在模型在数据集——公开数据里的稗草图片大多是成株期特写背景干净、光照均匀而田间苗期的稗草和水稻幼苗在叶片颜色、纹理、姿态上都高度相似再加上自然光照变化和土壤背景干扰模型根本没有见过足够多的难例。所以当我开始整理这份以稗草、马唐为核心覆盖20多种常见恶性杂草的权威数据集时心里很清楚一件事数据集的构建逻辑必须从机器能认识这种草变成机器在真实的田间环境里也能准确找到这种草。这篇文章我不打算讲太多虚的直接把构建这套数据集的全过程拆开——类别怎么定、图片怎么采、标注怎么画、质量怎么验、模型怎么训以及过程中那些常规文档里不会写的坑一次性说清楚。适合正在做植保无人机识别、田间除草机器人视觉模块、或者用YOLO系列做农业目标检测的工程师参考如果你正准备自己采集数据训练模型这篇同样能帮你少走不少弯路。1. 为什么杂草识别是精准农业里被低估的硬骨头很多刚接触这个方向的人会觉得杂草识别不就是个多分类或者目标检测嘛用ImageNet预训练模型微调一下或者直接用YOLOv8训练能难到哪去真实做过一遍的人都知道农业场景的视觉识别和通用目标检测有一个本质差别通用检测的目标类别之间差异大、类内差异相对小而杂草识别恰恰相反。1.1 类间相似与类内差异的双重夹击先看类间相似。稗草和水稻幼苗在二叶期到四叶期这个阶段叶片都是细长条形颜色都是嫩绿带点黄从俯视角度拍下来没有经验的人肉眼都容易认错。再看马唐和狗尾草两者都属于禾本科叶片形态、生长方式接近如果图像分辨率不够或者拍摄角度刁钻模型很容易把特征混淆。这就是为什么单纯堆数据量不一定有效——如果数据集中这两类的图像都很标准模型学到的特征边界就会很模糊一到真实场景就崩。再看类内差异。同一类杂草在出苗期、分蘖期、拔节期、成株期的外观差异极大。拿马唐来说苗期叶片纤细、贴地生长成株期叶片变宽、茎秆直立还能抽出花序如果数据集里只收集了某一个生长阶段的图像模型在另一个阶段上几乎必然泛化失败。我在项目中做过一次统计用同一个数据集训练出的模型对苗期稗草的召回率比对成株期稗草低将近20个百分点原因就是训练集里成株期图像数量是苗期的三倍多。1.2 分类任务和目标检测任务对数据集的要求完全不同如果只是做图像分类数据集要解决的核心问题是这张图里有没有某种草标注一张图一个标签就够了。但真实农业应用场景里除草机器人需要知道草在哪里、有多大、边界在哪才能决定是否喷洒除草剂或者机械除草这就必须做目标检测。目标检测的数据集要求比分类严格得多每张图里可能同时存在多种杂草、作物幼苗、土壤、石子、枯叶等干扰物标注时要对每一个目标物体画边界框还要正确处理目标重叠、目标截断、小目标等情况。同样一张图分类任务可能只花10秒标注检测任务可能要花几分钟。很多团队在标注时图省事框画得随意结果模型训练出来精度上不去还找不到原因。我后面会专门讲标注规范这部分太重要了。2. 20类恶性杂草的类别画像与采集策略数据集的核心是类别体系。没有一套贴合实际田间情况的类别清单后期采集、标注、训练都会出问题。2.1 类别体系的确定从实际危害出发我整理这份数据集时没有盲目追求越多越好而是按照国内主要农田的草害情况先圈定了几大类禾本科杂草稗草、马唐、狗尾草、牛筋草、千金子、双穗雀稗、看麦娘、早熟禾、硬草、菵草阔叶杂草反枝苋、马齿苋、藜、小藜、苣荬菜、鳢肠、鸭跖草、丁香蓼、空心莲子草、龙葵莎草科杂草香附子、异型莎草、碎米莎草其他恶性杂草野燕麦、播娘蒿、猪殃殃、田旋花这里有个取舍问题有些杂草在局部地区危害很重但全国范围不算普遍到底要不要收进数据集我的做法是核心类全覆盖边缘类留扩展位。核心的20多类是模型第一版就要能识别的边缘类先采集一部分图像放在一个独立目录里等模型升级时再决定是否加为正式类别。这样做的好处是避免一开始类别过多导致每类样本量不够、模型平均用力却哪个都学不精。2.2 采集场景规划覆盖模型将要面对的真实环境我在开头说过踩过公开数据集场景单一的坑所以在采集规划上花了很多心思。具体来说是从以下几个维度去覆盖生长阶段维度。每一类杂草至少要覆盖三个关键时期出苗期子叶期到二叶期、营养生长期分蘖或分枝阶段、生殖生长期抽穗/开花/结籽阶段。如果项目主要用在作物生长前期苗期和分蘖期的权重可以适当增大但成株期图像也不能缺因为后期植保作业同样需要识别。拍摄视角维度。无人机飞防用的是俯视视角地面除草机器人用的是近地面平视或斜视视角手持设备拍摄可能又是另一种角度。数据采集时三种视角最好都有否则模型在部署视角和训练视角不一致时会表现得非常差。我自己测试过只用俯视图像训练的模型切换到地面斜视镜头后mAP直接掉了0.3以上。光照与天气维度。晴天强光、阴天散射光、早晨傍晚低照度、雨后叶片带水珠、土壤湿润和干旱情况下的背景都会显著影响图像特征。采集时不要只在晴天中午拍尽量覆盖更多光照条件。如果条件允许同一个地块最好在上午、中午、下午各拍一次连续拍几天这样数据里的光照多样性就有了。土壤背景维度。水稻田的泥水背景、旱地的沙土背景、果园的杂草覆盖背景、菜地的覆膜背景差异很大。训练数据里如果只包含某一种土壤背景模型很容易把背景特征也学进去换了一块地就失灵。建议在采集规划阶段就确定目标应用区域的典型土壤类型并有意识地混合进数据。2.3 数据量设计与样本划分很多初学者会问每一类到底要多少张图才算够这个问题没有标准答案但根据我的实践经验可以给一个参考范围如果做目标检测每类目标框数量建议至少1500-3000个。注意这里说的是目标框数量不是图像张数。一张图里如果包含5株杂草就算5个框。如果做分类每类图像建议至少1000-2000张且要保证类的内部多样性。如果每类样本量少于500模型基本很难学出泛化能力换环境大概率失效。数据集划分方面我用的是训练集、验证集、测试集按8:1:1划分。重点说一下测试集测试集的图像来源一定要与训练集不同地块甚至不同采集批次否则模型只是在记忆而不是识别。我在做这块时会专门把一块独立地块的采集数据全部划到测试集训练集和验证集都用另外地块的数据这样测出来的精度才是模型真实泛化能力的反映。3. 数据标注规范的制定从边界框到语义边界如果说采集决定了数据集的广度标注就决定了数据集的精度。我在项目里遇到一个很典型的问题一开始让几个同学各自标注没有统一规范结果同一个算法工程师训练出来的模型用同样的超参数效果却时好时坏。后来把所有标注结果挨个检查才发现每个人的画框习惯完全不同有人喜欢框紧贴着目标有人习惯框得大一圈还有人把只露出半片叶子的杂草也标了而另一个人遇到这种情况直接跳过。3.1 边界框标注的三种常见错误第一种是框太大。标注时把旁边的土壤、枯叶、甚至相邻的作物苗都包进去了。这个问题的危害在于模型会学到目标周围一定范围内都是我的一部分推理时边界框会不自觉地向外扩展导致定位不准确严重时会把两株相邻的杂草连成一个框。第二种是只框中心。有些标注员习惯只框住物体最明显的部分比如只框住草的中心叶片区域忽略向四周伸展的叶片。对于禾本科杂草这种叶片细长、展开范围大的物体这种标注方式会让边界框和真实轮廓严重脱节。第三种是漏标重叠目标。一片杂草密集生长时很多标注员会只标注最外层可见的那株后面的几株就漏掉了。这会直接压制模型在密集场景下的召回率。我在数据集标注规范里明确了几条硬规则边界框必须紧贴目标的最外侧可见像素允许1-2像素的误差但不得超过目标实际范围的5%。目标被遮挡时如果可见部分超过整体的30%就需要标注边界框以可见部分的外接矩形为准。多个目标重叠时每一个可辨识的目标都需要单独标注包括被遮挡后仍能看出独立轮廓的。目标在图像边缘被截断时只要可见部分够大也要标注边界框可以超出图像边缘标注工具通常支持这类超出边界的框。3.2 类别难分的标注优先级稗草和马唐、狗尾草和牛筋草这类形态接近的类别即使对标注员来说也容易搞混。如果标注员本身就是错的那训练出来的模型再努力也没有意义。我在标注规范里做了一条特别的设计区分度不够的图像优先保留并标记为难例而不是为了让标注进度好看而随意给一个标签。具体操作是每类杂草都做一份参考图册包含不同生长阶段的典型形态、易混淆类别的对比说明、以及标注时的判定要点。标注员在遇到拿不准的图像时必须对照参考图册如果仍然无法确定就归入待专家复核队列由植保专家统一裁决。这批难例在后续模型训练中非常宝贵它们往往比普通样本更能提升模型的区分能力。3.3 多人标注一致性控制多人标注时可以用一个简单的方法控制一致性从同一个采集批次里随机抽取10%的图像让所有标注员分别标一遍然后计算他们之间的IoU交并比和类别标签一致率。IoU大于0.7且类别一致率大于95%说明规范执行得不错如果低于这个标准就要停下来重新培训。我实际跑下来第一次做这个测试时一名标注员和另一名标注员之间的IoU只有0.55原因就是他习惯把框画得特别大。后来把规范重申了一遍重点强调了紧贴最外侧可见像素这条规则再测就到了0.78。通过这种抽检-反馈-复检的循环标注质量是能稳定提升的。4. 数据集验收与质量评估体系数据集做完了怎么确认它达到了可用的水平不能靠感觉说好像挺全的。我建立了一套四维评估体系每次数据集更新后都会按这套标准打个分分数过了才允许进入训练流程。4.1 质量评估的四个维度清晰度。图像分辨率、对焦情况、运动模糊程度。设计上要求图像短边不低于640像素因为目标检测模型普遍会缩放到640x640或1280x1280输入如果原图分辨率太低缩放后特征细节就丢了。运动模糊图片在采集时就应该剔除如果确实需要保留用于提升鲁棒性只能放在测试集里不能放进训练集。完整性。每个类别的样本量是否均衡、生长阶段覆盖是否全面。我一般会画一个类别-阶段的交叉统计表比如稗草有苗期3000个框、分蘖期2500个框、成株期2000个框而马唐可能苗期有2800个框、成株期只有900个框。后者就属于阶段覆盖不完整需要补采。均衡性。数据集里各类别之间不要出现数量级差异。如果有十几类都是2000个框某一类只有300个框训练时模型会对这类少数类别严重偏向。处理办法有两个方向一是补采数据二是用数据增强或者重采样策略平衡。补采优先因为增强能改变像素但不能完全替代真实场景的多样性。难例覆盖。图像中是否包含密集生长、目标重叠、光照异常、部分遮挡、杂草与作物形态极其相似等难点场景。我有个项目就是因为难例覆盖不足模型在实验室测试集上表现优秀一到复杂田间就漏检严重后来花了大量时间专门补采杂草混在稻苗丛中的图像效果才上来。4.2 用训练-验证闭环反向检验数据质量还有一个很实用的检验方法先跑一个基线模型然后在验证集上做错误分析。如果模型在某个类别上的查准率和查全率显著低于其他类先别急着调模型结构回到数据里看看这个类别的样本量是不是偏少标注框是不是有不一致的地方是不是某些生长阶段的图像占了绝大多数导致模型对稀有阶段完全无感我把这套流程称为数据集的逆向排查。有一次模型对鸭跖草的检测效果特别差我抽样看了200张该类的训练图发现其中超过一半都是在近距离特写下拍摄的田间远距离小目标的图像很少。补采了一批远景图像重新标注后模型在该类上的AP提升了12个点这比换任何模型结构都有效。4.3 数据版本管理数据集不是一次成型就完事的后续会不断补采、修正、迭代。我强烈建议用类似数据版本管理的方式管理数据集每次调整都记录下变更说明和版本号这样模型复现、问题排查都能找到对应的数据版本。否则模型换了数据集版本后效果变化你很难判断是数据变了导致的还是模型训练随机性导致的。5. 用YOLOv8训练杂草检测模型的完整流程与参数调优数据准备到位了接下来就是模型训练。这一节我以YOLOv8为例把这套数据集从标注完成到模型能跑的完整流程走一遍。YOLOv8目前是农业视觉项目里用得很多的目标检测框架生态成熟、部署方便而且对中小规模数据集的适应能力不错。5.1 数据组织与格式转换标注工具导出的格式五花八门LabelImg导出的VOC XML、LabelMe导出的JSON、Roboflow导出的COCO JSON都可能遇到。YOLO系列训练需要的是txt格式的标注文件每行一个目标格式是类别ID x_center y_center width height注意这里的四个坐标都是相对于图像宽高的归一化值范围0-1。类别ID从0开始和类别名字典一一对应。我习惯把数据目录组织成dataset/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ ├── labels/ │ ├── train/ │ ├── val/ │ └── test/ └── data.yamldata.yaml内容大致是train: /path/to/dataset/images/train val: /path/to/dataset/images/val test: /path/to/dataset/images/test nc: 20 names: [稗草, 马唐, 狗尾草, 牛筋草, 千金子, 反枝苋, 马齿苋, 藜, 鳢肠, 鸭跖草, 香附子, 异型莎草, 野燕麦, 播娘蒿, 猪殃殃, 龙葵, 空心莲子草, 双穗雀稗, 看麦娘, 早熟禾]具体格式转换时可以用Python脚本批量处理。我这里提供一个简单的思路把COCO格式转成YOLO格式的核心是计算归一化坐标import json with open(annotations.json, r) as f: coco json.load(f) # 建立图片id到文件名的映射 img_map {img[id]: img[file_name] for img in coco[images]} # 建立类别id到连续索引的映射COCO类别id可能不连续 cat_map_list sorted(set(cat[id] for cat in coco[categories])) cat_map {cat_id: idx for idx, cat_id in enumerate(cat_map_list)} for ann in coco[annotations]: img_name img_map[ann[image_id]] txt_name img_name.rsplit(., 1)[0] .txt cat_idx cat_map[ann[category_id]] x, y, w, h ann[bbox] # COCO bbox格式为[x, y, width, height] # 转成YOLO格式的x_center, y_center, width, height img_w coco_cat_meta[ann[image_id]][width] img_h coco_cat_meta[ann[image_id]][height] x_center (x w / 2) / img_w y_center (y h / 2) / img_h width w / img_w height h / img_h with open(txt_name, a) as out: out.write(f{cat_idx} {x_center:.6f} {y_center:.6f} {width:.6f} {height:.6f}\n)这里有一个容易忽略的坑COCO的类别ID在原始JSON里往往不是从0开始的连续值直接当索引用会错位。一定先建立映射关系把原始类别ID映射到0到nc-1。5.2 训练命令与关键超参数解读数据就绪后训练命令大概是这样的yolo detect train \ modelyolov8n.pt \ datadata.yaml \ imgsz640 \ epochs200 \ batch16 \ lr00.01 \ patience30 \ device0初学者通常会把注意力放在epochs上但其实下面的参数更关键imgsz。训练时的输入分辨率直接决定小目标能否被有效检测。杂草苗期植株通常很小在背景中占比可能不到5%如果直接缩放到640很可能细节已经模糊了。我建议在显存允许的情况下优先用800甚至960代价是训练速度变慢。我用640和960分别训练了一组对比后者在密集小目标场景下的mAP50提升超过4个点但同时显存占用翻倍。如果你的硬件不够可以先在640上跑通全流程再考虑加大分辨率。batch。受显存制约。16到32在消费级显卡上比较常见。batch太小会导致梯度估计噪声大训练不稳定batch太大则需要相应调低学习率。YOLOv8有自动学习率调度但batch变化较大时还是建议手动检查一下实际行为。lr0。初始学习率YOLO默认0.01。如果训练过程中loss曲线出现震荡或者不降反升可以降低到0.005甚至0.001试试。对于农业数据集这种背景相对单一、目标特征显著的任务过大的学习率反而容易让模型在早期跳跃过大错过好的局部最优。patience。早停耐心值即验证集精度连续多少个epoch没有提升就停止训练。设置为30是个比较平衡的值既能防止过拟合又不会因为某个epoch的性能震荡而过早终止。如果数据集较大可以适当加大到50。训练完成后模型会保存在runs/detect/train/weights/best.pt。这里有个细节YOLOv8默认保存两个权重best.pt是验证集表现最好的last.pt是最后一个epoch的。在使用时优先选best.pt因为last.pt可能出现收敛过头导致验证集精度反而下降的情况。5.3 模型评估指标怎么看YOLO训练结束后输出的指标里最常看的是这几个mAP50IoU阈值为0.5时所有类别的平均检测精度。这个指标对定位精度要求不敏感只要框大概画对就算正样本。mAP50-95IoU阈值从0.5到0.95步长0.05的平均值对边界框的定位精度要求更严格。杂草检测场景里如果后续机械除草需要非常精确的坐标mAP50-95比mAP50更有参考价值。Precision和Recall查准率和查全率。在除草场景下漏检一株稗草可能意味着它后续疯狂分蘖、种子散落影响下一季作物所以Recall的权重通常比Precision更高。实际操作中我会看P-R曲线根据应用场景选择偏心查全率还是偏心查准率的置信度阈值。理论上如果数据集质量过硬这两项指标应该能同时维持在较高水平。如果发现Precision很高但Recall很低往往不是模型问题而是数据中目标太密集、标注漏标严重或者某些形态的目标在训练集里根本没出现过。5.4 推理部署时的后处理技巧模型训练完部署到实际的推理脚本里时有几个后处理细节值得注意。置信度阈值不要照搬训练输出的默认值。训练阶段模型输出的是原始置信度很多检测结果置信度在0.2-0.5之间而这部分恰恰可能是难例。建议在验证集上做一次置信度阈值扫描画P-R曲线根据实际场景选择阈值。我有个项目是除草机器人宁可多误报也不想漏报所以把置信度阈值从默认的0.25降到了0.15同时配合一个二次确认逻辑如果某个检测框在连续几帧图像中都被识别为同一类杂草才触发除草动作。这样既保留了低置信度下的高召回又不会因为单帧误报而执行错误操作。还有一个经验对视频流做检测时帧与帧之间的检测结果可以加一个简单的追踪算法如ByteTrack把同一株杂草的框在时间维度上关联起来。这样即使某一帧漏检了前一帧的框也能补上整体稳定性会好很多。6. 训练集loss不降、误检频发的排查思路模型训练过程中最常碰到的几个问题我在农业场景里几乎都遇到过这里集中整理一条排查思路。6.1 Loss降不下去的几种典型原因标注噪声过大是头号嫌疑。标注框位置不准、类别标签错误、漏标严重都会让模型在学习时接收到矛盾的监督信号。一只标注员把马唐标成了狗尾草模型就要同时学习这种形态是马唐和这种形态是狗尾草loss自然降不下去。类别不平衡且未做处理。如果训练集里某类样本是另一类的10倍模型会把所有不确定的预测都偏向样本多的类别少数类别的loss贡献被淹没。训练时可以在loss计算里为不同类别设置不同的权重或者对少数类做过采样。但根本解法还是上文说的补数据。学习率设置不当。学习率过大loss会在某个值附近震荡下不去学习率过小训练缓慢看起来loss也没明显下降。建议在训练早期画一下loss曲线如果前50个epoch就出现剧烈震荡先把lr0调低一个数量级如果loss一直是平缓下降中途变平可以试试用余弦退火或者带上warmup再训一次。6.2 数据增强策略对杂草识别的影响YOLOv8自带Mosaic、MixUp、HSV扰动、翻转等增强策略默认配置下对通用目标检测效果不错。但在杂草识别场景里有些增强需要特别调整HSV扰动中饱和度和色相的扰动强度如果太大会让叶片颜色严重偏离真实反而干扰模型对绿色植物特征的判断。我在实际项目中把色相扰动上限从默认的0.015降到0.008把饱和度扰动上限从0.7降到0.5效果更稳。Mosaic增强把四张图拼在一起对小目标的检测很有帮助但它会改变目标的尺度分布。如果最终应用场景是无人机航拍的俯视视角尺度变化真实存在Mosaic强度可以保持默认但如果是固定高度的地面机器人尺度变化有限Mosaic过强反而会让模型学到一个不太真实的尺度分布。翻转增强对禾本科杂草这种形态细长、具有一定方向性的目标垂直翻转可能生成现实中不太存在的形态。一般建议只保留水平翻转去掉垂直翻转。6.3 从数据集-模型两个方向联动优化我的经验是模型效果出现问题先花80%的时间查数据不要急着换网络结构。具体排查链路是从测试集里抽样100张模型漏检或误检的图像逐一标注真实情况。统计这些失败案例集中在哪些类别、哪些形态、哪些背景。回到训练集检查这些失败模式在训练集中是否存在如果存在但很少属于样本不足补数据如果根本不存在属于场景覆盖缺失去田间补采。如果训练集中失败模式样本充足模型还是学不好这时候才考虑调整模型结构或超参数。我把这个流程叫作错误样本的归因分析。有一次模型对水稻田里的稗草出现密集假阴性抽样分析后发现失败图像里稗草都处于二叶期和稻苗的形态几乎无法区分。训练集里也有很多二叶期稗草图像但标注时由于样本太像不少标签其实标错了——要么漏标要么把稗草标成水稻。在修正了这部分标注后重新训练该场景下的召回率提升非常明显。这就是数据问题和模型问题最典型的混淆案例表面看是模型能力不足实际是训练信号错了。7. 我个人实践中的几点补充建议最后分享几个经验性的建议不一定能在论文和文档里找到但对实际项目很有用。第一数据集的权威性不取决于来源取决于验证闭环。即使我从权威植保机构拿到了类别清单和样本也必须在自己目标应用场景里做一轮独立验证确认模型真的能在本地田块表现稳定。不同地区、不同气候、不同耕作方式下的杂草形态会有差异一个在华东稻田表现良好的数据集直接拿到东北稻田可能就要重新补采。最好的做法是把权威数据作为基础再用本地数据做增量训练。第二标注团队里一定要有一位懂植保的人。我在项目里吃过亏一开始标注团队全是计算机背景的学生狗尾草和牛筋草、藜和小藜这类相似类别他们凭感觉标注错误率很高。后来请了一位植保专业的研究生做标注复核错误率大幅下降。如果你条件有限至少要准备一份详细的类别区分说明并且定期抽查标注结果。第三数据集和模型要一起做版本管理。每次训练记录下数据集版本号、标注规范版本号、训练参数、模型权重这样才能保证实验可复现。我见过太多团队模型效果好了不知道好在哪里效果差了也查不出原因最终只能重新训练。花了很大力气把数据集做出来却因为没有记录版本导致无法迭代非常可惜。第四如果条件允许把失败样本单独保存成一个难例集。模型在测试集上漏检或误检的那些图不要删掉单独整理出来。下一轮迭代时把这些难例混入训练集模型会越训越强。这比专门去找新数据效率高得多因为难例集里都是模型当前最薄弱的地方针对性极强。农业视觉这个方向数据集的价值怎么强调都不过分。杂草识别技术本身已经相对成熟真正拉开差距的是对田间复杂场景的理解和覆盖。希望这篇内容能帮你少走一些弯路。如果你正在做类似的项目欢迎在实践中对照这份思路逐步打磨出自己的数据集体系。本文还有配套的精品资源点击获取
返回列表