热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

精细到发丝级别的抠图算法,工程师的浪漫YYDS!

精细,到,发丝,级别,的,抠,图,算法,工程师

你以为这些人像发丝的勾勒是PS做的吗?

 

不!这是AI算法的效果!

这是什么AI技术能把发丝精细的识别,甚至还能有透明度渐变?经过小编的一番调研,这项技术叫做Matting,是指通过计算前景的颜色和透明度,将前景从影像中撷取出来,并生成一张Alpha图的技术。

该数据引用公开数据集[1]

近期PaddleSeg团队复现了经典Matting算法MODNet,并进行了一定改进,提供了更丰富的backbone模型选择,适用边缘端、服务端等多种任务场景。

在这里小编赶紧给大家贴上项目链接地址。欢迎小伙伴们star收藏:https://github.com/PaddlePaddle/PaddleSeg/tree/release/2.3/contrib/Matting

同时PaddleSeg团队提供了可部署在手机端的APP应用,欢迎大家扫码体验Matting的人像抠图效果。

APP下载链接:

https://paddleseg.bj.bcebos.com/matting/models/deploy/app-debug.apk

Matting精细化抠图被广泛应用在多种行业,如视频剪辑,视频合成等领域。

 

看到这么好的技术,有的小伙伴们会比较关注技术上是怎么实现的,那么我们就一起来看看Matting的技术演化过程。

Matting算法基本结构

基于深度学习的Matting分为两大类:

1.一种是基于辅助信息输入。即除了原图和标注图像外,还需要输入其他的信息辅助预测。最常见的辅助信息是Trimap,即将图片划分为前景,背景及过度区域三部分。另外也有以背景或交互点作为辅助信息。

2. 一种是不依赖任何辅助信息,直接实现Alpha预测。

本文将分别对两类Matting算法展开介绍,和小伙伴们一起梳理Matting的发展历程。

 

DIM -Matting

DIM(Deep Image Matting)第一次阐述了在给定图像和辅助信息Trimap的情况下,可以通过端到端的方式学习到Alpha。其网络分为两个阶段,第一阶段是深度卷积编码-解码网络, 第二阶段是一个小型卷积神经网络,用来减少编码-解码网络引起的细节损失,提升Alpha预测的准确性和边缘效果。在DIM之后诞生了大量的基于Trimap的Matting网络。

图片来源:Xu, Ning, et al. "Deep image matting." Proceedings of the IEEE conference on computer vision and pattern recognition. 2017.
 

BGMV2:

以背景作为辅助信息

BGMv2(Background Matting v2) 改变思路,利用背景图像取代Trimap来辅助网络进行预测,有效避免了Trimap获取费时费力的问题,并将网络分为Base网络和Refiner两部分。在计算量大的Base网络阶段对低分辨率进行初步预测,在Refiner阶段利用Error Map对高分辨率图像相应的切片进行Refine。通过此实现了高分辨率图像的实时预测。

图片来源:Lin, Shanchuan, et al. "Real-time high-resolution background matting." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021.

MODNet

辅助信息的获取极大限制了Matting的应用,为了提升Matting的应用性,针对Portrait Matting领域MODNet摒弃了辅助信息,直接实现Alpha预测,实现了实时Matting,极大提升了基于深度学习Matting的应用价值。MODNet将Matting分解成三个子目标进行优化,通过任务分解提升Alpha预测的准确率。

图片来源:Ke Z, Li K, Zhou Y, et al. Is a Green Screen Really Necessary for Real-Time Portrait Matting?[J]. arXiv preprint arXiv:2011.11961, 2020.

当前PaddleSeg提供的Matting算法便是对MODNet算法的复现,并在原著基础上提供了多个不同主干网络的预训练模型如RestNet50_vd、HRNet_w18 来满足用户在边缘端、服务端等不同场景部署的需求。

图片数据引用说明:

[1]Christoph Rhemann, Carsten Rother, Jue Wang, Margrit Gelautz, Pushmeet Kohli, Pamela Rott. A Perceptually Motivated Online Benchmark for Image Matting.

点击进入获得更多技术信息~~


