2018年4月12日 星期四

[KaaS] Supervise.ly 發佈人像分割數據集

參考資料:
https://hackernoon.com/releasing-supervisely-person-dataset-for-teaching-machines-to-segment-humans-1f1fc1f28469


內文:

我們非常自豪地在這裏宣佈,Supervisely人像數據集正式發佈。它是公開的並且免費,僅出於學術的目的。
終於!Supervise.ly 發佈人像分割數據集啦(免費開源)
要讓AI全民共享, 我們不僅需要開源,還要一場強有力的「開放數據」運動。——吳恩達
我們當然同意他的看法,並讓我們擴展一下這個想法。對於語義分割的人物,有很多深層神經網絡的研究。但是,大多數情況下,收集數據要比開發和應用算法去運行數據更困難和昂貴。
這就是爲什麼我們需要專門設計的平臺,這個平臺可以覆蓋全部的機器學習的工作流,從開發訓練數據集到訓練和部署神經網絡。
終於!Supervise.ly 發佈人像分割數據集啦(免費開源)
幾個例子來自"Supervisely人像數據集"
我們認爲,我們的工作將會幫助開發者、研究者和商人們。爲了更快地創建大型訓練數據集,我們的工作不僅可以看作一個公開的數據集,而且可以被視爲一套創新的方法和工具。
接下來,我們將介紹關於如何從頭建立這個數據集,讓我來展示一些有趣的事實:
  • 數據集由5711張圖片組成,有6884個高質量的標註的人體實例。
  • 下面的所有步驟在Supervisely內部完成的,沒有任何編碼。
  • 更重要的是,這些步驟是被我內部的註釋器執行的,沒有任何機器學習專業知識。數據科學家僅僅只是控制和管理這過程。
  • 註釋組由兩名成員組成並且這整個過程只花了4天。
Supervisely 是包含數據科學的智慧機器學習平臺。它允許數據科學家專注於真正的創新,並將日常工作留給其他人(是的,訓練衆所周知的神經網絡架構也是一項常規工作)。
要解決的問題
在許多真實世界的應用中,人像檢測是分析人類圖像中的關鍵任務,在動作識別、自動駕駛汽車、視頻監控、移動應用等方面均有使用。
我們在DeepSystems公司進行了內部研究,這讓我們意識到人體檢測任務缺乏數據。你會問我們:那COCO、Pascal、Mapillary 等公共數據集呢?爲了回答這個問題,我會更好地向你展示幾個例子:
終於!Supervise.ly 發佈人像分割數據集啦(免費開源)幾個來自COCO數據集的人類標註示例
大多數公共數據集中人體檢測數據的質量不符合我們的要求,我們必須創建自己的數據集,並提供高質量的註釋,我會告訴你我們是如何做到的。
步驟0:將公共數據集上傳和準備,作爲初始點來訓練初始神經網絡
將公共數據集上傳到系統:PascalVoc,Mapillary。我們的「導入」模塊支持大多數公共數據集,並將它們轉換爲統一的基於json-based的格式,稱爲Supervisely格式 :)
我們執行DTL(「數據轉換語言」)查詢以執行一些操作:合併數據集 - >跳過沒有人物的圖像 - >從圖像裁剪每個人 - >按寬度和高度過濾它們 - >分割爲訓練/測試集。
終於!Supervise.ly 發佈人像分割數據集啦(免費開源)
合併,裁剪和過濾公共數據集後的原始數據
似乎有很多公開可用的數據,但我們在前面提到過,存在一些隱藏的問題:註釋質量低,分辨率低等等。
因此,我們構建了第一個訓練數據集。
步驟1:訓練神經網絡
我們將對 UNet-like 架構進行稍微定製
終於!Supervise.ly 發佈人像分割數據集啦(免費開源)
Unet_v2架構
損失= 二進制損失熵+(1 -隨機數)。
該網絡訓練速度快,它非常準確,易於實施和定製。它允許我們進行大量的實驗。Supervisely可以分佈在集羣中的多個節點上。
因此我們可以同時訓練幾個神經網絡。同樣所有的神經網絡都支持我們平臺上的多GPU訓練。每個訓練試驗的輸入分辨率爲256 * 256,且都不超過15分鐘。
終於!Supervise.ly 發佈人像分割數據集啦(免費開源)
步驟2:準備數據進行註釋
我們沒有收集未標記的圖像,所以我們決定從網上下載它。我們在github上實現了這個項目,從而可以從優秀的照片庫中下載數據 ,由Pexels完成(感謝他,這真的很酷的工作)。
因此,我們下載了大約15k的圖片,其中包含與我們的任務相關的標籤,並將其上傳到Supervisely並通過DTL查詢執行調整大小操作,因爲它們具有超高分辨率。
步驟3:將神經網絡應用於未標記的圖像
過去的架構不支持實例分段。 因此我們沒有使用Mask-RCNN,因爲靠近物體邊緣的分割質量很低。
這就是爲什麼我們決定做兩步計劃:應用Faster-RCNN(基於NasNet)來檢測圖像上的所有人,然後爲每個人定界框應用分割網絡來分割支配對象。 這種方法保證我們既模擬實例分割又準確地分割對象邊緣。
應用模型和手動修正檢測的3分鐘視頻
我們嘗試了不同的分辨率:我們傳遞給NN的分辨率越高,它產生的結果就越好。 我們並不關心總推理時間,因爲Supervisely支持分佈在多臺機器上的推理。 對於自動預標註任務來說,這已經足夠了。
步驟4:手動驗證和糾錯
所有推斷結果都會實時顯示在儀表板中。 我們的操作員預覽所有結果並使用幾個標籤標記圖像:不良預測、預測糾正、良好預測。 這個過程是快速的,因爲他們需要很少的鍵盤快捷鍵「下一個圖像」和「分配標籤圖像」。
終於!Supervise.ly 發佈人像分割數據集啦(免費開源)
我們如何標記圖像:左 - 不良預測,中 - 預測需要輕度手動校正,右 - 好預測。
標記爲「不良預測」的圖像被跳過。 進一步的工作繼續是處理我們需要糾正的圖像。
如何校正神經網絡預測
手動校正所需的時間比從頭開始的註釋少得多。
步驟5:將結果添加到訓練數據集並轉到第1步
完成!
一些提示:
  1. 當我們應用僅對公共數據進行訓練的NN時,「合適」圖像(標記爲「良好預測」和「預測正確」)的百分比約爲20%。
  2. 經過樹型快速迭代後,這個數字增加到70%。我們總共完成了6次迭代,最終的NN變得相當準確:-)
  3. 在訓練之前,我們在物體邊緣添加了小波段以平滑鋸齒狀邊緣並執行多種增強:翻轉,隨機裁剪,隨機角度旋轉和顏色轉換。正如您所看到的,即使您需要在圖像上註釋多個對象類,這種方法也適用於許多計算機視覺任務。
