拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Grounded-SAM、X-AnyLabeling与autodistill自动标注流水线实战

Grounded-SAM、X-AnyLabeling与autodistill自动标注流水线实战

自动标注这几年的热度一直没降过,但真正能把流程串起来、跑出可用结果的教程其实不多。大多数文章要么只讲某个单点工具怎么装,要么给你一堆概念名词就没了下文。这次我直接把 X-AnyLabeling、autodistill 和 Grounded-SAM 三个工具串成一条完整流水线,从环境部署、模型选型、批量推理到人工校准,全部走一遍实操,中间踩过的坑和我最终采用的参数配置也会一并写出来。如果你正打算给自己的数据集搞自动标注,这篇文章应该能帮你少走不少弯路。

先说清楚这条流水线解决的是什么问题:你手上有一批未标注的图片,目标是把它们变成可用的目标检测训练集。传统做法是打开标注软件一张张画框,500张图就能把人画到怀疑人生。自动标注的思路是用 Grounded-SAM 这种文本提示分割模型,根据你输入的类别名自动生成检测框和分割掩码,然后通过 X-AnyLabeling 做人工复核和修正,必要时用 autodistill 做自动化模型蒸馏,把大模型的标注能力迁移到一个小模型上,实现后续批量的快速推理。整条链路的核心价值在于:人从“画框的人”变成“审核框的人”,效率和质量的平衡点完全由你掌控。

1. 整体设计思路与工具选型

1.1 三个工具在流水线里扮演的角色

先把工具分工搞清楚,后面操作才不会乱。X-AnyLabeling 是整个人工校准环节的工作台,它不只是一个标注软件,而是集成了多种自动标注模型推理能力的桌面工具,支持加载自定义模型和图像嵌入模型,本质上是把“模型推理”和“人工标注”揉在了一个界面里。autodistill 的角色更像是一条自动化流水线,它能把一个大型基础模型在一个特定数据集上的知识蒸馏到一个小型模型里,让推理成本降下来、速度提上去。Grounded-SAM 则是最底层的“自动标注引擎”,它把 Grounding DINO 的开放词汇检测能力和 SAM 的分割能力串起来,输入一串文本提示,输出对应目标的检测框和分割掩码。

这三个工具组合起来,逻辑是这样的:先用 Grounded-SAM 做零样本自动标注,把粗标注结果导入 X-AnyLabeling 做人工校准,再用校准后的高质量数据训练一个小模型,后续用这个小模型配合 autodistill 做更大规模的自动标注。说到底,就是“大模型出粗活,小模型干细活,人来兜底”。

1.2 为什么选这条技术路线

选这条路线的理由很实在。首先是零样本能力,Grounded-SAM 不需要你提前准备任何标注样本,直接输入文本提示就能在任意图片上检测目标,这对冷启动阶段的标注项目来说价值巨大。其次是人工介入的成本被极大压缩了,你不需要全程手动画框,只需要对模型输出的结果做确认和修正,500张图片的标注时间能从十几个小时压缩到两三个小时。第三是可扩展性,autodistill 这条线把大模型的能力迁移到轻量模型上,后续跑几十万张图片的时候,推理成本才扛得住。

当然,这背后也有妥协。Grounded-SAM 对不常见类别的识别准确率并不稳定,对复杂场景的边界处理也经常需要人工修正。但综合评估下来,用这条流水线做标注,效率和质量的综合收益是目前所有方案里最平衡的。

1.3 方案对比:手工标注、全自动标注与半自动人机协同

手工标注最稳,质量上限最高,但代价是时间和人力成本完全线性增长。全自动标注看似省事,直接在无人工干预的情况下跑模型推理,输出结果直接当训练数据用,遇到复杂场景错误率会高到让你怀疑人生,尤其是小目标、遮挡目标和同类目标重叠的场景,一套大模型跑下来生成的框偏大偏小都是常有的事,拿这种数据去训模型,效果很难保证。半自动人机协同是我最终推荐的方案:机器先出结果,人只审核和修正,人机结合的标注质量接近纯人工,但成本只有纯人工的三分之一甚至更低。

如果你是一个人扛一个项目的标注任务,那答案已经很明显了。

2. X-AnyLabeling 环境部署与源码运行

2.1 部署前需要准备的环境清单

