文章目录

  • 前言
  • 一、程序整体流程
  • 二、使用步骤
    • 1.引入库
    • 2.读入数据
    • 3.显示图像
    • 4.调用飞浆训练模型
    • 5.显示抠图后的图像
    • 5.完整代码
  • 总结

前言

安装了很久的百度飞浆终于安装好了,这心情是真的激动啊,所以迫不及待的就想做点什么事情。这不,来了。


一、程序整体流程

  1. 获取需要抠图的图像文件地址
  2. 显示所有原图像
  3. 调用飞浆的deeplabv3p_xception65_humanseg模型 该模型能够用于人像抠图
  4. 存储抠图人像(方便保存数据,也可下载图像)
    废话就不说了具体的看下面:

二、使用步骤

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飞浆实现多图像人像抠图相关推荐

  1. PaddlePaddle飞浆搭建和机器学习文字识别

    PaddlePaddle飞浆搭建和机器学习文字识别 文章转自:https://lingkang.top/archives/paddlepaddle-fei-jiang-da-jian-he-ji-qi ...

  2. PaddlePaddle飞浆开启人工智能新时代

  3. 百度飞浆paddlepaddle下载安装

    人工智能AI:Keras PyTorch MXNet 深度学习实战(不定时更新)  个人主页  1.飞浆:https://www.paddlepaddle.org.cn/快速安装:https://ww ...

  4. 笔记 | 百度飞浆AI达人创造营:深度学习模型训练和关键参数调优详解

    笔记 | 百度飞浆AI达人创造营:深度学习模型训练和关键参数调优详解 针对特定场景任务从模型选择.模型训练.超参优化.效果展示这四个方面进行模型开发. 一.模型选择 从任务类型出发,选择最合适的模型. ...

  5. 百度飞浆EISeg高效交互式标注分割软件的使用教程

    一.前言 官方原话:EISeg(Efficient Interactive Segmentation)是基于飞桨开发的一个高效智能的交互式分割标注软件.涵盖了高精度和轻量级等不同方向的高质量交互式分割 ...

  6. 百度飞浆行人多目标跟踪笔记

    开源地址: PaddleDetection/configs/mot at release/2.3 · PaddlePaddle/PaddleDetection · GitHub 百度飞浆集成了多目标跟 ...

  7. DL之paddlepaddle:百度深度学习框架paddlepaddle飞桨的简介、安装、使用方法之详细攻略

    DL之paddlepaddle:百度深度学习框架paddlepaddle飞桨的简介.安装.使用方法之详细攻略 目录 paddlepaddle百度深度学习框架的简介 1.飞桨全景图与四大领先技术 2.丰 ...

  8. 百度PaddlePaddle使用飞桨搭载手写字识别并训练、预测

    文章目录 通过极简方案构建手写数字识别模型 一.导入库 二.数据处理 三.网络模型设计 四.训练配置以及模型训练 **==这里特殊之处在于读取数据的方式采取飞桨自带数据读取器==** 五.模型测试 = ...

  9. paddle百度飞浆入门使用教程

    参加百度手写字体识别大赛,纯小白入门指引 本文包括: 目录 1.新手注册登陆流程 2.如何申请免费算力和notebook环境介绍 3.运行项目时遇到的问题 1.新手注册登陆流程 打开以下网址,点击登录 ...

最新文章

  1. 【每日一算法】二叉树的最小深度
  2. Swift进阶_第一部分
  3. win10删除开机密码_新版WIN10 如何取消开机密码的操作
  4. AUTOSAR从入门到精通100讲(三十八)-AUTOSAR 通信服务 - NM概念详解
  5. 深入react技术栈(2):JSX语法
  6. 这里有个古老的车站:三年只为一人开
  7. Overview of GTK+ and its Libraries
  8. ubuntu14.04部署kickstart
  9. VisualDiffer for Mac(文件对比利器)支持m1
  10. 计算机软考里面的英语试题,计算机软考模拟试题
  11. 2020还有必要学JSP吗?
  12. python 爬取生意参谋数据_用Excel实现生意参谋爬虫,伪装登陆状态
  13. 文件的文件名翻译重命名技巧操作
  14. ensp上静态路由与浮动路由设置及相应实验操作,超级简单详细
  15. pytest web自动化 从百草园到三味书屋....
  16. 金庸在浙江大学招博士生的考卷
  17. Facebook机密文件外泄或将终结这家社交媒体巨头
  18. net-java-php-python-篮球新闻网站计算机毕业设计程序
  19. 新时代区块链研究院 | 区块链人才需求激增200%,薪资已赶超互联网!
  20. 高博RGBD SLAM

热门文章

  1. 【青书学堂】统计学(高起专) 第一学期 考试
  2. 20个令人惊叹的深度学习应用
  3. 劳易测GS 63B/6D.3-S8光电开关
  4. java遍历文件夹下的_Java遍历文件夹下的所以文件
  5. H5微信公众号授权登录
  6. Git创建分支以及合并分支
  7. 微信小程序 - 子组件触发父组件函数(triggerEvent)
  8. 超详细linux基本命令学习以及hdfs命令详解
  9. 中国家用微型投影仪市场深度研究分析报告
  10. 【Pytorch基础教程33】算法模型部署(MLFlow/ONNX/tf serving)