獎勵
這個數據集幫助我們改進AI支持的註釋工具 - 定製化的用它來檢測人類。 在我們的最新版本中,我們添加了在系統內部訓練NN的能力。 以下是基於類別的工具與其定製版本的比較。 它是可用的,你可以試試你的數據。
如何訪問數據集
註冊Supervisely,進入「Import」 tab -> 「Datasets library」。 點擊「Supervisely Person」數據集,爲新項目編寫名稱。 然後點擊「three dots」按鈕 - >「下載爲json格式」 - >「Start」按鈕。 就這樣, 總下載時間可能需要15分鐘(~ 7 GB)。
終於!Supervise.ly 發佈人像分割數據集啦(免費開源)
如何下載結果
結論
看看沒有任何ML背景的人如何完成所有這些步驟是非常有趣的。 我們作爲深度學習專家節省了大量時間,我們的註釋團隊在註釋速度和質量方面變得更加高效。
我們希望,Supervisely平臺將幫助每個深度學習團隊更快更輕鬆地製作AI產品。
讓我列出我們在這項工作中使用的最有價值的Supervisely功能:
1. 「Import」模塊可以上傳所有公共數據集
2. 「Data Transformation Language」來操作,合併和增強數據集
3.「 NN」模塊使用Faster-RCNN和UnetV2
3. 「Statistics」模塊自動從我們擁有的數據中獲得有用的見解
4. 「Annotation」就像Photoshop一樣用於訓練數據「協作」功能,允許將工作人員與註釋團隊相結合,爲他們分配任務並控制整個過程。




心得與分享:
  影像辨識雖然不是最好的AI素材,但是最直覺、應用也最廣泛的,Supervise.ly 這次發佈人像分割數據集是對影像辨識、深度學習界拋下一塊非常珍貴的寶石,我們可以利用裡面玩全開源的程式集來做到非常大團隊才能完成的成果,希望也會有越來越多開發者一起參與此項計畫,甚至一起開源其他好用的數據集!

沒有留言:

張貼留言