此项目是使用PaddleHub简单地对图片进行抠图和合成,将霉霉抠出来P到埃菲尔铁塔前面。

和常见的PS抠图相比,使用PaddleHub抠图可以节省时间,并能够智能地对图片中颜色较为接近的边缘进行抠图,准确率较高。 PaddleHub便捷地获取PaddlePaddle生态下的预训练模型,完成模型的管理和一键预测。配合使用Fine-tune API,可以基于大规模预训练模型快速完成迁移学习,让预训练模型能更好地服务于用户特定场景的应用。

PaddleHub官网地址:paddlepaddle.org.cn/hub
更多PaddleHub项目地址:https://github.com/PaddlePaddle/PaddleHub

首先需要安装PaddleHub标准库以及其中DeepLabv3+模型一键抠图。

!pip install paddlehub==1.6.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
!hub install deeplabv3p_xception65_humanseg==1.0.0
#导入所用标准库
import os
import numpy as np
import paddlehub as hub
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
from PIL import Image
In [30]
# 测试图片路径和输出路径
test_path = 'data/test/'
output_path = 'data/out/'# 待预测图片
test_img_path = ["taylor swift.jpg"]
test_img_path = [test_path + img for img in test_img_path]
img = mpimg.imread(test_img_path[0]) # 展示待预测图片
plt.figure(figsize=(10,10))
plt.imshow(img)
plt.axis('off')
plt.show()

module = hub.Module(name="deeplabv3p_xception65_humanseg")
input_dict = {"image": test_img_path}# execute predict and print the result
results = module.segmentation(data=input_dict)
for result in results:print(result)
# 预测结果展示
out_img_path = 'humanseg_output/' + os.path.basename(test_img_path[0]).split('.')[0] + '.png'
img = mpimg.imread(out_img_path)
plt.figure(figsize=(10,10))
plt.imshow(img)
plt.axis('off')
plt.show()

抠出来的图片还会有少许没有被抠掉的地方。

# 定义合成函数
def blend_images(fore_image, base_image, output_path):"""将抠出的人物图像换背景fore_image: 前景图片,抠出的人物图片base_image: 背景图片"""# 读入图片base_image = Image.open(base_image).convert('RGB')fore_image = Image.open(fore_image).resize(base_image.size)# 图片加权合成scope_map = np.array(fore_image)[:,:,-1] / 255scope_map = scope_map[:,:,np.newaxis]scope_map = np.repeat(scope_map, repeats=3, axis=2)res_image = np.multiply(scope_map, np.array(fore_image)[:,:,:3]) + np.multiply((1-scope_map), np.array(base_image))#保存图片res_image = Image.fromarray(np.uint8(res_image))res_image.save(output_path)return res_image
output_path_img = output_path + 'blend_res_img.jpg'
blend_images('humanseg_output/taylor swift.png', 'data/test/eifel.jpg', output_path_img)# 展示合成图片
plt.figure(figsize=(10,10))
img = mpimg.imread(output_path_img)
plt.imshow(img)
plt.axis('off')
plt.show()

总结:

此项目使用paddlehub进行了抠图和合成,可以实现PS软件的功能,但少量的代码减小了内存占用,这让我们看到了paddlehub的精巧之处。但还有很多不足之处,比如精确度不是特别高,后面的人影会影响抠图效果,在后面的模型中需要改进。
这是使用paddlehub进行抠图和合成图片的小尝试,这次尝试让我了解了paddlehub工具的使用,后续我还会做一些更多的尝试,比如视频抠图,让图片活起来。

