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目标显著性检测,抠图去背景效果倍儿棒相关推荐
- keyshot环境素材文件_KeyShot渲染,打光这么打,效果倍儿棒
有过渲染经验的小伙伴们应该知道,除了需要对渲染软件的操作熟悉外,最重要的莫过于"材质"和"灯光". 而这里,就不得不提到KeyShot,作为工业设计行业必须要掌 ...
- 基于深度学习的显著性检测用于遥感影像地物提取(U-2-NET)
GitHub地址链接:https://github.com/NathanUA/U-2-Net 这个显著性检测很好用,强烈推荐,建议二分类的任务都来试试,尤其对边缘细节要求比较高的任务. 下面的效果要不 ...
- [OpenCV实战]47 基于OpenCV实现视觉显著性检测
人类具有一种视觉注意机制,即当面对一个场景时,会选择性地忽略不感兴趣的区域,聚焦于感兴趣的区域.这些感兴趣的区域称为显著性区域.视觉显著性检测(Visual Saliency Detection,VS ...
- U^2 Net显著性检测分割抠图
论文:U^2 -Net: Going Deeper with Nested U-Structure for Salient Object Detection 代码:https://github.com ...
- 显著性检测—学习笔记
视觉显著性旨在模仿人类视觉系统选择视觉场景的某个子集的能力.而显著性物体检测(SOD)则侧重于检测场景中吸引最多注意力的物体,然后逐像素的提取物体的轮廓.SOD的优点在于它在许多计算机视觉任务中均有广 ...
- 视频显著性检测----《Flow Guided Recurrent Neural Encoder for Video Salient Object Detection》
本文将重点与大家探讨和分享发表于CVPR2018上的视频显著性检测文章–<Flow Guided Recurrent Neural Encoder for Video Salient Objec ...
- 显著性检测—谱残差方法分析与实现
基于显著性检测的谱残差方法(Spectral Residual)独立于特征,类别,或其他形式的先验知识的目标.通过对输入图像的对数谱分析,提取图像在光谱域的谱残差,并实现在空间域构造相应的显著性图.通 ...
- 全局对比度的图像显著性检测算法
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:opencv学堂 显著性检测概念 显著性就是可以快速引起 ...
- 显著性检测研究思路和方法
显著性检测最近几年成了研究热点,从计算机视觉三大会议(ICCV, CVPR, ECCV)上的文章数量就可以看出,大概每届会议都有10来篇的样子,一个这么小的topic,10来篇数量已经很多了.如果你看 ...
最新文章
- 软件工程-第三次作业
- 【日常分享1】三步,有效去除网页广告,完美过滤视频广告
- 绘画 某种字体 以某种折行规则 最后画出的text有多大
- mysql query browser的使用_影响MySQL性能的配置参数
- pthread 线程退出时自动释放资源
- 【Verilog HDL】语句的并发执行
- 不要学习代码,要学会思考(转)
- 论ARMv7 Thumb-2指令集的性能(含Thumb指令集介绍)【转载】
- Note: File Recipe Compression in Data Deduplication Systems
- JavaScript基础1
- 分布式系统到底是什么
- mac svn 可视化界面_SmartSVN for mac 14.0.1
- 计算机硬盘数据如何恢复,怎样进行硬盘数据恢复
- 加壳与脱壳知识点(持续更新)
- 实验方法怎么写_作文《你真好》怎么写?语文课本里找方法,附审题、写作思路...
- Linux系统学习环境搭建 - 跟小智一起学网络(3)
- 【3D人脸】Mediapipe Vs Persona
- 我为什么信主---为主作见证
- 阿里 weex android,Android Weex容器指南
- 中小型企业的仓库管理中常见问题及解决方案
热门文章
- 音频处理七:(极坐标转换)
- 方钢管弹性模量计算方式_箱形系梁贝雷支架受力计算书
- 声学漫谈之四:A加权(A-weighted)到底是什么?
- 个人开发者 android内购,【开发者账号】关于内购,协议税务的一些坑
- 可视化:中国地图 python/ geopandas/ echarts
- visual basic.net 2019-Visual Basic 16.0新功能
- AI理论知识整理(9)-级数与数列收敛
- 【Python基础】python必会的10个知识点
- 【CV】图像分割二十年,盘点影响力最大的10篇论文
- 机器学习的数学,从入门到不放弃(文末彩蛋)