图像修复:High-Resolution Image Inpainting using Multi-Scale Neural Patch Synthesis(CVPR2017)

project website:http://www.harryyang.org/inpainting/
code:https://github.com/leehomyc/Faster-High-Res-Neural-Inpainting
参考博客:
https://www.cnblogs.com/wenshinlee/p/12444785.html
https://blog.youkuaiyun.com/weixin_42360095/article/details/89525787

模型整体框架

在这里插入图片描述
整体框架如上,图像修复部分被限制了,为固定的中心区域。如输入为128 x 128,则待修复区域为中心的 64 x 64
网络分2个模块:

Content Network

x 0 x_0 x0:去除了中心部分的输入(中心部分填补均值)
f ( x 0 ) f(x_0) f(x0):Content Network输出,大小为 64 x 64 表示待修补区域
h ( x , R ) h(x,R) h(x,R):Ground Truth,即原图的中心区域

即一个Encode Decode结构,由网络自动学习得到中心区域。

Texture Network

x x x:即 x 0 + f ( x 0 ) x_0 + f(x_0) x0+f(x0),由content Network生成的结果补全输入后,整体做为Texture Network的输入。

其网络为基于ImageNet训练好的VGG网络,VGG只用来计算Loss用于训练Content Network。其思想为利用训练好的VGG的提取特征能力,因此只提取其中间层的特征,无需整个VGG网络。其作用看其loss就明白了。

Loss

x ~ i + 1 = arg ⁡ min ⁡ x E c ( h ( x , R ) , h ( x i , R ) ) + α E t ( ϕ t ( x ) , R ϕ ) + β Υ ( x ) (1) \begin{aligned} \tilde{x}_{i+1}=& \underset{x}{\arg \min } E_{c}\left(h(x, R), h\left(x_{i}, R\right)\right) \\ &+\alpha E_{t}\left(\phi_{t}(x), R^{\phi}\right)+\beta \Upsilon(x) \end{aligned}\tag 1 x~i+1=xargminEc(h(x,R),h(xi,R))+αEt(ϕt(x),Rϕ)+βΥ(x)(1)
其中 i = 1 , 2 , . . . , N i = 1,2,... , N i=1,2,...,N为多尺度修复。针对大图(512 x 512),下采样修复后在逐层上采样refine。(这个多尺度形式总觉得怪怪的)

Content Network Loss

predict 和 GT 的 L2 Loss
E c ( h ( x , R ) , h ( x i , R ) ) = ∥ h ( x , R ) − h ( x i , R ) ∥ 2 2 (2) E_{c}\left(h(x, R), h\left(x_{i}, R\right)\right)=\left\|h(x, R)-h\left(x_{i}, R\right)\right\|_{2}^{2} \tag 2 Ec(h(x,R),h(xi,R))=h(x,R)h(xi,R)22(2)

还可参考GAN的做法,加一个判别器 D ,去增强Content Network
L a d v ( x , x g , R ) = max ⁡ D E x ∈ X [ log ⁡ ( D ( h ( x g , R ) ) ) ) ] + log ⁡ ( 1 − D ( f ( x ) ) ) ] \begin{aligned} L_{a d v}\left(x, x_{g}, R\right)=\max _{D} E_{x \in \mathcal{X}}\left[\log \left(D\left(h\left(x_{g}, R\right)\right)\right)\right.&)] \\ +\log (1-D(f(x)))] \end{aligned} Ladv(x,xg,R)=DmaxExX[log(D(h(xg,R)))+log(1D(f(x)))])]

最终Content Network Loss为2个Loss的加权组合

Texture Network Loss

为了让缺失部分的细节与已知部分的细节相似(进一步促使网络从已知部分的结构去生成缺失部分,如棋盘这种重复结构的图像修补应该有挺大帮助)。

以小窗口(如3x3)滑动取生成区域的特征图,去和已知区域部分的特征图匹配。选取和生成区域的特征图最相似的已知区域特征。用L2 Loss限制这2部分。
E t ( ϕ t ( x ) , R ) = 1 ∣ R ϕ ∣ ∑ i ∈ R ϕ ∥ h ( ϕ t ( x ) , P i ) − h ( ϕ t ( x ) , P n n ( i ) ) ∥ 2 2 (3) \begin{array}{l} E_{t}\left(\phi_{t}(x), R\right)= \\ \frac{1}{\left|R^{\phi}\right|} \sum_{i \in R^{\phi}}\left\|h\left(\phi_{t}(x), P_{i}\right)-h\left(\phi_{t}(x), P_{n n(i)}\right)\right\|_{2}^{2} \end{array} \tag 3 Et(ϕt(x),R)=Rϕ1iRϕh(ϕt(x),Pi)h(ϕt(x),Pnn(i))22(3)
n n ( i ) = arg ⁡ min ⁡ j ∈ N ( i ) ∧ j ∉ R ϕ ∥ h ( ϕ t ( x ) , P i ) − h ( ϕ t ( x ) , P j ) ∥ 2 2 (4) n n(i)=\underset{j \in \mathcal{N}(i) \wedge j \notin R^{\phi}}{\arg \min }\left\|h\left(\phi_{t}(x), P_{i}\right)-h\left(\phi_{t}(x), P_{j}\right)\right\|_{2}^{2} \tag 4 nn(i)=jN(i)j/Rϕargminh(ϕt(x),Pi)h(ϕt(x),Pj)22(4)

∣ R ϕ ∣ |R^{\phi}| Rϕ:用于求均值
ϕ t ( x ) \phi_{t}(x) ϕt(x):VGG网络输入 x x x提取的特征
P i P_i Pi:以 i 为中心的一小块区域(如以坐标 i 为中心的一个 3x3区域)
h ( ϕ t ( x ) , P i ) h\left(\phi_{t}(x), P_{i}\right) h(ϕt(x),Pi):提取 ϕ t ( x ) \phi_{t}(x) ϕt(x) P i P_i Pi区域的特征
n n ( i ) nn(i) nn(i):即已知区域里的特征,和 P i P_i Pi最相似的部分。

TV Loss

平滑 loss
Υ ( x ) = ∑ i , j ( ( x i , j + 1 − x i , j ) 2 + ( x i + 1 , j − x i , j ) 2 ) \Upsilon(x)=\sum_{i, j}\left(\left(x_{i, j+1}-x_{i, j}\right)^{2}+\left(x_{i+1, j}-x_{i, j}\right)^{2}\right) Υ(x)=i,j((xi,j+1xi,j)2+(xi+1,jxi,j)2)

结果

在这里插入图片描述

小结

  1. Content Network 思想直接,直接输出未知区域(周围区域 + 大量数据训练后模型的想象力)
  2. Texture Network 进一步匹配相似的已知区域,比较直观(人脑也是由已知去估计未知)
  3. 限制了只能生成图像中央的正方形区域。而且中心这么一大块区域,本身的恢复难度也很高。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值