一 LabelMe簡介
labelme是麻省理工(MIT)的計算機科學和人工智能實驗室(CSAIL)研發的圖像標注工具,人們可以使用該工具創建定制化標注任務或執行圖像標注,項目源代碼已經開源。
項目開源地址:https://github.com/CSAILVision/LabelMeAnnotationTool
labelMe項目地址:http://labelme.csail.mit.edu/Release3.0/
MIT的labelme源代碼可以安裝到服務器上使用,是一個在線的Javascript圖像標注工具,可在任意地方使用,不需要在電腦中安裝大型數據集。
本文主要介紹一個python版本的labelme,這個labelme項目是利用QT Designer進行圖形界面的開發,生成ui文件,使用工具轉換為py文件,然后再添加python編寫的邏輯實現,最終呈現在大家面前的都是py文件。這個python版本也是開源的。
Python版本labelme地址:https://github.com/wkentaro/labelme
二 LabelMe的安裝
我的安裝環境是Windows 10,labelme的安裝需要很多依賴的環境和程序,主要的環境是anaconda,還需要的是python和pyqt,具體安裝過程如下
- 安裝anaconda。在anaconda官網https://www.anaconda.com/download/上下載合適的版本,使用最新的或者比較穩定的,有兩個版本,我選擇的是python3版本。
下載后默認安裝,一直點擊下一步,直到完成安裝。
2. 安裝依賴程序和labelme。anaconda安裝成功后,在開始菜單中,會有多個anaconda工具,其中就有Anaconda Prompt,運行它,就像windows中的cmd命令行一樣。執行以下命令,完成相應的程序安裝。
安裝python環境
conda create –name=labelme python=3.6(對應自己的python版本)
安裝pyqt
conda install pyqt(會安裝最新的pyqt5)
安裝labelme
pip install labelme
運行labelme。
還是在Anaconda Prompt中輸入labelme,即運行labelme,圖形化的labelme界面就會打開。
三 LabelMe的py代碼在pycharm中運行
Python集成開發工具Pycharm的安裝及使用,大家可以自行百度,比較簡單,不再介紹。首先將https://github.com/wkentaro/labelme中的源代碼下載到本地,在pytharm中打開labelme項目,要讓labelme運行起來,最重要就是設置labelme的運行環境,也就是設置好labelme運行時用到的那些依賴。在上一步的labelme的安裝中,已經將labelme的依賴都安裝完成了,我們只需要在pycharm中設置即可。
在pycharm的File菜單選擇settings…,打開軟件配置窗口,左側的Project Interpreter(項目解釋器),在右側要選擇合適的python環境,這里使用在上一步中安裝的python程序,這個python程序是默認安裝的,地址是C:\Users\dell\AppData\Local\conda\conda\envs\labelme\python.exe,這個python環境包含的了很多安裝包,都是labelme運行依賴的一些程序。設置完成后,點擊確認。
打開labelme根目錄下的main.py文件,然后點擊右鍵,選擇Run ’main’,或者在菜單Run選擇Run ’main’,這樣就可以正常運行labelme項目了。
四 LabelMe的漢化
Labelme在pycharm中運行后,我們就可以對labelme進行二次開發了。比較簡單的一個開發就是漢化,labelme界面都是英文,想把它里面的菜單、提示信息等改為中文,就可以根據項目結構,修改相應的py文件即可。
在main.py的導入模塊中,有from labelme.app import MainWindow,可以知道labelme的窗口主要在app模塊中設置,打開與main.py同目錄的app.py,可以看到很多菜單名稱以及提示信息,根據運行窗口中菜單名稱和提示信息,在app.py程序中查找,然后進行有針對的修改,就可以了。
五 LabelMe轉換為exe文件
為了方便使用labelme程序,可以將py程序轉換為exe程序,在windows環境中無需安裝python,就可以運行labelme。轉換工具使用的是pyinstaller,比較早的pyinstaller介紹文章說它不支持python3,現在已經支持python3了。
1 安裝pyinstaller
首先安裝pywin32
pip install pywin32
然后安裝pyinstaller
pip install pyinstaller
2 使用pyinstaller
比較簡單的轉換操作
pyinstaller -F E:/ python_workspace/labelme/main.py
會在當前目錄生成dist文件夾,build文件夾和spec文件
dist目錄(目錄里面有可執行文件)
build目錄(生成exe的中間文件)
spec文件(要轉換文件的同一目錄下,用於生成exe文件,可以修改來自定義生成exe的屬性)
其中-F是參數,表示要生成一個exe文件,文件在dist目錄中。
還有一些其他的參數使用,可以利用pyinstaller -h命令查看,比如-w生成窗口界面程序,-c生成控制台程序,--distpath制定生成exe文件的路徑,--log-level指定輸出的日志信息等等。
六 總結
Labelme是一個開源圖像標注工具,對它進行使用及二次開發涉及到比較多的知識,通過研究labelme可以了解很多新知識,除了文中介紹的一些知識外,還有圖形開發工具QT Designer,是一種可以集成到pycharm中的圖形開發工具,生成ui文件,可以轉換為py文件,和pycharm結合,可以進行圖形界面開發,python版的labelme就是使用QT開發界面。在研究的過程中,也碰到一些問題,比如轉化為exe文件時,有路徑不正確的問題,需要根據提示信息修改程序的路徑;圖片不能顯示的問題,需要將圖片轉換為base64形式保存,這些是pyinstaller需要完善的。
參考資料
1 http://www.myzaker.com/article/598012931bc8e0ab2a000022/,MIT 開放圖像標注工具 LabelMe 源代碼:助力機器視覺的發展
2 https://blog.csdn.net/shwan_ma/article/details/77823281,圖像語義分割,Label data的標注--Labelme(python)
3 https://blog.csdn.net/pipisorry/article/details/50620122,pyinstaller使用-python項目轉換成exe可執行文件