这篇“怎么用Python代码实现批量扣图”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用Python代码实现批量扣图”文章吧。

1. 准备工作- 安装paddlepaddle

既然要装逼,准备工作是少不了的。所谓“站在巨人的肩膀上,干起活来事半功倍”,我们这里的“巨人”就是paddlepaddle了,中文名称叫“飞桨”,那么这个 paddlepaddle 是什么呢?

它是“源于产业实践的开源深度学习平台,致力于让深度学习技术的创新与应用更简单”,直白点就是我帮你实现了深度学习底层框架,你只要有创意就可以在我平台上运用少量简单代码轻松实现。它的官网是:https://www.paddlepaddle.org.cn/。

它的安装比较简单,官网首页就有安装指引,可以通过「安装」菜单,查找到各个系统安装详细及注意事项,如下图所示,我们这里根据官网的安装指引,使用 pip 方式来安装 CPU 版本。

本文以MacOS系统为例:

我们首先执行以下命令安装(推荐使用百度源)::

python3-mpipinstallpaddlepaddle-ihttps://mirror.baidu.com/pypi/simple

或者:

python3-mpipinstallpaddlepaddle-ihttps://pypi.tuna.tsinghua.edu.cn/simple

从安装过程中,可以看到在安装paddlepaddle库时,需要安装如下依赖库:

Installingcollectedpackages:pathlib,click,joblib,regex,tqdm,nltk,gast,rarfile,pyyaml,funcsigs,paddlepaddleRunningsetup.pyinstallforpathlib...doneRunningsetup.pyinstallforregex...doneRunningsetup.pyinstallfornltk...doneRunningsetup.pyinstallforrarfile...doneRunningsetup.pyinstallforpyyaml...doneSuccessfullyinstalledclick-7.1.2funcsigs-1.0.2gast-0.3.3joblib-0.14.1nltk-3.5paddlepaddle-1.8.0pathlib-1.0.1pyyaml-5.3.1rarfile-3.1regex-2020.5.7tqdm-4.46.0

安装成功后,我们在 python 环境中测试一下是否安装成功(这个也是按照官网指引来做),我们切换到 python 环境,运行如下代码:

➜~python3Python3.7.4(default,Jul92019,18:15:00)[Clang10.0.0(clang-1000.11.45.5)]ondarwinType"help","copyright","credits"or"license"formoreinformation.>>>importpaddle.fluid>>>paddle.fluid.install_check.run_check()RunningVerifyFluidProgram...YourPaddleFluidworkswellonSINGLEGPUorCPU.W051217:41:31.0372402844976000build_strategy.cc:170]fusion_groupisnotenabledforWindows/MacOSnow,andonlyeffectivewhenrunningwithCUDAGPU.W051217:41:31.0439592844976000fuse_all_reduce_op_pass.cc:74]Findall_reduceoperators:2.Tomakethespeedfaster,someall_reduceopsarefusedduringtraining,afterfusion,thenumberofall_reduceopsis1.YourPaddleFluidworkswellonMUTIPLEGPUorCPU.YourPaddleFluidisinstalledsuccessfully!Let'sstartdeepLearningwithPaddleFluidnow

如果能看到 Your Paddle Fluid is installed successfully 就表示安装成功了。

2. 准备工作- 安装paddlehub

要实现本文的一键批量扣图需求,需要借助PaddleHub人像分割模型来实现。

PaddleHub 是基于 PaddlePaddle 开发的预训练模型管理工具,可以借助预训练模型更便捷地开展迁移学习工作,目前的预训练模型涵盖了图像分类、目标检测、词法分析、语义模型、情感分析、视频分类、图像生成、图像分割、文本审核、关键点检测等主流模型。

PaddleHub官网:https://www.paddlepaddle.org.cn/hub

介绍完了项目,接下来我们开始在线安装 paddlehub :

pipinstall-ihttps://mirror.baidu.com/pypi/simplepaddlehub

或者按指定版本安装:

pipinstallpaddlehub==1.6.0-ihttps://pypi.tuna.tsinghua.edu.cn/simple

安装完成后,我们就可以开始运用了。

3. 一键扣图代码实现

我们的实现步骤很简单:

导入模块

加载模型

获取图片文件

调用模块抠图

其中扣图功能主要采用PaddleHub DeepLabv3+模型deeplabv3p_xception65_humanseg。

下面我们看具体扣图代码实现(demo.py):

importosimportpaddlehubashub#加载模型humanseg=hub.Module(name='deeplabv3p_xception65_humanseg')base_dir=os.path.abspath(os.path.dirname(__file__))#获取当前文件目录path=os.path.join(base_dir,'images/')#获取文件列表files=[path+iforiinos.listdir(path)]print(files)#抠图results=humanseg.segmentation(data={'image':files})forresultinresults:print(result)

示例中,我将图片放在代码文件夹的同级目录 images文件夹下,运行代码后,输出的抠图图片会自动放在代码同级目录的 humanseg_output 目录下,文件名称跟原图片的名称相同,但是文件格式是 png 。

其中示例 images 目录下放了9张图片,为了兼顾不同读者喜好的口味,示例图片中既包括了帅哥,也有美女哦,并且将他们缩略图放大了。

我们可以看到程序将每张图片中的人物(可以是一个人,也可以是多个人)识别出来,并且抠出来成图,背景是白色。虽然有些细节处还有些许瑕疵,但是看起来还算不错。

4. 需要注意的坑

在运行示例代码时,如果没有单独安装模型deeplabv3p_xception65_humanseg,默认会自动在执行前进行安装。但安装完成后,执行结果并没有生成扣图结果及humanseg_output目录

可以通过单独安装模型并指定安装版本来解决。

hubinstalldeeplabv3p_xception65_humanseg==1.0.0

具体原因没有细究,默认自动安装模型时,版本为1.2.0,猜测由于还是模型版本不兼容问题导致。

以上就是关于“怎么用Python代码实现批量扣图”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。