PaddleHub创意项目 | 将霉霉P到埃菲尔铁塔前相关推荐

  1. PaddleHub创意项目-制作证件照(抠图换底美颜)

    PaddleHub创意项目-制作证件照(抠图换底美颜) 经过三个星期的百度架构师手把手带你零基础实践深度学习,对paddle有了一定了解,现在利用PaddleHub实践一个对图像进行抠图换底加美颜的小 ...

  2. PaddleHub创意项目-AI换发型

    AI换发型 生活中看到别人的漂亮发型总有一点想尝试的冲动,但却没有一个值得信赖的Tony老师,今天我们使用PaddleHub进行AI换发型. import cv2 import paddlehub a ...

  3. 【2022 CCF BDCI 文心大模型创意项目】乐享词话—诗词意境辅助记忆工具

    [2022 CCF BDCI 文心大模型创意项目]「乐享词话」--诗词意境辅助记忆工具 唐诗宋词记忆不下来?快来领取你的专属辅助记忆工具! 「乐享词话」允许你将古诗词中的意境提取出来,更直观地感受古诗 ...

  4. 百度AIStudio之PaddleHub创意赛:你的名字,你的Face

    百度AIStudio之PaddleHub创意赛:你的名字,你的Face 使用<你的名字>动漫中的图片拼出你的人脸.本项目为 PaddleHub:人脸检测主题创意赛.实现自动检测人脸,然后实 ...

  5. 【2022 CCF BDCI 文心大模型创意项目】经典菜品生成

    [文心大模型创意项目]经典菜品生成 文心大模型对于中文的理解十分到位. 在实际使用体验中,我认为这是它相比国外其它成熟的文字-图片项目最易感受到的一点. 一个最简单的例子就是"佛跳墙&quo ...

  6. 好玩的AI创意项目大放送,快来pick你心中的第一吧!

    点击左上方蓝字关注我们 谁说程序员的世界只有黑白的代码,下面就带大家领略一下开发者们使用飞桨PaddlePaddle构建的有趣创意项目!喜欢不只停留在口头赞美与内心崇拜,请用你的star和fork支持 ...

  7. 【2022 CCF BDCI 文心大模型创意项目】AI一键搞定全套写文稿

    ★★★ 本文源自AI Studio社区精品项目,[点击此处]查看更多精品内容 >>> [2022 CCF BDCI 文心大模型创意项目]AI一键搞定全套写文稿加配图(文心大模型图文创 ...

  8. (记录)PaddleHub创意赛:AI人像抠图及图像合成

    文章目录 PaddleHub创意赛:AI人像抠图及图像合成 一.安装环境(这里面有几个坑) 二.接下来就``开始P图 1. 引入包 2. 加载预训练模型(挺厉害的不得不说) 3. 图像合成 Paddl ...

  9. 分享 10 个高星的创意项目!

    整理了 10 个高星创意项目,开拓思路 ✨ 我开发的编程导航:www.code-nav.cn 大家好,我是鱼皮,今天分享一些开源的.有趣的项目,主要目的是给正在自学编程.不知道做什么项目的小伙伴一些思 ...

  10. java毕业设计的创意项目众筹平台的设计与开发mybatis+源码+调试部署+系统+数据库+lw

    java毕业设计的创意项目众筹平台的设计与开发mybatis+源码+调试部署+系统+数据库+lw java毕业设计的创意项目众筹平台的设计与开发mybatis+源码+调试部署+系统+数据库+lw 本源 ...

最新文章

  1. php 管理服务器内存,解决PHP-FPM进程导致的服务器内存占用
  2. Linux C++写日志
  3. Qt 程序获取各种文件路径方法
  4. python自动汇总excel_RPA手把手:Python轻松实现EXCEL自动化
  5. html5 规定输入字段,HTML5 Input属性详解
  6. HTML dfn元素
  7. Unity中的单例方法
  8. Git分支 and PullFetchMerge
  9. C程序设计语言(2)文摘
  10. mysql mutex_MySQL 有关锁的简单介绍
  11. flex java blazeds_Flex同Java通信--BlazeDS入门图文详解(上)
  12. python语句分号_Python中的分号
  13. MarkDownPad:An error occured with the HTML rendering componet.
  14. 2019杭州电子科技大学计算机考研经验——97天一战上岸
  15. JavaScript大师必须掌握的12个知识点 1
  16. 谷歌中阻止冒泡在火狐中失效_如何在Google表格中乘数字
  17. APP多平台快速切换
  18. linux内存管理之 ION 内存管理器浅析Ⅰ(system heap)
  19. Ubuntu16.04 + Cuda-9.0 + Cudnn-7.1.4 + TensorFlow1.8(极其简单)
  20. 工业4.0时代 个性化定制掀起制造业新篇章

热门文章

  1. 使用webgl(three.js)搭建一个3D智慧园区、3D建筑,3D消防模拟,web版3D,bim管理系统——第四课...
  2. 建模常用Python代码
  3. MODBUS-RTU CRC校验算法及函数源码
  4. win7计算机桌面快捷键显示桌面,win7系统右击桌面快捷小工具使用介绍
  5. comsol 超声声场模拟_Comsol Multiphysics 声场仿真模块整体介绍
  6. 天思ERP软件常见问题解决方案
  7. oceanbase ODC和Obclient连接mysql类型的ob库
  8. wifi智能门锁远程控制方案能实现哪些功能
  9. 学会这六种方法,让你的设计变得中国风
  10. js读取excel时间格式转换