人像抠图学习笔记

2023-11-05

目录

人脸分割BiseNetV2

u2net:


人脸分割BiseNetV2

宣传的:

BiSeNet V2出来了!72.6%的mIOU, 156FPS的速度!让分割飞起来!

模型30多m

TensorFlow平台的,cpu版时间80ms,人脸抠图,有的不是特别准。

https://github.com/xuigo/Face_Parsing_BiseNetV2

人像抠图,不知道能不能扣全身的:能扣出人脑袋。

https://github.com/xuebinqin/U-2-Net

u2net:

https://github.com/ZHKKKe/MODNet

没有绿幕怎么抠图?此前,华盛顿大学的研究人员提出用背景图替换 trimap,不用绿幕也能实现不错的抠图结果。但该方法需要处理和对齐原始图像和背景图两张图像,不便于现实应用。近日,香港城市大学和商汤提出一种新型人像抠图方法 MODNet,不用绿幕、只用单张图像、单个模型即可实时完成人像抠图。

人像抠图即预测一个精确的前景蒙版(alpha matte),然后利用它从给定图像或视频中提取人物。这一技术得到了广泛的应用,如照片编辑、电影再创作等。目前,实时获得高质量前景蒙版仍需要绿幕的辅助。

但如果没有绿幕呢?目前大部分抠图方法使用预定义 trimap 作为先验。但,trimap 需要人类标注,所需成本高昂,并且如果是通过深度相机捕获,还会出现低精度问题。因此,近期的一些工作尝试消除模型对 trimap 的依赖,即 trimap-free 方法。例如,华盛顿大学提出的 background matting 方法用分离背景图像来替代 trimap。其他方法使用多个模型先生成伪 trimap 或语义掩码,然后将其作为先验进行前景蒙版预测。但使用背景图像作为输入需要输入并对齐两张图像,使用多个模型会使推断时间显著增加。这些缺陷使得前述所有抠图方法不适用于现实应用,如相机预览。此外,受到标注训练数据不足的限制,trimap-free 方法在实践中常遇到域偏移问题,即模型无法很好地泛化至现实数据。

能不能只用一个模型、一张 RGB 图像,来预测精确的前景蒙版呢?最近,香港城市大学和商汤合作提出了一种轻量级网络 MODNet,它将人像抠图任务分解成三个相关的子任务,并通过特定约束执行同步优化。

先来看一下 MODNet 的抠图效果:

MODNet 模型背后存在两种洞见:

一,神经网络更擅长学习一组简单目标,而不是一个复杂目标。因此,解决多个抠图子目标可以实现更好的性能。

二,对每个子目标应用显式监督信号,可以使模型的不同部分学习解耦的知识,从而实现一个模型解决所有子目标。

为了克服域迁移问题,该研究基于子目标一致性 (SOC) 提出了一种自监督策略,即利用子目标之间的一致性来减少预测前景蒙版中的伪影。此外,该研究还提出单帧延迟 (OFD) trick 这种后处理方法,以在视频抠图应用中获得更流畅的输出。MODNet 框架参见下图:

相比 trimap-free 方法,MODNet 具备以下优势:

  • MODNet 更快:它专为实时应用而设计,输入大小为 512 × 512 时,MODNet 在 Nvidia GTX 1080Ti GPU 上的运行速度为 63 fps;

  • MODNet 获得了新的 SOTA 结果,原因在于:1)目标分解和同步优化;2)对每个子目标应用特定的监督信号;

  • MODNet 具备更好的泛化能力,这得益于 SOC 策略。

尽管 MODNet 的结果没有超过那些基于 trimap 的方法,但实验表明 MODNet 在实际应用中更加稳定,原因就在于其移除了 trimap 输入。该方法对实时人像抠图任务中绿幕的必要性提出了挑战。

现有开源人像抠图数据集的规模或精度均有一定限制,之前很多研究是在质量和难度等级不同的私人数据集上进行模型训练和验证的。这就使得不同方法的对比变得困难。而这项研究在统一的标准下评估现有的 trimap-free 方法:所有模型均在相同数据集上训练完成,并在来自 Adobe Matting 数据集和该研究提出的新基准数据集的人像数据中执行验证。研究人员表示,他们提出的新基准完成了高质量标注,多样性也优于之前的基准,因而能够更全面地反映出抠图性能。

