當前位置:
首頁 > 新聞 > MIT開放圖像標註工具LabelMe源代碼:助力機器視覺的發展

MIT開放圖像標註工具LabelMe源代碼:助力機器視覺的發展

選自Github

機器之心編譯

參與:路雪


計算機視覺需要大量的標註圖像來執行各類任務,ImageNet 的成功就在於其巨量的標註圖像。近日,MIT 的計算機科學和人工智慧實驗室(CSAIL)開放了圖像標註工具 LabelMe 的源代碼,我們可以使用該工具創建定製化標註任務或執行圖像標註。同時,CSAIL 開放此工具的源碼有助於進一步開發出更高效的標註方式和工具,有助於機器視覺的進一步發展。

  • 項目開源地址:https://github.com/CSAILVision/LabelMeAnnotationTool

  • LabelMe 地址:http://labelme.csail.mit.edu/Release3.0/

MIT開放圖像標註工具LabelMe源代碼:助力機器視覺的發展

在該網址我們可以找到可在伺服器上安裝的 LabelMe 圖像標註工具源碼。LabelMe 是一個用於在線圖像標註的 Javascript 標註工具。與傳統圖像標註工具相比,其優勢在於我們可以從任意來源獲取該工具,人們可以幫助我們標註圖像,而無需在電腦中安裝或複製大型數據集。

下載

我們可以在該網址直接下載源碼壓縮文件:https://github.com/CSAILVision/LabelMeAnnotationTool/archive/master.zip

或者,使用以下命令直接複製該 GitHub 項目:$ git clone https://github.com/CSAILVision/LabelMeAnnotationTool.git

目錄

  • Images:圖像所在文件夾。

  • Annotations:標註所在文件夾。

  • Masks:分割掩碼所在文件夾(scribble mode)。

  • Scribbles:scribble 所在文件夾(scribble mode)。

  • tool.html:LabelMe 標註工具的主網頁。

  • annotationTools:源碼目錄。

  • annotationCache:臨時文件地址。

  • Icons:網頁所用圖標。

快速操作指南

1. 將 LabelMe 標註工具代碼放在網頁伺服器上(網頁伺服器配置要求見下文)。

2. 在命令行上運行:


$ make

這將設置 perl 腳本需要的全局變數。注意:如果我們移動代碼位置,那麼我們必須重新運行「make」來刷新全局變數。

1. 在「Images」文件夾內創建一個子文件夾,將我們的圖像放在該文件夾內。如:「Images/example_folder/img1.jpg」。確保所有的圖像的擴展名為「.jpg」,文件夾/文件名由字母和數字構成(即不包含空格和其他字元)。

2. 使用網頁瀏覽器前往以下 URL 地址:http://www.yourserver.edu/path/to/LabelMe/tool.html?collection=LabelMe&mode=f&folder=example_folder&image=img1.jpg

3. 標註圖像。點擊「show me another image」前往下一個圖像。

4. 現在,你所作出的標註將出現在「Annotations」文件夾內。

網頁伺服器要求

