使用paddlehub/paddlepaddle/飞桨做人像分离/并替换背景

paddlehub是基于百度paddlepaddle/飞桨的深度学习模型开发工具,paddlepaddle地址:https://www.paddlepaddle.org.cn 上面有很多模型,也有很多学习资料,建议去看看

今天要分享的是用paddlehub做人像分离,但是我测试结果表明用paddlehub做人像分离效果还是可以,但是要达到PS那种连头发丝都都扣出来还是有不小的差距。

环境安装

1.首先你得安装Python3

2.然后安装paddlepaddle

​ 去这个地址选择你要安装的版本https://www.paddlepaddle.org.cn/install/quick#show_info

3.安装numpy

​ pip3 install numpy/我这边是pip3,看你们的环境有可能你们需要执行pip install numpy

4.安装opencv

​ pip3 install opencv-python

5.安装pillow 它是PIL的升级版本

​ pip3 install pillow

测试结果:

原图:

结果图片:



我们可以看到头发丝处理的还是有待提升的

源码:

import paddlehub as hub
import numpy as np
import cv2
import time
from PIL import Image

if __name__ == '__main__':
        #第一次运行会自动下载deeplabv3p_xception65_humanseg模型,会慢一点
    human_seg = hub.Module(name="deeplabv3p_xception65_humanseg")
    src_img = cv2.imread('/Users/luoye/Downloads/WechatIMG281.jpeg')
    #visualization默认是false,当设置为true时会生成分割后的图片并保存在humanseg_output目录下
    results = human_seg.segmentation(images=[src_img], visualization=True)
    for result in results:
        image_alpha = result['data'].astype(np.uint8)
        #这里我把背景换成了红色
        img_bg = Image.new('RGBA', (src_img.shape[1], src_img.shape[0]), (255, 0, 0, 255))
        image_temp = Image.fromarray(cv2.cvtColor(src_img, cv2.COLOR_BGR2RGBA))
        img_bg.paste(image_temp, (0, 0), Image.fromarray(image_alpha))

        path = "./" + str(int(time.time_ns() / 1000)) + ".png"
        img_bg.save(path)
        print("add successful path=" + path)
此条目发表在机器学习分类目录。将固定链接加入收藏夹。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注