X-AnyLabeling 目前支持通过源码方式运行,这也是网上搜索热度最高的方向之一。部署之前先把环境理清,省得后面一边跑一边缺包。实测下来,我推荐的一套环境是:Python 3.9 或 3.10,PyTorch 2.0 以上版本,CUDA 11.8 或更高,Windows 11 或者 Ubuntu 20.04 都可以。显卡方面,NVIDIA 显卡显存至少 6GB,如果要用 Grounded-SAM 做端到端推理,显存最好不低于 8GB,否则跑大图的时候很容易爆显存。

源码运行之前需要把几个核心依赖装好。PyTorch 建议直接走官方命令安装,不要用 pip 默认源,不然下载慢而且容易装错版本。opencv-python、Pillow、PyYAML、matplotlib 这些常规依赖直接用 pip 装就行。如果计划在 X-AnyLabeling 里直接跑推理模型,还需要装 onnxruntime-gpu,这里要注意,onnxruntime 的 GPU 版对 CUDA 版本敏感,装错了运行时会报一堆看不懂的错。

2.2 PyCharm 运行 X-AnyLabeling 源码的完整步骤

我见过不少人卡在 PyCharm 里跑 X-AnyLabeling,报错千奇百怪,其实根因基本都是环境没配对。接下来按步骤说清楚。

第一步是拉取代码并准备虚拟环境。在 PyCharm 里新建项目,把 X-AnyLabeling 的 GitHub 仓库克隆到本地,然后在 PyCharm 里创建一个新的虚拟环境。注意一定要让 PyCharm 使用你之前装好的 Python 解释器,不要让它自动创建一套新的,否则新环境里还得重新装一遍 CUDA 相关的东西。

第二步是安装项目依赖。X-AnyLabeling 项目的 requirements.txt 里列了大部分依赖,直接 pip install -r requirements.txt 装上就好。如果你要跑 Grounded-SAM 相关功能,还需要额外安装 segment-anything 和 groundingdino 这两个库,装的时候注意看版本兼容性。

第三步是配置模型目录。X-AnyLabeling 默认有个 model 相关配置,需要把下载好的模型权重放进去,有些模型还需要在配置文件中指定路径,路径写错是运行时报错的高频原因。

第四步是运行主程序。找到项目里的 main.py,右键 Run 就行。如果你在 PyCharm 里发现 Console 有输出但界面没弹出来,多半是 PyQt5 版本和系统显示环境冲突,最简单的办法是检查 PyQt5 版本,或者用一个独立的终端窗口运行python main.py,这样可以绕过 PyCharm 的渲染环境问题。

2.3 环境部署中的高频报错与排查方案

先讲一个最常见的报错:ModuleNotFoundError。这个错误基本每台新电脑都会碰到,原因就是 requirements 没装全,或者你换了 Python 环境但 PyCharm 还在用旧的解释器。排查思路很简单,在 PyCharm 的终端里执行python -c "import torch; print(torch.__version__)",如果输出正常,说明 PyTorch 装好了,再去逐个 import 项目里的核心模块,缺什么就补什么。

第二个高频报错是 CUDA 相关的 RuntimeError,提示 no kernel image is available on the device。这个我踩过一次坑,最后发现是 PyTorch 的 CUDA 版本和显卡驱动不匹配,解决方法是升级显卡驱动,或者换一个对应 CUDA 版本的 PyTorch 重新装。操作上注意别直接在已经跑起来的虚拟环境里重装 PyTorch,最好新建一个干净的虚拟环境重新来。

第三个报错是 Qt 平台插件相关的错误,提示 could not load the Qt platform plugin xcb。这个问题在 Linux 环境下比较常见,多半是缺 libxcb 相关依赖,直接sudo apt install libxcb-xinerama0之类的包可以先试试,如果不行就去查一下 xcb 相关的依赖完整性。Windows 下遇到这个问题的概率不大,真遇到了多半是 PyQt5 版本和 Python 版本不匹配,换个兼容版本就好。

3. Grounded-SAM 自动标注核心环节

3.1 Grounded-SAM 的推理流程拆解

