四行代码实现人像抠图

Abstract:

使用python和百度飞桨(paddlepaddle),实现自动化人像抠图。

1.使用工具:

1.1 python3.7.6(64位版本)  

建议下载3.7.6这个版本的64位软件,32位和python其他版本的安装paddlepaddle会出现问题。软件不要安装在C盘,会出现hub install无法完成,报这个错误“Defaulting to user installation because normal site-packages is not writeable“,因为C盘下\\AppData\Roaming\python39…下面的site-packages不可写,右键点击查看属性的时候发现确实是只读,所以写不进去,导致后面创建虚拟环境的时候mkvirtualenv 虚拟环境名字, 提示mkvirtualenv不是内部命令。所以python不要安装在C盘。

1.2 pycharm

用来写程序执行。

2. pip安装百度飞桨

2.1 先升级pip

注意用以下的代码升级,因为python3.7.6直接升级pip会出现问题,再就是paddlepaddle等的安装需要pip版本在20.0.0以上,python3.7.6自带的pip是19.0.0版本的。

python -m pip install --upgrade --user pip    

2.2 安装paddlepaddle

paddlepaddle的version要>= 2.2,直接执行下面代码

python -m pip install paddlepaddle #version >= 2.2

2.3 安装paddlehub

paddlehub的version要>= 2.2,直接执行下面代码

python -m pip install paddlehub #version >= 2.2

2.4 hub install 安装 deeplabv3p_xception65_humanseg

deeplab是谷歌出品的深度学习模型,从v1到v3已经发展了三个版本,现在是deeplabv3,百度在此基础上完善了人像分离,就是我们要用到的deeplabv3p_xception65_humanseg,这个模型也从最初的1.0.0版本,改善了三次,现在是1.1.2版本,旧版本的语法使用跟新版本有很大不一样,比如CSDN大神狂师vs写的一款Python实用神器,5 行 Python 代码 实现一键批量扣图_狂师vs的博客-CSDN博客

是基于deeplabv3p_xception65_humanseg==1.0.0,现在用最新版1.1.2需要改变一下代码的写法。安装直接执行下面程序。

hub install deeplabv3p_xception65_humanseg==1.1.2

这个安装会遇到各种各样的问题,有可能是python安装在C盘导致的错误,也有可能是别的,自己百度解决。

3. 编写程序 

直接执行下面的代码就行。

import os, paddlehub as hub #导入两个模块,分别是系统自带的os和刚才安装的paddlehub

path = 'C:/Users/cullj/Desktop/Picture/'    # 文件目录 文件目录和其下图片名都不能有汉字
module = hub.Module(name="deeplabv3p_xception65_humanseg")
res = module.segmentation(paths = [path + i for i in os.listdir(path)], visualization=True, output_dir='humanseg_output')  # visualization (bool): 是否将识别结果保存为图片文件;output_dir='humanseg_output'的意思是在程序所在文件夹内生成humanseg_output文件夹以保存抠好的图片。

按步骤解析:

首先导入两个模块,分别是系统自带的os模块,用来读取图片所在地文件夹;和paddlehub模块,用来分析图片。

接下来填写文件路径,注意文件路径和图片名称都不能出现汉字,否则会无法识别。

接下来调用paddlehub的deeplabv3的人像分离(human segment)模型。

最后一行代码是分析并保存截图到py文件同级的humanseg_output文件夹下。

大功告成,赶紧查看一下抠好的图片,效果不错,时间也挺快,如果能并发的话,效果会更好。

4. 常见问题和解决办法:

4.1 module 'paddlehub' has no attribute 'Module'

可能是python版本不对,建议卸载后安装64位python3.7

4.2 pip 升级遇到问题:ERROR: Could not install packages due to an EnvironmentError: [WinError 5] 拒绝访问。

升级一下pip就行,但是python3.7升级pip的时候会遇到困难,建议这样升级python -m pip install --upgrade --user pip,一开始就先把pip升级到20.0.0版本以上,否则19.0.0版本会导致paddlehub安装失败。

4.3 [ WARNING] - The _initialize method in HubModule will soon be deprecated, you can use the init() to handle the initialization of the object

python不要安装在C盘,按在C盘就会出现hub install 无法完成。参考下面博客“Defaulting to user installation because normal site-packages is not writeable“_bianlidou的博客-CSDN博客

你可能感兴趣的:(python,paddlepaddle,深度学习)