抠人像可抠头发丝的模型-软语义分割(Semantic Human Matting)

软语义分割(Semantic Human Matting)

    • 一、Semantic Human Matting原理
    • 二、Semantic Human Matting 项目文件介绍
    • 三、数据集介绍及下载地址
    • 四、训练流程
    • 五、项目代码下载地址

哔哩哔哩详细解说(进主页看全集):
https://www.bilibili.com/video/BV14A4m137NV/?vd_source=ac50a256a9152f1131aa26eb6620759d

一、Semantic Human Matting原理

在这里插入图片描述

Semantatic Human Matting 文章链接请点击这里
在这里插入图片描述
第一步:将输入图像送入到T-Net中进行计算,得到三张图:Bs、Fs和Us.
T-Net:就是一个编码和解码的过程,和常见的语义分割网络类似
Bs:确定的背景区
Fs:确定的前景区
Us: 不确定的区域
第二步: 将得到的Bs、Fs、Us和原始输入图拼接,此时得到6通道(原始输入图像3通道+Bs+Fs+Us)的数据,再将得到的此数据送入到M-Net网络当中,得到一张图像αr。
M-Net: 网络同样是一个编码和解码的过程
αr:是一个1通道的预测图,该图不是最终的预测结果
第三步:将M-Net的预测结果和T-Net预测结果当中的Us相乘,然后和T-Net预测结果当中的Fs相加,得到该模型的最终预测结果αp。公式如下:
在这里插入图片描述

以上就是Semantatic Human Matting网络的基本原理

二、Semantic Human Matting 项目文件介绍

项目结构如下图所示,总共有3个一级文件夹(data、model、run),3个运行脚本(train.py、test_camera.py、test_image.py)和1个readme.md,说明如下:
在这里插入图片描述
data:处理相关数据的脚本和数据存放
------datas:存储训练数据
------original:原始图像数据存储
------dataset.py:数据读取脚本
------gen_trimap.py:产生trimap图像,及前景、背景、不确定区域
------get_traintxt_and_maskimage.py:生成训练图像序列train.txt并产生mask文件
------knn_matting.py:生成alpha图像,依赖于原图和mask
------split_train_val.py:划分训练集和验证集
model:网络模型搭建
------M_Net.py:对应图中的M_Net
------T_Net.py:对应图中的T_Net
------network.py:调用T_Net和M_Net搭建网络
run:训练模型和测试图像保存
trian.py: 训练脚本
test_image.py: 测试图像脚本
test_camera.py: 通过调用视像头测试

三、数据集介绍及下载地址

使用的数据集是北京玩星汇聚科技有限公司所高质量标注并开源的一份人像抠图(matting) 数据集,总共有 34427 张图像和对应的标签结果图。目录结构如下:
在这里插入图片描述
clip_img: 存放原始图像
在这里插入图片描述
matting:存放标签文件的png四通道图像,是根据标签扣除掉背景的图像。
在这里插入图片描述
全部数据集的下载地址如下:
链接:https://pan.baidu.com/s/1ojILLgY8xGCbDcbo5H1ilw?pwd=n5qk
提取码:n5qk
由于全部数据集非常庞大,我从中随便拿出896张图像进行测试,数据集的下载地址如下:
链接:https://pan.baidu.com/s/1IgOoIzrMULx4aVIMJx_vOA?pwd=c7c7
提取码:c7c7
将数据集下载并解压出来后,放在data/original文件夹下面,如下图所示:
在这里插入图片描述

四、训练流程

该网络训练方法有两种,第一种是先训练T-Net,再训练M-Net;第二种是端到端的训练方法,即两个网络一起训练。本代码当中的训练方法是第一种,大家可以自己修改成第二种。训练及测试具体过程如下:
4.1、数据准备:
(1)将你自己的原始图像放在image/original/clip_img,对应的标签文件放image/original/matting文件当中,原图和标签文件要一一对应。
(2)使用get_traintxt_and_maskimage.py文件生成trains.txt和mask文件。
(3)使用gen_trimap.py文件生成trimap图像,trimap是训练需要用到的Bs、Fs、Us。
(4)使用knn_matting.py文件生成alpha图像,保存在alpha文件下,对应原理图中的alpha
(5)使用split_train_val.py文件划分数据集,产生trian.txt和val.txt文件
(6)为方便训练,将原图复制一份到datas文件夹下,改名为image(若不复制一份,可修改文件加载路径)
按照以上步骤就可以制作成相对应的数据集,训练过程中使用的文件datas路径下面的三个文件夹中的图像和两个txt文件。文件结构如下:
在这里插入图片描述

4.2、模型训练:
如果路径没有改变,那么,就只需要修改训练迭代次数等相关参数就可以直接运行trian.py文件进行训练,训练之后的模型存放再run文件目录之下,保存效果最好和最后一个模型。
4.3、图像测试:
运行test_image.py文件就可以直接测试了
运行test_camera.py脚本可以调用摄像头进行测试

五、项目代码下载地址

  1. 百度网盘:
    链接:https://pan.baidu.com/s/1IV_3XFUe-A9burRk9RKqoQ?pwd=ip6p
    提取码:ip6p
  2. gitee:
    https://gitee.com/chenzhenyutree/semantic_matting.git

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2799294.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

极狐GitLab 如何重置管理员密码

在之前安装极狐GitLab 的文章中提到,极狐GitLab 安装成功后,初始登录密码会放在 /etc/gitlab/initial_root_password 文件下,用户可以使用初始用户名 root 及文件内的初始密码即可登录极狐GitLab 实例。 但是有些情况下,可能会发…

Sui主网升级至V1.18.1版本

