4.9 风格代价函数(Style cost function)

利用CNN网络模型,图片的风格可以定义成第ll层隐藏层不同通道间激活函数的乘积(相关性)

选取第ll层隐藏层,各通道使用不同颜色标注。因为每个通道提取图片的特征不同,比如1通道(红色)提取的是图片的垂直纹理特征,2通道(黄色)提取的是图片的橙色背景特征。那么这两个通道的相关性越大,表示原始图片及既包含了垂直纹理也包含了该橙色背景;相关性越小,表示原始图片并没有同时包含这两个特征。即计算不同通道的相关性,反映了原始图片特征间的相互关系,从某种程度上刻画了图片的“风格”

接下来定义图片的风格矩阵(style matrix)为:

Gkk[l]=i=1nH[l]j=1nW[l]ai,j,k[l]ai,j,k[l]G_{kk^{'}}^{[l]} = \sum_{i = 1}^{n_{H}^{[l]}}{\sum_{j = 1}^{n_{W}^{[l]}}{a_{i, j,k}^{[l]}a_{i, j, k^{'}}^{[l]}}}

ai,j,k[l]a_{i, j, k}^{[l]}为隐藏层ll(i,j,k)(i,j,k)位置的激活项,iijjkk分别代表该位置的高度、宽度以及对应的通道数,k,kk^{'}分别表示不同通道。风格矩阵Gkk[l]G_{kk^{'}}^{[l]}计算第ll层隐藏层不同通道对应的所有激活函数输出和,ll层风格图像的矩阵G[l]G^{[l]}是一个nc×ncn_{c} \times n_{c}的矩阵:

若两个通道之间相似性高,则对应的Gkk[l]G_{kk^{'}}^{[l]}较大;若两个通道之间相似性低,则对应的Gkk[l]G_{kk^{'}}^{[l]}较小

风格矩阵Gkk[l](S)G_{kk'}^{[l](S)}表征了风格图片SSll层隐藏层的“风格”。生成图片GG也有Gkk[l](G)G_{kk'}^{[l](G)}Gkk[l](S)G_{kk'}^{[l](S)}Gkk[l](G)G_{kk'}^{[l](G)}越相近,则表示GG的风格越接近SS。即Jstyle[l](S,G)J^{[l]}_{style}(S,G)定义为:

Jstyle[l](S,G)=14×nC2×(nH×nW)2i=1nCj=1nC(Gij(S)Gij(G))2J_{style}^{[l]}(S,G) = \frac{1}{4 \times {n_C}^2 \times (n_H \times n_W)^2} \sum _{i=1}^{n_C}\sum_{j=1}^{n_C}(G^{(S)}_{ij} - G^{(G)}_{ij})^2

然后使用梯度下降算法,不断迭代修正GG的像素值,使Jstyle[l](S,G)J^{[l]}_{style}(S,G)不断减小

为了提取更多的“风格”,可以使用多层隐藏层,然后相加,表达式为:

Jstyle(S,G)=lλ[l]Jstyle[l](S,G)J_{style}(S,G)=\sum_l\lambda^{[l]}\cdot J^{[l]}_{style}(S,G)

λ[l]\lambda^{[l]}表示累加过程中各层Jstyle[l](S,G)J^{[l]}_{style}(S,G)的权重系数,为超参数

最终的cost function为:

J(G)=αJcontent(C,G)+βJstyle(S,G)J(G)=\alpha \cdot J_{content}(C,G)+\beta \cdot J_{style}(S,G)

之后用梯度下降法,或者更复杂的优化算法来找到一个合适的图像GG,并计算J(G)J(G)的最小值,这样将能够得到非常好看的结果

Last updated