U2NET目标显著性检测,抠图去背景效果倍儿棒
點擊上方“AI搞事情”關注我們
?
論文:U^2-Net: Going Deeper with Nested U-Structure for Salient Object Detection
GIT:https://github.com/NathanUA/U-2-Net
U2Net用于顯著目標檢測(Salient Object Detection, SOD) ,目的是分割出圖像中最具吸引力的目標。不同于圖像識別,SOD更注重局部細節信息和全局對比信息,而不是深層語義信息,因此,主要的研究方向在于多層次與多尺度特征提取上。
網絡結構
U2Net網絡結構如下圖,整體是一個編碼-解碼(Encoder-Decoder)結構的U-Net,其中,每個stage由新提出的RSU模塊(residual U-block) 組成,即一個兩層嵌套的U結構網絡。
「其優勢在于:」
1.RSU模塊,融合了不同尺度感受野的特征,能夠捕獲更多不同尺度的上下文信息(contextual information)。
2.RSU模塊的池化(pooling)操作,可以在不顯著增加計算成本的情況下,加深網絡結構的深度。
RSU,ReSidual Ublock, 用于捕獲intra-stage的多尺度特征. 其結構如圖(e)所示:
(a)-(c)顯示了具有最小感受野的現有卷積塊,但是1x1或者3x3的卷積核的感受野太小而無法捕捉全局信息,(d)通過利用空洞卷積增大感受野來獲取全局信息,然而在前期大分辨率的輸入特征圖計算需要耗費大量的計算和內存資源。
殘差模塊與RSU模塊的對比:主要設計區別在于,RSU用U-Net代替了普通的單流卷積,并用一個權重層構成的局部特征代替了原始特征:
損失函數
U2Net訓練損失函數定義:
其中,M=6, 為U2Net 的 Sup1, Sup2, ..., Sup6 stage,為對應輸出的顯著圖(saliency map)的損失函數;為最終融合輸出的顯著圖的損失函數,為每個損失函數的權重。
對于每一項,使用標準二進制交叉熵來計算損失:
其中,(r,c)為像素坐標;(H, W) 為圖像尺寸,height 和 width。和分別表示 GT 像素值和預測的顯著概率圖(saliency probability map)。
結果可視化
搞事情
作者開源了代碼,最近還公開了一些有趣的基于U2Net的應用,比如人像轉素描,摳圖、背景去除等。
我們可以根據說明進行一把嘗試:
圖像轉素描
下載源碼
git clone https://github.com/NathanUA/U-2-Net.git下載轉素描模型:u2net_portrait.pth放入到./saved_models/u2net_portrait/下面。
執行腳本python u2net_portrait_test.py程序會讀取U-2-Net/test_data/test_portrait_images/portrait_im路徑下的照片進行轉換,并把結果輸出在U-2-Net/test_data/test_portrait_images/portrait_results路徑下。
若在CPU環境運行會提示torch.load使用參數map_location='cpu'即:net.load_state_dict(torch.load(model_dir, map_location='cpu'))
項目也提供了任意人臉圖像轉換的demo,區別在于增加了opencv的人臉檢測,以及裁剪到輸入的512x512大小,可以通過python u2net_portrait_demo.py執行,
圖片放入路徑./test_data/test_portrait_images/your_portrait_im/
結果在路徑:./test_data/test_portrait_images/your_portrait_results/
摳圖
通過U2Net,可以得到精細的前景alpha圖像,通過簡單的mask操作就可以將前景目標扣取出來。
#?encoding=utf-8 import?os import?cv2 import?numpy?as?np im1_path?=?'1/test.png'??#?原圖 im2_path?=?'2/test_alpha.png'??#?alpha圖 img1?=?cv2.imread(im1_path) img2?=?cv2.imread(im2_path,?cv2.IMREAD_GRAYSCALE) h,?w,?c?=?img1.shape img3?=?np.zeros((h,?w,?4)) img3[:,?:,?0:3]?=?img1 img3[:,?:,?3]?=?img2 cv2.imwrite('res.png',?img3)有大佬將其做成了一個工具:www.remove.bg(50次免費試用),以及還有一個python庫
參考:
1. Github 項目 - U2Net 網絡及實現
2. U2Net論文解讀及代碼測試
原文鏈接下載模型:0rl5
往期推薦
行千里,看山城輕軌穿樓越林;致廣大,望重慶交通橋上橋下
CRNN:端到端不定長文字識別算法
DeepHSV:號稱可以商用的計算機筆跡鑒別算法
python獲取原圖GPS位置信息,輕松得到你的活動軌跡
機器學習中有哪些距離度量方式
長按二維碼關注我們
有趣的靈魂在等你
總結
以上是生活随笔為你收集整理的U2NET目标显著性检测,抠图去背景效果倍儿棒的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 行千里,看山城轻轨穿楼越林;致广大,望重
- 下一篇: CycleGAN非配对图像生成,定制你的