Labelme是一個經典的注釋工具,它支持目標檢測、語義分割、實例分割等任務。今天,我們將簡要介紹分割任務的數據注釋。開放源碼項目地址:https://github.com/wkentaro/labelme
1、環境配置和安裝
1.1 創建CONDA虛擬環境(推薦)
為了不影響其他Python環境,建議創建一個新環境。(如果不想創建新的,可以跳過它)
下面以創建命名的labelme_uenv、python 3.8版環境為例:
conda create -n labelme_env python=3.8
創建后,進入新環境:
conda activate labelme_env
1.2 安裝labelme
安裝非常簡單。您可以直接使用pip進行安裝。
安裝后,在終端中輸入labelme以啟動:
2、簡單使用
2.1 創建標簽文件
雖然標簽可以在labelme中添加,但我個人強烈建議提前創建label.txt標簽,並在啟動labelme時直接閱讀。標簽格式如下:
__ignore__ _background_ dog cat
每行代表一個類型的名稱,前兩行為固定格式\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu和\uuuuuuuuuuu背景\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。也就是說,從第三行開始,這是我們需要划分的目標類別。這里以貓和狗的分割為例。
2.2 啟動labelme
創建標簽后,啟動labelme並讀取標簽文件,其中--labels指定標簽文件的路徑。
閱讀標簽后,我們可以看到剛才創建的標簽文件已經加載到界面右側的標簽列表中,不同的類別用不同的顏色表示。
2.3 打開文件/文件夾
單擊界面左側的“打開”或“opendir”按鈕,打開文件或文件夾:
2.4 評分目標
首先單擊左側的“創建多邊形”按鈕開始繪制多邊形,然后使用鼠標逐個標記目標邊界(將鼠標放置在第一個點上,然后單擊它以自動關閉邊界)。添加標簽后,將彈出一個用於選擇類別的選擇框。選擇相應的類別。
如果要在標記目標后修改目標邊界,可以單擊工具左側的“編輯多邊形”按鈕,選擇要修改的目標,然后拖動邊界點進行微調。如果要在邊界上添加新點,請在邊界上單擊鼠標右鍵,然后選擇“將點添加到邊”以添加新邊界點。要刪除點,請將鼠標放在邊界點上,單擊鼠標右鍵,然后選擇“刪除選定點”以刪除邊界點。
除多邊形外,您還可以直接在圖片上單擊以選擇其他注釋圖形,例如矩形、圓、圓、點等。
2.5 保存注釋結果
首先單擊左上角的文件並更改輸出目錄以設置注釋結果的保存目錄。
建議取消保存圖像數據,默認情況下選擇該選項。如果選中,圖像數據也將保存在中。保存的注釋結果中的JSON文件(我認為沒有必要,仍然會占用空間)。
然后點擊界面左側的保存按鈕,保存注釋結果。默認情況下,每個圖片的注釋信息存儲在JSON文件中。
2.6 保存JSON文件格式
從注釋中獲得的JSON文件格式如下所示。圖片中所有目標的坐標都保存在“形狀”列表中。列表中的每個元素對應一個目標,標簽記錄目標的類別名稱。點記錄目標的左右坐標信息。其他信息將不再重復。根據以下信息,您實際上可以編寫一個腳本來讀取目標信息。
3、格式轉換
事實上,如果您剛剛了解了生成的JSON文件的格式,您可以編寫自己的腳本,將標記轉換為您想要的任何形式。
為了方便起見,原作者還提供了一個腳本,幫助我們輕松地將JSON文件轉換為Pascal VOC語義分段標記格式。項目鏈接示例:https://www.cnblogs.com/lyck/p/14938873.html
鏈接中有一個labelme2voc.py腳本。下載腳本后,執行以下說明。其中data_uuAnnotated是剛剛標記和保存的JSON標記文件夾,data_uDataSet_uVOC是生成Pascal VOC數據的目錄。