Makeup-Go: Blind Reversion of Protrait Edit
Makeup-Go: Blind Reversion of Protrait Edit
Ying-Cong Chen, Xiaoyong Shen, Jiaya Jia
Intro
简单地说,就是将美图的操作blindly恢复。
Challenges
找到了这么几个问题:如果使用euclidean loss会因为component dominant effect产生问题。
Improvement Measure: 从principal component的角度来比较ground truth和network output。
分别对于美化过后的图与ground truth的图 和 neural network的输出 相减得到discrepancy maps:收集了$$1o^7$$个patches,并且都向量化;而后通过PCA降维,并根据系数 $$u$$ 递减排序。而后使用$$e{ij} = u_i^T v_j$$和$$\hat e{ij} = u_i^T \hat v_j$$表示第j个discrepancy pathch的第i个component。
对于第i个PCA component,定义了improvement measure
$$dj = \frac{\sum_j (e{ij}^2 - \hat e{ij}^2)}{\sum_j e{ij}^2}$$
然后根据实验发现,采用Euclidean loss会导致对于low ranking的component无法很好的拟合,因为largest component会把结果进行一定的加权;也就是说Euclidean loss从component的角度出发,是一种加权的loss。这种由于dominant component带来的bias问题叫做component dominant effect。
Our Framework
根据discrepancy map $$I_e = I_Y - T_X$$,可以得到$$I_Y = I_e + I_X$$。
Component Decomposition
对于vector space中的第i项可以降解为
$$v_y^{(i)} = u_i u_i^T v_y$$
而且每一个basis向量 $$u_i \in \mathbb{R}^{m^2}$$都可以重新银蛇到$$k_i \in \mathbb{R}^{m^2}$$,使得$$u_i^T v_y = k_i y$$,其中$$$$是一个convolution操作。
从而能够使得decomposition能够作为一部convolution操作
$$I^{(i)} = k'_i k_i I$$
Component-Specific Learning
当我们能够已经能够降解到每一个部分,下面就是如何学习它:用subnetwork来对每一个部分分别进行regression。每一个subnetwork一个特定的loss function,只在特定的component上进行regression。最终的image可以是将subnetwork的输出进行重构。这个框架叫做Component Regression Network (CRN)。
具体的实现细节如下:给定一个input image $$I_X$$,首先用3个convolution layer进行操作(3*3 kernel size和56个channel)。
Shrinking: 使用1convolution layer将feature map将特征维度从56降低到12,从而加速模型的train和test。
Nonlinear mapping: 将三个convolution layer中间通过PReLU进行stack,每一个convolutional layer都包含12个3×3的kernel。
Expending: reconstruction是dimension reduction的反向操作。使用1 convolution layer来讲feature map会64channel来作为最终的输出。
Experimental Setting
使用7个subnetworks来拟合7个top componenet,然后用一个shared subnetwork来拟合剩余的component。