百度PaddlePaddle飞浆实现多图像人像抠图
文章目录
- 前言
- 一、程序整体流程
- 二、使用步骤
- 1.引入库
- 2.读入数据
- 3.显示图像
- 4.调用飞浆训练模型
- 5.显示抠图后的图像
- 5.完整代码
- 总结
前言
安装了很久的百度飞浆终于安装好了,这心情是真的激动啊,所以迫不及待的就想做点什么事情。这不,来了。
一、程序整体流程
- 获取需要抠图的图像文件地址
- 显示所有原图像
- 调用飞浆的deeplabv3p_xception65_humanseg模型 该模型能够用于人像抠图
- 存储抠图人像(方便保存数据,也可下载图像)
废话就不说了具体的看下面:
二、使用步骤
1.引入库
代码如下(示例):
没安装的库赶紧安装,不然跑不起来:
pip install 库名称(安装库)
百度飞浆库安装指南
import os
import paddlehub as hub
import numpy as np
import cv2
import matplotlib.pyplot as plt
2.读入数据
代码如下(示例):
# 因为用到了matplotlib显示中文 所以加上这两句避免显示乱码
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号# 图像文件目录地址
path = r'./img/'
# 遍历获取每张图像的地址
files = [path + i for i in os.listdir(path)]
3.显示图像
代码如下(示例):
# 创建画布 定义大小
plt.figure(figsize=(8, 6))
# 遍历获取每张图像数据
for i, img_fine in enumerate(files):# 通过opencv获取图像数据并添加到列表img.append(cv2.imread(img_fine))# 由于opencv打开的图像格式为BGR 所以需要转换为RGB格式img[i] = cv2.cvtColor(img[i], cv2.COLOR_BGR2RGB)# 显示图像大小# print(img[i].shape)# 创建子视图plt.subplot(2, len(files), i + 1)# 显示图像plt.imshow(img[i])plt.title("原图")
4.调用飞浆训练模型
代码如下(示例):
# 调用飞浆的deeplabv3p_xception65_humanseg模型 该模型能够用于人像抠图
module = hub.Module(name="deeplabv3p_xception65_humanseg")
# 图像地址 (固定格式,不要更改)
input_dict = {"image": files}
# 训练模型并预测模型,打印结果(获取到抠图人像)
results = module.segmentation(data=input_dict)
5.显示抠图后的图像
代码如下(示例):
newimgs = []
for i in range(len(files)):# 提取抠图人像数据prediction = results[i]["data"]# 显示抠图后的轮廓图像# plt.imshow(prediction)# 根据图像成像还原数据(具体原理我也不知道)newimg = np.zeros(img[i].shape)newimg[:, :, 0] = img[i][:, :, 0] * (prediction > 0)newimg[:, :, 1] = img[i][:, :, 1] * (prediction > 0)newimg[:, :, 2] = img[i][:, :, 2] * (prediction > 0)# 添加到列表 newimg.astype(np.uint8)修改数据类型为uint8newimgs.append(newimg.astype(np.uint8))# 显示图像plt.subplot(2, len(files), i + 1 + len(files))plt.imshow(newimgs[i])plt.xlabel("抠图后图像")
5.完整代码
代码如下(示例):
import os
import paddlehub as hub
import numpy as np
import cv2
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号# 获取需要抠图的图像文件地址
# 图像文件目录地址
path = r'./img/'
# 遍历获取每张图像的地址
files = [path + i for i in os.listdir(path)]# 显示所有原图像
# 保存图像数据列表
img = []
# 创建画布 定义大小
plt.figure(figsize=(8, 6))
# 遍历获取每张图像数据
for i, img_fine in enumerate(files):# 通过opencv获取图像数据并添加到列表img.append(cv2.imread(img_fine))# 由于opencv打开的图像格式为BGR 所以需要转换为RGB格式img[i] = cv2.cvtColor(img[i], cv2.COLOR_BGR2RGB)# 显示图像大小# print(img[i].shape)# 创建子视图plt.subplot(2, len(files), i + 1)# 显示图像plt.imshow(img[i])plt.title("原图")# 调用飞浆的deeplabv3p_xception65_humanseg模型 该模型能够用于人像抠图
module = hub.Module(name="deeplabv3p_xception65_humanseg")
# 图像地址 (固定格式,不要更改)
input_dict = {"image": files}
# 训练模型并预测模型,打印结果(获取到抠图人像)
results = module.segmentation(data=input_dict)# 列表存储抠图人像(方便保存数据,也可下载图像)
newimgs = []
for i in range(len(files)):# 提取抠图人像数据prediction = results[i]["data"]# 显示抠图后的轮廓图像# plt.imshow(prediction)# 根据图像成像还原数据(具体原理我也不知道)newimg = np.zeros(img[i].shape)newimg[:, :, 0] = img[i][:, :, 0] * (prediction > 0)newimg[:, :, 1] = img[i][:, :, 1] * (prediction > 0)newimg[:, :, 2] = img[i][:, :, 2] * (prediction > 0)# 添加到列表 newimg.astype(np.uint8)修改数据类型为uint8newimgs.append(newimg.astype(np.uint8))# 显示图像plt.subplot(2, len(files), i + 1 + len(files))plt.imshow(newimgs[i])plt.xlabel("抠图后图像")# 总图像显示(少了这个就没图像了,千万别少了)
plt.show()
效果
总结
本次学习其实还有很不足,我们还可以继续改进,这也算是不用低成本学习图像处理了。我也借鉴了很多文章,最好的一篇是sansa666的,也非常感谢百度飞浆的开源学习。
百度PaddlePaddle飞浆实现多图像人像抠图相关推荐
- PaddlePaddle飞浆搭建和机器学习文字识别
PaddlePaddle飞浆搭建和机器学习文字识别 文章转自:https://lingkang.top/archives/paddlepaddle-fei-jiang-da-jian-he-ji-qi ...
- PaddlePaddle飞浆开启人工智能新时代
- 百度飞浆paddlepaddle下载安装
人工智能AI:Keras PyTorch MXNet 深度学习实战(不定时更新) 个人主页 1.飞浆:https://www.paddlepaddle.org.cn/快速安装:https://ww ...
- 笔记 | 百度飞浆AI达人创造营:深度学习模型训练和关键参数调优详解
笔记 | 百度飞浆AI达人创造营:深度学习模型训练和关键参数调优详解 针对特定场景任务从模型选择.模型训练.超参优化.效果展示这四个方面进行模型开发. 一.模型选择 从任务类型出发,选择最合适的模型. ...
- 百度飞浆EISeg高效交互式标注分割软件的使用教程
一.前言 官方原话:EISeg(Efficient Interactive Segmentation)是基于飞桨开发的一个高效智能的交互式分割标注软件.涵盖了高精度和轻量级等不同方向的高质量交互式分割 ...
- 百度飞浆行人多目标跟踪笔记
开源地址: PaddleDetection/configs/mot at release/2.3 · PaddlePaddle/PaddleDetection · GitHub 百度飞浆集成了多目标跟 ...
- DL之paddlepaddle:百度深度学习框架paddlepaddle飞桨的简介、安装、使用方法之详细攻略
DL之paddlepaddle:百度深度学习框架paddlepaddle飞桨的简介.安装.使用方法之详细攻略 目录 paddlepaddle百度深度学习框架的简介 1.飞桨全景图与四大领先技术 2.丰 ...
- 百度PaddlePaddle使用飞桨搭载手写字识别并训练、预测
文章目录 通过极简方案构建手写数字识别模型 一.导入库 二.数据处理 三.网络模型设计 四.训练配置以及模型训练 **==这里特殊之处在于读取数据的方式采取飞桨自带数据读取器==** 五.模型测试 = ...
- paddle百度飞浆入门使用教程
参加百度手写字体识别大赛,纯小白入门指引 本文包括: 目录 1.新手注册登陆流程 2.如何申请免费算力和notebook环境介绍 3.运行项目时遇到的问题 1.新手注册登陆流程 打开以下网址,点击登录 ...
最新文章
- 【每日一算法】二叉树的最小深度
- Swift进阶_第一部分
- win10删除开机密码_新版WIN10 如何取消开机密码的操作
- AUTOSAR从入门到精通100讲(三十八)-AUTOSAR 通信服务 - NM概念详解
- 深入react技术栈(2):JSX语法
- 这里有个古老的车站:三年只为一人开
- Overview of GTK+ and its Libraries
- ubuntu14.04部署kickstart
- VisualDiffer for Mac(文件对比利器)支持m1
- 计算机软考里面的英语试题,计算机软考模拟试题
- 2020还有必要学JSP吗?
- python 爬取生意参谋数据_用Excel实现生意参谋爬虫,伪装登陆状态
- 文件的文件名翻译重命名技巧操作
- ensp上静态路由与浮动路由设置及相应实验操作,超级简单详细
- pytest web自动化 从百草园到三味书屋....
- 金庸在浙江大学招博士生的考卷
- Facebook机密文件外泄或将终结这家社交媒体巨头
- net-java-php-python-篮球新闻网站计算机毕业设计程序
- 新时代区块链研究院 | 区块链人才需求激增200%,薪资已赶超互联网!
- 高博RGBD SLAM