--------點選螢幕右側或者螢幕底部“+訂閱”,關注我,随時分享機器智能最新行業動态及技術幹貨----------
前言
支付寶視覺售貨櫃項目是螞蟻 IOT 的重要産品,使用者通過人臉識别打開貨櫃門,挑選出想要購買的商品後關門,視覺識别算法通過對比開門前後的商品變化判斷出使用者購買了哪些商品,自動完成結算。“開門即取,關門即走”的體驗給使用者帶來了極大友善。
圖1 3D 合成的百歲山礦泉水
圖 2 支付寶視覺售貨櫃
在本場景中,由于貨品的高密度擺放,視覺貨櫃所拍攝的圖像中商品之間遮擋非常嚴重,算法需要根據非常有限的圖像片段判斷是哪個商品。同時算法需要不斷疊代以支撐源源不斷的上新需求。這就需要我們不僅要采集足夠多的資料以解決各種情況,而且要能在很短的時間内及時輸出新品的訓練資料,否則算法模型的泛化能力将大打折扣。3D 合成資料技術為該項目提升了 3 倍以上的上新速度,降低了 70% 以上的成本,大大縮短了商品上新周期。同時避免了人工打标帶來的品質不穩定,保障了訓練資料的高品質,将因人工标注資料不可靠造成的風險降低了 90% 以上。圖 3 是這個方案的流程圖。Part1 對商品模組化,并賦予精确的紋理和材質,Part2 對場景進行參數化模組化仿真模拟各種各樣可能出現的情況,Part3 對場景的每個情況進行渲染擷取最終訓練資料。
圖3 3D資料合成流程
Part 1 全材質 3D 重建
3D 重建是利用技術手段對某個物體進行自動幾何重建,以及紋理與材質的模組化。這個過程有别于 3D 模組化師手 K 的過程,可快速準确的恢複某個物體的真實幾何和外觀資訊。3D 重建需要重建的資訊包括幾何和外觀兩個部分。目前 3D 重建難以解決的物體是一些反光、透明等材質,尤其是各種材質雜糅在一起的物體。這個難題橫旦在項目的初期,是無論後面走哪條技術路線都需要攻克的難題。
項目組經過艱苦技術攻關自研了一套全材質 3D 模組化方案,該方案結合了結構光掃描技術與基于圖像特征比對的多目幾何重建技術,通過掃描和 3D 特征比對的方法實作了全材質物體的 3D 重建,攻克了業界難題。使用全材質 3D 重建技術方案可在 5-10 分鐘左右的時間精确重建一個商品的完整幾何資訊以及初步的外觀資訊。下面是若幹個 3D 重建示例。
圖4 重建的 3D 模型
在獲得 3D 幾何資訊和初步外觀資訊之後,可根據實際商品的外觀對 3D 模型不同部位賦予準确材質模型,這個過程稱之為材質重建。一般來講特定應用場景的商品材質種類是相對有限的,可根據不同業務場景建立一個特定材質庫,根據 3D 模型的初步外觀資訊賦予相應的材質。實際上商品的外觀與材質之間的專家經驗是可以通過網絡學習到的,一些研究工作如:開放環境材質估計、 形狀與 SV-BRDF 估計 表明即便是在商品 3D 模型未知、采集環境開放的時候,我們仍然可以學習到材質模型與圖像特征的對應關系。
Part2 參數化場景
我們通過全材質 3D 重建技術對場景進行模組化,之後需要針對場景分布的各種可能性進行基于實體的模拟。在參數化場景部分,我們也需要對場景進行 3D 模組化。場景的模組化是對所渲染 3D 模型所處的環境進行 3D 模組化,包括了場景 3D 重建和光源模組化兩個部分。場景 3D 重建的過程可以是自動化的使用如掃描器,或者根據多目幾何原理使用 Structure-from-Motion 進行三維重建。而光源重建則是對環境的光源進行模組化,使得渲染出來的圖像與實際拍攝的圖像在外觀上融合度較好。
光照估計
在渲染流程中,光照對渲染結果的影響至關重要,是以場景參數化需要對光照進行精确的描述。通常來講,一個場景中的光源往往構成複雜,需要對直接光源的數量、色溫、光源形狀、乃至頻譜範圍等進行準确模組化,如果場景中有類似液晶顯示屏等光源,還需要針對光源的偏振态和頻率進行模組化,工作量很大且很難自動化。
圖5 HDR 合成與渲染結果
這裡我們采用了 HDRI 技術對光源進行重建,該方案是一個簡單有效的光源重建和渲染技術,被廣泛采用于電影制作中實作與真實場景融合度很高的渲染圖像。該技術是一種基于圖像的渲染技術,即采集并合成一張高動态範圍圖像作為光源進行渲染。可以看到這樣的光源渲染出來的結果在高光表現方面較好。
場景模組化和實體碰撞檢測引擎
在視覺貨櫃項目中,我們所面料的場景是一個采用視覺識别技術完成商品交易的無人貨櫃。貨櫃需要頻繁上新品,且商品之間遮擋嚴重。商家為了更有效的利用貨櫃會密集擺放很多商品,很多商品漏出來的畫面非常有限,而視覺識别需要檢測并識别出所有目标。這就要求視覺算法同學除了想法設法提高模型泛化能力之外,也需要準備充分多樣性的資料,盡可能全的覆寫到各種遮擋關系,同時需要覆寫到每個可能出現的商品。
在參數化場景的過程中,我們使用重力模型、随機力模型等對場景施加變化,并對場景中的各個物體進行碰撞檢測和模拟,使得場景中的物體分布接近真實狀态。下面這個視訊示意如何對倒瓶等異常情況進行仿真模拟。
圖6 實體碰撞模拟
Part3照片級渲染
3D 合成資料方案的核心問題是怎樣使得渲染出來的圖像看起來像照片,而不是人眼看上去很真實就夠了。我們需要渲染域與實拍域盡量接近才能真正起到訓練資料的作用。一般意義上的渲染場景存在所謂 too perfect 的問題,也就是說渲染出來的圖像看上去可能已經非常真實,與人眼實際看到的樣子很接近,但卻與攝像頭實際拍攝的圖檔不同。作為喂給機器學習模型的訓練資料,我們要求最終輸出的圖檔需要複現這些瑕疵,實作所謂的照片級渲染(Photo-realistic rendering)。
我們嘗試了兩種思路實作照片級渲染。一種思路是資料驅動的方法,先采集大量實拍圖,之後通過 GAN、域遷移、域自适應等方法将渲染域的圖像遷移至實拍域。另一種思路是成像模拟的方法,在渲染流程前中後期分别模拟各種攝像頭成像的影響,比如渲染過程中根據場景深度不同模拟散焦模糊,對渲染圖像卷積同一模糊算子實作因低分辨率引起的鏡頭模糊等。
圖7 渲染圖、域遷移圖與實拍圖
圖7 為采用第一種思路實作的效果。将渲染圖、遷移圖和實拍圖的對比,我們看到遷移圖可以較好的實作與鏡頭相關的圖像特征遷移效果,同時也會存在一些 artifacts。此外,作為資料驅動的技術,域遷移的過程可控性較弱,獲得好結果的前提是需要有與真實場景分布接近的實拍資料,導緻資料采內建本較高。
不同于上面的資料驅動算法,成像模拟采用純模拟的方式合成訓練資料,可控性強,且效果無天花闆,但實作的技術較為複雜。我們采用電影級渲染引擎,并自研了光學攝像頭模拟器,實作了一系列因鏡頭、光電傳感器、以及 ISP 圖像處理單元的模拟,消除了許多引起渲染域與實拍域差距的因素。下圖為成像模拟實作的效果。
圖8 成像模拟結果
寫在最後
在實踐中,我們發現 3D 合成資料可以很好的解決許多計算機視覺任務,尤其是在一些無法很好擷取 ground truth 的任務中具有非常好的落地前景。畢竟人工智能的目的是代替重複低效的人工,而如果用于訓練的資料收集和标注仍然大量依賴人工的話,有時就不免落入到所謂“有多少人工就有多少智能“的尴尬境地。
同時我們也必須看到目前的 3D 合成資料方案有諸多挑戰。首先,不能完全依賴合成資料,總會有一些模拟不到的場景。其次,合成資料方案比較适合标注成本高的任務,對于一些标注成本不高的任務反而會增加成本,比如人臉檢測、物體識别分類等任務。再次,一些技術難點,如低成本實作動态場景模拟等尚需進一步攻克。

原文連結:
https://mp.weixin.qq.com/s/j46iNSqD_7MQ_hhNMNQCkg