Grounded-SAM 的推理分两大步。第一步是 Grounding DINO 根据文本提示计算目标检测框,它做的就是开放词汇检测,你给它一组类别词,比如“person, car, dog”,它在图片里找出这些目标并输出对应的边界框。第二步是 SAM 利用这些边界框生成分割掩码。SAM 本身支持基于点、框或文本提示进行分割,Grounded-SAM 就是把 Grounding DINO 输出的框作为 SAM 的框提示输入,从而得到边界框和像素级别的分割掩码。

这个流程看起来简单,实际运行时的细节问题不少。Grounding DINO 输出的框有时候会非常贴近目标边缘,有时候又会大一圈,这取决于模型对文本提示的理解和阈值设置。SAM 的分割结果相对稳定一些,但如果目标本身边界模糊,比如行人和背景颜色非常接近,SAM 输出掩码的边界也会出现毛刺。整个流程跑下来后,你需要一个可视化检查的过程,确认结果可用再进入人工校准环节。

3.2 box_threshold 和 text_threshold 的参数调优

这两个参数直接决定检测结果的质量。box_threshold 是检测框置信度的门槛,默认值通常在 0.3 到 0.5 之间;text_threshold 是文本匹配的阈值,决定类别词和目标区域之间的语义匹配程度。如果 box_threshold 设得太低,会有大量背景区域被当成目标输出,人工审核工作量爆炸;设得太高,漏检率又上来了。

我自己的经验是,针对目标检测标注项目,box_threshold 设置在 0.25 到 0.35 之间比较合适,text_threshold 设置在 0.2 到 0.3 之间。你可以先拿 10 张有代表性的图片快速跑一轮,看输出框的整体质量再微调。比如跑道路场景时,我习惯把 box_threshold 调到 0.28 左右,这时候模型会把一些被遮挡的车辆也检出来,但也不会把树影当车框出来。如果是无人机视角的小目标检测,这个阈值就明显不合适了,小目标本身置信度就低,再卡 0.28 会漏掉一大半,这时候就得大胆调到 0.2。

3.3 文本提示词怎么写效果最好

提示词是自动标注的“咒语”,写得好不好直接影响检测效果。在 Grounded-SAM 里,提示词用逗号分隔即可,类别名词用最直接的描述。比如你要标注“卡车”,不要写“large freight vehicle”,直接写“truck”反而效果更好。此外,如果提示词里包含一些过于模糊的类别词,模型输出很可能不稳定。

我还发现一个细节:提示词里的类别顺序也会影响一定效果。在 Grounded-SAM 的推理代码里,文本编码器会对整个提示词一起做编码,类别词之间的关系会影响词元语义的权重。实测情况下,把视觉上容易混淆的类别放在一起,误检率会稍微上升,比如“car”和“bus”一起出现时,偶尔会把面包车当公交车。所以如果你要标注的类别确实容易混淆,可以考虑分批次运行,每批只跑一类或两类目标,虽然总推理时间变长了,但结果干净很多。

3.4 推理性能优化与显存管理

Grounded-SAM 的显存占用大头在 SAM 的分割阶段,因为它在生成掩码的时候需要在图像特征上做多次上采样和迭代。碰到显存不足的问题,有几个有效的思路。第一个是控制输入图像的分辨率,先把长边缩放到 640 或者 800 像素再推理,虽然小目标召回率会受一点影响,但显存压力小很多。第二个是分块推理,如果你的场景是高清大图,比如 4000x3000 的航拍图,整图塞进模型肯定爆显存,可以把图切成重叠的 512x512 块分别推理,然后用非极大值抑制合并重叠区域的框。第三个是调整 SAM 的掩码细化次数,在代码里把默认的 mask_refine 次数调低,能省出一部分显存空间。

如果这些还不够,那就只能换显存更大的卡了。我建议在标注项目启动之前先做一次显存预算评估,拿一张最复杂的图跑一轮,记录下来峰值显存,再决定批次大小和并行策略。

4. 人工校准:X-AnyLabeling 的高效玩法

4.1 如何导入自动标注结果

Grounded-SAM 跑完的标注结果一般是 COCO 格式的 JSON 文件,而 X-AnyLabeling 对这种格式的支持比较友好,你可以直接导入。导入之前在文件里检查一下 category_id 的映射关系是否和你的项目约定一致,不一致的话在 X-AnyLabeling 里改起来比较麻烦,不如在导入前先做一次批处理把 category_id 映射修正。我习惯用一个小脚本跑一遍,把 JSON 里的 category_id 重新编号,再导入就能直接开工。