在網頁伺服器上設置 LabelMe 工具,需要執行以下操作:

  • 運行 Apache 伺服器(Ubuntu 配置說明:https://github.com/CSAILVision/LabelMeAnnotationTool/blob/master/UBUNTU.md,Windows 配置說明:https://github.com/CSAILVision/LabelMeAnnotationTool/blob/master/WINDOWS.md)

  • 在 Apache 內啟用 authconfig,使伺服器側(包括 SSI) 能夠運行。這使得 SVG 能夠發揮作用。這一步最常出現錯誤,所以務必確保這一步正常運行。

  • 運行 perl/CGI 腳本,這是第二大容易出現錯誤的地方。

  • 確保 php5 和 libapache2-mod-php5 庫已安裝。我們可以運行以下代碼在 Linux 上運行它們:

$ sudo apt-get install php5 libapache2-mod-php5

  • Ubuntu 配置說明:https://github.com/CSAILVision/LabelMeAnnotationTool/blob/master/UBUNTU.md

  • Windows 配置說明:https://github.com/CSAILVision/LabelMeAnnotationTool/blob/master/WINDOWS.md

如果無法繪製多邊形(polygons),那麼檢查該網頁是否為「application/xhtml+xml」網頁(火狐瀏覽器可以通過 Tools->Page Info 查看)。如果不是,確保 SSI 已啟用(查看上文「在 Apache 內啟用 authconfig」)。

確保我們的圖像擁有對網頁伺服器的讀取許可權,「Annotations」文件夾中的多個文件夾擁有寫入許可權。此外,「annotationCache/TmpAnnotations」也需要寫入許可權。

該標註工具的特點

下面是我們能在整個標註工具內使用的統一資源定位符變數:

  • mode=im:僅展示圖像和畫布(不展示除圖像外的其他東西)。

  • mode=mt:Mechanical Turk 模式。

  • mode=f:點擊「next image」按鈕,進入該文件夾下的下一張圖像。

  • mode=i:點擊「next image」按鈕,在 LabelMe 默認集合中隨機打開下一張圖像。

  • mode=c:進入集合中的下一張圖像(集合通過 dirlist 設置)。

  • username=johndoe:為標註會話設定用戶名。

  • collection=LabelMe:使用默認 LabelMe 集合列表,設置一個新的集合列表請查看下文。

  • folder=MyLabelMeFolder:LabelMe 中圖像儲存的文件夾。

  • image=image.jpg:需要標註的 LabelMe 圖像

  • objects=car,person,building:當彈窗詢問用戶對象的名稱,用戶可以從下拉式菜單中(例 car、person、building)選擇一個對象。

  • scribble=false:關閉 scribble 模式。

  • objlist=visible:該命令控制右側的對象列表可見或不可見,不可見應該設置為「objlist=hidden」。

  • actions=n:控制用戶可以執行的操作,如果需要設置任何我們希望執行的操作,需要使用下列的屬性組合。例如,我們可以設置「actions=rmd」來允許執行重命名、修改控制點和刪除操作。默認情況下,「actions=n」。下面展示了所有可執行的操作:

n:創建和編輯新的多邊形(polygons)

r:重命名已存在的對象

m:在已存在的對象上修改控制點

d:刪除已存在的對象

a:允許所有的操作

v:僅查看多邊形,不允許編輯

  • viewobj=e:控制用戶可查看的對象,可以使用以下命令選項設定。默認為「viewobj=e」,並且請注意刪除了的對象將會顯示為灰色,並且對象列表中的對象名將會採用斜體。

e:允許查看新的和之前標註過的對象

n:僅允許查看新的對象

d:允許查看新的和已刪除的對象

a:允許查看所有的對象(新的、已存在的和已刪除的)

以下為 Mechanical Turk 模式下的設置:

  • mt_sandbox=true:使用 Mechanical Turk 沙盒模式。該模式可以在 Mechanical Turk 上進行調試,我們可以設置該變數以確保每一部分都能運行。

  • N=5:標註者至少需要標註 5 個多邊形。使用 N=inf 設置,標註者可任意多地標註樣本。

  • mt_intro=http://yourpage.com (http://yourpage.com/):我們可以使用該變數定製化地設定標註者所能看到的指令。默認情況下將為標註者提供以下指令:http://labelme2.csail.mit.edu/Release3.0/annotationTools/html/mt_instructions.html

  • mt_instructions=Place your instructions here:我們可以定製化標註者在標註任務上方看到的一行指令。默認情況下,指令為:請儘可能多的使用對象標註該圖像。

我們可以使用以下命令行創建需要標註的圖片集:


$ cd ./annotationTools/sh/

$ ./populate_dirlist.sh

這將在「./Images」文件夾內創建一個所有圖像的列表,列表在「./annotationCache/DirLists/labelme.txt」文件內。

之後,我們可以使用以下 URL 地址(http://www.yourserver.edu/path/to/LabelMe/tool.html?collection=labelme&mode=i)標註集合內的圖像。我們可以通過在命令行中運行下列命令,創建一個包含特定文件夾的集合:


$ cd ./annotationTools/sh/

$ ./populate_dirlist.sh my_collection.txt example_folder

該列表出現在「./annotationCache/DirLists/my_collection.txt」內部。我們可以使用以下 URL 地址標註集合內的圖像:http://www.yourserver.edu/path/to/LabelMe/tool.html?collection=my_collection&mode=i。

  • 我們可以將集合內的 XML 文件模板修改為「./annotationCache/XMLTemplates/your_collection.xml」,以改變集合內標註文件的布局。默認模板是「./annotationCache/XMLTemplates/labelme.xml」。

  • 該標註工具行為的日誌文件記錄在「./annotationCache/Logs/logfile.txt」中。確保該文件擁有寫入許可權。

CODE API

以下是源代碼概覽。更多細節詳見 https://cdn.rawgit.com/CSAILVision/LabelMeAnnotationTool/master/annotationTools/js/api/index.html。

  • tool.html:該標註工具的入口點。主要功能是添加所有 javascript 代碼,放置畫布。

  • annotationTools/js/:包含實現該標註工具功能所需的所有 javascript 代碼。我們還提供了 code API,利用 code API 可獲取從源代碼注釋中自動提取出來的 Javascript 源代碼。

  • annotationTools/perl/:包含用於與伺服器後端交流的所有 Perl 腳本。

  • annotationTools/css/:包含所有 CSS 樣式定義。

  • annotationTools/html/:包含 HTML 輔助文件(如適用於 Mechanical Turk 平台的說明文件)。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

對比激光SLAM與視覺SLAM:誰會成為未來主流趨勢?
如果 23% 的律師工作將被 AI 取代,法律界該如何創新
從物理學、社會學、天文學、醫學到化學,科學界正在被人工智慧改變
從健康應用和疾病預防、到延緩衰老和遠程醫療,人工智慧正在革新醫療價值鏈
使用深度學習進行醫療影像分析:文件格式篇

TAG:機器之心 |

您可能感興趣

Reddit熱議:只要2行代碼,免費開源ML管理工具TRAINS
Google低代碼工具App Maker正式對外開放
不用寫代碼,就能訓練測試深度學習模型!Uber開源AI工具箱Ludwig
微軟Midori團隊前成員推出開放源代碼雲開發公司Pulumi
Google低代碼工具App Maker正式對外開放,不寫代碼完成開發
Rokid 發布AI操作系統YodaOS,代碼開源
Rokid 發布AI操作系統YodaOS,代碼開源
一行代碼切換TensorFlow與PyTorch,模型訓練也能用倆框架
Facebook低調開發AI技術工具:自動掃描代碼找漏洞
Google 發布 AutoML Vision,全自動訓練 AI 無需寫代碼
Google的內部孵化器發布代碼學習工具Grasshopper,讓你秒變大神
Oracle開源GraphPipe:幾行代碼讓你在TensorFlow部署PyTorch模型
使用 BenchmarkDotnet 測試代碼性能
蘋果iOS代碼泄密 新iPad Pro將支持Face ID
Google出品的Python代碼靜態類型分析器:Pytype
微軟在GitHub上開源了Windows計算器代碼
PyTorch Hub:圖靈獎得主 Yann LeCun 強推!一行代碼輕鬆復現主流模型
在PoC代碼發布後,Oracle WebLogic伺服器遭遇大量攻擊嘗試
SynAck成首個使用Process Doppelg?nging代碼注入技術的勒索軟體
三星泄露了 SmartThings 等應用程序的源代碼和密鑰