哈喽,大家好。今天继续给大家分享实战项目。

用深度学习算法替换证件照背景,带 UI 界面那种,从此可以跟照相馆说拜拜了。

下面我们来学习一下该项目,文末有源代码和开源地址。

没有啰嗦的文字,没有多余的代码,只有通俗的讲解。

1. 思路

先来看一下最终的效果。

效果

左边是原图片,右边是替换背景后的图片,支持替换任意颜色背景。

项目的实现思路很简单:

  1. 用户上传的原图后,使用已经训练好的人像分割模型将人像切割出来

  2. 将切割后的图片展示在新背景上

2. 模型

图像分割是要将图片根据内容分割成不同的块,如下图所示:

相比图像分类和检测,图像分割是一项更精细的工作,因为需要对每个像素点分类,物体的轮廓是精准勾勒的。

本项目的图像(人像)分割采用飞桨(PaddlePaddle)提供的deeplabv3p_xception65_humanseg模型。该模型基于DeepLabv3+,用百度自建数据集进行训练,可用于人像分割,支持任意大小的图片输入。

DeepLabv3+ 是 Google DeepLab 语义分割系列网络的最新作,这里说的语义分割是图像分割中的一类。

DeepLabv3+的网络结构如下:

DeepLabv3+

DeepLabv3+通过encoder-decoder进行多尺度信息的融合,encoder是原来的DeepLabv3,但DCNN采用了改进的Xception,提高了语义分割的健壮性和运行速率。

decoderDeepLabv3+相比DeepLabv3新增的,其将底层特征与高层特征进一步融合,提升分割边界准确度。

下面是人像分割的核心代码:

from paddlehub import Module# 加载训练好的人像分割模型
module = Module(directory="module/deeplabv3p_xception65_humanseg")# 进行分割
res = module.segmentation(paths=[filename], output_dir='../cache', visualization=True)

filename是原图片的路径。

3. UI

UI 界面使用ttkbootstrap开发,它是TKinter的美化库,使用方法跟TKinter一样。

这里介绍下 UI 界面的核心代码。

首先需要一个按钮来选择原图片

import ttkbootstrap as ttkttk.Button(self.leftFrame, text='选择图片', command=self.openFile)

点击选择图片按钮后,会调用openFile函数对原图片进行人像分割,分割出来的人像存储在临时文件中。

还需要一个按钮展示转换背景后的图片

ttk.Button(self.leftFrame, text='转换底色', command=self.render)

render函数会展示转换后的图片,核心代码如下:

def render(self):# 获取新背景色colorHEX = self.color.get()# 获取分割后的人像图片base_img = Image.open(self.outputdir)# 展示新背景background = Image.new('RGBA', base_img.size, colorHEX)x, y = base_img.size# 将分割后的人像贴在新背景上background.paste(base_img, (0, 0, x, y), base_img)self.image_final = background

self.image_final是转换背景后的图片,调整大小后便可以在 UI 上展示。

4. 运行

到这里,整个项目已经介绍完了,最后简单说下拿到源码后如何运行该项目。

首先,安装飞桨(PaddlePaddle)

pip install --upgrade paddlepaddle -i https://mirror.baidu.com/pypi/simplepip install --upgrade paddlehub -i https://mirror.baidu.com/pypi/simple

然后,安装ttkbootstrap

pip install ttkbootstrap

最后,运行Circulation.py文件即可。

如果本文对你有帮助,就点个在看鼓励下吧。

代码获取

源代码在下方公众号获取。

推荐文章

  • 有人把吴恩达老师的机器学习和深度学习做成了中文版

  • 上瘾了,最近又给公司撸了一个可视化大屏(附源码)

  • 如此优雅,4款 Python 自动数据分析神器真香啊

  • 梳理半月有余,精心准备了17张知识思维导图,这次要讲清统计学

  • 年终汇总:20份可视化大屏模板,直接套用真香(文末附源码)

技术交流

欢迎转载、收藏、有所收获点赞支持一下!

目前开通了面试技术交流群,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友

  • 方式①、发送如下图片至微信,长按识别,后台回复:加群;
  • 方式②、添加微信号:dkl88191,备注:来自CSDN
  • 方式③、微信搜索公众号:Python学习与数据挖掘,后台回复:加群

