本文介绍使用 PaddleHub 工具快速完成人像抠图。
背景
我们经常看到各种大牛演讲或者活动的各种海报和宣传页,职业照造型姿势那叫一个专业。那么,学好姿势排好照片后,如何给自己做一个宣传海报呢?
PS 的使用当然是基础,抠图的处理也是基本功,但是复杂背景的人像,特别是发丝等细节的处理方面就非常考验技术了,甚至有时还需要像素级的抠图。现在我们可以用到的一键抠图的工具有很多,比如 iPhone 自带的人像抠图,当然也有很多在线的网站。今天介绍一种使用 AI 人像分割模型的抠图方法。
安装依赖
首先我们需要安装 Paddle 库,飞桨是百度开源的一个易用、高效、灵活、可扩展的深度学习框架。
代码语言:javascript复制pip install --upgrade paddlepaddle -i https://mirror.baidu.com/pypi/simple
如果要用到 GPU 需要前往飞桨官网[1]根据对应的 CUDA 版本进行不同的 GPU 库安装,需要安装 CUDA 驱动和 Cudnn。
PaddleHub 可以便捷地获取 PaddlePaddle 生态下的预训练模型:
代码语言:javascript复制pip install --upgrade paddlehub -i https://mirror.baidu.com/pypi/simple
模型安装
这里选用的模型是 deeplabv3p_xception65_humanseg
,DeepLabv3 是Google DeepLab语义分割系列网络的最新作,该模型是使用百度自建数据集进行训练,可用于人像分割,支持任意大小的图片输入,关于该模型的详细信息请查阅 PaddleHub 模型介绍[2]。
hub install deeplabv3p_xception65_humanseg
编写代码
代码语言:javascript复制import os
import paddlehub as hub
# 指定使用 0号 GPU
os.environ["CUDA_VISIBLE_DEVICES"] = "0"
humanseg = hub.Module(name='deeplabv3p_xception65_humanseg')
# 未使用 GPU 记得改为 False
humanseg.segmentation(paths= ["pexels-5872320.jpg"],use_gpu=True, visualization=True, output_dir='.')
注意使用 GPU 需要保证存在环境变量 CUDA_VISIBLE_DEVICES 否则会报错。
效果展示
pexels 人像
今日推送另有一片介绍 rembg
去背景的使用,具体效果大家可自行参照比较。
References
[1]
飞桨官网: https://www.paddlepaddle.org.cn/
[2]
PaddleHub 模型介绍: https://www.paddlepaddle.org.cn/hubdetail?name=deeplabv3p_xception65_humanseg&en_category=ImageSegmentation