文章目录
1. 预备知识
1.1 问题定义
图像由前景和背景组成,抠图的感兴趣区域是前景(比如人像),目的是将前景和背景分离,用公式表达如下: I i = α i F i + ( 1 − α i ) B i ( 1.1 ) I_i=\alpha_i F_i+(1-\alpha_i)B_i \qquad (1.1) Ii=αiFi+(1−αi)Bi(1.1)其中: i i i表示像素索引, F F F表示前景, B B B表示背景, α \alpha α表示像素属于前景的概率,取值范围为0~1(人像分割任务中的 α \alpha α取值为0或1)
1.2 Trimap(三元图)
(图片来源:论文 Deep Image Matting)
- 三元图是对原始图片的前景、背景和未知区域进行标记的灰度图,前景、背景和未知区域的像素取值分别为255,0,128。三元图通常作为抠图算法的先验知识。
2. 算法总结
这里只对经典或者效果好的AI抠图算法进行总结,根据是否需要先验信息可分为trimap-based,background-based和trimap-free两类,目前的主流是trimap-free算法。
2.1 Trimap-based Algorithms
2.1.1 Deep Image Matting (2017)
Paper:https://arxiv.org/pdf/1703.03872.pdf
Code:https://github.com/foamliu/Deep-Image-Matting-PyTorch
网络包括Encoder-Decoder阶段和Refinement阶段:
-
Encoder-Decoder阶段的输入为RGB图像的patch和对应trimap的concat,所以包含4通道,经过编码和解码后输出单通道的raw alpha pred。该阶段的loss由两部分组成:
第一部分是预测的alpha和真实的alpha之间的绝对误差,考虑到L1 loss在0处不可微,使用Charbonnier Loss去近似: L α i = ( α p i − α g i ) 2 + ϵ 2 ( 2.1.1.1 ) L_{\alpha}^{i}=\sqrt{(\alpha_{p}^{i}-\alpha_g^i)^2+\epsilon^2}\qquad(2.1.1.1) Lαi=(αpi−αg