总之,这项研究提出了新型网络架构 MODNet,可实时完成 trimap-free 人像抠图。研究者还提出了两项技术 SOC 和 OFD,使 MODNet 能够很好地泛化至新的数据领域,视频抠图质量更加平滑。此外,该研究还构建了新的人像抠图验证基准数据集。

MODNet 方法

基于多个模型的方法表明,「将 trimap-free 抠图看作 trimap 预测(分割)步骤加上基于 trimap 的抠图步骤」能够实现更好性能。这表明,神经网络从分解复杂目标中受益。于是,该研究将这一思路继续扩展,将 trimap-free 抠图目标分解为语义估计、细节预测和语义 - 细节融合三个子目标。直观来看,语义估计输出粗糙的前景掩码,细节预测生成细粒度的前景边界,而语义 - 细节融合则将这二者的特征进行混合。

如图 2 所示,MODNet 包含三个分支,每一个均通过特定约束学习不同的子目标。具体而言:

  • 低分辨率分支用于估计人类语义(监督信号是真值蒙版的缩略图);

  • 高分辨率分支用于辨别人像边界(监督信号是过渡区域 (α ∈ (0, 1));

  • 融合分支用来预测最终的前景蒙版(监督信号是整个真值蒙版)。

实验

该研究创建了新型人像抠图基准 PPM-100,并在其上对比了 MODNet 和现有的人像抠图方法,还证明了 SOC 和 OFD 策略对于 MODNet 适应现实数据的有效性。

PPM-100 基准

该研究提出了新型人像抠图基准 Photographic Portrait Matting benchmark (PPM-100),包含 100 张精心标注、背景不同的人像。如下图 4 所示, PPM-100 中的样本背景更加自然、人物姿势更丰富,因此数据也更全面。

在 PPM-100 上的性能结果

研究者在 PPM-100 上对比了 MODNet 和 FDMPA、LFM、SHM、BSHM、HAtt,结果参见下表 1。从中可以看出,MODNet 在 MSE 和 MAD 这两项指标上超过其他 trimap-free 方法,但仍逊色于基于 trimap 的 DIM 方法。将 MODNet 修改为基于 trimap 的方法后,其性能超过 DIM。

下图展示了不同方法的效果对比情况:

从中可以看出,MODNet 可以更好地处理空心结构(第一行)和头发细节(第二行),但在处理难度较大的姿势或服饰时仍然会出现问题(第三行)。

在现实数据上的性能结果

下图展示了 MODNet 在现实数据上的抠图效果,从图中可以看出 SOC 对于模型在现实数据上的泛化能力非常重要,OFD 可以进一步使输出结果更加平滑。

MODNet 不基于 trimap,因而能够避免错误 trimap 的问题。图 8 展示了 MODNet 与基于 trimap 的 DIM 方法的对比结果:

此外,研究者还对比了 MODNet 和华盛顿大学提出的 background matting (BM) 方法,参见图 9。从图中可以看出,当移动对象突然出现在背景中时,BM 方法的结果会受到影响,而 MODNet 对此类扰动具备鲁棒性。

  • 论文链接:https://arxiv.org/pdf/2011.11961.pdf

  • 项目地址:https://github.com/ZHKKKe/MODNet

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

人像抠图学习笔记 的相关文章

  • Windows与Linux动态库的两种加载方式

    Windows上的动态库 dll 加载方式有两种 1 静态加载 运用 pargma comment lib xxx lib 方式 这种方式需要 头文件 lib文件和dll文件配合使用 运行时是直接将动态库加载到内存中的 运用起来也比较方便
  • linux下面用C语言设计实现一个计算器

    我们对于计算器的功能已经非常熟悉了 这个计算器包括 二进制 八进制 十进制 十六进制 四种格式 格式之间可以相互切换 能够实现的的运算有 加减乘除 最基本的功能 还有比如 tan sin cos Exp x y x 3 x 2 n log
  • Java 中String类型变量的使用

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到网站 理解 String属于引用数据类型 翻译为 字符串 声明String类型变量时 使用一对 String可以和八种基本数据类型变量做运算
  • UDP协议全面实验分析详解

    Thank For LYJ 目录 一 实验目的 二 实验环境 三 实验原理 四 实验内容 练习1 编辑并发送UDP数据报 练习2 UDP单播通信 练习3 UDP广播通信 五 实验结果 练习1 练习2 练习3 六 思考题 1 UDP协议的 校
  • Azure虚拟网络基础

    文章目录 Azure虚拟网络基础 什么是 Azure 虚拟网络 为何要使用 Azure 虚拟网络 如何创建虚拟网络 登录 Azure 创建虚拟网络 连接到VM并测试是否能够ping通 Azure虚拟网络基础 什么是 Azure 虚拟网络 A
  • Flutter 列表踩坑2

    今天遇到一个列表item 的model 更新了以后 但是list 的model没更新的问题 问题解决了 来发下心得 最后找到原因 原来是页面刷新了 以后得注意以下问题 1 我已经使用了PageControler 但是 pageControl
  • 腾讯云域名解析DNS免费版线路、DNS节点及TTL值说明

    腾讯云域名提供免费版DNS解析和付费版DNS解析 腾讯云百科来详细说下DNS解析DNSPod免费版解析配置说明 包括解析线路 DNS节点分布 域名防护 最低TTL等配置参数 腾讯云域名DNS解析DNSPod免费版 腾讯云域名可以免费试用DN

随机推荐

  • 《ANSYS FLUENT 16.0超级学习手册》——第2章 FLUENT软件介绍2.1 FLUENT软件特点简介...

    本节书摘来自异步社区 ANSYS FLUENT 16 0超级学习手册 一书中的第2章 第2 1节 作者 唐家鹏 更多章节内容可以访问云栖社区 异步社区 公众号查看 第2章 FLUENT软件介绍 CFD商业软件FLUENT是通用CFD软件包
  • mysql 浮点型详解 简书_8-MySQL数据类型

    下面正式开始mysql操作学习了 基础知识点会枯燥 会无味 会焦虑 但是相信当你熟练掌握后会无比的兴奋 因为你在见证数据给这个时代带来的伟大变革 你正在见证由数据库驱动的信息革命 可以W3C菜鸟教程中查看mysql中关于数据类型的部分 im
  • 数据库杂记

    数据库杂记 1 PostgreSQL 1 1 安装 UUID 生成扩展 1 2 根据多个字段去重 并删除重复数据 保留一条 1 3 表字段更新 1 3 1 同一张表用一个字段更新另一个字段 1 3 2 两张表关联更新 1 3 3 多张表关联
  • 图数据库突然爆火,但数字化仍然道阻且长

    短则两三年 多则五六年 图数据库市场会角逐出最终赢家 而目前许多公司都处于秣马厉兵的状态之中 数科星球 原创 作者丨科科 编辑丨十里香 图数据库的出现犹如大数据行业的一抹绿色 在日新月异的场景中 图数据库发挥了不可取代的作用 现在 该行业走
  • 前端数组对象去重的几种方法,拿来即用

    工作中有许多地方地方需要前端处理数据 总结了几种数据去重的方法都实验过 可以使用 初始数据 id有相同的需要去重 let person id 0 name 小明 id 1 name 小张 id 2 name 小李 id 3 name 小孙
  • SpringBoot2 升级到 SpringBoot3遇到的问题

    版本 JDK 11 gt 17 Gradle 6 0 gt 8 2 1 SpringBoot 2 2 gt 3 1 2 JDK升级 下载安装JDK17并修改JAVA HOME Gradle升级 下载 https services gradl
  • 用自然语言进行编程的时代真的要来了

    用自然语言进行编程的时代真的要来了 GitHub CEO托马斯 多姆克在官方博客上宣布 代码辅助工具Copilot进行重大升级 接入GPT 4 更名Copilot X 因此 原来只能帮你补全代码的它 现在通过打字聊聊天甚至语音就能 直接写代
  • python 过采样 权重实现_不平衡数据集的处理 - osc_sqq5osi1的个人空间 - OSCHINA - 中文开源技术交流社区...

    一 不平衡数据集的定义 所谓的不平衡数据集指的是数据集各个类别的样本量极不均衡 以二分类问题为例 假设正类的样本数量远大于负类的样本数量 通常情况下通常情况下把多数类样本的比例接近100 1这种情况下的数据称为不平衡数据 不平衡数据的学习即
  • 《ImageNet Classification with Deep Convolutional Neural Networks》 Alex Krizhevsky(AlexNet译文)

    原论文地址 caffe的实现 TensorFlow的实现 参考 AlexNet论文翻译与解读 alexnet 论文翻译 AlexNet论文 正文 摘要 我们训练了一个庞大的深层卷积神经网络 将ImageNet LSVRC 2010比赛中的1
  • Android应用自动更新实现方法及源代码

    Android应用自动更新实现方法及源代码 一 引言 随着移动应用的普及 保持应用程序的最新版本对于提供良好用户体验和修复漏洞非常重要 为了简化用户手动更新应用的步骤 开发者可以通过实现自动更新功能 使得应用程序能够在后台自动检查并下载最新
  • IDEA如何手动配置插件

    打开idea 点击File进入setting设置 点击plugins 点击设置按钮 这样你就会看到这样一个界面 别担心这是你的插件路径 这是idea插件下载官网https plugins jetbrains com 在这里可以随意下载插件
  • 关于Maven报错的一些解决办法(别处贴的)

    1 警告 The tag handler class for s form org apache struts2 views jsp ui FormTag was not found on the Java Build Path 这个问题终
  • 原生JavaScript实现ajax异步请求代码

    jQuery封装了JavaScript的一些常用方法 而jQuery中的 ajax get post 是比较常用的方法 也是大家最熟悉 最常用的 但是在面试时 通常面试官 会要求你手写原生ajax异步请求的代码 此时即便你的jquery学的
  • Solr删除文档数据

    使用控制台删除solr的无用数据 目前我使用了两种方式 001 登录你的solr地址 我的地址为 http localhost 8983 solr 如下图所示 上图箭头处选择你的my core 我的mycore为damsearch 002
  • [Python图像处理] 二.OpenCV+Numpy库读取与修改像素

    该系列文章是讲解Python OpenCV图像处理知识 前期主要讲解图像入门 OpenCV基础用法 中期讲解图像处理的各种算法 包括图像锐化算子 图像增强技术 图像分割等 后期结合深度学习研究图像识别 图像分类应用 希望文章对您有所帮助 如
  • 恐龙酷跑(python)

    恐龙酷跑小游戏 摘要 一 引言 二 系统结构 三 实现代码 四 运行结果 五 总结和展望 摘要 论述了Python语言中Pygame库的框架结构和一些常用的该库API 使用Python库进行2D游戏开发时需要注意的事项 以及进行2D游戏开发
  • 【Docker】Docker安装telnet

    文章目录 1 概述 1 概述 在使用docker容器时 有时候里边没有安装telnet 敲vim命令时提示说 telnet command not found 这个时候就需要安装vim 可是当你敲apt get install telnet
  • error LNK2019: 无法解析的外部符号 Netbios,该符号在函数 “unsigned char * __cdecl getMACAddress(unsigned char * cons

    我已经正确的加了库 头文件也能找到了 但是还是出现这个问题 说明还是库有问题 原因是我加入的是dcmtk库 是通信有关的 所以还需要在头文件位置加上如下的代码 pragma comment lib netapi32 lib
  • 元数据编辑器--(坑集锦)

    概述 Angular中的输入输出是通过注解 Input和 Output来标识 它位于组件控制器的属性上方 输入输出针对的对象是父子组件 我借鉴的博客地址 https segmentfault com a 1190000007890167 1
  • 人像抠图学习笔记

    目录 人脸分割BiseNetV2 u2net 人脸分割BiseNetV2 宣传的 BiSeNet V2出来了 72 6 的mIOU 156FPS的速度 让分割飞起来 模型30多m TensorFlow平台的 cpu版时间80ms 人脸抠图