透明摳圖 vs 非透明摳圖
物體的摳圖問題可以定義為求解以下的公式,即給定圖像I,求解前景顔色F、背景顔色B和Alpha matte的線性組合:

對于透明物體而言,它展現在觀察者眼中的顔色是由其前景顔色,背景顔色以及環境光線經過前景物體自我反射折射混合而成的,是以,它的公式會更加複雜一些:
Φ表示的是環境光的影響 它是所有光線E(w)與反射率方程R乘積在所有點上的二重積分,求解很複雜[1],導緻實作精确的透明摳圖是一個非常困難的問題。是以,現有透明摳圖研究的目标也是實作視覺感受“真實”的摳圖而已,并非追求完全真實的摳圖結果。
現有研究
SOTA的Matting算法在同時提供原圖和對應trimap的情況下,可以的實作對半透物體的處理(如下圖為GCA-Matting[2]的效果),但tripmap在實際的圖像的進行中難以擷取,限制了這類算法其在業務中的使用。
TOM-Net[3]将透明摳圖問題視為折射流的估計問題,網絡支援對單圖輸入,經過三分支的編解碼器網絡,分别預測圖像的Object Mask,attenuative mask,flow mask(折射流圖),并可以通過折射流資訊進一步在新的背景進行合成。該方法的局限性在于其假設物體必須全部為無色透明物體,并且在訓練過程中需要折射流圖作為label, 而折射流圖在真實世界是非常難以擷取的,是以該方法的訓練數隻能依賴于圖形學合成,與真實透明圖像的分布無法一緻(圖像的語義合理性存疑,例如玻璃杯在山前懸浮)。經過我們在實際資料上的測試,該方法在實際圖像的表現并不理想。
Segmenting Transparent Objects in the Wild[4]提出了基于語義分支和邊緣分支結構的真實世界透明物體分割網絡,通過邊界注意力子產品(Boundary Attention Modeule)增強對透明物體的分割精度,并釋出了目前數量最大的透明物體分割标注資料集Trans10K。然而,文章提出的算法和釋出的資料集都是處理到語義分割層面,并沒有對物體的透明度做進一步處理。
問題簡化
考慮到透明摳圖問題本身難以求解,而且資料建構也非常困難,在實際的應用場景中,為保證同時保證算法的泛化能力和摳圖效果,我們對問題進行了簡化, 我們假設所需處理的物體的透明部分是無色的,且所在環境的背景顔色分布相對均勻。在這樣的條件下,背景的自發光或反射光的顔色可以認為是全局一緻的顔色,不會出現多種顔色疊加的情況,Φ的估計就隻是和背景顔色相關了。特别的,如果預知背景的顔色,可以通過将其作為先驗引入Φ中,對結果進行背景雜色的抑制及去除。
模型設計
我們的模型輸入為單張圖像,首先提取其深層特征。然後進行語義級别的分割和提取,力求完整準确地獲得物體所在圖像區域(Mask)。同步進行對圖像物體不透明度(Opacity)的預測。而不透明度(Opacity)的預測由于在訓練的時候沒有進行語義的限制,容易存在非主體區域的噪聲影響,是以,将兩者進行融合可以将透明資訊限制在主體範圍内。
最後,對于已知背景顔色先驗的場景(如已知是綠幕),我們可以引入顔色糾正子產品,實作對背景透出的雜色進行去除。對于背景顔色未知,但飽和度低的場景,摳圖結果也依然可用。
結果與應用
在已知背景顔色先驗的情況下,可以通過顔色糾正子產品對背景透出的雜色進行去除(左到右:實拍圖,Opacity, 直接摳圖結果,色偏糾正結果)
對于背景顔色未知,但飽和度低的場景,摳圖結果也依然可用,例如下面幾組展示圖。
目前在車輛分割算法上,我們已經實作了基于透明摳圖的思路用于改善半透車窗區域的效果,使得車輛經過摳圖,能夠更加自然和諧與新背景進行融合。目前車輛分割已經上線
阿裡雲視覺智能開放平台(vision.aliyun.com),歡迎大家體驗試用。
總結與展望
目前的透明摳圖算法,面對更為多樣的真實場景下物體,仍然具有以下不足,需要進一步探索解決:
1.真實透明物體圖像資料量嚴重不足,且标注困難;
2.主體不透明度圖(Opacity)的預測容易受到圖像中噪聲的影響;
3.在得到Opacity圖後,在未知背景先驗,且背景顔色飽和度高的情況下,如何實作将背景色的去除(如下圖的杯子整體泛藍);
後續我們會考慮進一步提取背景的特征,将背景先驗知識引入到透明度的估計上,增加RGB偏移輸出資訊,嘗試對前景物體的顔色進行糾正。
[1] Environment matting and compositing
[2] Natural Image Matting via Guided Contextual Attention
[3] Learning Transparent Object Matting
[4] Segmenting Transparent Objects in the Wild