python人工智能抠图,python人物抠图算法
简单来说,抠图就是把一张照片的主要人物或物体从图片中挖出来,以便粘贴到别处。下面这篇文章主要介绍如何使用五行Python代码轻松实现批量抠图的相关信息。通过示例代码非常详细的介绍,有需要的朋友可以参考一下。
00-1010前言准备代码实现补充:可能遇到的坑总结
目录
你有没有想过把某一张照片里的人物挖出来,拼接成其他的画面,这样即使你在天涯海角,我也能在这里参观?
专业人士可以使用PhotoShop的“魔棒”工具来抠图,而非专业人士可以使用各种米托应用来实现。不过它们毕竟处理能力有限,一次只能处理一张图片,更复杂的图像可能需要很长时间。
今天给大家展示第三种方式,——,用Python批量抠图。
前言
既然要装逼,准备是必不可少的。俗话说“站在巨人的肩膀上事半功倍”,我们这里的“巨人”是paddlepaddle,中文名字叫“飞桨”。那么这个paddlepaddle是什么?
它是“一个源于行业实践的开源深度学习平台,致力于让深度学习技术的创新和应用更简单”。说白了,我帮你实现了深度学习的底层框架。只要你有创意,在我的平台上用少量简单的代码就可以轻松实现。它的官方网站是https://www.paddlepaddle.org.cn/
它的安装也比较简单。官网首页有安装说明。这里我们按照官网的安装说明用pip安装CPU版本。
首先,我们执行语句:
python -m pip安装paddle paddle-I https://mirror.baidu.com/pypi/simple
安装成功后,我们在python环境下测试安装是否成功(这个也是根据官网的说明)。我们切换到python环境并运行以下代码:
python 3 . 7 . 0(3 . 7 . 0:1 bf9cc 5093,2018年6月26日,23:26:24)
达尔文[Clang 6.0 (clang-600.0.57)]
有关详细信息,请键入“帮助”、“版权”、“配额”或“许可证”。
进口桨.流体
paddle . fluid . install _ check . run _ check()
运行验证Paddle程序.
你的桨在单个GPU或CPU上工作良好。
I 0506 21:47:48.657404 2923565952 parallel _ executor . cc :440]程序将使用ParallelExecutor在CPU上执行,使用2块卡,所以并行执行2个程序。
wo 506 21:47:48.658407 2923565952 fuse _ all_reduce _ op _ pass . cc :74]查找all _ reduce运算符: 2 .为了加快速度,在训练过程中融合了一些all_reduce操作,融合后的all_reduce操作数为1。
I 0506 21:47333648.6162923565952 build _ strategy . cc :365]
I 0506 21:47333648.659137 2923565952 parallel _ executor . cc :307]当build _ strategy . enable _ Inplace=True时,启用in place策略
I 0506 21:47:48.659595 2923565952 parallel _ executor . cc :375]垃圾收集策略启用时,FLAGS_eager_delete_ten
sor_gb = 0
Your Paddle works well on MUTIPLE GPU or CPU.
Your Paddle is installed successfully! Lets start deep Learning with Paddle now
>>>
看到 Your Paddle is installed successfully 就表示安装成功了。
我们接下来需要使用的是这个平台的 paddlehub 工具,所以我们还需要安装 paddlehub :
pip install -i https://mirror.baidu.com/pypi/simple paddlehub
安装完成后,我们就可以开始运用了。
代码实现
我们的实现步骤很简单:导入模块 -> 加载模型 -> 获取图片文件 -> 调用模块抠图。
下面我们看代码实现:
import os, paddlehub as hubhuseg = hub.Module(name=deeplabv3p_xception65_humanseg) # 加载模型
path = ./imgs/ # 文件目录
files = [path + i for i in os.listdir(path)] # 获取文件列表
results = huseg.segmentation(data={image: files}) # 抠图
我将图片放在代码文件夹的同级目录 imgs 文件夹下,运行代码后,输出的抠图图片会自动放在代码同级目录的 humanseg_output 目录下,文件名称跟原图片的名称相同,但是文件格式是 png 。
我在 imgs 目录下放了5张图片,为了便于展示,我将他们放在一起截图:
原图片
运行程序后,在 humanseg_output 目录下生成了5张图片,同样的,我将他们放在一起截图:
抠图图片
我们可以看到程序将每张图片中的人物(可以是一个,也可以是多个)识别出来,并且抠出来成图,背景是白色。虽然有些细节处还有些许瑕疵,但是看起来还算不错。
补充:可能遇到的坑
1. 报错RuntimeError: Environment Variable CUDA_VISIBLE_DEVICES is not set correctly. If you wanna use gpu, please set CUDA_VISIBLE_DEVICES as cuda_device_id.
import osos.environ[CUDA_VISIBLE_DEVICES] = 0
或
set CUDA_VISIBLE_DEVICES=0
总结
本文基于 paddlepaddle 平台,使用简单的五行代码实现了批量抠图,不仅解放了好多人的双手和双眼,而且为某些程序猿/程序媛的装逼工具箱提供了一件宝器。下次如果碰到某个女生或者闺蜜在为抠图发愁,别忘了掏出神器,赢得芳心哦!
到此这篇关于如何使用五行Python代码轻松实现批量抠图的文章就介绍到这了,更多相关Python批量抠图内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。