Sui主网现已升级至V1.18.1版本,同时Sui协议升级至36版本。其他升级要点如下所示: #15794 解析错误不再停止编译,并且后续编译阶段的诊断信息也可能包含在编译结果中,所以开发者可能会看到比以前更多的编译器诊断信息。 #12337 …

基于springboot + vue实现的前后端分离-酒店管理系统

项目介绍 基于springboot vue实现的酒店管理系统一共有酒店管理员和用户这两种角色。 管理员功能 登录:管理员可以通过登录功能进入系统,确保只有授权人员可以访问系统。用户管理:管理员可以添加、编辑和删除酒店的用户,包括前…

线性代数:向量组及其线性相关性

目录 向量组 向量组的线性表示 向量组等价 相关定理 向量组的线性相关性 定理 向量组 向量组的线性表示 向量组等价 相关定理 向量组的线性相关性 定理

物联网在智慧景区中的应用:提升游客体验与运营效率

目录 一、物联网技术概述 二、物联网在智慧景区中的应用 1、智能门票系统 2、智能导览系统 3、智能安全监控系统 4、智能环保系统 三、物联网在智慧景区中提升游客体验 1、提高游览便捷性 2、个性化服务体验 3、提升游客安全感 四、物联网在智慧景区中提升运营效率 …

职业技能鉴定服务中心前端静态页面(官网+证书查询)

有个朋友想做职业技能培训,会发证书,证书可以在自己网站可查。想做一个这样的网站,而且要特别土,一眼看上去像xxx官方网站,像jsp .net技术开发的网站。用htmlcssjquery还原了这样子一个前端页面,这里分享给…

【嵌入式学习】QT-Day2-Qt基础

1> 思维导图 https://lingjun.life/wiki/EmbeddedNote/20QT 2>登录界面优化 使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff…

聚道云软件连接器:高科技企业财务自动化,提升效率准确性!

客户介绍: 某互联信息技术有限公司是一家专业从事信息技术服务的高科技企业,在业内享有较高的知名度和影响力。近年来,公司业务快速发展,对信息化建设提出了更高的要求。 客户痛点: 在传统情况下,该公司的…

CSS3中盒子居中

(1)利用定位(子绝父相)、margin-left、和margin-top实现 (2)利用定位(子绝父相)、transfrom属性实现 (3)利用flex布局实现盒子居中

C#算法(12)—对图像像素做X/Y方向的偏移

我们在上位机开发领域有时候需要对获取的图像的像素做整体的偏移,比如所有像素在X方向上偏移几个像素,或者所有像素在Y方向上偏移几个像素,本文就是开发了像素整体偏移算法来解决这个问题。 public partial class Form1 : Form{public Form1(){InitializeComponent()

亿道丨三防平板电脑厂商哪家好丨麒麟系统三防平板PAD

随着科技的飞速发展,人们对于移动设备的需求越来越高。然而,在不同的行业应用场景下,常规的智能平板往往无法满足特殊的工作要求。,亿道三防平板,将高可靠性与卓越性能高度结合,为各行各业提供卓越的移动解…

Python Web开发记录 Day1:HTML

名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、HTML1、前端引入和HTML标签①前端引入②浏览…

Java SourceDataLine 播放MP3音频 显示频谱

Java SourceDataLine 播放MP3音频 显示频谱 1 添加依赖2 快速傅里叶变换2.1 FFT.java2.2 Complex.java 3 音频播放3.1 Player.java3.1 XPlayer.java 4 显示频谱5 结果 项目Value音频格式 添加依赖*.wav(JDK 原生支持)*.pcm(JDK 原生支持)*.au(JDK 原生支持)*.aiff(JDK 原生支持…

算法-搜索二维矩阵 II

1、题目来源 240. 搜索二维矩阵 II - 力扣(LeetCode) 2、题目描述 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 示例 1&#x…

电路设计(25)——4位数字频率计的multism仿真及PCB设计

1.设计要求 使用4位数码管,显示输入信号的频率。完成功能仿真后,用AD软件,画出原理图以及PCB。 2.电路设计 输入信号的参数为: 可见,输入为168HZ,测量值为170HZ,误差在可接受的范围内。 3.PCB设…

【紫光同创国产FPGA教程】——(盘古EU22K开发板/PGL22G第三章)数码管静态显示实验例程

本原创教程由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处(www.meyesemi.com) 适用于板卡型号: 紫光同创PGL22G开发平台(盘古EU 22K) 仅需一根TypcC线&#xff0…

Flink Sql 自定义实现 kudu connector

Flink Sql 自定义实现 kudu connector 原理实现 众所周知啊,flinksql 中与其他的存储做数据的传输连接的时候,是需要有独特的连接器的,mysql redis es hbase kudu ,不同的存储他们自己使用的协议与操作都不一样,所以需…

Linix与Windows上使用nc命令测试某一个服务器端口网络是否正常可访问详细安装及测试步骤

一、windows 1、下载nc安装包 https://nszyf.lanzoum.com/ihtqS0v0lwwh 2、下载后解压放置在自己电脑合适的位置,并且配置到环境变量中 3、配置成功环境变量,winr打开运行,输入cmd,回车,打开一个终端测试 测试成功…

【Java EE初阶二十二】https的简单理解

1. 初识https 当前网络上,主要都是 HTTPS 了,很少能见到 HTTP.实际上 HTTPS 也是基于 HTTP.只不过 HTTPS 在 HTTP 的基础之上, 引入了"加密"机制;引入 HTTPS 防止你的数据被黑客篡改 ; HTTPS 就是一个重要的保护措施.之所以能够安全, 最关键的…

unity学习(35)——角色选取界面(填坑)

切换并激活,现在看来有难度!还是必须解决的。 初步想法是挂在camera上,camera上的脚本在初始化是隐藏下层canvas,这是Update还一直可以使用,利用state标志位进行判断(决定是否显示canvas) &…