ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

AutoGluon 与 Label-Studio 集成:LabelStudioReader 导出文件读取器实战指南

AutoGluon 与 Label-Studio 集成:LabelStudioReader 导出文件读取器实战指南 AutoGluon 与 Label-Studio 集成LabelStudioReader 导出文件读取器实战指南【免费下载链接】autogluonFast and Accurate ML in 3 Lines of Code项目地址: https://gitcode.com/GitHub_Trending/au/autogluonLabel-Studio 是一款流行的开源数据标注工具标注完成后导出的结果文件CSV / JSON / JSON-MIN并不能直接用于 AutoGluon 多模态训练。本指南围绕 AutoGluon 提供的LabelStudioReader位于 multimodal/src/autogluon/multimodal/utils/label_studio.py系统讲解如何将 Label-Studio 的标注导出文件一键转换为 AutoGluon 可直接接收的 DataFrame 输入涵盖图片分类、命名实体识别NER与自定义模板三种典型场景。读完本文你将掌握LabelStudioReader的初始化、host 处理机制、三种转换函数的参数细节与取舍并能够直接接入 AutoGluon 多模态训练流程。一、LabelStudioReader 能解决什么问题在 AutoGluon 多模态Multimodal即 AutoMM工作流中模型的输入数据被统一整理为 pandas DataFramedata_columns指定的列存放样本数据图片 URL、文本内容等label_columns指定的列存放标注结果。而 Label-Studio 导出的标注文件格式是面向标注工具的字段命名、嵌套结构与 AutoGluon 期望的输入格式并不一致手工清洗既繁琐又容易出错。LabelStudioReader正是为消除这一转换成本而设计它读取 Label-Studio 的导出文件按模板或用户指定提取数据列与标签列返回(df, labels)二元组其中df是完整 DataFramelabels是对应的标签子集可直接喂给MultiModalPredictor。from autogluon.multimodal.utils import LabelStudioReader # 以默认 localhost host 初始化 ls LabelStudioReader() # 重新指定 host ls.set_labelstudio_host(http://localhost:8080)说明LabelStudioReader源码位于multimodal/src/autogluon/multimodal/utils/label_studio.py__init__方法接收可选的host参数未指定时默认值为http://localhost:8080Label-Studio 在本机的默认地址初始化时会打印提示信息通过set_labelstudio_host(host)可以随时重置 host。二、前置知识Label-Studio 导出文件与数据可访问性1. 导出格式Label-Studio 支持将标注任务导出为 CSV、JSON、JSON-MIN 等多种格式各格式细节以 Label-Studio 官方导出文档为准。在LabelStudioReader当前实现中CSV 与 JSON / JSON-MIN 三种格式均被支持转换逻辑统一封装在get_dataframes_by_path中扩展名为.csv时调用read_from_labelstudio_csv见 label_studio.py按列名直接抽取扩展名为.json或.json_min时调用read_from_labelstudio_json见 label_studio.py内部通过annotations字段判断是完整 JSON 还是 JSON-MIN其他扩展名会抛出OSError(current file extension ... is not supported.)。2. 文件 URL 的来源问题对于图片等文件类型的数据标注任务通常需要额外提供 JSON 文件来指明文件 URL。但如果用户只是把文件直接拖入 Label-Studio Web 界面而没有提供原始 URLLabel-Studio 会为这些文件生成一个以 Label-Studio 主机地址为前缀的临时 URL。这意味着只有在 Label-Studio 服务保持开启时这些文件才可被访问一旦服务关闭文件将无法访问。这也是ls_host_on参数存在的根本原因。3. 标注模板Label-Studio 提供了一系列内置标注模板Image Classification、Named Entity Recognition、Object Detection 等帮助用户快速开始标注。LabelStudioReader通过columns_template字典见 label_studio.py为这些内置模板预置了默认的数据列与标签列映射TaskType枚举见 label_studio.py目前定义了image_classification、object_detection、customize、text_classification、text_summarization、named_entity_recognition六种任务类型其中内置模板映射已覆盖图片分类、目标检测与 NER 三种。三、核心参数详解ls_host_on该参数决定数据文件是否依赖 Label-Studio 主机来定位如果用户按照 Label-Studio 官方导入指南通过 TXT / CSV / TSV 提供了一组 URL 列表或在 JSON 中引用了 URL那么导出文件中会直接包含数据文件的 URL无需借助 Label-Studio 主机寻址此时应设置ls_host_onFalse默认值。如果标注任务的数据是通过 Label-Studio Web 界面直接上传的则建议设置ls_host_onTrue并确保 Label-Studio Web 服务处于开启状态。底层处理逻辑位于process_data_str见 label_studio.py其对不同数据形态的处理规则可归纳如下数据形态ls_host_onTrue时ls_host_onFalse时处理逻辑文件 URL、纯文本内容等可访问可访问不做任何处理原样保留/data/upload/...直接拖入上传的文件可访问不可访问True拼接 host如http://localhost:8080/data/upload/...host 开启时可访问False打印Warning: cannot read ... with the label-studio host off.文件不可访问/data/local-files/?d...本地存储引入的文件可访问有条件可访问True拼接 host 前缀False剥离前缀还原为本地路径前提是数据集根目录未被移动其他如 S3、GCS、Redis 路径——源码中以 TODO 注释标注尚未实现按原样返回从上表可以看出一个典型的实战取舍如果图片是直接拖入 Label-Studio 上传的必须打开 Label-Studio 服务并设置ls_host_onTrue否则from_image_classification只会给出不可访问的路径与警告而使用本地存储或显式 URL 的数据则更灵活。data_columns与label_columns这两个参数用于指定导出文件中哪些列是数据、哪些列是标签其语义随导出格式不同而变化CSV 导出指 CSV 的列名列表。例如一个双图片分类导出文件包含image1、image2两列图片 URL标签列名为label则应设置data_columns[image1,image2]、label_columns[label]。JSON-MIN 导出指 JSON 键名列表。例如 JSON-MIN 格式示例中数据键为image、标签键为tag则应设置data_columns[image]、label_columns[tag]。JSON 导出完整 JSON 格式较为复杂。为处理嵌套对象源码在read_from_labelstudio_json中对record_path[annotations, result]路径执行了pd.json_normalize规范化见 label_studio.py从而支持对嵌套的label_columns进行解析。例如目标检测示例中可设置data_columns[image]、label_columns[value.height,value.rectanglelabels,value.rotation,value.width,value.x,value.y]。需要注意各转换函数对未能在导出文件中找到的列只会打印skip xxx for not in the export data columns之类的提示并跳过不会报错中断因此建议在调用前核对导出文件的真实列名。四、三种场景实战图片分类、NER 与自定义模板示例 1带文件数据的图片分类适用 Label-StudioImage Classification 模板操作链路为在 Label-Studio 选择该模板 → 标注图片 → 点击 Export 选择导出格式 → 调用from_image_classification将导出文件转换为 AutoGluon 的 DataFrame 输入。# 转换 Label-Studio 图片分类模板导出文件image df, labels ls.from_image_classification(ic.json, ls_host_onFalse)from_image_classification的参数如下参数类型是否可选说明pathStr必填导出文件的路径ls_host_onBoolean必填是否需要通过 Label-Studio host 访问部分文件data_columnsList[Str]可选数据对应的键名或列名默认使用图片分类模板的给定名称若用户修改了模板中的字段名则需在此传入label_columnsList[Str]可选标签对应的键名或列名规则同data_columns从源码看该函数首先根据文件扩展名区分 JSON 与 JSON-MIN若是 JSON 但首条记录不含annotations键则视为 JSON-MIN再通过get_columns_by_type(TaskType.IMAGE_CLASSIFICATION, format...)取模板默认列图片分类 CSV 默认data_columns[image]、label_columns[choice]JSON 默认标签列为value.choices见 label_studio.py随后对数据列逐条应用process_data_str依据ls_host_on进行预处理最终返回(df, df[label])。下面是一份真实的图片分类导出文件示例列包含 Image、Id、Choice、Annotator 等信息数据列中可见/data/upload/...与/data/local-files/...路径当ls_host_onTrue时/data/upload/...与/data/local-files/...均被拼接为http://localhost:8080/...形式的可访问 URL输出如下当ls_host_onFalse时上传的/data/upload/...文件无法访问控制台会打印cannot read ... with the label-studio host off.警告本地存储路径则被还原为本地绝对路径示例 2纯文本标注无需 URL适用 Label-StudioNamed Entity RecognitionNER模板操作链路为选择 NER 模板 → 标注文本 → 导出 → 调用from_named_entity_recognition转换为 AutoGluon NER 任务输入。# 转换 Label-Studio 命名实体识别模板导出文件text df, labels ls.from_named_entity_recognition(neg.json)由于文本数据不存在 URL 可访问性问题该函数移除了ls_host_on参数。其参数如下参数类型是否可选说明pathStr必填导出文件的路径data_columnsList[Str]可选数据对应的键名或列名默认使用 NER 模板给定的名称label_columnsList[Str]可选标签对应的键名或列名规则同data_columnsNER 模板的默认映射见 label_studio.pyCSV 为data_columns[text]、label_columns[label]JSON 标签列为value.start、value.end、value.text、value.labelsJSON-MIN 与 CSV 相同。重要限制嵌套解析NER、目标检测这类任务中单个文本或图片可能对应多个标注因此标签列是嵌套结构。目前LabelStudioReader只对 JSON 格式实现了嵌套数据解析CSV 与 JSON-MIN 尚不支持源码中read_from_labelstudio_json通过pd.json_normalizerecord_path完成嵌套展开而 CSV / JSON-MIN 路径仅做平铺抽取。因此官方建议NER 等含多标签的任务优先导出 JSON 文件对 CSV / JSON-MIN 的嵌套解析将在未来版本补充。CSV / JSON-MIN 文件处理结果如下Label 列为嵌套的 NER 标注信息JSON 文件处理结果如下标签被展开为value.start、value.end、value.text、value.labels多列示例 3自定义模板如果用户使用自己创建的 Label-Studio 模板进行标注并导出可通过from_customize转换。此时模板无法提供默认列映射用户必须显式指定data_columns与label_columns# 转换用户自定义模板的导出文件 df, labels ls.from_customize(custom.csv, ls_host_onTrue, data_columns[image1, image2, image3], label_columns[label])注意文档中出现的函数名有两种写法from_customize源码中的实际实现见 label_studio.py与from_customized早期文档示例中的写法调用时以源码中的from_customize为准。该函数参数如下参数类型是否可选说明pathStr必填导出文件的路径ls_host_onBoolean必填是否需要通过 Label-Studio host 访问部分文件data_columnsList[Str]必填数据对应的键名或列名label_columnsList[Str]必填标签对应的键名或列名五、源码结构速览与扩展方向LabelStudioReader的完整实现集中在单个文件 multimodal/src/autogluon/multimodal/utils/label_studio.py 中整体结构清晰TaskType枚举声明当前支持的任务类型作为模板查询的索引columns_template字典为图片分类、目标检测、NER 三种内置模板按 CSV / JSON / JSON-MIN 三种格式预置默认列映射自定义模板返回空列表read_from_labelstudio_csv/read_from_labelstudio_json底层的格式解析函数前者按列名平铺抽取后者区分完整 JSON嵌套展开与 JSON-MIN平铺抽取get_dataframes_by_path按文件扩展名分发到对应解析函数不支持的扩展名直接抛错LabelStudioReader类对外提供set_labelstudio_host、get_columns_by_type、process_data_str以及三个转换入口from_image_classification、from_named_entity_recognition、from_customize。从代码结构可以推断该模块仍处于持续演进中process_data_str中留有# TODO: add s3, gcd, redis support的注释TaskType枚举中text_classification、text_summarization等类型已预留但尚未提供对应的转换入口嵌套解析对 CSV / JSON-MIN 的支持也尚未落地。如果你需要处理目标检测Object Detection模板可参照 columns_template 中预置的value.x、value.y、value.width、value.height、value.rotation、value.rectanglelabels等标签字段结合 JSON 导出格式手工整理输入。六、完整接入 AutoGluon 训练的示例将上述转换结果接入 AutoGluon 多模态训练十分直接以图片分类为例的端到端流程如下from autogluon.multimodal import MultiModalPredictor from autogluon.multimodal.utils import LabelStudioReader # 1. 读取 Label-Studio 导出文件 ls LabelStudioReader(http://localhost:8080) df, labels ls.from_image_classification(ic.json, ls_host_onTrue) # 2. 组装训练数据数据列 标签列 train_data df.copy() train_data[label] labels[value.choices] # 3. 训练与预测 predictor MultiModalPredictor(labellabel, problem_typeclassification) predictor.fit(train_data) pred predictor.predict(train_data)要点提醒训练前请确认data_columns中的图片列经过process_data_str处理后都是可访问的完整 URL 或本地路径NER 场景建议导出 JSON 以保证多标签嵌套信息不丢失文件不存在时会抛出OSError(annotation file path not exists.)空 JSON 导出文件会抛出ValueError(ERROR: empty export file)定位问题时可优先核对这两类异常。总结LabelStudioReader是 AutoGluon 多模态与 Label-Studio 标注工具之间的桥梁组件通过内置模板列映射与ls_host_on主机寻址机制将图片分类、NER 与自定义模板的导出文件CSV / JSON / JSON-MIN一键转换为可直接训练的 DataFrame。使用时要重点关注两点带文件的数据务必根据数据来源正确设置ls_host_on含多标签嵌套的任务务必使用 JSON 导出格式。掌握这些细节后你就能将标注平台的数据高效地导入 AutoGluon 训练流水线。【免费下载链接】autogluonFast and Accurate ML in 3 Lines of Code项目地址: https://gitcode.com/GitHub_Trending/au/autogluon创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表