Python深度學(xué)習(xí)之圖像標(biāo)簽標(biāo)注軟件labelme詳解
前言
labelme是一個(gè)非常好用的免費(fèi)的標(biāo)注軟件,博主看了很多其他的博客,有的直接是翻譯稿,有的不全面。對(duì)于新手入門還是有點(diǎn)困難。因此,本文的主要是詳細(xì)介紹labelme該如何使用。
一、labelme是什么?
labelme是圖形圖像注釋工具,它是用Python編寫的,并將Qt用于其圖形界面。說(shuō)直白點(diǎn),它是有界面的, 像軟件一樣,可以交互,但是它又是由命令行啟動(dòng)的,比軟件的使用稍微麻煩點(diǎn)。其界面如下圖:
它的功能很多,包括:
- 對(duì)圖像進(jìn)行多邊形,矩形,圓形,多段線,線段,點(diǎn)形式的標(biāo)注(可用于目標(biāo)檢-測(cè),圖像分割等任務(wù))。
- 對(duì)圖像進(jìn)行進(jìn)行 flag 形式的標(biāo)注(可用于圖像分類 和 清理 任務(wù))。
- 視頻標(biāo)注
- 生成 VOC 格式的數(shù)據(jù)集(for semantic / instance segmentation)
- 生成 COCO 格式的數(shù)據(jù)集(for instance segmentation)
二、快速安裝使用
安裝教程都是參考的labelme github。
2.1 windows安裝
官網(wǎng)步驟如下:
# python3 conda create --name=labelme python=3.6 source activate labelme # conda install -c conda-forge pyside2 # conda install pyqt # pip install pyqt5 # pyqt5 can be installed via pip on python3 pip install labelme # or you can install everything by conda command # conda install labelme -c conda-forge
1.為labelme創(chuàng)建一個(gè)conda環(huán)境,命名為lableme
2.激活該環(huán)境
windows用命令activate labelme 或者 conda activate labelme
很少用windows, 說(shuō)的不對(duì)請(qǐng)指正。
其實(shí)在這一步中,我遇到了一個(gè)問(wèn)題
C:\Windows\system32> conda activate labelme CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'. To initialize your shell, run $ conda init <SHELL_NAME> Currently supported shells are: - bash - fish - tcsh - xonsh - zsh - powershell See 'conda init --help' for more information and options. IMPORTANT: You may need to close and restart your shell after running 'conda init'.
初始化conda啥的,不是很懂,最后通過(guò)博客解決
我用的第一種方法
- 首先查看conda env 的地址
- 我的在D盤,所以先切換到D盤
- 命令行輸入 conda.bat activate anaconda\envs\labelme(注意和原博客不一樣)
- 再激活就正常了
3 安裝pyqt
前言里講過(guò)labelme是基于Qt的,所以必須安裝
conda/pip install pyqt
4 pip install labelme
2.2 linux安裝
# Ubuntu 14.04 / Ubuntu 16.04 # Python2 # sudo apt-get install python-qt4 # PyQt4 sudo apt-get install python-pyqt5 # PyQt5 sudo pip install labelme # Python3 sudo apt-get install python3-pyqt5 # PyQt5 sudo pip3 install labelme # or install standalone executable from: # https://github.com/wkentaro/labelme/releases
注意:使用如上安裝前,同winsows一樣,需要先創(chuàng)建labelme的conda環(huán)境。
2.3 macos安裝
# macOS Sierra brew install pyqt # maybe pyqt5 我用的pip安裝 pip install labelme # both python2/3 should work # or install standalone executable/app from: # https://github.com/wkentaro/labelme/releases
說(shuō)明:這三種系統(tǒng)我都成功安裝過(guò),放心吧~
安裝成功的啞子
有如下這些包
下次使用,命令行輸入labelme就可以打開(kāi)軟件啦。嚴(yán)謹(jǐn)?shù)膩?lái)說(shuō),它是一個(gè)用pyqt5編寫的GUI界面。
三、界面說(shuō)明
圖上看到,這個(gè)界面是非常簡(jiǎn)潔的。
接下來(lái)具體講講如何使用。醫(yī)學(xué)圖像分析,我主要是研究分類和分割,所以重點(diǎn)講解如何標(biāo)注分類標(biāo)簽和分割標(biāo)簽。
四、為圖像創(chuàng)建類標(biāo)簽
4.1 參數(shù)介紹
使用labelme --help會(huì)出來(lái)labelme的使用方法,它包括如下參數(shù)
我們解釋幾個(gè)重要的參數(shù)設(shè)置
- –output:標(biāo)注文件存放位置。如果給的參數(shù)是以.json結(jié)尾,則會(huì)向該文件寫入一個(gè)標(biāo)簽。也就意味著如果使用.json指定位置,則只能對(duì)一個(gè)圖像進(jìn)行注釋。如果位置不是以.json結(jié)尾,程序?qū)⒓俣ㄋ且粋€(gè)目錄。注釋將以與在其上進(jìn)行注釋的圖像相對(duì)應(yīng)的名稱存儲(chǔ)在此目錄中。
- –Flags: 為圖像創(chuàng)建分類標(biāo)簽,多分類用逗號(hào)隔開(kāi)。
- –nosortlabels: 是否對(duì)標(biāo)簽進(jìn)行排序
舉例:
命令行輸入 labelme image1.png --output image1.json --flags 0,1
其中,image1.png是圖像的地址,而不是名字。注意區(qū)別,因?yàn)槲椰F(xiàn)在的路徑在圖像存放的當(dāng)前文件夾,所以輸入名字就可以直接找到該圖像。如果你當(dāng)前路徑不在圖像存放的文件夾,你需要給出圖像的完整路徑,如F:\labelmeImage\image1.png
–output image1.json 就是把打標(biāo)簽的結(jié)果存放在image1.json這個(gè)文件里。因?yàn)槲沂菍?duì)單一圖像打標(biāo)簽,所以是以.json結(jié)尾。如果是對(duì)一個(gè)文件夾進(jìn)行打標(biāo)簽,那這里就不要以.json結(jié)尾,直接輸入你想存放的文件夾就行。
–flags: 描述你分類的標(biāo)簽是什么,0,1表示分兩類。也可以寫成多類,0,1,2,3,4.也可以用其他字符,如 negative,positive, 或者cat, dog。等等~
4.2 文件夾所有文件創(chuàng)建分類標(biāo)簽
命令行輸入labeme 并且給定分類標(biāo)簽。
打開(kāi)圖上右邊界面后,導(dǎo)入文件夾,就可以點(diǎn)圖像,對(duì)它進(jìn)行標(biāo)注。標(biāo)注完一個(gè),需要對(duì)其進(jìn)行保存,才能打第二個(gè)圖像的標(biāo)簽。這里沒(méi)有給定輸出位置,就會(huì)默認(rèn)保存在圖像這個(gè)文件夾,并且名字和圖像的名字一樣,并以.json結(jié)尾。
4.3 為文件夾所有文件創(chuàng)建分割標(biāo)簽
創(chuàng)建分割標(biāo)簽主要用到多邊形工具, 把需要的區(qū)域框出來(lái)就好了。
實(shí)驗(yàn)數(shù)據(jù)來(lái)自labelme github: labelme/tree/master/examples/semantic_segmentation
五、大概步驟
1.運(yùn)行l(wèi)abelme后,打開(kāi)文件夾
2.使用多邊形工具勾勒目標(biāo)
3.勾勒完成后創(chuàng)建標(biāo)簽
4.微調(diào)邊框。點(diǎn)擊編輯多邊形,有很多操作。如圖上所示
5.最后存儲(chǔ)
以上是簡(jiǎn)單的演示,官方做的實(shí)驗(yàn)如下:
首先下載semantic_segmentation 這個(gè)文件夾。
注意:以下實(shí)驗(yàn)都是在該文件夾下打開(kāi)的終端
標(biāo)注文件
labelme data_annotated --labels labels.txt --nodata --validatelabel exact --config ‘{shift_auto_shape_color: -2}'
作者已經(jīng)標(biāo)注好了,我們就打開(kāi)看看。
標(biāo)簽格式轉(zhuǎn)換
由于標(biāo)注好的文件是json格式,我們將其轉(zhuǎn)化成圖片格式或者其他格式。使用作者給的代碼labelme2voc.py。主要轉(zhuǎn)化的格式有: 類名字文件,原始圖像的jpeg格式,分割圖像的npy格式,png格式, 以及將分割圖像疊在原始圖像上的jpg格式。
作者給的命令: ./labelme2voc.py data_annotated data_dataset_voc --labels labels.txt
但是運(yùn)行時(shí)會(huì)有報(bào)錯(cuò),修改成如下運(yùn)行:
python labelme2voc.py data_annotated data_dataset_voc --labels labels.txt
針對(duì)報(bào)錯(cuò):如果命令行不好修改代碼,建議直接修改這個(gè)Python文件里面的參數(shù)配置,再運(yùn)行都可以。
六、 其他問(wèn)題
6.1 如何快速查看分割的json文件
labelme_draw_json 2011_000003.json
6.2 json 轉(zhuǎn) png
labelme_json_to_dataset apc2016_obj3.json -o apc2016_obj3_json
apc2016_obj3.json: 待轉(zhuǎn)化的json文件,
apc2016_obj3_json: 轉(zhuǎn)化后文件保存地址
一共會(huì)生成4個(gè)文件:
img.png: Image file.
label.png: uint8 label file.
label_viz.png: Visualization of label.png.
label_names.txt: Label names for values in label.png.
這和第4小節(jié)講的格式轉(zhuǎn)化差不多,4小節(jié)的python文件是可以根據(jù)自己需要隨便改設(shè)置的,而這個(gè)內(nèi)置方法是不允許改動(dòng)的。
到此這篇關(guān)于Python深度學(xué)習(xí)之圖像標(biāo)簽標(biāo)注軟件labelme詳解的文章就介紹到這了,更多相關(guān)Python圖像標(biāo)簽標(biāo)注軟件labelme內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Python如何使用Netmiko進(jìn)行文件傳輸
Netmiko是一個(gè)用于連接和管理各種網(wǎng)絡(luò)設(shè)備的Python庫(kù),它是Paramiko的一個(gè)擴(kuò)展。本文就來(lái)講講如何利用Netmiko實(shí)現(xiàn)文件傳輸功能吧2023-05-05基于Python實(shí)現(xiàn)在線加密解密網(wǎng)站系統(tǒng)
在這個(gè)數(shù)字化時(shí)代,數(shù)據(jù)的安全和隱私變得越來(lái)越重要,所以本文小編就來(lái)帶大家實(shí)現(xiàn)一個(gè)簡(jiǎn)單但功能強(qiáng)大的加密解密系統(tǒng),并深入探討它是如何工作的,有興趣的可以了解下2023-09-09Python使用StringIO和BytesIO讀寫內(nèi)存數(shù)據(jù)
這篇文章介紹了Python使用StringIO和BytesIO讀寫內(nèi)存數(shù)據(jù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05python實(shí)現(xiàn)基于兩張圖片生成圓角圖標(biāo)效果的方法
這篇文章主要介紹了python實(shí)現(xiàn)基于兩張圖片生成圓角圖標(biāo)效果的方法,實(shí)例分析了Python使用pil模塊進(jìn)行圖片處理的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03使用Python對(duì)網(wǎng)易云歌單數(shù)據(jù)分析及可視化
這篇文章主要介紹了使用Python對(duì)網(wǎng)易云歌單數(shù)據(jù)分析及可視化,本項(xiàng)目以數(shù)據(jù)采集、處理、分析及數(shù)據(jù)可視化為項(xiàng)目流程,需要的朋友可以參考下2023-03-03python判斷一個(gè)集合是否包含了另外一個(gè)集合中所有項(xiàng)的方法
這篇文章主要介紹了python判斷一個(gè)集合是否包含了另外一個(gè)集合中所有項(xiàng)的方法,涉及Python集合操作的相關(guān)技巧,需要的朋友可以參考下2015-06-06