分割和Matting的一个重要区别是:分割返回的是像素分类标签,其结果是整型数据;而Matting返回的是属于前景或背景的概率P,从而在前景与背景交互区域产生渐变的效果,使得抠图更加自然。Matting分割模型训练完成后,对于原始图像每个位置上的像素,都将生成一个表示其前景透明度的值,称为 Alpha。 图像中所有 Alpha 值的集合称为 Alpha Matte。最后,利用Alpha将原始图像的对应位置上的像素点做pixel-wise的运算,便可实现精细的背景替换。本期我们介绍的便是百度开源的图片Matting模型--PP-Matting。
PP Matting,是一种无三分图的架构,可以实现高精度的自然图像Matting。此方法应用了高分辨率细节分支(HRDB),该分支在保持特征分辨率不变的情况下提取前景的细粒度细节。此外,还提出了一个语义上下文分支(SCB),它采用了语义分割子任务。防止了由于语义上下文缺失而导致的局部歧义的细节预测。
PP Matting的主要贡献:
这是一种高精度的Matting网络,它在没有任何辅助信息的情况下将单个图像作为输入。整个网络可以以端到端的方式轻松地进行训练。提出了并行高效提取细节和语义特征的双分支架构。通过引导流机制,两个分支的适当交互有助于网络实现语义感知细节预测。在Composition-1k和Distinctions-646数据集上评估PP Matting。结果证明了PP消光比其他方法的优越性。另一个人体抠图实验也显示了它在实际应用中的突出性能。PP Matting网络由两个分支组成,即上下文分支(SCB)和高分辨率细节分支(HRDB),它们共享一个作为编码器的公共模块,即共享编码器。金字塔池模块(PPM)由于其对全局上下文的强大提取,已被证明在语义分割中是有效的。因此,在SCB之前,应用PPM来加强语义上下文。引导SCB语义特征的引导流策略来帮助HRDB的细节预测。
我们一直在Google colab上面在线运行python代码,其百度也开发了相关的colab,也可以在线运行python代码,我们可以在paddlepaddle上面来运行python代码,其代码规则跟Google colab类似。
https://aistudio.baidu.com/aistudio%cd ~/work !git clone --depth 1 https://github.com/PaddlePaddle/PaddleSeg.git %cd ~/work/PaddleSeg !pip install -e . %cd Matting !pip install -r requirements.txt首先我们需要git clone PaddleSeg工程,其PP Matting模型已经集成在PaddleSeg里面,我们可以使用PaddleSeg来运行本期代码。clone PaddleSeg代码库后,我们需要安装上相关的第三方库,这样我们就可以来运行PaddleSeg代码了。
Requirement already satisfied: packaging>=20.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from scikit-image->-r requirements.txt (line 2)) (21.3) Requirement already satisfied: setuptools in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from numba->-r requirements.txt (line 3)) (41.4.0) Requirement already satisfied: llvmlite<0.32.0,>=0.31.0dev0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from numba->-r requirements.txt (line 3)) (0.31.0) Requirement already satisfied: decorator>=4.3.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from networkx>=2.2->scikit-image->-r requirements.txt (line 2)) (4.4.2) Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from packaging>=20.0->scikit-image->-r requirements.txt (line 2)) (3.0.9) Installing collected packages: tifffile, scipy, PyWavelets, opencv-python, scikit-image, pymatting Attempting uninstall: scipy Found existing installation: scipy 1.3.0 Uninstalling scipy-1.3.0: Successfully uninstalled scipy-1.3.0 Attempting uninstall: opencv-python Found existing installation: opencv-python 4.1.1.26 Uninstalling opencv-python-4.1.1.26: Successfully uninstalled opencv-python-4.1.1.26 ERROR: pip& 下载预训练模型 !wget https://paddleseg.bj.bcebos.com/matting/models/ppmatting-hrnet_w18-human_512.pdparams !export CUDA_VISIBLE_DEVICES=0 !python tools/predict.py --config configs/ppmatting/ppmatting-hrnet_w18-human_512.yml --model_path ppmatting-hrnet_w18-human_512.pdparams --image_path 11.jpg --save_dir ./output/results --fg_estimate True在执行matting前,我们还需要下载预训练模型,并上传一张需要matting的图片。然后就可以执行图片的matting操作了。由于官方的例子都是一人的照片,我们这里上传一张多人的照片,看看模型的预测情况。这里我们唯一需要修改的是image_path,需要matting的图片地址,其他参数选择默认即可,当然,你若是修改了模型的config配置文件地址与下载的model_path预训练模型地址,只需要修改成自己的配置文件地址即可。
save_dir保存预测的结果地址,这里选择自己的地址即可。
模型执行完成后,会在output/results文件夹下生成一个alpha图像和一个rgba图像。可以看到其多人的情况下,模型依然可以进行人物的分割,且完整了保留了所有人物,唯一不足的地方,是中间的桌子依然保留了下来。
https://arxiv.org/abs/2204.09433 https://github.com/PaddlePaddle/PaddleSeg/tree/develop/Matting关于图像分割以及人物抠图的相关技术,我们前期的文章也有相关的介绍。
RVM是一款功能强大的实时视频人像抠图技术,其由字节跳动项目组开发。不同于现有神经网络将每一帧作为单独图片处理,RVM使用循环神经网络,在处理视频流时有时间记忆。RVM可在任意视频上做实时高清抠像。在Nvidia GTX 1080Ti上实现4K 76FPS和HD 104FPS。开源地址:
github.com/PeterL1n/RobustVideoMatting人工智能人像抠图来进行清华虚拟AI人华智冰抠图
实时动态视频背景抠图技术,让没有绿布的你也可以制作绿幕大片
MediaPipe Selfie Segmentation 对场景中的突出人物进行分割。它可以在智能手机和笔记本电脑上实时运行。MediaPipe 提供了两种模型:一般模型和景观模型。两种模型都基于MobileNetV3,并进行了修改以提高效率。通用模型在 256x256x3 (HWC) 张量上运行,并输出代表分割掩码的 256x256x1 张量。景观模型类似于通用模型,但在 144x256x3 (HWC) 张量上运行。它比一般模型具有更少的 FLOP,因此运行速度更快。
MediaPipe,RVM,PP-matting,以上三家科技大公司开源的算法,到底哪家比较强,可以自行运行代码来进行速度精度以及最终效果的对比,这里可以参考往期的文章进行代码的学习。
本站所发布的文字与图片素材为非商业目的改编或整理,版权归原作者所有,如侵权或涉及违法,请联系我们删除
热门信息
阅读 ()
1 注册微信号怎么注册第二个阅读 ()
2 怎么把照片变成卡通头像阅读 ()
3 手机越充越少电怎么解决