一鍵智能摳圖-原理與實現(xiàn)
點擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時間送達(dá)

一鍵智能摳圖-原理實現(xiàn)
cvpy.net最近新上的一鍵智能摳圖和換背景的功能,智能判斷前景并自動摳圖,效果還是挺驚艷的,放幾張圖看看效果:
請注意看這位喵星人右側(cè)性感的胡須,摳的可謂是非常精細(xì)了。
有人說了,這張圖片的的背景是簡單的純色背景,體現(xiàn)不出難度來。
那我換一張我在路邊拍的一朵不知名的花(恕我孤陋寡聞...)的圖片,看看摳圖的效果,順便換個藍(lán)色的背景:

可以看到,模型成功識別出了前景區(qū)域,而且邊緣等細(xì)節(jié)識別的非常好。
再來看一張人物照的摳圖效果:

注意看左手指縫和肩膀后面的那一縷頭發(fā),稱得上絲絲入扣了吧。
https://cvpy.net/studio/cv/func/DeepLearning/matting/matting/page/前往體驗區(qū)體驗。Pattern Recognition 2020論文《U^2-Net: Going Deeper with Nested U-Structure for Salient Object Detection》提出的U^2-Net。值得一提的是,最近外網(wǎng)很火的增強現(xiàn)實應(yīng)用【隔空移物(AR Cut & Paste)】和 Object CutAPI都是基于CVPR2019的BASNet。而U^2-Net和BASNet的作者為同一位大佬-秦雪彬。
作者認(rèn)為,目前顯著性目標(biāo)檢測有兩種主流思路,一為多層次深層特征集成(multi-level deep feature integration),一為多尺度特征提?。∕ulti-scale feature extraction)。多層次深層特征集成方法主要集中在開發(fā)更好的多層次特征聚合策略上。而多尺度特征提取這一類方法旨在設(shè)計更新的模塊,從主干網(wǎng)獲取的特征中同時提取局部和全局信息。而幾乎所有上述方法,都是為了更好地利用現(xiàn)有的圖像分類的Backbones生成的特征映射。而作者另辟蹊徑,提出了一種新穎而簡單的結(jié)構(gòu),它直接逐級提取多尺度特征,用于顯著目標(biāo)檢測,而不是利用這些主干的特征來開發(fā)和添加更復(fù)雜的模塊和策略。
作者首先介紹了提出的Residual U-blocks,然后介紹了基于Residual U-blocks構(gòu)建的嵌套U型網(wǎng)絡(luò)結(jié)構(gòu)。
3.1 Residual U-blocks

上圖為普通卷積block,Res-like block,Inception-like block,Dense-like block和Residual U-blocks的對比圖,明顯可以看出Residual U-blocks是受了U-Net的啟發(fā)。
Residual U-blocks由以下三部分組成:
一個輸入卷積層,它將輸入的 feature map x (H × W × C_in)轉(zhuǎn)換成中間feature map F_1(x),F_1(x)通道數(shù)為C_out。這是一個用于局部特征提取的普通卷積層。一個 U-like的對稱的encoder-decoder結(jié)構(gòu),高度為L,以中間feature map F_1(x)為輸入,去學(xué)習(xí)提取和編碼多尺度文本信息U(F_1(x))。U表示類U-Net結(jié)構(gòu)。更大L會得到更深層的U-block(RSU),更多的池操作,更大的感受野和更豐富的局部和全局特征。配置此參數(shù)允許從具有任意空間分辨率的輸入特征圖中提取多尺度特征。從逐漸降采樣特征映射中提取多尺度特征,并通過漸進上采樣、合并和卷積等方法將其編碼到高分辨率的特征圖中。這一過程減少了大尺度直接上采樣造成的細(xì)節(jié)損失。一種殘差連接,它通過求和來融合局部特征和多尺度特征: F_1(x) + U(F_1(x))。

RSU與Res block的主要設(shè)計區(qū)別在于RSU用U-Net結(jié)構(gòu)代替了普通的單流卷積,用一個權(quán)重層(weight layer)形成的局部特征來代替原始特征。這種設(shè)計的變更使網(wǎng)絡(luò)能夠從多個尺度直接從每個殘差塊提取特征。更值得注意的是,U結(jié)構(gòu)的計算開銷很小,因為大多數(shù)操作都是在下采樣的特征映射上進行的。
3.2 U^2-Net的結(jié)構(gòu)
U^2-Net的網(wǎng)絡(luò)結(jié)構(gòu)如下:

與U-Net的網(wǎng)絡(luò)結(jié)構(gòu)做一個對比:

直觀上可以發(fā)現(xiàn),U^2-Net的每一個Block都是一個U-Net結(jié)構(gòu)的模塊,即上述Residual U-blocks。當(dāng)然,你也可以繼續(xù)Going Deeper, 每個Block里面的U-Net的子Block仍然可以是一個U-Net結(jié)構(gòu),命名為U^3-Net。然后同理繼續(xù)...,正所謂:子又生孫,孫又生子;子又有子,子又有孫;子子孫孫無窮匱也!
DUTS-TR數(shù)據(jù)集進行訓(xùn)練,該數(shù)據(jù)集包含大約10000個樣本圖像,并使用標(biāo)準(zhǔn)數(shù)據(jù)增強技術(shù)進行擴充。研究人員在6個用于突出目標(biāo)檢測的基準(zhǔn)數(shù)據(jù)集上評估了該模型:DUT-OMRON、DUTS-TE、HKU-IS、ECSSD、PASCAL-S和SOD。評價結(jié)果表明,在這6個基準(zhǔn)點上,新模型與現(xiàn)有方法具有相當(dāng)好的性能。U^2-Net的實現(xiàn)是開源的,并為兩種不同的方法提供了預(yù)訓(xùn)練的模型:U^2-Net(176.3M的較大模型,在GTX 1080Ti GPU上為30 FPS)和一個僅為4.7mb的較小的U^2-Net版本,最高可達(dá)到40 FPS。
代碼和預(yù)訓(xùn)練模型都可以在Github找到:
https://github.com/NathanUA/U-2-Net。交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會逐漸細(xì)分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~