Python一键替换证件照背景,还用去照相馆?相关推荐

  1. 替换证件照背景颜色仅需十行Python代码

    本文教大家通过Python程序替换证件照背景颜色,以后更换证件照背景就不会再苦恼了. 本文教大家通过Python程序替换证件照背景颜色,以后更换证件照背景就不会再苦恼了. 思路: 先去掉原照片的背景颜 ...

  2. Python一键更换证件照背景色

    Python一键更换证件照背景色 PS: 也是从网上各个帖子中学习的Python,因此代码的格式以及内容有粘贴网上其他大神的代码,如有侵权请告知删除 示例界面 import cv2 import nu ...

  3. 【自己动手Python编程替换视频会议背景】

    自己动手Python编程替换视频会议背景 1. 内容: 2. 设计流程: 3. 程序设计: 1. 内容: (1) 基于摄像头或视频进行视频分解与合成: (2) 图片融合,背景镂空: (3) 交互技术, ...

  4. 用Python制作可视化GUI界面,一键实现证件照背景颜色的替换

    今天,我们来分享一下如何通过Python的十来行代码来替换证件照的背景颜色,那么在最后,小编也会将上述的流程制作成一个GUI界面来方便大家使用.关于界面的大致模样其实和先前的相差不大,大家应该都看过上 ...

  5. 【Python】用Python制作可视化GUI界面,一键实现证件照背景颜色的替换

    今天,我们来分享一下如何通过Python的十来行代码来替换证件照的背景颜色,那么在最后,小编也会将上述的流程制作成一个GUI界面来方便大家使用.关于界面的大致模样其实和先前的相差不大,大家应该都看过上 ...

  6. 如何给证件照替换背景颜色?一键替换证件照背景色的方法

    证件照换背景的优点 在申请各种证件时,一张合格的证件照是必不可少的.然而,在拍摄证件照时,往往因为背景.光线等问题导致照片质量不佳.因此,将证件照的背景更换为统一的纯色背景就显得尤为重要. 证件照换背 ...

  7. 深度学习项目实践——制作一个能一键更换证件照背景的软件

    背景 前段时间找工作,做简历的时候看中了一个红色为底色的模板,但是发现我的证件照只有蓝色底色的,这和简历不搭啊!有点强迫症的我怎么能忍!果断上网找方法换证件照底色(不要问我为什么不去重新拍一张,因为我 ...

  8. 证件照还用去照相馆别费钱了自己就能搞定

    证件照制作是一项艰巨的任务,许多机构严格地指导要求通过拍摄的照片必须满足所有的表达要求.本文探讨了证件照制作中的重要步骤及其具体操作,包括人物和背景拍摄.照片处理.照片格式转换和最终作等操作. 首先, ...

  9. python一键替换_python 实现批量替换文本中的某部分内容

    一.介绍 在做YOLOv3项目时,会需要将文本文件中的某部分内容进行批量替换和修改,所以编写了python程序批量替换所有文本文件中特定部分的内容. 二.代码实现 import re import o ...

  10. 证件照片怎么改底色?证件照背景颜色怎么替换?

    全国计算机等级考试已经开始报名了,我们在提交报名信息时,发现平台会对证件照背景颜色有具体要求,如果想要更改证件照底色的话就需要用到证件照换背景(https://www.yasuotu.com/butt ...

最新文章

  1. 使用leangoo做多团队敏捷开发项目管理
  2. 谷歌发布史上最强人类大脑「地图」,1.3亿个突触,在线可视3D神经元「森林」!...
  3. 线程安全机制 python
  4. Bengio实验室推出开源AI药物研发平台,唐建领队、清北上交学生参与开发
  5. VMWare 虚拟机启动报“内部错误”的解决办法
  6. ip pim spare 源树 和 共享树_iPhone通过内置应用与电脑传输共享文件指南
  7. terminated 线程_Java【多线程系列】JUC线程池—2. 原理(二)、Callable和Future
  8. 《HTML5+CSS3网页设计入门必读》——1.11 小结
  9. web字体设置成平方字体_Web字体正确完成
  10. 博客营销为何这么神奇而不被淘汰的
  11. 8 款免费的 MySQL 数据库建模工具
  12. php命名空间的设计思想和缺点
  13. linux中安装openoffice
  14. 从头撸到脚,SpringBoot 就一篇全搞定!
  15. python 素数最快_列出N以下所有素数的最快方法
  16. hdu 6656 2019杭电多校第7场 期望题
  17. linux aria进程,Linux安装 Aria2
  18. 我们文本分析了贾跃亭2017年全部公开信,发现他近期喜欢用“责任”“致歉”
  19. 服务器1075错误服务修复,错误1075:依存服务不存在,或已标记为删除
  20. Win10电脑老是自动下载乱起八糟的应用?篡改浏览器主页?解决方法

热门文章

  1. 合适新手入门的串口屏学习分享
  2. matlab 合并fig文件,Matlab合并多个.fig文件
  3. 微信电脑pc端显示不了头像和加载不了表情包,怎么解决该问题
  4. 惠普触控板使用指南_手势操作更简便 笔记本触控板使用简介
  5. 常见植被指数总结(一)
  6. Linux 常用命令和快捷键
  7. 通过使用第三方开源jar包sigar.jar我们可以获得本地的信息
  8. 阿里云 OSS图片处理
  9. 网上做什么可以赚钱?网上最靠谱的赚钱方法
  10. apple 关闭双重认证_这次Apple可以关闭工作吗?