在 X-AnyLabeling 里导入标注结果后,左侧图片列表可以直接切换图片,右侧标签面板可以勾选不同的类别显示和隐藏,视觉干扰降到最低。接下来要做的就是把每一张图快速过一遍,修正明显错误的框和掩码。

4.2 快捷键配置与标注速度提升技巧

X-AnyLabeling 内置了快捷键操作,但默认的一套可能不完全符合你的习惯,建议在设置里自定义一套。我最常用的核心操作是:切换下一张图片、旋转当前标签、删除选中的标签、放大缩小图片、隐藏标签显示。这些操作全部能通过键盘完成,手不用离开键盘,速度会快非常多。

更关键的是审核策略。拿到模型输出的标注结果后,不要每张图逐像素核对,那样速度不会比纯手工快多少。正确做法是先浏览图片列表,把明显有问题的图标记出来优先处理,比如检测框剧烈偏移、漏检严重、背景区域被误检成目标的图。正常图只需要快速扫一眼,确认没有大的质量问题就跳过。实测下来这种“按问题优先级审核”的方式,比逐张精修至少能节约一半时间。

4.3 漏标注的快速兜底技巧

模型跑完一轮之后,漏检是必然存在的,没有任何一个开放词汇检测模型能在所有场景下全覆盖。我在实操时最常用的是 DINO 二次检测定位漏检目标:第一次跑 Grounded-SAM 用的是指定类别的文本提示,完成一遍后用一个全类别通用提示词再跑一遍,把前一轮没检出来的目标补上。通用提示词我通常写成“all objects”,但这样做会夹杂大量无关目标,不过没关系,这一轮只是用来提醒你漏了哪些目标,最终去留由人决定。

除了这种方式,也可以在 X-AnyLabeling 里手动补框,把漏掉的目标直接画出来,这一步无法避免,但经过一轮自动标注之后,漏检目标总体数量很少,补框的操作比自己从零开始标注要快太多。

4.4 人工校准阶段的质量控制标准

人工校准最怕的问题是标准不一致。你今天觉得这个框贴着目标边缘就行,明天可能觉得放宽一圈更好,这样的标注结果交给训练脚本,模型学到的边界就乱了。我的建议是,在开始校准之前定一套简单的规则。第一,检测框必须贴合目标最外边缘,不包含背景区域,对于被遮挡目标,框住可见部分即可。第二,分割掩码边界要达到逐像素级别,但也不需要把目标上细微的缝隙都区分出来。第三,对存在歧义的目标类别,比如一个物体既是“vehicle”又是“car”,统一按更细粒度的类别标注,尽量避免一标多义。

这些规则听起来基础,但执行层面经常走样。我的做法是把规则写成一个小文档,放在标注工作目录里,每天开始工作之前过一遍。

5. autodistill 自动化蒸馏与批量标注

5.1 autodistill 的工作原理与适用场景

autodistill 本质上是一个蒸馏框架,核心思路是让一个大模型当教学模型,对未标注的图片做自动推理,生成伪标签;然后拿伪标签数据去训练一个学生模型,学生模型经过训练后在自己的推理成本约束下尽可能逼近教师模型的性能。和人工标注相比,autodistill 的最大优势是:一旦教师模型在某个域内验证稳了,后续扩数据的边际成本非常低。

适用场景主要集中在中大规模数据集构建上。如果你需要快速扩充标注数据,或者计划在不同数据分布下反复迭代模型,autodistill 比较合适。如果只有一两百张图的项目,直接人工标注或者半自动流程反而是最优解。

5.2 用 autodistill 适配 Grounded-SAM 教师模型

autodistill 官方支持多种教师模型,Grounded-SAM 也在支持列表内。配置过程大概分为几个步骤。第一,选择一个目标检测项目骨架,autodistill 支持基于检测框的项目类型,在配置中指定项目目录,图片放在 images 文件夹即可。第二,指定教师模型,autodistill 对 Grounded-SAM 的适配方式是在配置文件中声明基础模型类型为 GroundedSAM,同时设置好对应的文本提示词。第三,跑自动标注命令,autodistill 会遍历 images 目录里的所有图片,使用 Grounded-SAM 推理生成检测框标注,统一输出到标注文件。跑完一批之后,你可以在输出目录里看到 JSON 格式的 COCO 标注文件和对应的可视化预览图,有可视化预览这一点非常有用,不需要额外写代码看标注效果。

