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

本文详细介绍了SemanticHumanMatting的原理,包括T-Net和M-Net的工作机制,以及项目文件结构、数据集(含34427张图像)的使用和下载。还涵盖了训练流程,包括数据准备、模型训练和图像测试的方法。提供项目代码下载链接。
摘要由CSDN通过智能技术生成


哔哩哔哩详细解说(进主页看全集):
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
  • 21
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小树苗m

您的打赏,是我的动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值