一、前言
抠图是个体力活。
抠图最难的,就是处理毛发。
想没想过,有一天,算法直接帮你自动抠图?细致到毛发的那种!
毛发的分割都不是问题!
新鲜热乎刚出炉的 Image Matting 算法,你值得拥有。
老规矩,今天,继续手把手教学。
算法原理、环境搭建、效果实现,一条龙服务,尽在下文!
二、Animal Matting
抠图问题的核心是精确地将图像或视频中的前景估计出来,对图像编辑,影片剪辑等都有很深的意义。
最新发表的论文 End-to-end Animal Image Matting ,只需要一张图,无需任何先验知识,即可实现端到端的抠图,效果非常惊艳。
论文提出了一个名为 GFM 的抠图模型,该模型可同时生成全局语义分割和局部 alpha mask。
同时,论文也开源了第一个自然动物图像抠像数据集 AM-2k,并设计了基于高分辨率背景数据集 BG-20k 的 RSSN 合成数据方法。
GFM 网络结构如下:
网络结构:是一个编码解码器的结构,编码器由两个平行的解码器共享。
被共享的编码器:以在 ImageNet 上预训练的 ResNet-34 或 DenseNet-121 作为编码器。
Glance Decoder(GD): 用于学习高层语义信息。在编码器的第四个模块之后,加入金字塔池化模块(PPM)输出全局上下文,用于GD中。
Focus Decoder (FD):用于在低结构特征中提取细节。在编码器的第四个模块之后,加入桥联模块(BB)收敛不同域中的局部上下文。并结合U-net,将 FD 与编码器的对应模块进行跳跃连接,训练 FD。
最后,以不同的表征域,连接 GD 和 FD 的输出结果。
GFM-TT:以真实 alpha 掩摸膨胀和腐蚀的 3 类 trimap T 作为 GD 监督信号、以未知过渡域的 alpha 掩摸作为 FD 监督信号。
GFM-FT:以 2 类前景分割 mask 作为 GD 的监督信号、以未知过渡域的 alpha 掩膜作为 FD 监督信号。
GFM-BT:以 2 类背景分割 mask 作为 GD 的监督信号、以未知过渡域的 alpha 掩膜作为 FD 监督信号。
最后,通过协同合作抠图(CM),将上述三个不同的表征域的结果,进行合并,获得最终的 alpha 预测。
更详细的内容,可以直接看 paper:
论文地址:https://arxiv.org/pdf/2010.16188.pdf
三、效果测试
Github 项目地址:https://github.com/JizhiziLi/animal-matting
第一步:搭建测试环境。
根据 Requirements.txt 安装依赖库即可,很简单。
第二步:下载训练好的模型权重文件。
下载地址(需翻墙):点击查看
第三步:在工程目录,运行程序。
1 | python ./core/test_samples.py --cuda --arch="e2e_resnet34_2b_gfm_tt" --model_path="models/model_r34_2b_gfm_tt.pth" --pred_choice=3 --hybrid |
samples 目录下的 original 目录保存原始图片;
samples 目录下的 result_alpha 目录保存分割 mask ;
samples 目录下的 result_color 目录保存提取结果。
我将程序和权重文件都进行了打包,嫌麻烦,可以下载直接使用。
下载地址(提取码:s6uh ):
https://pan.baidu.com/s/1xjBbj3iptZuPV8nlg9Dthw
运行效果:
运行速度很快,运行效果展示:
四、最后
算法只针对动物,想对人进行抠图,需要自己制作数据集以及训练模型。
文章持续更新,可以微信公众号搜索【JackCui-AI】第一时间阅读,本文 GitHub https://github.com/Jack-Cherish/PythonPark 已经收录,有大厂面试完整考点,欢迎Star。