5.3 学生模型选型与蒸馏策略

学生模型的选型要结合推理环境和精度要求来定。如果只是做快速验证,用 YOLOv8n 这类轻量模型就行;如果对精度有一定要求,YOLOv8m 或 v8l 是更好的选择。学生模型的训练直接使用 autodistill 生成的伪标签,训练轮数建议控制在 50 到 150 个 epoch 之间,蒸馏的收敛速度快,太久了容易过拟合伪标签里的噪声。

蒸馏策略里最值得注意的一点是:不要把 teacher 模型生成的原始伪标签直接一股脑扔进去训练。我通常的做法是,在第一轮蒸馏完成后,拿验证集测一轮 mAP,把明显假阳性的伪标签样本从训练集中挑出来删掉,再启动下一轮蒸馏或训练。这样迭代出来的模型在真实场景下的表现更稳。

5.4 蒸馏后的学生模型如何反哺标注

这是整个流水线里最巧妙的闭环。学生模型训练收敛后,它的推理速度和显存占用都远低于 Grounded-SAM,可以直接用来做更大规模数据集的自动标注。在 X-AnyLabeling 里载入自己训练好的 YOLOv8 模型,导入一批全新图片,让模型自动推理出检测框,再套用之前的人工校准流程做人工审核。由于学生模型在标注场景上已经学习过了,推理结果的第一次通过率远高于 Grounded-SAM,人工审核的压力进一步降低。

这个循环跑顺之后,你的数据标注产能会有一个质变:第一轮用 Grounded-SAM 做冷启动,第二轮开始用自训模型做自动标注,每一轮产生的校准数据都可以作为下一轮微调的新增量,标注质量随轮次递增,人工投入随轮次递减。

6. 完整流程实操记录:从零到一跑通全流程

6.1 项目背景与数据集准备

这次实操我选的场景是道路违规停车的检测,数据集里包含大约 1200 张不同时段、不同天气条件下的街景图片。原始图片全部没有标注,整个流程的目标是把这批图片变成 YOLOv8 可用的训练集。

数据集准备阶段的几个关键点要提一下。第一,图片格式统一转成 JPG,EXIF 信息不影响标注,但影响图片读取速度,统一格式处理起来省心。第二,图片重命名按流水号来,方便后续与标注文件对应。第三,在正式跑流程之前先把所有图片过一遍缩放,长边统一到 1280 像素,小图直接放大到 640 像素以上,这样可以避免模型对过小分辨率图片的输出波动。

6.2 Grounded-SAM 批量推理过程与参数记录

推理脚本基于 Grounded-SAM 的官方 demo 做了改造,主要是把单张图片推理改成遍历整个目录,并在输出端统一格式化为 COCO JSON。运行时提示词用了“car, truck, bus, motorcycle, bicycle”,box_threshold 设置为 0.28,text_threshold 设置为 0.25,图片推理尺寸长边 800。

整个推理跑了 1200 张图,用了大约 25 分钟,平均每张图 1.2 秒左右,显存占用峰值约 7.2GB。输出结果里有 3100 多个检测框,第一眼整体效果可以接受,但确实有部分图存在框偏移、漏检和误检的问题,特别是傍晚逆光环境下可见度低的目标。

6.3 X-AnyLabeling 人工校准的完整记录

校准阶段我只处理了模型输出的结果,没有对全图重新过一遍,目标是保持高效。整个校准花了大约 3 小时,处理完 1200 张图。主要工作量集中在三个地方:一是修正车辆检测框偏移,大约有 12% 的图存在这个问题;二是补齐漏检的摩托车和自行车,这类目标在模型默认阈值下很容易漏掉;三是删掉误检的交通标志牌和垃圾桶,这些目标是文本提示词之外内容被模型误识别成车辆目标。

为了让校准结果更准确,我在 X-AnyLabeling 里临时把“car”类的框显示颜色改成红色,背景图像不变,这样快速扫图的时候能很直观地发现框偏移的问题。最终校准完成的标注数量为 2900 个目标,比模型原始输出少了一些误检,补齐了约 400 个漏检目标,新增的框主要是摩托车和自行车。

