使用U2-Net深层网络实现——证件照生成程序
效果预览:http://map.gnnu.work/rm21/qy/profilepicture
使用到:
1.pytorch 加载分割模型
2.PIL 更加方便地操作图像
2.U2-net 网络将人像的轮廓从图像中分割出来
具体实现步骤如下:
1.原始图
原始图
2.从原始图片获得Alpha图
# 从原始图片获得Alpha图 org:原始图的路径 返回得到的Alpha图
def seg_trimap(org):image = Image.open(org)img = np.array(image)net = pre_net()inputs_test = pre_test_data(img)d1, d2, d3, d4, d5, d6, d7 = net(inputs_test)# normalizationpred = d1[:, 0, :, :]pred = normPRED(pred)# 将数据转换成图片im = get_im(pred)# im.save(alpha)sp = image.size# 根据原始图片调整尺寸imo = im.resize((sp[0], sp[1]), resample=Image.BILINEAR)imo.save("alpha_resize111.jpg")return imoreturn imo
Alpha图
3.将Alpha图转成trimap图
def to_standard_trimap(alpha):# Alpha图生成 trimap# image = Image.open(alpha)image = alpha;# image = image.convert("P")# image_file.save('resize_trimap.png')sp = image.sizewidth = sp[0]height = sp[1]for yh in range(height):for xw in range(width):dot = (xw, yh)color_d_arr = image.getpixel(dot)color_d=color_d_arr[0]if 0 < color_d <= 60:image.putpixel(dot, (0,0,0))if 60 < color_d <= 200:image.putpixel(dot, (128,128,128))if 200 < color_d <= 255:image.putpixel(dot, (255,255,255))image.save("trimap1111.jpg")return image
trimap图
4.通过原始图和trimap图结合背景色生成最终结果
def to_background(org, resize_trimap, id_image, color):"""org:原始图片resize_trimap:trimapid_image:新图片color: 背景颜色"""scale = 1.0image = load_image(org, "RGB", scale, "box")trimap = load_image(resize_trimap, "GRAY", scale, "nearest")im = Image.open(org)# estimate alpha from image and trimaptry:alpha = estimate_alpha_cf(image, trimap)except:print("异常")print(org)a = "-1"return anew_background = Image.new('RGB', im.size, color_dict[color])new_background.save("bj.png")# load new backgroundnew_background = load_image("bj.png", "RGB", scale, "box")# estimate foreground from image and alphaforeground, background = estimate_foreground_ml(image, alpha, return_background=True)# blend foreground with background and alphanew_image = blend(foreground, new_background, alpha)save_image(id_image, new_image)return id_image
结果图
至此,生成纯色证件照的功能已实现。
接下来使用Vue写程序界面以提供用户交互,由于证件照有特定的尺寸,此处借助vue-croppe实现让用户在前端将纯色证件照剪切成一寸或者两寸。
代码较多不进行展示,有需要跳转到文末获取源代码。
界面实现效果如下:
源码如下:
后端:https://github.com/QiuYang01/profilepicture-server
前端:https://github.com/QiuYang01/profilepicture-client
使用U2-Net深层网络实现——证件照生成程序相关推荐
- 爬虫分类——通用网络爬虫、聚焦网络爬虫、增量式网络爬虫、深层网络爬虫
爬虫分类 网络爬虫按照系统结构和实现技术,大致可以分为以下几种类型:通用网络爬虫.聚焦网络爬虫.增量式网络爬虫.深层网络爬虫. 实际的网络爬虫系统通常是几种爬虫技术相结合实现的 通用网络爬虫 通用网络 ...
- 4.2 深层网络中的前向传播-深度学习-Stanford吴恩达教授
←上一篇 ↓↑ 下一篇→ 4.1 深层神经网络 回到目录 4.3 核对矩阵的维数 深层网络中的前向传播 (Forward Propagation in a Deep Network) 跟往常一样,我们 ...
- 从自我学习到深层网络
从自我学习到深层网络 From Ufldl Jump to: navigation, search 在前一节中,我们利用自编码器来学习输入至 softmax 或 logistic 回归分类器的特 ...
- Stanford UFLDL教程 从自我学习到深层网络
从自我学习到深层网络 在前一节中,我们利用自编码器来学习输入至 softmax 或 logistic 回归分类器的特征.这些特征仅利用未标注数据学习获得.在本节中,我们描述如何利用已标注数据进行微调, ...
- TFboys:使用Tensorflow搭建深层网络分类器
前言 根据官方文档整理而来的,主要是对Iris数据集进行分类.使用tf.contrib.learn.tf.contrib.learn快速搭建一个深层网络分类器, 步骤 导入csv数据 搭建网络分类器 ...
- Deep Web(深层网络or深度网络)
深层网络:揭示网络中隐藏的价值 World Wide Web(简称WWW,或Web网)自20世纪90年代发明以来就一直呈现蓬勃发展之势,到今天为止其蕴含着海量的丰富资源,包罗万象,是人类一笔宝贵的 ...
- 深度学习入门笔记(八):深层网络的原理
欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...
- 茹立云:深层网络搜索核心技术研讨
[讲师]茹立云,搜索事业部总经理 [内容简介] 自google在90年代末推出搜索引擎引来,搜索引擎的技术有了长足的进步,尤其在搜索结果的及时性.精准性等方面有了很大突破.但是这十多年来,搜索引擎一直 ...
- (未完)论文笔记——深层网络的公理化属性(Axiomatic Attribution for Deep Networks)
论文--Axiomatic Attribution for Deep Networks 1. 介绍 2. 基本公理 2.1 公理:敏感性(a) 2.2 公理:实现不变性 Axiomatic Attri ...
最新文章
- 【译】Go语言声明语法
- 测试ASP_NET 生命周期
- IMOAutocompletionViewController
- Serv-u 10.3 的图文安装教程及使用方法
- Linux内核--内核地址空间分布和进程地址空间
- CORDIC算法VHDL设计实现及仿真
- 学习ASP.NET Core,你必须知道“中间件”是什么?中间件如何注册?请求处理管道是如何通过中间件构建的?
- Flask-WTF 之防止CSRF***学习记录
- 想要实现自动驾驶?高精度地图不可或缺
- 帮内推 | 免费送50个推荐算法工程师的高薪offer!
- Ubuntu | 安装Pcan驱动和pcanview
- Hibernate主键生成策略
- 微信公众号-网页内实现微信支付
- 世界需要简化第四篇:从地面发射人造卫星或战术导弹,如何控制其运行轨道?——算法经高度抽象简化,所有下标经仔细核对
- Oracle导出FSG,SQL语句 - FSG行集、列集定义导出
- cai鸡——处女作博客“横空出世”
- 股票查询接口常见的证券编码规则是怎样的?
- stm32f103电子钟心得体会_STM32时钟小结
- 2021-12-29 迈向程序猿的第五十七步
- 华为云-容器引擎CCE-部署Nginx应用