實戰:從配置模板到坐標導出)
Label Studio 圖像關鍵點標注Keypoint Labeling實戰從配置模板到坐標導出【免費下載鏈接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format項目地址: https://gitcode.com/GitHub_Trending/la/label-studio關鍵點標注Keypoint Labeling是計算機視覺數據標注中最精細的任務類型之一標注者不需要繪制矩形或輪廓而是直接在圖像上點選具有明確語義的點位如人臉五官、人體關節、飛機引擎與機翼等為后續的人臉關鍵點檢測、人體姿態估計等模型訓練提供數據。本指南以 Label Studio 官方模板 image_keypoints.md 為核心完整講解基于KeyPointLabels標簽的標注配置方法、全部參數語義、輸出結果 JSON 格式并結合倉庫源碼說明點選工具在前端編輯器的實際實現幫助你從零搭建一個可直接運行、可導出標準化結果的關鍵點標注項目。模板核心配置三行標簽完成關鍵點標注模板提供的標注配置非常精簡完整內容如下View KeyPointLabels namekp-1 toNameimg-1 Label valueFace backgroundred / Label valueNose backgroundgreen / /KeyPointLabels Image nameimg-1 value$img / /View整個配置只有三個組成部分View所有標注配置必須包裹在 View 標簽內KeyPointLabels控制標簽Control Tag負責在圖像上添加可標注的關鍵點并綁定到圖像對象Image對象標簽Object Tag聲明待標注的圖像數據來源。倉庫中label_studio/annotation_templates/computer-vision/keypoints/config.yml提供了同款官方模板其附帶的應用場景說明給出了關鍵點標注的典型行業用途人體姿態估計、人臉關鍵點檢測、運動表現分析、醫學診斷、增強現實、動作捕捉、健身追蹤、手勢識別、自動駕駛安全、駕駛員監控、生物特征認證與動畫制作等并列舉了 OpenPose、MediaPipe、PoseNet、DensePose、Face、Dlib 等常見下游模型。逐標簽拆解配置語義1. KeyPointLabels 控制標簽KeyPointLabels namekp-1 toNameimg-1name元素名稱標注結果中from_name字段會引用該值toName綁定到待標注圖像的名稱即下方Image標簽的name。它決定了關鍵點工具出現在工具欄中并在點選時要求先選中一個標簽類別。2. Label 標簽定義關鍵點類別Label valueFace backgroundred / Label valueNose backgroundgreen /Label是單個關鍵點類別value指定類別名稱background指定該類別的關鍵點在畫布上的顯示顏色十六進制色值。background默認值為#36B37EselectedColor激活狀態下標簽文字顏色默認#ffffff。3. Image 對象標簽聲明數據源Image nameimg-1 value$img /value$img引用任務數據中的img字段該字段存放圖像的 URL 或本地路徑。提示若任務中每個標注只需要一個關鍵點類別可以省略Label子標簽改用更精簡的KeyPoint標簽不帶標簽類別直接點選詳見后文“不帶類別的簡化方案”。關鍵點標注標簽的參數全解析完整的關鍵點標注配置除了模板示例外還支持大量可調參數。下表來自 keypointlabels 參數說明列出了KeyPointLabels標簽的全部參數ParamTypeDefaultDescriptionnamestring元素名稱toNamestring待標注圖像的名稱[choice]single|multiplesingle配置每個關鍵點只能選擇單個標簽還是可以選擇多個標簽[maxUsages]number每個任務中一個標簽最多可被使用的次數[showInline]booleantrue標簽是否在同一行內顯示[opacity]float0.9關鍵點的透明度[strokeWidth]number1關鍵點描邊寬度[snap]pixel|nonenone是否將關鍵點吸附到圖像像素choice參數在需要一個關鍵點同時命中多個語義時很有用例如同一骨骼節點既屬于肢體又屬于軀干maxUsages則適合限制類別出現次數如規定每張圖最多標注 5 個Facesnappixel適合需要亞像素級精度的醫學影像等場景可將關鍵點精確吸附到像素格點。Label標簽同樣擁有獨立參數見 label 參數說明除value與background外常用的還有ParamTypeDefaultDescription[selected]booleanfalse是否預選中該標簽[maxUsages]number該標簽在每個任務中的最大使用次數[hint]string鼠標懸停時的提示文本[hotkey]string該標簽的快捷鍵不指定時自動生成[alias]string標簽別名[size]stringmedium標簽文字大小[category]int導出時label-studio-converter用于 YOLO/COCO 格式的標簽排序編號以人臉關鍵點為例一個更完整的配置可以是View KeyPointLabels namekp-face toNameimg-1 choicesingle strokeWidth2 opacity0.8 snappixel Label valueLeft Eye background#FF0000 hotkey1 maxUsages1 / Label valueRight Eye background#00FF00 hotkey2 maxUsages1 / Label valueNose Tip background#0000FF hotkey3 maxUsages1 / Label valueMouth Corner background#FFFF00 hotkey4 maxUsages2 / /KeyPointLabels Image nameimg-1 value$image zoomtrue zoomControltrue / /View這里同時展示了Image標簽的常用增強參數完整參數見 image 參數說明zoomtrue允許鼠標滾輪縮放、zoomControltrue在工具欄顯示縮放控件——對于需要精細點選的關鍵點任務縮放能力幾乎是必備的。不帶類別的簡化方案KeyPoint 標簽如果整個任務只有一種關鍵點語義比如所有點位都是人體關節點可以不使用KeyPointLabels改用KeyPoint標簽省去每次點選前切換標簽類別的操作View KeyPoint namekp-1 toNameimg-1 / Image nameimg-1 value$img / /ViewKeyPoint標簽的參數見 keypoint 參數說明與KeyPointLabels高度相似但多了顏色相關參數ParamTypeDefaultDescriptionnamestring元素名稱toNamestring待標注圖像名稱[opacity]float0.9關鍵點透明度[fillColor]string#8bad00關鍵點填充顏色十六進制[strokeWidth]number1描邊寬度[strokeColor]string#8bad00描邊顏色十六進制[smart]boolean顯示智能工具用于交互式預標注[smartOnly]boolean僅顯示智能工具用于交互式預標注[snap]pixel|nonenone是否吸附到圖像像素其中的smart/smartOnly參數與 Label Studio 的 ML 交互式預標注能力掛鉤開啟后可在關鍵點附近調用后端模型輔助定位屬于進階用法。標注結果與導出格式百分比坐標關鍵點標注完成后每個關鍵點對應一個標注結果Result對象。根據 keypointlabels 結果參數說明字段結構如下NameTypeDescriptionoriginal_widthnumber原始圖像寬度像素original_heightnumber原始圖像高度像素image_rotationnumber圖像旋轉角度度valueObject關鍵點數值對象value.xnumberx 坐標按圖像尺寸百分比0-100value.ynumbery 坐標按圖像尺寸百分比0-100value.widthnumber點的大小按圖像尺寸百分比0-100一個典型的關鍵點標注結果 JSON{ original_width: 1920, original_height: 1280, image_rotation: 0, value: { x: 3.1, y: 8.2, width: 2, keypointlabels: [Car] } }倉庫中web/libs/editor/src/examples/image_keypoints/annotations/0.json提供了一個真實的多關鍵點標注示例與文檔給出的百分比坐標系完全一致坐標值歸一化到 0-100keypointlabels為類別名數組{ result: [ { id: hqudA4A3U4, from_name: tag, to_name: img, source: $image, type: keypointlabels, value: { x: 49.6, y: 52.340425531914896, width: 0.6666666666666666, keypointlabels: [Hello] } }, { id: Rz9oHDXIwG, from_name: tag, to_name: img, source: $image, type: keypointlabels, value: { x: 47.733333333333334, y: 52.765957446808514, width: 0.6666666666666666, keypointlabels: [World] } } ] }需要注意的工程要點from_name對應配置中KeyPointLabels的nameto_name對應Image的name坐標為相對百分比而非像素絕對值x、y取值范圍 0-100width代表點在圖上顯示的尺寸占比。這保證了不同分辨率的圖像標注結果可直接對齊復用要還原像素坐標用x / 100 * original_width、y / 100 * original_height計算即可original_width、original_height記錄在結果頂層字段中type字段固定為keypointlabels這是下游解析與導出如 label-studio-converter 將關鍵點轉換為 COCO/YOLO 等格式時識別該結果類型的依據。源碼視角關鍵點工具的前端實現關鍵點標注并非簡單的畫一個點其交互邏輯在前端編輯器中有明確的實現路徑值得標注流程設計者了解。工具定義web/libs/editor/src/tools/KeyPoint.js中定義了KeyPointTool其tagTypes明確聲明該工具支持的控制標簽類型為[keypointlabels, keypoint]即上面兩種配置方案的底層入口都是同一個工具get tagTypes() { return { stateTypes: keypointlabels, controlTagTypes: [keypointlabels, keypoint], }; }點選交互clickEv動作實現了單擊落點邏輯見 KeyPoint.js——當使用keypointlabels類型且尚未選中任何標簽時!c.isSelected點擊不會生成關鍵點只有選中某個標簽類別后才允許落點并通過createRegion創建關鍵點區域。這印證了文檔中先選標簽、再點圖像的操作語義。區域模型創建出的關鍵點在web/libs/editor/src/regions/KeyPointRegion.jsx中管理負責關鍵點的渲染、選中與坐標計算。吸附行為snap參數的實現與Image對象的像素坐標換算相關配置解析可追溯至web/libs/editor/src/tags/control/KeyPointLabels.jsx當snappixel時落點坐標會被吸附到最近的整數像素位置。這些源碼證據說明模板配置中的每個參數都對應編輯器內真實的交互與坐標計算邏輯理解參數語義有助于精確控制標注行為。配套資源與進一步閱讀圍繞關鍵點標注主題倉庫中還有以下可直接對照使用的資源KeyPointLabels 標簽參考文檔標簽完整說明與示例KeyPoint 標簽參考文檔無類別關鍵點方案Label 標簽參考文檔類別標簽參數詳解Image 標簽參考文檔圖像對象標簽參數詳解關鍵點標注模板配置官方模板含行業應用與關聯模型說明關鍵點標注示例數據真實標注結果樣例。快速上手三步創建項目在 Label Studio 中新建一個圖像標注項目進入 Labeling Setup 頁面粘貼配置將上文模板核心配置中的 HTML 配置粘貼到標簽配置編輯器保存導入數據并標注上傳包含img字段圖像 URL 或路徑的任務數據進入標注界面先選中標簽類別如 Face/Nose再在圖像上單擊即可放置關鍵點可通過Image的縮放參數輔助精確定位完成后在導出界面選擇所需格式如 COCO、JSON獲取標準化標注結果。【免費下載鏈接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format項目地址: https://gitcode.com/GitHub_Trending/la/label-studio創作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考