1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        標注神器 | Label-Studio X SAM 半自動化標注

        共 7091字,需瀏覽 15分鐘

         ·

        2024-07-12 09:30

        點擊上方小白學視覺”,選擇加"星標"或“置頂

        重磅干貨,第一時間送達

        來源 | 小白學視覺

        本文將介紹結合 Label-Studio 和 SAM (Segment Anything) 半自動化標注方案,Point2Lablel:用戶只需要在物體的區(qū)域內(nèi)點一個點就能得到物體的掩碼和邊界框標注,Bbox2Label:用戶只需要標注物體的邊界框就能生成物體的掩碼,社區(qū)的用戶可以借鑒此方法,提高數(shù)據(jù)標注的效率。




        • SAM (Segment Anything) 是 Meta AI 推出的分割一切的模型。
        • Label Studio 是一款優(yōu)秀的標注軟件,覆蓋圖像分類、目標檢測、分割等領域數(shù)據(jù)集標注的功能。

        本文將使用喵喵數(shù)據(jù)集的圖片,進行半自動化標注。

        環(huán)境配置

        首先需要創(chuàng)建一個虛擬環(huán)境,然后安裝 PyTorch 和 SAM。創(chuàng)建虛擬環(huán)境:

        conda create -n rtmdet-sam python=3.9 -y
        conda activate rtmdet-sam

        克隆 OpenMMLab PlayGround

        git clone https://github.com/open-mmlab/playground

        安裝 PyTorch

        # Linux and Windows CUDA 11.3
        pip install torch==1.10.1+cu113 torchvision==0.11.2+cu113 torchaudio==0.10.1 -f https://download.pytorch.org/whl/cu113/torch_stable.html


        #
         Linux and Windows CPU only
        pip install torch==1.10.1+cpu torchvision==0.11.2+cpu torchaudio==0.10.1 -f https://download.pytorch.org/whl/cpu/torch_stable.html

        #
         OSX
        pip install torch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1

        安裝 SAM 并下載預訓練模型

        cd path/to/playground/label_anything
        pip install opencv-python pycocotools matplotlib onnxruntime onnx
        pip install git+https://github.com/facebookresearch/segment-anything.git
        wget https://dl.fbaipublicfiles.com/segment_anything/sam_vit_b_01ec64.pth

        #
         如果想要分割的效果好請使用 sam_vit_h_4b8939.pth 權重
        # wget https://dl.fbaipublicfiles.com/segment_anything/sam_vit_l_0b3195.pth
        # wget https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth

        安裝 Label-Studio 和 label-studio-ml-backend

        # sudo apt install libpq-dev python3-dev # Note:如果使用 Label Studio 1.7.2 版本需要安裝 `libpq-dev` 和 `python3-dev` 依賴。

        #
         安裝 label-studio 需要一段時間,如果找不到版本請使用官方源
        pip install label-studio==1.7.3
        pip install label-studio-ml==1.0.9

        啟動服務

        ?label_anything 需要啟用SAM后端推理后再啟動網(wǎng)頁服務才可配置模型(一共需要兩步啟動)

        1.啟動 SAM 后端推理服務:

        cd path/to/playground/label_anything

        label-studio-ml start sam --port 8003 --with \
        sam_config=vit_b \
        sam_checkpoint_file=./sam_vit_b_01ec64.pth \
        out_mask=True \
        out_bbox=True \
        device=cuda:0 \
        # device=cuda:0 為使用 GPU 推理,如果使用 cpu 推理,將 cuda:0 替換為 cpu
        # out_poly=True 返回外接多邊形的標注

        image

        此時,SAM 后端推理服務已經(jīng)啟動,后續(xù)在 Label-Studio Web 系統(tǒng)中配置 http://localhost:8003 后端推理服務即可。以上的終端窗口需要保持打開狀態(tài)。

        2.現(xiàn)在啟動 Label-Studio 網(wǎng)頁服務:

        ?(如不使用vit-h的SAM后端請?zhí)^此步)使用的推理后端是SAM的 vit-h, 由于模型加載時間長,導致連接后端超時,需要設置以下環(huán)境變量。

        具體可根據(jù)下載的SAM的權值名稱判斷,比如sam_vit_h_4b8939.pth 為 vit-h,sam_vit_b_01ec64.pth為 vit-b。

        # Linux需要使用以下指令
        export ML_TIMEOUT_SETUP=40
        # Windows要使用以下指令
        set ML_TIMEOUT_SETUP=40

        啟動 Label-Studio 網(wǎng)頁服務:

        label-studio start

        打開瀏覽器訪問 http://localhost:8080/ 即可看到 Label-Studio 的界面。

        我們注冊一個用戶,然后創(chuàng)建一個 OpenMMLabPlayGround 項目。

        我們通過下面的方式下載好示例的喵喵圖片,點擊 Data Import 導入需要標注的貓圖片,點擊 Save 創(chuàng)建 Project。

        cd path/to/playground/label_anything
        mkdir data && cd data

        wget https://download.openmmlab.com/mmyolo/data/cat_dataset.zip && unzip cat_dataset.zip

        在 Settings/Labeling Interface 中配置 Label-Studio 關鍵點和 Mask 標注。

        <View>
          <Image name="image" value="$image" zoom="true"/>
          <KeyPointLabels name="KeyPointLabels" toName="image">
            <Label value="cat" smart="true" background="#e51515" showInline="true"/>
            <Label value="person" smart="true" background="#412cdd" showInline="true"/>
          </KeyPointLabels>
          <RectangleLabels name="RectangleLabels" toName="image">
           <Label value="cat" background="#FF0000"/>
           <Label value="person" background="#0d14d3"/>
          </RectangleLabels>
          <PolygonLabels name="PolygonLabels" toName="image">
           <Label value="cat" background="#FF0000"/>
           <Label value="person" background="#0d14d3"/>
          </PolygonLabels>
          <BrushLabels name="BrushLabels" toName="image">
           <Label value="cat" background="#FF0000"/>
           <Label value="person" background="#0d14d3"/>
          </BrushLabels>
        </View>

        在上述 XML 中我們對標注進行了配置,其中 KeyPointLabels 為關鍵點標注,BrushLabels 為 Mask 標注,PolygonLabels 為外接多邊形標注,RectangleLabels 為矩形標注。

        本實例使用 cat 和 person 兩個類別,如果社區(qū)用戶想增加更多的類別需要分別在 KeyPointLabels、BrushLabels、PolygonLabels、RectangleLabels 中添加對應的類別。

        然后將上述 XML 復制添加到 Label-Studio,然后點擊 Save。

        image

        然后在設置中點擊 Add Model 添加 OpenMMLabPlayGround 后端推理服務,設置好 SAM 后端推理服務的 URL,并打開 Use for interactive preannotations 并點擊 Validate and Save。

        ?如果你在這一步無法順利執(zhí)行,可能由于模型加載時間長,導致連接后端超時,請重新執(zhí)行第二步中已經(jīng)跳過的部分,重啟SAM后端推理服務。

        image

        看到如下 Connected 就說明后端推理服務添加成功。

        image

        開始半自動化標注

        點擊 Label 開始標注

        image

        需要打開 Auto-Annotation 的開關,并建議勾選 Auto accept annotation suggestions,并點擊右側 Smart 工具,切換到 Point 后,選擇下方需要標注的物體標簽,這里選擇 cat。如果是 BBox 作為提示詞請將 Smart 工具切換到 Rectangle。

        image

        Point2Label:由下面的 gif 的動圖可以看出,只需要在物體上點一個點,SAM 算法就能將整個物體分割和檢測出來。

        SAM8

        Bbox2Label: 由下面的 gif 的動圖可以看出,只需要標注一個邊界框,SAM 算法就能將整個物體分割和檢測出來。

        SAM10

        我們 submit 完畢所有圖片后,點擊 exprot 導出 COCO 格式的數(shù)據(jù)集,就能把標注好的數(shù)據(jù)集的壓縮包導出來了。注意:此處導出的只有邊界框的標注,如果想要導出實例分割的標注,需要在啟動 SAM 后端服務時設置 out_poly=True。

        image

        用 vscode 打開解壓后的文件夾,可以看到標注好的數(shù)據(jù)集,包含了圖片和 json 格式的標注文件。

        到此半自動化標注就完成了, 通過 Label-Studio 的半自動化標注功能,可以讓用戶在標注過程中,通過點擊一下鼠標,就可以完成目標的分割和檢測,大大提高了標注效率。

        來源:

        [1] https://github.com/open-mmlab/playground/blob/main/label_anything/readme_zh.md

        [2] 部分代碼借鑒自 label-studio-ml-backend ID 為 253 的 Pull Request,感謝作者的貢獻。

        本文僅做學術分享,如有侵權,請聯(lián)系刪文。

           
        下載1:OpenCV-Contrib擴展模塊中文版教程
        在「小白學視覺」公眾號后臺回復:擴展模塊中文教程即可下載全網(wǎng)第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

        下載2:Python視覺實戰(zhàn)項目52講
        小白學視覺公眾號后臺回復:Python視覺實戰(zhàn)項目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學校計算機視覺。

        下載3:OpenCV實戰(zhàn)項目20講
        小白學視覺公眾號后臺回復:OpenCV實戰(zhàn)項目20講即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學習進階。

        交流群


        歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~


        瀏覽 268
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            亚洲无码播放 | 男人日女人阴道视频 | 雷电将军安慰部下模拟器苹果破解版 | 手机看片福利一区 | 91精品国产综合久久香蕉第1集 | 伺候痞男s调教贱奴vk | 男男顶撞喘嗯啊h | 一本色道久久 | 国产精品又大又粗 | 国产性xxxx高清 |