推荐阅读
  • 表面缺陷检测数据集综述及GitHub开源项目推荐
    本文综述了表面缺陷检测领域的数据集,并推荐了多个GitHub上的开源项目。通过对现有文献和数据集的系统整理,为研究人员提供了全面的资源参考,有助于推动该领域的发展和技术进步。 ... [详细]
  • 2019年斯坦福大学CS224n课程笔记:深度学习在自然语言处理中的应用——Word2Vec与GloVe模型解析
    本文详细解析了2019年斯坦福大学CS224n课程中关于深度学习在自然语言处理(NLP)领域的应用,重点探讨了Word2Vec和GloVe两种词嵌入模型的原理与实现方法。通过具体案例分析,深入阐述了这两种模型在提升NLP任务性能方面的优势与应用场景。 ... [详细]
  • 利用PaddleSharp模块在C#中实现图像文字识别功能测试
    PaddleSharp 是 PaddleInferenceCAPI 的 C# 封装库,适用于 Windows (x64)、NVIDIA GPU 和 Linux (Ubuntu 20.04) 等平台。本文详细介绍了如何使用 PaddleSharp 在 C# 环境中实现图像文字识别功能,并进行了全面的功能测试,验证了其在多种硬件配置下的稳定性和准确性。 ... [详细]
  • 本文提供了PyTorch框架中常用的预训练模型的下载链接及详细使用指南,涵盖ResNet、Inception、DenseNet、AlexNet、VGGNet等六大分类模型。每种模型的预训练参数均经过精心调优,适用于多种计算机视觉任务。文章不仅介绍了模型的下载方式,还详细说明了如何在实际项目中高效地加载和使用这些模型,为开发者提供全面的技术支持。 ... [详细]
  • 本文介绍了如何通过掌握 IScroll 技巧来实现流畅的上拉加载和下拉刷新功能。首先,需要按正确的顺序引入相关文件:1. Zepto;2. iScroll.js;3. scroll-probe.js。此外,还提供了完整的代码示例,可在 GitHub 仓库中查看。通过这些步骤,开发者可以轻松实现高效、流畅的滚动效果,提升用户体验。 ... [详细]
  • 本文详细介绍了如何在Linux系统中搭建51单片机的开发与编程环境,重点讲解了使用Makefile进行项目管理的方法。首先,文章指导读者安装SDCC(Small Device C Compiler),这是一个专为小型设备设计的C语言编译器,适合用于51单片机的开发。随后,通过具体的实例演示了如何配置Makefile文件,以实现代码的自动化编译与链接过程,从而提高开发效率。此外,还提供了常见问题的解决方案及优化建议,帮助开发者快速上手并解决实际开发中可能遇到的技术难题。 ... [详细]
  • 本文详细解析了神州数码DCRS5980交换机的基础配置流程和技术要点。首先,通过进入配置模式(`enable`),设置主机名(`hostname 5980`),并创建VLAN,逐步介绍了设备的初始设置步骤。此外,还涵盖了端口配置、IP地址分配及安全设置等关键环节,为用户提供了全面的配置指导。 ... [详细]
  • 在处理大规模并发请求时,传统的多线程或多进程模型往往无法有效解决性能瓶颈问题。尽管它们在处理小规模任务时能提升效率,但在高并发场景下,系统资源的过度消耗和上下文切换的开销会显著降低整体性能。相比之下,Python 的 `asyncio` 模块通过协程提供了一种轻量级且高效的并发解决方案。本文将深入解析 `asyncio` 模块的原理及其在实际应用中的优化技巧,帮助开发者更好地利用协程技术提升程序性能。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • 本文详细解析了 LeetCode 第 94 题——二叉树的中序遍历,并提供了基础实现方法。通过具体的示例,如输入根节点 `[1, null, 2, 3]` 返回 `[1, 3, 2]`,以及空树输入返回空列表 `[]`,帮助读者理解中序遍历的原理和实现步骤。文章还介绍了递归和迭代两种常见的遍历方法,为初学者提供了清晰的学习路径。 ... [详细]
  • 点云技术初探(三):PCL基础知识与学习路径指南本文首先介绍了点云库(PCL)的基本概念,PCL是一个在前人点云研究成果基础上发展而来的大型跨平台开源C++编程库,旨在为点云数据处理提供全面的支持。文章详细阐述了PCL的核心功能及其在三维数据处理、特征提取、分割与配准等方面的应用,并为初学者提供了系统的学习路径和资源推荐,帮助读者快速掌握PCL的使用方法。 ... [详细]
  • 如何在Android应用中设计和实现专业的启动欢迎界面(Splash Screen)
    在Android应用开发中,设计与实现一个专业的启动欢迎界面(Splash Screen)至关重要。尽管Android设计指南对使用Splash Screen的态度存在争议,但一个精心设计的启动界面不仅能提升用户体验,还能增强品牌识别度。本文将探讨如何在遵循最佳实践的同时,通过技术手段实现既美观又高效的启动欢迎界面,包括加载动画、过渡效果以及性能优化等方面。 ... [详细]
  • 本文深入探讨了 CF570D 问题中树的请求处理方法,重点分析了长链剖分技术的应用与优化。题目涉及一棵包含 n 个节点的树,每个节点上有一个字符。每次查询时,需要处理某个节点 x 的相关请求。通过长链剖分技术,可以高效地解决这类问题,显著提升算法性能。本文不仅介绍了基本的长链剖分原理,还详细讨论了其在具体实现中的优化技巧,为解决类似问题提供了宝贵的参考。 ... [详细]
  • 作业调度问题 | 集合 3(利用 Java 中的 TreeSet 实现) ... [详细]
  • 聊聊 中国人工智能科技产业 区域竞争力分析及趋势
    原文链接:聊聊中国人工智能科技产业区域竞争力分析及趋势最近看了一个关于国内AI的报告《中国新一代人工智能科技产业区域竞争力评价指数(2021ÿ ... [详细]
author-avatar
手机用户2702932521
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有