论文阅读:Semantic Human Matting

论文地址:https://arxiv.org/pdf/1809.01354.pdf

内容简介
  • 这个网络是用来做人像抠图的(Matting),只能抠人不能抠别的
  • 制作了一个很大的高质量人像抠图数据集(52511train+1400test),据论文介绍花了1200小时;不过好像还没开源
  • 属于自动抠图,不需要手动输入额外trimap
网络结构

在这里插入图片描述

简单来说就是把两个网络装起来做个pipeline,其中:

  • T-Net: 负责进行trimap生成。虽然本文并不需要手工去输入trimap,但是对于matting这个任务来说,trimap还是需要的。
    因此这里采用了自动生成的trimap。trimap由三部分组成,前景区域,背景区域,未知区域,那么其实就相当于一个语义分割问题。由于这里前景类别是固定的(人),那么分割出来的人就可以作为前景,在此基础上进行dirate就可以得到未知区域,剩下的就是背景了。
  • M-Net: 负责生成alpha matte。那这个用的抠图问题中经典的Encoder-Decoder结构了,没有什么特别的。输入是原图和T-Net输出叠加得到的六通道特征图,Encoder用的是VGG16,修改了输入为六通道,然后把conv6、deconv6去掉了(参数过多容易造成过拟合)
  • Fusion: 其实就是这么个公式:
    α p = F s + U s α r \alpha_{p}=F_{s}+U_{s} \alpha_{r} αp=Fs+Usαr
    其中, α p \alpha_{p} αp是Fusion模块的输出,即网络最终得到的alpha matte; F s F_{s} Fs为前景的概率图,表示每个像素属于前景的概率; U s U_{s} Us为未知区域的概率图,表示每个像素属于未知区域的概率; α r \alpha_{r} αr是M-Net输出的粗alpha matte。
    这个公式的大概意思是,如果 U s U_{s} Us接近0,表示这块基本是确定区域,那么我们可以直接用trimap级别的信息(因为这个时候 α \alpha α不是0就是1,再跑个网络反而可能不准);而如果 U s U_{s} Us接近1,表示这块不确定,那么我们主要利用的就是matting网络下的结果。
Loss

用了两种loss:

  • alpha-prediction loss: 在Deep Image Matting一文中被提出。其实就是预测alpha matte和gt alpha matte之间的逐像素差绝对值。不过因为绝对值本身是一次的不可导,因此这里先平方,加上一个小项 ϵ \epsilon ϵ,再开根号来进行近似
    L α i = ( α p i − α g i ) 2 + ϵ 2 , α p i , α g i ∈ [ 0 , 1 ] \mathcal{L}_{\alpha}^{i}=\sqrt{\left(\alpha_{p}^{i}-\alpha_{g}^{i}\right)^{2}+\epsilon^{2}}, \quad \alpha_{p}^{i}, \alpha_{g}^{i} \in[0,1] Lαi=(αpiαgi)2+ϵ2 ,αpi,αgi[0,1]
    其中 α p i \alpha_{p}^{i} αpi为预测 α \alpha α值, α g i \alpha_{g}^{i} αgi为真实 α \alpha α值, ϵ = 1 0 − 6 \epsilon={10^{ - 6}} ϵ=106
  • classification loss:
    ∥ F s + U s α r − α g ∥ \left\|F_{s}+U_{s} \alpha_{r}-\alpha_{g}\right\| Fs+Usαrαg
    其实变形下就是
    ∥ α p − α g ∥ \left\| \alpha_{p}-\alpha_{g}\right\| αpαg
    没太懂这个损失的意义,但是从消融研究看确实是有用的。

最终的损失是这两者的加权和:
L = L p + λ L t \mathcal{L}=\mathcal{L}_{p}+\lambda \mathcal{L}_{t} L=Lp+λLt
λ \lambda λ在文中取0.01。

训练

由于组成pipline的两个网络其任务并不相同,一个是生成trimap(分割任务),一个是生成alpha matte(matting任务),因此这两个网络只能拆开来先各自pretrain,然后最后“真正的训练”其实是在这两个pretrain网络上进行finetune。

其他

语义分割和Matting的区别:
语义分割更关注某一个像素进行尽可能精准的分类,算是分类问题;Matting更关注给每个像素分配一个透明度(也就是α值),算是回归问题。因此,他们两个在loss函数的设计上也会有很大差异。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值