大数据平台 图像处理 Spring Cloud iic 海思 templates ant jScrollPane react视频教程 nginx视频 jquery延时 js键值对数组 安卓小程序源码 oracle删除表字段 matlab中axis python写脚本 pythoninput python打开文件 python基础教程免费 python中import用法 java入门级教程 java编程学习入门 javasocket通信 java创建文件 java中random java语言编程 java获取当前日期 java列表 超级兔子ie修复专家 js四舍五入 圣骑士装备 cf透视辅助 生存猎人属性 黑市商人 视频后期处理软件 mysql导出数据 c4d挤压怎么用 c程序 欧洲卡车模拟2存档 ps高手教程
当前位置: 首页 > 学习教程  > 编程语言

一键智能抠图-原理实现

2020/8/31 13:59:15 文章标签:

1. 效果秀

有些朋友已经体验过了cvpy.net最近新上的一键智能抠图和换背景的功能,智能判断前景并自动抠图,效果还是挺惊艳的,放几张图看看效果:
在这里插入图片描述
请注意看这位喵星人右侧性感的胡须,抠的可谓是非常精细了。

有人说了,这张图片的的背景是简单的纯色背景,体现不出难度来。

那我换一张我在路边拍的一朵不知名的花(恕我孤陋寡闻…)的图片,看看抠图的效果,顺便换个蓝色的背景:
在这里插入图片描述
可以看到,模型成功识别出了前景区域,而且边缘等细节识别的非常好。

再来看一张人物照的抠图效果:
在这里插入图片描述
注意看左手指缝肩膀后面的那一缕头发,称得上丝丝入扣了吧。

2. 体验途径

看到效果想要体验一把的小伙伴可以通过下方二维码或者网址https://cvpy.net/studio/cv/func/DeepLearning/matting/matting/page/前往体验区体验。
在这里插入图片描述

3. U^2-Net (U square net)

上述一键智能抠图的所用的模型是Pattern Recognition 2020论文《U^2-Net: Going Deeper with Nested U-Structure for Salient Object Detection》提出的U^2-Net

值得一提的是,最近外网很火的增强现实应用【隔空移物(AR Cut & Paste)】和 Object CutAPI都是基于CVPR2019BASNet。而U^2-NetBASNet的作者为同一位大佬-秦雪彬。

作者认为,目前显著性目标检测有两种主流思路,一为多层次深层特征集成(multi-level deep feature integration,一为多尺度特征提取(Multi-scale feature extraction)。多层次深层特征集成方法主要集中在开发更好的多层次特征聚合策略上。而多尺度特征提取这一类方法旨在设计更新的模块,从主干网获取的特征中同时提取局部和全局信息。而几乎所有上述方法,都是为了更好地利用现有的图像分类的Backbones生成的特征映射。而作者另辟蹊径,提出了一种新颖而简单的结构,它直接逐级提取多尺度特征,用于显著目标检测,而不是利用这些主干的特征来开发和添加更复杂的模块和策略。

作者首先介绍了提出的Residual U-blocks,然后介绍了基于Residual U-blocks构建的嵌套U型网络结构。

3.1 Residual U-blocks

在这里插入图片描述
上图为普通卷积blockRes-like blockInception-like blockDense-like blockResidual U-blocks的对比图,明显可以看出Residual U-blocks是受了U-Net的启发。

Residual U-blocks有以下三部分组成:

  • 一个输入卷积层,它将输入的feature map x (H × W × C_in)转换成中间feature map F_1(x)F_1(x)通道数为C_out。这是一个用于局部特征提取的普通卷积层。
  • 一个U-like的对称的encoder-decoder结构,高度为L,以中间feature map F_1(x)为输入,去学习提取和编码多尺度文本信息U(F_1(x))U表示类U-Net结构。更大L会得到更深层的U-block(RSU),更多的池操作,更大的感受野和更丰富的局部和全局特征。配置此参数允许从具有任意空间分辨率的输入特征图中提取多尺度特征。从逐渐降采样特征映射中提取多尺度特征,并通过渐进上采样、合并和卷积等方法将其编码到高分辨率的特征图中。这一过程减少了大尺度直接上采样造成的细节损失。
  • 一种残差连接,它通过求和来融合局部特征和多尺度特征:F_1(x) + U(F_1(x))
    在这里插入图片描述
    RSURes block的主要设计区别在于RSUU-Net结构代替了普通的单流卷积,用一个权重层(weight layer)形成的局部特征来代替原始特征。这种设计的变更使网络能够从多个尺度直接从每个残差块提取特征。更值得注意的是,U结构的计算开销很小,因为大多数操作都是在下采样的特征映射上进行的。

3.2 U^2-Net的结构

U^2-Net的网络结构如下:
在这里插入图片描述
与U-Net的网络结构做一个对比:

在这里插入图片描述
直观上可以发现,U^2-Net的每一个Block都是一个U-Net结构的模块,即上述Residual U-blocks。当然,你也可以继续Going Deeper, 每个Block里面的U-Net的子Block仍然可以是一个U-Net结构,命名为U^3-Net。然后同理继续…,正所谓:子又生孙,孙又生子;子又有子,子又有孙;子子孙孙无穷匮也!

4. 性能表现

所提出的模型是使用DUTS-TR数据集进行训练,该数据集包含大约10000个样本图像,并使用标准数据增强技术进行扩充。研究人员在6个用于突出目标检测的基准数据集上评估了该模型:DUT-OMRONDUTS-TEHKU-ISECSSDPASCAL-SSOD。评价结果表明,在这6个基准点上,新模型与现有方法具有相当好的性能。

U^2-Net的实现是开源的,并为两种不同的方法提供了预训练的模型:U^2-Net176.3M的较大模型,在GTX 1080Ti GPU上为30 FPS)和一个仅为4.7mb的较小的U^2-Net版本,最高可达到40 FPS。代码和预训练模型都可以在Github找到:https://github.com/NathanUA/U-2-Net

5. Online demo试玩版

笔者参考论文作者开源的代码和预训练模型,在网站cvpy.net上面做了一个在线体验的Demo,供大家体验。可以通过最下方二维码或者网址https://cvpy.net/studio/cv/func/DeepLearning/matting/matting/page/前往体验。
在这里插入图片描述


本文链接: http://www.dtmao.cc/news_show_150145.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?