UI2CODE複雜背景沒法識別?閒魚工程師這樣打造高準確率方案

複雜背景內容提取指的是從複雜的背景中提取出特定的內容,例如在圖片中提取特定的文字,在圖片中提取特定的疊加圖層等等。
這是一個業界難題,基於傳統的圖像處理的方法存在準確率和召回率的問題,無法解決語義的問題。而主流的機器學習的方法,例如目標檢測沒法獲取像素級別的位置信息,而語義分割的方法則只能提取像素而沒法獲取半透明疊加前的像素信息。
本文考慮到這些痛點,從UI2CODE業務的業務場景出發,採用了目標檢測網絡來實現內容召回,GAN網絡實現複雜背景中特定前景內容的提取和復原。算法

處理流程:

複雜背景的處理流程分爲以下幾個步驟:網絡

內容召回:經過目標檢測網絡召回元素,即元素是否須要作背景提取操做。
區域判斷:根據梯度等視覺方法判斷所處區域是不是複雜區域。
簡單區域:基於梯度的方式找到背景區塊。
複雜區域:採用SRGAN網絡進行內容提取。

內容召回:

內容召回咱們採用目標檢測網絡來實現,例如Faster-rcnn或者Mask-rcnn等,以下圖所示:機器學習

區域判斷:

根據拉普拉斯算子計算周邊梯度,判斷所處區域是不是複雜區域。函數

簡單背景:

因爲目標檢測模型自己的侷限性,會致使無法達到像素級別的精確性,所以須要對位置作修正。若是是簡單背景就能夠基於梯度的思想作位置修正,具體計算方式以下:

複雜背景:

背景是複雜背景時,左圖是原圖,右圖是提取的文字區塊:學習


此時提取出的框不是徹底正確,那麼此時根據梯度等機器視覺算法已經不能對位置作正確的修正了。本文提出了基於GAN網絡的方式來解決複雜背景內容提取問題,網絡的主要結構以下圖所示:優化

爲何選擇GAN網絡?

1)基於srGAN網絡,該網絡加入了特徵圖的損失函數,這樣能夠很好保留高頻信息,能更好的保留邊緣。特徵圖的損失函數以下圖所示:
spa

2)因爲有對抗損失的存在,能夠很好的下降誤檢率。code

3)最重要的一點是在有透明度的場景下,語義分割網絡只能「提取」元素,沒法「還原」元素。而GAN網絡不只能夠在提取元素的同時還原出未疊加時的像素狀況。圖片

網絡訓練流程圖

針對業務場景對GAN網絡作的改進

1.因爲咱們不是超分辨率場景,所以不用pixelShuffler模塊作上採樣get

2.因爲場景比較複雜,能夠引入denseNet和加深網絡來提升準確率。

3.內容損失函數對於壓制誤判的噪點效果不理想,所以加大了誤判的懲罰,具體以下圖所示:

預測獲取的結果圖I:

預測獲取的結果圖II:

結束語

本篇咱們經過複雜背景內容提取的介紹,提出了一種機器學習爲主,圖像處理爲輔去精確獲取特定前景內容的方法,獲得了高精確率、高召回率和高定位精度的識別結果。
下圖分別是傳統算法grabcut,語義分割方法deeplab和本文方法的各個指標的狀況。

通過數據論證,咱們發現了一個值得進一步優化的點——須要大量樣本適配不一樣的特徵尺度,這裏的投入會相對較大。如何進一步提升打標效率呢,咱們將會在後續系列文章中和你們分享。



本文做者:仝輝,深宇

閱讀原文

本文爲雲棲社區原創內容,未經容許不得轉載。

相關文章
相關標籤/搜索