出指南:注解與數(shù)據(jù)的格式、API 與實操詳解)
Label Studio 導(dǎo)出指南注解與數(shù)據(jù)的格式、API 與實操詳解【免費下載鏈接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format項目地址: https://gitcode.com/GitHub_Trending/la/label-studioLabel Studio 支持在標(biāo)注項目的任意階段導(dǎo)出注解annotations與數(shù)據(jù)導(dǎo)出結(jié)果可直接用于訓(xùn)練機器學(xué)習(xí)模型或數(shù)據(jù)科學(xué)項目。本指南以官方文檔為基礎(chǔ)結(jié)合倉庫源碼label_studio/data_export/、label_studio/tasks/functions.py等深入講解 UI 導(dǎo)出、命令行導(dǎo)出、Easy Export API、快照Snapshot異步導(dǎo)出、受支持的全部導(dǎo)出格式、原始 JSON 結(jié)構(gòu)以及圖像注解單位換算幫助讀者在社區(qū)版與企業(yè)版中選擇最合適的導(dǎo)出路徑并規(guī)避超時陷阱。一、導(dǎo)出機制概覽注解存儲在哪里L(fēng)abel Studio 將注解以原始 JSON 格式存儲在后端數(shù)據(jù)庫中包括 SQLite、PostgreSQL或你指定的云存儲與數(shù)據(jù)庫目標(biāo)存儲。云存儲桶中每個已標(biāo)注任務(wù)對應(yīng)一個名為task_id.json的文件。關(guān)于目標(biāo)存儲同步的更多說明參見云存儲配置。從源碼看同步導(dǎo)出的核心調(diào)用鏈位于 data_export/api.py 的ExportAPI.get()先按條件篩選任務(wù)并序列化為 JSON 列表再由 data_export/models.py 的DataExport.generate_export_file()交給label_studio_sdk.converter.Converter完成格式轉(zhuǎn)換。若轉(zhuǎn)換結(jié)果只有一個文件則直接返回否則會打包成 ZIP 歸檔返回??煺债惒綄?dǎo)出的核心在 data_export/mixins.py 的export_to_file()與后臺任務(wù)export_background()。有一點需要特別注意部分導(dǎo)出格式只導(dǎo)出注解而不導(dǎo)出任務(wù)數(shù)據(jù)本身具體見下文受支持的導(dǎo)出格式一節(jié)。圖像注解以 JSON 導(dǎo)出時邊框尺寸與位置使用相對整張圖片尺寸的百分比而非像素?fù)Q算方法見圖像注解單位換算。二、注解結(jié)果在 JSON 中的保存方式每個標(biāo)注生成的注解annotation都包含**區(qū)域Regions與結(jié)果Results**兩部分Regions指被選中的數(shù)據(jù)區(qū)域可能是文本片段、圖像區(qū)域、音頻片段或其他實體Results指賦予該區(qū)域的標(biāo)簽。每個區(qū)域在每條注解內(nèi)擁有唯一 ID由A-Za-z0-9_-字符組成的字符串每條 result 的 ID 與其對應(yīng)的區(qū)域 ID 相同。當(dāng)預(yù)測prediction被用來生成注解時結(jié)果 ID 會保持一致從而可以追蹤模型生成的區(qū)域并與人工創(chuàng)建、審核過的注解直接對比。Label Studio JSON 格式的注解任務(wù)標(biāo)注完成后每個任務(wù)的原始 JSON 結(jié)構(gòu)如下完整字段說明見API 文檔與任務(wù)格式{ id: 1, created_at:2021-03-09T21:52:49.513742Z, updated_at:2021-03-09T22:16:08.746926Z, project:83, data: { image: https://example.com/opensource/label-studio/1.jpg }, annotations: [ { id: 1001, result: [ { from_name: tag, id: Dx_aB91ISN, source: $image, to_name: img, type: rectanglelabels, value: { height: 10.458911419423693, rectanglelabels: [ Moonwalker ], rotation: 0, width: 12.4, x: 50.8, y: 5.869797225186766 } } ], was_cancelled: false, ground_truth: false, created_at:2021-03-09T22:16:08.728353Z, updated_at:2021-03-09T22:16:08.728378Z, lead_time:4.288, result_count:0, task:1, completed_by:10 } ], predictions: [ { created_ago: 3 hours, model_version: model 1, result: [ { from_name: tag, id: t5sp3TyXPo, source: $image, to_name: img, type: rectanglelabels, value: { height: 11.612284069097889, rectanglelabels: [ Moonwalker ], rotation: 0, width: 39.6, x: 13.2, y: 34.702495201535505 } } ] }, { created_ago: 4 hours, model_version: model 2, result: [ /* ... 結(jié)構(gòu)同上 ... */ ] } ] }關(guān)鍵 JSON 字段說明JSON 屬性名說明id數(shù)據(jù)集中的標(biāo)注任務(wù)標(biāo)識符。data從輸入任務(wù)格式復(fù)制的原始數(shù)據(jù)參見任務(wù)格式。project該任務(wù)所屬 Label Studio 項目的標(biāo)識符。annotations包含該任務(wù)標(biāo)注結(jié)果的數(shù)組。annotations.id已完成任務(wù)的標(biāo)識符。annotations.lead_time標(biāo)注該任務(wù)所花費的秒數(shù)。annotations.result包含標(biāo)注結(jié)果的數(shù)組。annotations.updated_at注解創(chuàng)建或修改的時間戳。annotations.completed_at注解創(chuàng)建或提交的時間戳。annotations.completed_by創(chuàng)建注解的用戶 ID與 UI 人員頁面上的用戶列表順序一致。annotations.was_cancelled布爾值表示該注解是否被跳過或取消。result.id該任務(wù)下特定標(biāo)注結(jié)果的標(biāo)識符可用于將不同控制標(biāo)簽如Labels與Rectangle的區(qū)域關(guān)聯(lián)起來。result.parentID可選父區(qū)域 result.id 的引用用于在 Regions 面板中組織區(qū)域的層級樹。result.from_name標(biāo)注該區(qū)域所用標(biāo)簽的名稱參見控制標(biāo)簽。result.to_name提供待標(biāo)注區(qū)域的對象標(biāo)簽名稱參見對象標(biāo)簽。result.type用于標(biāo)注該任務(wù)的標(biāo)簽類型。result.value標(biāo)簽相關(guān)的值包含標(biāo)注結(jié)果的細(xì)節(jié)其結(jié)構(gòu)取決于標(biāo)簽類型參見各標(biāo)簽文檔。drafts草稿注解數(shù)組結(jié)構(gòu)與 annotations 類似。僅當(dāng)通過UI 快照導(dǎo)出或快照 API導(dǎo)出時包含。predictions機器學(xué)習(xí)預(yù)測數(shù)組結(jié)構(gòu)與 annotations 相同但額外帶一個參數(shù)。predictions.score基于概率輸出、置信度或其他指標(biāo)得到的結(jié)果總體得分。task.updated_at任務(wù)或其注解/審核被創(chuàng)建、更新或刪除的時間戳。導(dǎo)入時指定標(biāo)注者completed_by在導(dǎo)入注解時可以通過注解對象中的completed_by字段控制標(biāo)注者分配// 方式 1不指定標(biāo)注者使用導(dǎo)入者 { result: [...], completed_by: null } // 方式 2通過郵箱指定 { result: [...], completed_by: { email: annotatorexample.com } } // 方式 3通過 ID 指定 { result: [...], completed_by: 42 }系統(tǒng)會將該郵箱或 ID 匹配到組織內(nèi)已有用戶若配置允許則回退到導(dǎo)入者。該規(guī)則同時適用于通過 UI、API 或 SDK 導(dǎo)入的場景。企業(yè)版補充字段annotations.reviews注解審核詳情數(shù)組、reviews.id審核 ID、reviews.created_by審核人的用戶 ID、郵箱、姓名等字典信息、reviews.accepted布爾值表示審核人是否接受該注解。三、社區(qū)版通過 UI 與命令行導(dǎo)出通過 UI 導(dǎo)出在社區(qū)版Community Edition中按以下步驟導(dǎo)出數(shù)據(jù)與注解在項目中點擊Export選擇可用的導(dǎo)出格式點擊Export導(dǎo)出數(shù)據(jù)。注意三點無論標(biāo)簽頁上設(shè)置了什么過濾器導(dǎo)出結(jié)果始終包含已標(biāo)注任務(wù)已取消cancelled的已標(biāo)注任務(wù)也會包含在導(dǎo)出結(jié)果中若要對導(dǎo)出應(yīng)用標(biāo)簽頁過濾條件可改用 SDK 創(chuàng)建導(dǎo)出快照。社區(qū)版的導(dǎo)出超時問題社區(qū)版 UI 的導(dǎo)出是同步生成的作為請求的一部分執(zhí)行。社區(qū)版為保持部署簡單默認(rèn)不運行后臺導(dǎo)出 workerLabel Studio Enterprise 支持后臺 worker 的異步快照導(dǎo)出更適合大規(guī)模項目。對于大型項目社區(qū)版導(dǎo)出耗時可能超過反向代理或 ingress 配置的超時時間通常約90 秒導(dǎo)致 502/504 錯誤或?qū)С龀瑫r。遇到該限制時可選擇以下替代方案使用 SDK 導(dǎo)出快照見 SDK 導(dǎo)出快照 API使用控制臺命令在運行 Label Studio 的機器上直接使用下面的控制臺命令導(dǎo)出項目在大規(guī)模場景下使用 UI 導(dǎo)出Label Studio Enterprise 在 UI 中提供后臺快照導(dǎo)出見下文導(dǎo)出快照。從源碼可以印證這一點同步導(dǎo)出 APIExportAPI.get()直接在同一請求內(nèi)完成查詢、序列化、轉(zhuǎn)換與文件響應(yīng)data_export/api.py而快照導(dǎo)出則通過ExportListAPI創(chuàng)建Export記錄、由后臺任務(wù)export_background()異步生成文件data_export/mixins.py。使用控制臺命令導(dǎo)出label-studio export project-id export-format --export-pathoutput-path啟用調(diào)試日志DEBUG1 LOG_LEVELDEBUG label-studio export project-id export-format --export-pathoutput-path該子命令由 core/argparser.py 注冊支持project_id、export_format如 JSON、JSON_MIN、CSV 等與--export-path參數(shù)--export-serializer-context可用于傳入序列化上下文默認(rèn)值為{annotations__completed_by: {only_id: null}, interpolate_key_frames: true}。實際執(zhí)行邏輯位于 tasks/functions.py 的export_project()先校驗格式是否受支持再按每批 1000 個任務(wù)批量序列化最終調(diào)用DataExport.generate_export_file()生成文件并寫入--export-path若為目錄則追加生成的文件名。四、Easy Export API同步導(dǎo)出對于小型標(biāo)注項目可直接調(diào)用導(dǎo)出端點同步導(dǎo)出注解。導(dǎo)出包含未標(biāo)注任務(wù)在內(nèi)的全部任務(wù)Label Studio 開源版默認(rèn)只導(dǎo)出已標(biāo)注任務(wù)。若想輕松導(dǎo)出包括未標(biāo)注任務(wù)在內(nèi)的全部任務(wù)可在調(diào)用 Easy Export API 時帶上查詢參數(shù)download_all_taskstrue。例如curl -X GET https://localhost:8080/api/projects/{id}/export?exportTypeJSONdownload_all_taskstrue對應(yīng)的同步導(dǎo)出接口為 data_export/urls.py 中的project-exportExportAPI。從源碼看ExportAPI.get()中only_finished not download_all_tasks當(dāng)only_finished為真時會執(zhí)行query.filter(annotations__isnullFalse).distinct()這正是默認(rèn)只導(dǎo)出已標(biāo)注任務(wù)的底層實現(xiàn)data_export/api.py。如果項目很大通常應(yīng)改用快照導(dǎo)出以避免超時??煺漳J(rèn)包含所有任務(wù)包括未標(biāo)注任務(wù)。五、使用快照 API 導(dǎo)出對于擁有數(shù)十萬任務(wù)的的大型標(biāo)注項目按以下三步操作向創(chuàng)建新導(dǎo)出文件/快照發(fā)起 POST 請求響應(yīng)中會包含創(chuàng)建文件的id使用該id作為export_pk檢查導(dǎo)出文件的狀態(tài)仍以該id作為export_pk向下載導(dǎo)出文件發(fā)起 GET 請求完成下載。對應(yīng)的 REST 路由在 data_export/urls.py 中定義POST /api/projects/{id}/exports/創(chuàng)建快照ExportListAPIGET /api/projects/{id}/exports/{export_pk}查看狀態(tài)ExportDetailAPIGET /api/projects/{id}/exports/{export_pk}/download下載文件ExportDownloadAPI。快照模型Export維護(hù)了created / in_progress / failed / completed四種狀態(tài)并通過FileField存儲生成的文件、記錄md5與counters元數(shù)據(jù)data_export/models.py??煺瘴募J(rèn)由get_default_title()生成格式為PROJECT-NAME-at-YEAR-MM-DD-HH-MMUTC 時間。六、導(dǎo)出快照Snapshot異步導(dǎo)出企業(yè)版在 Label Studio Enterprise 中可以創(chuàng)建數(shù)據(jù)與注解的快照按需精確導(dǎo)出標(biāo)注項目中想要的內(nèi)容。這種延遲導(dǎo)出方式更適合從 UI 導(dǎo)出大型標(biāo)注項目。在項目的 Label Studio UI 中點擊Export點擊Create New SnapshotApply filters from tab ...從下拉列表中選擇Default可選Snapshot Name輸入快照名稱便于日后查找。默認(rèn)快照命名為PROJECT-NAME-at-YEAR-MM-DD-HH-MM時間為 UTCInclude in the Snapshot…選擇要包含的數(shù)據(jù)類型All tasks全部任務(wù)、Only annotated僅已標(biāo)注或Only reviewed僅已審核Drafts選擇導(dǎo)出完整草稿注解Complete drafts還是僅導(dǎo)出草稿注解的 IDOnly IDs僅標(biāo)記存在草稿Predictions選擇導(dǎo)出完整預(yù)測Complete predictions還是僅導(dǎo)出預(yù)測 IDOnly IDs僅標(biāo)記任務(wù)存在預(yù)測Annotations啟用要導(dǎo)出的注解類型可指定Annotations普通注解、Ground Truth與Skipped跳過的注解。默認(rèn)只導(dǎo)出普通注解可選啟用Remove user details移除用戶詳細(xì)信息點擊Create a Snapshot開始導(dǎo)出在快照列表中可以看到可下載的快照以及其中包含的內(nèi)容、創(chuàng)建時間與創(chuàng)建者信息點擊Download并選擇導(dǎo)出格式快照文件即下載到本地。從源碼看快照導(dǎo)出支持豐富的過濾選項_get_filtered_tasks()支持按 tab 視圖view、跳過skipped、完成finished與已標(biāo)注annotated過濾任務(wù)data_export/mixins.py_get_filtered_annotations_queryset()支持按普通注解、Ground Truth、跳過的注解取并集過濾data_export/mixins.py序列化選項則控制草稿、預(yù)測、completed_by是否展開以及是否插值視頻關(guān)鍵幀、是否下載資源data_export/mixins.py。七、受支持的導(dǎo)出格式Label Studio 支持多種通用與標(biāo)準(zhǔn)格式導(dǎo)出已完成的標(biāo)注任務(wù)。如果缺少你需要的格式還可以為項目貢獻(xiàn)一種。更多信息參見 Label Studio SDK 倉庫中的 Converter 工具。格式支持的實際判定發(fā)生在 data_export/models.py 的DataExport.get_export_formats()它基于項目解析后的標(biāo)簽配置創(chuàng)建Converter將converter.supported_formats中不支持的格式標(biāo)記為disabled在 UI 中置灰企業(yè)版啟用自定義界面時還會額外加入DOCLANG格式。ASR_MANIFEST將自動語音識別的音頻轉(zhuǎn)寫標(biāo)簽導(dǎo)出為 NVIDIA NeMo 模型期望的 JSON manifest 格式。適用于使用Audio標(biāo)簽配合TextArea標(biāo)簽的音頻轉(zhuǎn)寫項目。{audio_filepath: /path/to/audio.wav, text: the transcription, offset: 301.75, duration: 0.82, utt: utterance_id, ctm_utt: en_4156, side: A}Brush labels to NumPy and PNG將畫筆遮罩標(biāo)簽導(dǎo)出為 NumPy 二維數(shù)組與 PNG 圖片。每個標(biāo)簽輸出為一張圖片。適用于使用BrushLabels標(biāo)簽的畫筆標(biāo)注圖像項目。COCOCOCO 數(shù)據(jù)集常用的機器學(xué)習(xí)格式用于目標(biāo)檢測與圖像分割任務(wù)。適用于使用BrushLabels、RectangleLabels、KeyPointLabels見下方說明或PolygonLabels標(biāo)簽的邊界框與多邊形圖像標(biāo)注項目。KeyPointLabels 導(dǎo)出支持如果使用KeyPointLabels需要在標(biāo)注配置中添加以下內(nèi)容至少一個RectangleLabels選項作為關(guān)鍵點的父邊界框在KeyPointLabels內(nèi)的每個Label上添加model_index該值定義輸出數(shù)組中關(guān)鍵點坐標(biāo)的順序供 YOLO 使用。例如View Image nameimage value$image/ KeyPointLabels namekp toNameimage Label valuenose model_index0/ Label valueeye model_index1/ Label valuetail model_index2/ /KeyPointLabels RectangleLabels namebbox toNameimage Label valueanimal/ /RectangleLabels /View標(biāo)注完成后必須在Regions面板中將每個關(guān)鍵點區(qū)域拖放到其對應(yīng)的矩形區(qū)域下方從而通過parentID建立父子層級關(guān)系這是導(dǎo)出所必需的見上圖與下方導(dǎo)出示例。導(dǎo)出示例Keypoints in JSON[ { id: 17n06ubOJs, type: keypointlabels, value: { x: 6.675567423230974, y: 20.597014925373134, width: 0.26702269692923897, keypointlabels: [nose] }, origin: manual, to_name: image, parentID: QHG4TBXuNC, from_name: kp, image_rotation: 0, original_width: 200, original_height: 179 }, { id: QHG4TBXuNC, type: rectanglelabels, value: { x: 3.871829105473965, y: 4.029850746268656, width: 94.39252336448598, height: 92.08955223880598, rotation: 0, rectanglelabels: [animal] }, origin: manual, to_name: image, from_name: bbox, image_rotation: 0, original_width: 200, original_height: 179 } ]Keypoints in COCO[ { id: 0, image_id: 0, category_id: 0, segmentation: [], bbox: [7.74365821094793, 7.213432835820895, 188.78504672897196, 164.84029850746268], ignore: 0, iscrowd: 0, area: 31119.38345654903 }, { id: 1, image_id: 0, category_id: 0, keypoints: [13, 37, 2, 33, 33, 2, 167, 24, 2], num_keypoints: 3, bbox: [13, 24, 154, 13], iscrowd: 0 } ]Keypoints in YOLO0 0.5106809078771696 0.5007462686567165 0.9439252336448598 0.9208955223880598 0.06675567423230974 0.20597014925373133 2 0.1628838451268358 0.18507462686567164 2 0.8371161548731643 0.13134328358208955 2CoNLL2003CoNLL-2003 命名實體識別挑戰(zhàn)賽常用格式。適用于使用Text與Labels標(biāo)簽的文本標(biāo)注項目。CSV結(jié)果以逗號分隔值存儲列名由標(biāo)注配置中from_name與to_name字段的值決定。支持所有項目類型。JSON以原始 JSON 格式存儲在一個 JSON 文件中的條目列表。適合同時導(dǎo)出數(shù)據(jù)集的數(shù)據(jù)與注解。支持所有項目類型。JSON_MIN僅導(dǎo)出原始 JSON 格式中from_name、to_name值的條目列表。適合導(dǎo)出數(shù)據(jù)集的數(shù)據(jù)與注解且不包含 Label Studio 特有字段。支持所有項目類型。例如{ image: https://htx-pub.s3.us-east-1.amazonaws.com/examples/images/nick-owuor-astro-nic-visuals-wDifg5xc9Z4-unsplash.jpg, tag: [{ height: 10.458911419423693, rectanglelabels: [Moonwalker], rotation: 0, width: 12.4, x: 50.8, y: 5.869797225186766 }] }Pascal VOC XML用于目標(biāo)檢測與圖像分割任務(wù)的流行 XML 格式。適用于使用RectangleLabels標(biāo)簽的邊界框圖像標(biāo)注項目。spaCyLabel Studio 不支持直接導(dǎo)出為 spaCy 二進(jìn)制格式但可以將導(dǎo)出的注解轉(zhuǎn)換為與 spaCy 兼容的格式。進(jìn)行此轉(zhuǎn)換前必須安裝 spacy Python 包。轉(zhuǎn)換步驟先將注解導(dǎo)出為 CONLL2003 格式打開下載的文件在第一行添加O-DOCSTART- -X- O O在命令行運行spacy convert將 CoNLL 格式注解轉(zhuǎn)換為 spaCy 二進(jìn)制格式將/path/to/filename替換為注解文件的路徑與文件名spaCy 2.xspacy convert /path/to/filename.conll -c nerspaCy 3.xspacy convert /path/to/filename.conll -c conll .更多信息參見 spaCy 文檔中關(guān)于 Converting existing corpora and annotations 運行spacy convert的說明。TSV結(jié)果存儲在制表符分隔的表格文件中列名由標(biāo)注配置中的from_name與to_name值決定。支持所有項目類型。YOLO以 YOLOv3 與 YOLOv4 格式導(dǎo)出目標(biāo)檢測注解。適用于使用RectangleLabels與KeyPointLabels標(biāo)簽的目標(biāo)檢測項目。如果使用 KeyPointLabels請參見 COCO 小節(jié)下的說明。八、圖像注解單位換算圖像注解中x, y, width, height的單位是占整體圖像尺寸的百分比。使用以下?lián)Q算公式pixel_x x / 100.0 * original_width pixel_y y / 100.0 * original_height pixel_width width / 100.0 * original_width pixel_height height / 100.0 * original_height完整示例含雙向換算task { annotations: [{ result: [ { ...: ..., original_width: 600, original_height: 403, image_rotation: 0, value: { x: 5.33, y: 23.57, width: 29.16, height: 31.26, rotation: 0, rectanglelabels: [Airplane] } } ] }] } # 從 LS 百分比單位轉(zhuǎn)換為像素 def convert_from_ls(result): if original_width not in result or original_height not in result: return None value result[value] w, h result[original_width], result[original_height] if all([key in value for key in [x, y, width, height]]): return w * value[x] / 100.0, \ h * value[y] / 100.0, \ w * value[width] / 100.0, \ h * value[height] / 100.0 # 從像素轉(zhuǎn)換為 LS 百分比單位 def convert_to_ls(x, y, width, height, original_width, original_height): return x / original_width * 100.0, y / original_height * 100.0, \ width / original_width * 100.0, height / original_height * 100 # 從 LS 轉(zhuǎn)換 output convert_from_ls(task[annotations][0][result][0]) if output is None: raise Exception(Wrong convert) pixel_x, pixel_y, pixel_width, pixel_height output print(pixel_x, pixel_y, pixel_width, pixel_height) # 轉(zhuǎn)換回 LS x, y, width, height convert_to_ls(pixel_x, pixel_y, pixel_width, pixel_height, 600, 403) print(x, y, width, height)注意只有當(dāng) result 中包含original_width與original_height時才能完成換算因此請確保這些字段存在于導(dǎo)出的 JSON 中。九、手動將 JSON 注解轉(zhuǎn)換為其他格式可以通過命令行或 Python在已完成 JSON 注解的目錄或文件上運行 Label Studio converter 工具將 Label Studio JSON 格式的注解轉(zhuǎn)換為其他格式。如果使用早于 1.0.0 的 Label Studio 版本這是將 Label Studio JSON 注解轉(zhuǎn)換為其他標(biāo)注格式的唯一方式。在倉庫中Converter 正是同步/快照導(dǎo)出鏈路里實際執(zhí)行格式轉(zhuǎn)換的組件DataExport.generate_export_file()通過Converter(configproject.get_parsed_config(), ...)加載項目標(biāo)簽配置在臨時目錄中調(diào)用converter.convert(input_json, tmp_dir, output_format, is_dirFalse)完成轉(zhuǎn)換data_export/models.py。十、在 Label Studio 之外訪問任務(wù)數(shù)據(jù)供 ML 后端使用機器學(xué)習(xí)后端需要使用任務(wù)中的數(shù)據(jù)生成預(yù)測因此需要在 ML 后端側(cè)下載這些資源。Label Studio 提供了下載工具位于label-studio-toolsPython 包中。如果使用官方 Label Studio Machine Learning 后端label-studio-tools會隨其他依賴自動安裝。從 Label Studio 實例訪問任務(wù)數(shù)據(jù)Label Studio 中存儲任務(wù)資源圖像、音頻、文本等的方式有以下幾種云存儲Cloud storages外部網(wǎng)頁鏈接External web links上傳的文件Uploaded files本地文件目錄Local files directoryLabel Studio 以上傳文件時按項目級別組織目錄結(jié)構(gòu)每個項目擁有獨立的文件文件夾。可以使用label_studio_tools.core.utils.io.get_local_path獲取任務(wù)數(shù)據(jù)——它會將任務(wù)數(shù)據(jù)中的路徑或 URL 轉(zhuǎn)換為本地路徑。對于本地路徑會返回完整本地路徑使用download_resources參數(shù)時會下載資源。訪問外部資源時需要提供Hostname與access_token。在 Label Studio 實例之外訪問任務(wù)數(shù)據(jù)同樣可以使用label_studio_tools.core.utils.io.get_local_path方法從外部機器獲取外部鏈接與云存儲中的數(shù)據(jù)。重要不要忘記提供憑證credentials。如果在外部機器上掛載了相同的磁盤也可以直接使用get_local_path獲取數(shù)據(jù)。另一種訪問方式是利用任務(wù)中的鏈接與 ACCESS_TOKEN參見認(rèn)證文檔拼接 Label Studio 主機名與任務(wù)數(shù)據(jù)中的鏈接然后在請求中加入訪問令牌curl -X GET http://localhost:8080/api/projects/ -H Authorization: Token {YOUR_TOKEN}十一、常見問題FAQ問題 1請求返回了以下 API 響應(yīng)沒有提供任何數(shù)據(jù)No data was provided返回了 404 或 403 錯誤碼。解答首先檢查發(fā)送 API 請求時與 Label Studio 實例之間的網(wǎng)絡(luò)連通性??梢允褂檬纠龜?shù)據(jù)執(zhí)行測試 curl 請求來驗證。問題 2訪問文件時收到FileNotFound錯誤解答確認(rèn)已掛載與 Label Studio 實例相同的磁盤并先在 Label Studio 實例中確認(rèn)文件存在檢查 Label Studio 實例中的LOCAL_FILES_DOCUMENT_ROOT環(huán)境變量并在訪問數(shù)據(jù)的腳本中添加該變量。問題 3如何修改 COCO 與 YOLO 導(dǎo)出中類別的順序標(biāo)簽?zāi)J(rèn)按字母順序排序。如需修改請在Label中添加category屬性來改變行為。例如Label valueabc category1 / Label valuedef category2 /十二、延伸閱讀云存儲配置目標(biāo)存儲同步與云存儲桶中的task_id.json文件API 參考認(rèn)證方式與導(dǎo)出相關(guān)端點的完整說明訪問令牌ML 后端與外部腳本訪問任務(wù)數(shù)據(jù)所需的認(rèn)證任務(wù)格式輸入任務(wù)的 JSON 格式標(biāo)注界面與標(biāo)簽文檔各控制標(biāo)簽與對象標(biāo)簽的from_name/to_name語義SDK 導(dǎo)出快照 API以編程方式創(chuàng)建、查詢與下載快照【免費下載鏈接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format項目地址: https://gitcode.com/GitHub_Trending/la/label-studio創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考