6.4 autodistill 蒸馏训练与学生模型效果对比

校准完成后,用 autodistill 把这份标注数据蒸馏到 YOLOv8m 上。训练配置方面,img 尺寸设置为 640,batch size 设为 16,训练 100 个 epoch。训练时间大约 40 分钟,结束之后在验证集上测了一下 mAP50,达到 0.71,mAP50-95 在 0.45。

学生模型的后续表现很关键:我又拿了一批全新的场景图片出来,用 YOLOv8m 做自动标注,框输出的质量比 Grounded-SAM 明显稳定,漏检率下降了一半以上。整条流程跑到这个阶段,才算真正完成闭环。

6.5 从流程实践看自动标注的价值边界

这轮实操让我对自动标注的定位有了更清晰的认知。它的价值不在于“替代人工”,而在于“压缩人工时间”和“规模化产能”。对单个中型项目来说,12 小时的人工标注可以被压缩到 3 小时;对要不断迭代的数据集来说,自动标注配合蒸馏模型可以带来持续扩产的能力。但它不是魔法,遇到分布外场景,模型输出照样会不靠谱。期待一个零人工介入的纯自动标注方案,在目前的模型能力下不太现实。

7. 整套流程的避坑总结与实战心得

7.1 标注格式与类别映射的常见坑

整个流程跑下来,最让人头疼的一个问题出现在对格式的语义层面:不同工具对 COCO JSON 的字段命名和层次结构略有差异。X-AnyLabeling 导入时对 categories 字段和 images 字段的解析顺序很挑剔,autodistill 输出的标注文件在 X-AnyLabeling 里导入时偶尔会发生类别 ID 错位的现象。排查下来发现是 categories 的 id 从 0 开始还是从 1 开始的差异导致的。后续我写了一个两行代码的字段修正脚本,每次导入前先跑一遍,从此这个坑就再也没遇到了。

另外类别名尽量用纯英文小写形式命名,中文字符在部分工具的参数传递流程中会出现编码问题,看起来微不足道,但踩中一次就会浪费你半小时到一小时去排查。

7.2 漏检目标的处理策略建议

漏检目标的处理是自动标注质量的决定因素之一。在自动标注流水线里,漏掉一个目标对后续模型训练的负面影响比误检一个大得多。我的对数处理思路是,开工前先跑几个度量步骤,把每一类目标的漏检情况摸清楚。如果某类目标的漏检率超过了 20%,调整提示词或阈值,甚至专门针对这类目标单独跑一轮推理。

人工校准阶段如果有剩余漏检,必须自己手动补上。这件事逃不掉,与其到处找技巧,不如把漏检目标集中整理出来,高效地批量补标。

7.3 自动标注结果导入训练框架的注意点

导入训练框架前最重要的一步是对标注文件做校验。我用一个小工具检查是否有 out-of-bounds 的检测框坐标、是否有 category_id 越界的标注、是否存在 box_width 和 box_height 为 0 的异常数据。这些脏数据如果不清理就直接训练,轻则损失一些训练效率,重则导致训练过程中 loss 出现 NaN。实测下来,跑训练脚本前三分钟内最容易暴露问题,一段简洁的校验代码能用掉这几分钟来解决。

7.4 完整流程对个人开发者的实用建议

如果你是个人开发者,想在自己的数据集上跑这套流程,我的建议是:不要每一环节都追求完美,先让整个流程跑起来,看结果,再逐步细化。第一次跑的标注质量可能不理想,先拿 100 张图跑通流程,校准也可以粗糙一点,把主要问题定位到某个环节之后再做针对性优化。相比一开始就追求全流程高质量,先跑通再优化,成功率要高得多。

另一个建议是,尽量把每轮运行参数记录下来。配置文件每天做一个备份,记录时间戳和当前参数设置。这个过程相当于给项目上了一层保险,出了问题能轻松回滚到上一个可用状态。

7.5 后续可以继续扩展的方向

这条流水线跑通之后,还能继续往这些方面扩展。在自训模型跑完新一批自动标注后,尝试验证集 mAP 的上升情况,把自动标注结果继续加入训练集迭代,让标注质量持续上升;也可以进一步加入图像分类模型,对标注结果做二次过滤,减少误检目标入库。路线走到这一步,自动标注就算是真正长成了一套适合你自己的数据生产线。

返回列表