Unity Perception工具 | 使用合成數據訓練出強大的物體檢測ML模型

2021-01-20 網易

  人工監督訓練的機器學習(ML)革新了人工智慧,促成了一系列創新產品落地。然而,人工監督的機器學習需要更大、更複雜的數據集,而搜集這些數據會消耗大量的成本,並且搜集時還會面臨如何保證標籤質量、如何確定數據真實有效等問題。如今,這些問題,尤其是對象檢測,有了一個全新的解決方案:藉助軟體生成大量的合成數據集。合成數據的出現降低了大量搜集帶標籤數據集的難度,可輔助機器學習模型的訓練。

  本文屬於「使用Unity生成合成數據」系列第三篇。在第一篇中,我們討論了在為計算機視覺訓練機器學習模型時,搜集大量帶標籤圖像會面臨的。最近,我們又展示了如何使用Unity的認知訓練工具來。

  而現在,我們將介紹如何:

  在全新的Unity Simulation環境中生成大體量目標對象數據集

  使用合成數據集訓練對象檢測模型(即Faster R-CNN)

  使用少量現實示例調整模型

  最終成果在檢測真實數據集時表現良好,相較完全使用真實數據訓練的模型表現更佳。我們將介紹建立環境、生成數據的管線與說明,幫助大家使用datasetinsights和自定義資源/數據訓練模型。

  藉助Unity Simulation生成大規模合成數據集

  我們使用了Faster R-CNN來檢測63中日常百貨商品。訓練步驟包括:創建目標的3D資源、自動創建場景、渲染圖像數據和生成邊界框(bounding box)標籤。

  我們為所有63個物體創建了3D掃面圖像,使用Unity Perception包來自動生成帶標籤的數據。如本系列第二篇博文中所述,我們手動控制了目標對象在每幀上相對於背景對象排序、形狀和紋理的擺放和朝向,並且隨機選擇光照、對象顏色、模糊度和圖像噪聲,接著藉助Perception包捕捉帶有對應邊界框(bounding box)的RGB圖像與JSON文件。

  

  圖示1:帶有邊界框與元數據JSON文件的合成數據。

  我們使用了兩種類型的資源創建了環境:前景資源和背景資源。前景資源是檢測用的對象掃描圖像,背景資源則用於組成背景或遮擋目標對象(起障礙物作用)。

  製作這些資源會遇到一些獨特的難題。首先,背景和障礙物對象的紋理和色彩需要被暴露出來、要有變化。其次,前景對象必須足夠逼真,製作時需要更加小心,還需要後期掃描來調整圖像。

  創建現實數據集

  為了創建現實數據集,我們購買了這些商品,在貝爾維尤辦公室裡將它們以不同的樣式擺放,再拍攝了幾張照片。為了保證數據集的多樣性,我們將物品放在不同的光照和背景條件下,同時讓物品的位置、朝向和配置在每一鏡都有不同,保證每張照片的多樣性。

  為了給圖像添加標註,我們使用了VGG Image Annotator工具,投入了超過200小時的人力,其中包括質量保證和糾正數據準確度的工作量。在流程最後,我們製作出了1267張帶有邊界框和分類標籤的可用圖像。其中760張圖像被用作訓練,253張圖像被用作驗證,餘下的254張圖像被用於測試,任何使用現實圖像訓練的模型都會用到這三組數據。使用驗證組是為了選出性能最好的模型、防止出現過擬合。而保留組(剩下的測試圖像)從未被模型觀察過,也從未暗中或明著使用數據來選取模型或設定模型超參數。

  

  圖示2:帶有人工注釋邊界框標籤的現實數據

  使用現實和合成數據訓練對象檢測模型

  在實驗中,我們使用了大受歡迎的Faster R-CNN模型,輔以於ImageNet上預先訓練好的ResNet50作為支柱,還使用了torchvision公開代碼。完整代碼,包括Kubeflow管線都可在我們的datasetinsights開源python包內找到。

  為了測量模型的性能,我們使用了COCO、PASCAL VOC、和OpenImages中的三種指標,來量化模型的假陽性、邊界框定位和假陰性出現率。我們用檢測的邊界框於實際邊界框之間的交並比(intersection over union,IoU)作為閾值,來確定檢測是否準確。特定IoU內對象檢測的平均查準率(mean average precision,mAP)是否大於等於0.5(即mAPIoU=0.5),來測量假陽性的檢測率。使用0.5至0.95範圍內、間隔為0.05的mAP平均值來測量邊界框定位的準確度。mAP值增加意味著邊界框定位更準確,而mAPIoU=0.5是一個更為普遍的檢測精確度改善指標,即代表假陽性出現率的降低。最後,我們測量了模型在給出100個候選檢測對象(mAR100)下的平均查全率(mean average recall),mAR100的增加表明假陰性出現率降低。要想詳細了解指標的計算方式,請查看 PASCAL VOC開發者套件和COCO的監測評估標準。

  模型的訓練皆以2x10-4的學習速率數量為4的樣本量進行。我們在訓練前將數據分成訓練組和驗證組,選取mAPIoU=0.5和mAR100得分最高的模型進入驗證組測試。

  在使用現實數據訓練時,我們使用了760張圖片,選取了mAPIoU=0.5和mARIoU100表現最好的模型。而在用合成數據訓練時,我們使用了400000圖片,選取合成數據驗證組中表現最好的模型。最後,我們使用現實圖像調整表現最好的合成數據模型。本例中的模型是在現實數據驗證組中表現最佳的模型。

  合成數據與現實數據模型比較

  比較指標分別為:平均查準率(Mean Average Precision,mAP)取IoU閾值[0.5:0.95]內的平均值;IoU閾值0.5內的平均查準率(mAPIoU=0.5);檢測數為100、測量254張現實圖像所得出的平均查全率(Mean Average Recall,mAR)。

  

  

  圖示3:每個模型檢測的圖像。綠色邊界框表明檢測正確,紅色框為假陽性結果。使用合成數據可以提高模型在不同朝向、配置和光照條件下的檢測表現

  使用類似Faster R-CNN這類現成的模型和小規模現實數據來訓練是許多人的標準工作流程。而在我們的GroceriesReal數據集中,Faster R-CNN的表現非常不錯(mAP為0.48,mAPIoU=0.5為0.73,mAR100為0.59)。在上圖中可以看到,當對象未被遮擋、商品名稱面向前方時,模型的表現非常好。然而當對象被其他對象幹擾、遮擋時,模型會檢測出許多假陽性。反之,當光照條件複雜時,有許多對象未被檢測出來(假陰性)。結果表明Faster R-CNN的確能勝任該任務,但邊界框定位(mAP)、假陽性(mAPIoU=0.5)和假陰性(mAR100)出現率方面尚有很大的提升空間。而我們並沒有搜集大量的現實數據,而是合成了大量的隨機數據來推進性能。

  使用合成數據的一個好處是數據集可以快速迭代,無需經過一系列冗長、耗時的數據搜集過程。為了生成有效的合成數據集,我們多次修改了生成流程的各個方面。起初,數據生成時並沒有考慮到環境光和遮擋效果,導致訓練出來的模型在檢測現實數據時表現較差,有許多假陽性和假陰性結果。而要實現較好的成果,考慮進背景對象和其他對象產生的光照和遮擋效果是很關鍵的。因此我們使用了Unity Simulation和Unity Perception包建立了一個參數化環境,在其中快速地修改數據集,用幾分鐘時間來生成新的參數隨機化數據集。

  在包括進環境光與物體遮擋後,我們使用了400000個合成圖例來訓練模型。該模型在檢測真是圖像時(見上圖),尤其是遮擋嚴重或亮度較低時表現較差,但可以很好地處理帶複雜朝向的對象(圖示3)。這表明問題出現在域差(domain gap)上。為了驗證假設,我們嘗試用現實數據來調整模型。

  我們首先用了76張現實圖像來調整合成數據模型,結果這一成示例訓練出的模型要比用現實數據訓練的模型表現更好。具體來說,假陽性和假陰性的出現率大大降低,並且邊界框定位也更為準確。然而模型在複雜光照條件下的表現依舊不盡人意(圖示3第3行第3列)。

  不過,在使用380張現實圖例調整模型後 ,各項指標都有了很大提升。與現實數據模型相比,該模型的mAPIoU=0.5提高了近22%,mAR100提高了近12%,mAP更是提高了42%,而邊界框定位也有相應的提升。具體來說,在商品扎堆的圖例中,模型僅檢測出了很少幾個假陽性結果;在光照條件不佳時,模型幾乎檢測出了所有對象。該結果表明使用大規模、隨機化的合成數據集可以減少模型檢測出假陰性和假陽性的機率。

  關鍵點與結論

  要用合成數據來訓練應對現實挑戰的模型,需要面臨如何生成有效數據集的問題。而在對象檢測這個用例中,主要的困難在於如何創建目標對象的數字孿生、實現合成數據多樣化。用戶可在Unity中使用資源掃描軟體來生成目標資源的合成數據,再使用Unity Simulation來修改資源和環境的參數、大規模地生成數據。

  快來免費試用吧

  在先前的博文中,我們發布了一個名為SynthDet的python包,來解析Simulation生成的合成數據集,計算、生成數據統計圖表。現已在GitHub上完全開源,內容也有拓展,新添了模型訓練代碼和kubeflow管線,方便用戶試用合成數據重現訓練過程、用現實數據微調模型。

  包內更新了一份端到端全管線運行的指南,內容涵蓋從生成數據集到訓練Faster R-CNN模型,再到用jupyter notebook評估、可視化模型檢測表現的整個流程。還將介紹如何實現性能較好的遷移學習(transfer learning),及使用我們訓練好的模型執行對象檢測。

  有了這些管線、現實數據集和生成合成數據所需的參數後,大家就能自行訓練一個對象檢測模型了。不僅如此,我們還開放了項目的源碼、iOS AR應用和ML模型託管指南,可讓用戶使用自己(或我們的)模型在陌生環境中執行對象檢測。

  有了Unity Perception包、Unity Simulation和datasetinsights後,你就能免費開始生成合成數據、為應用訓練自己的模型了。

  本文是「使用Unity生成合成數據」系列第三篇,前兩篇文章見下,歡迎大家點擊學習:

  [1]

  [2]

  https://github.com/Unity-Technologies/datasetinsights

  [3] Unity Perception 包:

  https://github.com/Unity-Technologies/com.unity.perception

  [4] VGG Image Annotator工具:

  http://www.robots.ox.ac.uk/~vgg/software/via/

  [5] Faster R-CNN:

  https://papers.nips.cc/paper/5638-faster-r-cnn-towards-real-time-object-detection-with-region-proposal-net

  [6] ResNet50:

  https://arxiv.org/abs/1512.03385

  [7] torchvision:

  https://github.com/pytorch/vision

  [8] PASCAL VOC開發者套件:

  http://host.robots.ox.ac.uk/pascal/VOC/voc2012/htmldoc/devkit_doc.html#SECTION00044000000000000000

  [9] SynthDet python包:

  https://github.com/Unity-Technologies/SynthDet

  [10] 端到端全管線運行的指南:

  https://datasetinsights.readthedocs.io/en/latest/Evaluation_Tutorial.html

  [11] 本項目的源碼:

  https://github.com/Unity-Technologies/perception-synthdet-viewer-app

  [12] 本項目的iOS AR應用:

  https://apps.apple.com/app/id1528361585

  [13] ML模型託管指南:

  https://github.com/Unity-Technologies/perception-synthdet-torchserve

  Unity線上技術大會將於11月16日盛大開啟,大咖精講Unity在遊戲、工業、傳媒娛樂三大領域的最前沿技術,報名即可免費參與

  點擊關鍵詞

  獲取更多信息

  Unity 技術精講

  [1]

  [2]

  [3]

  [4]

  [5]

  

  Unity 官方微信

  第一時間了解Unity引擎動向,學習最新開發技巧

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺「網易號」用戶上傳並發布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關焦點

  • 使用Unity感知工具大批量生成、分析合成數據,高效地訓練ML模型
    合成數據可降低獲取標註數據的難度,方便機器學習模型的訓練。本文屬於合成數據系列第二篇,我們將用一個對象檢測的例子,來介紹Unity生成和分析合成數據集的各種工具。 在系列首篇文章中(點擊回看),我們討論了搜集大量標籤圖像、訓練機器學習模型完成電腦視覺任務時遇到的各種挑戰。
  • 介紹TensorFlow物體檢測API訓練神經網絡、Python腳本尋找威利的過程
    與傳統的計算機視覺圖像處理方法不同的是,它只使用了少數幾個標記出威利位置的圖片樣本,就訓練成了一套「尋找威利」的系統。 訓練過的圖像評估模型和檢測腳本發布在作者的GitHub repo上。 本文介紹了用TensorFlow物體檢測API訓練神經網絡、並用相應的Python腳本尋找威利的過程。
  • 用油管上的 「木頭人」挑戰視頻,谷歌訓練出了頂級的景深檢測模型
    最近,在Youtube上,也出現了這樣一波「木頭人挑戰」,而更有趣的是,谷歌把這些視頻拿回家訓練成了數據集,並且完成了一個最新研究:移動的單攝像頭+移動的人,就能非常好的預測出視頻中人的景深。這篇論文也因此獲得了CVPR 2019的榮譽提名獎(Honorable Mentioned Award),一起看看。
  • 一行代碼調用預訓練模型,上海交大開源視頻理解工具箱AlphaVideo
    為了讓 h_s 和 h_t 各司其職,研究者將 h_s 和 h_t 設計為不對稱的結構,同時,使用兩個特殊的監督目標 r_s、r_t 來進一步約束二者關注各自的工作。該研究進一步提出了一種訓練注意力機制。這種注意力機制控制模型在優化過程中學習哪種信息。
  • 視覺工具包torchvision重大更新:支持分割模型、檢測模型
    這次,工具包裡增加了許多新模型:做語義分割的,做目標檢測的,做實例分割的……也增加了許多數據集,比如ImageNet,CelebA,Caltech 101等等等等。另外,torchvision還有了不少視覺專用的C++/Cuda算子。消息一出,小夥伴們紛紛奔走相告。現在,來仔細觀察一下,新的torchvision都有哪裡變強了。
  • NVIDIA Research使用有限的數據集實現AI訓練突破
    通過將一種突破性的神經網絡訓練技術應用於常用的NVIDIA StyleGAN2模型,NVIDIA的研究人員基於大都會藝術博物館中不到1,500張圖像重新設計了藝術作品。他們使用NVIDIA DGX系統加速訓練,從歷史人物肖像中汲取靈感,創作出了全新的AI藝術作品。 這種稱為自適應鑑別器增強(ADA)的技術能在將訓練圖像的數量縮減10-20倍的情況下,仍保持不錯的效果。
  • 訓練部署一條龍,飛槳OCR模型開源,網友調侃:從業人員「失業大禮包」
    除了性能優越之外,百度PaddleOCR還是第一個完整支持從訓練到部署完整流程的OCR模型套件,而且部署方式多樣,覆蓋手機端(含IOS、Android Demo)、嵌入式端,大規模數據離線預測,在線服務化預測等。通過多種預測工具組件的支持,百度PaddleOCR能夠滿足多樣化的工業級應用場景。
  • Github Star 7.2K,超級好用的OCR數據合成與半自動標註工具,強烈...
    12 月,它又帶來四大新發布與升級,核心內容先睹為快: 全新發布數據合成工具 Style-Text:可以批量合成大量與目標場景類似的圖像,在多個場景驗證,效果均提升 15% 以上。全新發布 OCR 數據合成工具:Style-Text相比於傳統的數據合成算法,Style-Text 可以實現特殊背景下的圖片風格遷移,只需要少許目標場景圖像,就可以合成大量數據,效果展示如下:1、相同背景批量數據合成2、相同文字批量數據合成
  • 性能SOTA、適用多種類型物體,國防科技大學單張RGB-D圖像預測物體...
    實驗結果表明,該檢測網絡顯著優於其它已有方法,性能達到了 SOTA,尤其是在沒有訓練過的物體上優勢明顯。此外,SymmetryNet 能夠準確地檢測出多種不同物體的對稱性,包括被遮擋的物體、包含多個對稱面的物體等。作為大多數物體的基本幾何屬性,對稱性廣泛存在於我們的生活中。理解物體的對稱性是計算機理解真實世界以及機器人智能交互中的重要問題。
  • 用2D圖像生成3D模型,微軟新AI模型或成遊戲業福音
    近日,微軟研究院(Microsoft Research)的研究團隊發表了一篇預印論文,他們在論文中詳細介紹了一個新的AI框架,該框架採用「可縮放」訓練技術,可將2D圖像進行3D形狀的模擬生成。研究人員表示,在使用2D圖像進行訓練時,該框架始終可以比現有的模型生成效果更好的3D形狀,這對於遊戲開發、視頻製作、動畫等領域是一個極佳的自動化工具。
  • 「專利解密」華為如何實現物體檢測在大規模場景中的應用 助力智慧...
    例如,物體檢測就是一項基本的計算機視覺任務,它可以識別圖像中物體的位置和類別。在實際應用中,研究員和工程師們會根據應用場景與實際任務需求的不同創建針對不同具體問題的數據集,用於訓練高度定製化和獨特的自動物體檢測器。而在智慧安防領域,物體檢測也是非常重要的一個環節,在進行很多任務之前,首要的就是將待檢測物體定位並進行類別識別。
  • 移動端實時3D目標檢測,谷歌開源出品,安卓下載就能用
    今日,谷歌宣布推出 MediaPipe Objectron,這是一種適用於日常物體的移動端實時 3D 目標檢測 pipeline,它能夠檢測 2D 圖像中的目標,並通過新創建 3D 數據集上訓練的機器學習模型來估計這些目標的姿態和大小。
  • 模型的跨界:我拿Transformer去做目標檢測,結果發現效果不錯
    近年來,Transformer 成為了深度學習領域非常受歡迎的一種架構,它依賴於一種簡單但卻十分強大的機制——注意力機制,使得 AI 模型有選擇地聚焦於輸入的某些部分,因此推理更加高效。Transformer 已經廣泛應用於序列數據的處理,尤其是在語言建模、機器翻譯等自然語言處理領域。
  • 微軟「可縮放」新框架只需2D數據即可生成逼真3D模型
    微軟開發首個針對2D數據的3D模型的「可縮放」訓練技術最在一份新的預印本論文中,來自Microsoft Research的團隊詳細介紹了一個框架。研究人員稱,該框架是首個針對2D數據的3D模型的「可縮放」訓練技術。
  • 8.6M超輕量中英文OCR模型開源,訓練部署一條龍|Demo在線可玩
    無論是移動端和伺服器端,待識別的圖像數目往往非常多,都希望模型更小,精度更高,預測速度更快。GPU太貴,最好使用CPU跑起來更經濟。在滿足業務需求的前提下,模型越輕量佔用的資源越少。2. 實際業務場景中,OCR面臨的問題多種多樣,業務場景個性化往往需要自定義數據集重新訓練,硬體環境多樣化就需要支持豐富的部署方式。
  • 課程實錄:基於EasyDL訓練部署企業級高精度AI模型
    支持圖片、文本、視頻、音頻等輸入數據,依託飛槳核心框架與工具組件,提供數據預處理、模型訓練、部署以及 serving 服務。目前提供的服務方式有4種:公有雲 API:用戶可直接調用百度雲提供的 API 進行使用。
  • 北大校友出品:顯著性目標檢測工具,AI生成肖像畫,精細到毛髮
    相信不少開發者朋友對這個名字非常熟悉,他之前提出邊界感知顯著目標檢測網絡 BASNet,被用來做了很多好玩的工具,比如『隔空複製粘貼』——AR Cut & Paste。 只要手機掃一掃,書本、花盆、雜誌人物,你能看到的任何現實物體,只需10s統統都可以被「粘貼」到電腦裡。
  • 性能SOTA,國防科技大學單張RGB-D圖像預測物體對稱性
    實驗結果表明,該檢測網絡顯著優於其它已有方法,性能達到了 SOTA,尤其是在沒有訓練過的物體上優勢明顯。此外,SymmetryNet 能夠準確地檢測出多種不同物體的對稱性,包括被遮擋的物體、包含多個對稱面的物體等。作為大多數物體的基本幾何屬性,對稱性廣泛存在於我們的生活中。理解物體的對稱性是計算機理解真實世界以及機器人智能交互中的重要問題。
  • 人體關鍵點檢測模型研究
    摘要:依賴於「大數據」技術與高性能處理器的蓬勃發展,深度學習以其強大的魯棒性和有效性成為了計算機視覺、自然語言處理等人工智慧分支領域中佔據主導地位的研究方法。人體關鍵點檢測是計算機視覺中一個極具挑戰性的研究。可用於:動作識別,異常行為檢測,安防等。
  • 線下零售門店一鍵智能:百度大腦EasyDL零售版提供高精度AI模型服務
    為幫助用戶在少量數據上得到更好的模型效果,平臺提供了近千種商品、每種50張左右的海量預置商品圖片,並開放基於百度大規模零售數據的預訓練模型,結合數據增強合成技術,可供客戶在創建SKU時進行選擇、合成訓練數據,極大降低了訓練數據採集和標註成本。同時,用戶可根據業務需求創建屬於自己的商品,商品信息支持完全自定義,充分滿足客戶定製化需求,實現低成本獲得高精度商品檢測AI模型服務。