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

2021-01-07 機器之心Pro

本文由機器之心編輯,「機器之心」專注生產人工智慧專業性內容,適合開發者和從業者閱讀參考。點擊右上角即刻關注。

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

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

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

在該網址我們可以找到可在伺服器上安裝的 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.htm

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

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

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

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

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

相關焦點

  • 淺談計算機視覺中的圖像標註_易車網
    什麼是計算機視覺?計算機視覺被認為是機器學習和人工智慧發展的重要領域之一。簡而言之,計算機視覺是人工智慧研究領域,致力於賦予計算機看世界和視覺解釋世界的能力。更進一步的說,計算機視覺是一門研究如何使機器「看」的科學,就是是指用攝影機和電腦代替人眼對目標進行識別、跟蹤和測量等機器視覺,並進一步做圖形處理,使電腦處理成為更適合人眼觀察或傳送給儀器檢測的圖像。計算機視覺的應用非常廣泛,從自動駕駛汽車和無人機到醫療診斷技術和面部識別軟體,計算機視覺的應用是巨大的和革命性的。
  • 圖像描述開原始碼整理
    對於人來說,圖像描述是一件簡單的事,但對於機器來說,這項任務卻充滿了挑戰性。原因在於機器不僅要能檢測出圖像中的物體,而且要理解物體之間的相互關係,最後還要用貼近人類的語言表達出來。早期的研究例如《Baby Talk》,《Everypicture tell a story》等都是利用圖像處理的一些算子提取出圖像的特徵,經過SVM分類等等得到圖像中可能存在的目標。
  • 計算機視覺的圖像標註類型及應用
    全文共2534字,預計學習時長5分鐘計算機視覺的圖像標註種類繁多,應用也不盡相同。想知道各種標註技術的效果嗎?一起來看看它們在計算機視覺方面的應用和獨特的案例吧!圖像標註類型在深入學習計算機視覺的圖像標註用例前,首先要了解各類圖像標註的方法。一起來剖析一下最常見的圖像標註技術吧。1.
  • CMOS圖像傳感器推動機器視覺技術系統軟體的發展
    答案是要有機器視覺技術的技術支持。根據機器視覺技術的技術性,無人機不僅可以識別障礙物,還可以知道自身與障礙物的距離,從而準確避開障礙物,避開障礙物。 機器視覺技術的定義源於智慧機器人行業,美國機器人行業協會將其定義為:「根據光電設備和非接觸式傳感器,自動接收並求解真實物體的圖像,從而獲得 所需的信息內容或用於控制智慧機器人健身運動的設備。」
  • LabVIEW 圖像處理與機器視覺
    LabVIEW 圖像處理與機器視覺聲明本文清晰列舉了 LabVIEW 視覺模塊所包含函數過多且未漢化,層次結構過於複雜
  • Python十大工具,讓圖像簡潔直觀有魅力!
    SimpleCV的優勢在於:· 即使是初級程式設計師也可以編寫簡單的機器視覺測試· 攝像頭、視頻文件、圖像和視頻流都可以互操作資源:https://simplecv.readthedocs.io/en/latest/用處
  • 10個Python圖像處理工具,非常全了!
    OpenCV-PythonOpenCV(開放源碼計算機視覺庫)是最廣泛使用的計算機視覺應用程式庫之一。 *OpenCV- python *是OpenCV的python API。OpenCV-Python不僅速度快,因為後臺由用C/ c++編寫的代碼組成,而且易於編碼和部署(由於前臺有Python包裝器)。
  • 計算機視覺、機器視覺、圖像處理以及人工智慧技術
    而在這些應用場景中,視覺技術的地位可謂是非常重要。談到視覺技術,我們一般會想到攝像頭。然而,攝像頭只是視覺技術體系中的輸入端,採集圖像或視頻信息。而這些圖像或視頻信息需要利用專用的視覺技術處理之後,才能給用戶提供有用的信息。我們常聽說的視覺技術分為三類:計算機視覺、機器視覺、圖像處理。通過百度百科我們可以了解到,「計算機視覺是使用計算機及相關設備對生物視覺的一種模擬。
  • 10個不得不知的Python圖像處理工具,非常全了!
    OpenCV-PythonOpenCV(開放源碼計算機視覺庫)是最廣泛使用的計算機視覺應用程式庫之一。 *OpenCV- python *是OpenCV的python API。OpenCV-Python不僅速度快,因為後臺由用C/ c++編寫的代碼組成,而且易於編碼和部署(由於前臺有Python包裝器)。
  • FLIR機器視覺相機:搭配CMOS傳感器,助力工業自動化!
    FLIR機器視覺攝像頭(原加拿大Point Grey公司)目前被廣泛應用於工業自動化系統、醫療診斷設備、人口計數系統、智能交通系統、軍事和國防產品以及高級測繪系統的先進可視成像相機和解決方案。FLIR機器視覺部門生產和銷售250多個型號的可見光相機,解析度從0.3萬像素到31萬像素不等。
  • 計算機視覺基於圖像的三維重建入門介紹
    在實踐的過程中,會有很多與圖像處理相關的代碼程序,可以查閱 《Learning OpenCV》、《數字圖像處理》這兩本書,這兩本書作為工具書,需要經常查閱。在代碼實踐的過程中,嚴禁複製粘貼,每一行代碼必須手敲,這樣才能起到很好的學習效果。
  • ...Star 7.2K,超級好用的OCR數據合成與半自動標註工具,強烈推薦!
    12 月,它又帶來四大新發布與升級,核心內容先睹為快:全新發布數據合成工具 Style-Text:可以批量合成大量與目標場景類似的圖像,在多個場景驗證,效果均提升 15% 以上。全新發布半自動數據標註工具 PPOCRLabel:有了它數據標註工作事半功倍,相比 labelimg 標註效率提升 60% 以上,社區小規模測試,好評如潮。多語言識別模型效果升級:中文、英文、韓語、法語、德語、日文識別效果均優於 EasyOCR。
  • 華為機器視覺:打開智能世界視覺產業新格局
    機器視覺,簡單來說就是利用機器替代人眼,形成視覺能力,實現引導、定位、測量、檢測、識別等功能。從技術角度來講,機器視覺被認為是人工智慧的分支,需要通過人工智慧算法將圖像信號進行處理和分析,深度學習構建神經網絡對海量的圖像數據進行學習,能夠實現對待測物體的精確分析。
  • 2020年中國機器視覺行業發展現狀分析人工智慧發展加速機器視覺進步
    根據GGII數據,2019年我國機器視覺市場規模已經達到65.5億元,作為人工智慧的前沿分支之一,人工智慧的發展與智能製造裝備的滲透將雙重加速機器視覺的進步。機器視覺介紹機器視覺是通過光學裝置和非接觸式的傳感器,自動地接受和處理一個真實物體的圖像,以獲得所需信息或用於控制機器人運動的裝置。
  • 【重磅】Facebook 如何為計算機視覺技術尋求出路
    作者:PAUL SAWERS翻譯:younger審校:心  原文:venturebeat為提高計算機視覺能力,Facebook正為開發者社區越來越多地開源內部工具
  • CPU,GPU,FPGA:如何為您的機器視覺應用選擇最佳方法
    來源:機器視覺 | 作者:湯姆·布倫南 翻譯:雲禪 三種最常見的圖像處理平臺的優勢和潛在應用
  • 機器雲視覺提供商「矩視智能」獲數千萬元Pre-A輪融資|騰股小夥伴...
    矩視智能成立於2017年,自主研發了雲、邊、端一體化的機器視覺AI基礎平臺,以解決機器視覺的碎片化需求。公司的核心成員來自360開測團隊,通過平臺化產品路線,完成數據積累,並持續打磨和豐富機器視覺的AI工程化組件,包括圖像採集、圖像標註、算法開發、模型封裝、應用集成的完整落地流程。
  • 11.5 機器視覺篇--LabVIEW圖像處理技術
    一、背景圖像識別技術的過程包括數據特徵分析、圖像預處理、圖像特徵提取、模式識別。
  • 機器視覺涉及廣泛 淺談其前世今生
    機器視覺技術是一門涉及人工智慧、神經生物學、心理物理學、計算機科學、圖像處理、模式識別等諸多領域的交叉學科。機器視覺主要用計算機來模擬人的視覺功能,從客觀事物的圖像中提取信息,進行處理並加以理解,最終用於實際檢測、測量和控制。
  • 物聯網系列之機器視覺
    當然,機器視覺的產業鏈開放,環節之間相互交叉,上遊軟硬體供應商會在某些行業開展系統集成業務,新興的系統集成商投入資源研發上遊關鍵軟硬體。機器視覺被認為是人工智慧的分支,需要通過人工智慧算法將圖像信號進行處理和分析。深度學習構建深度神經網絡對海量的圖像數據進行學習,能夠實現對待測物體的精確分析。