Single Image Reflection Removal through Cascaded Refinement论文阅读笔记

这篇文章做了啥

迭代式的单图片反射消除,有一说一,这篇文章让我想起来之前看到的一篇去雨的RESCAN,去雨的一篇文章,也是利用迭代式的思想,不断的去除图像中的雨,使得每一次迭代对于输入进行逐渐优化。RESCAN这篇文章也是利用的卷积LSTM,并且下一次是对上一次的迭代的结果进行优化。代码链接,流程图如下,

上图的意思是,下一次输入的图片是上一次输出的结果,并且feature的利用也是遵循lstm传递的思想
具体的forward的代码block如下

    def forward(self, x):
        ori = x
        old_states = [None for _ in range(len(self.rnns))]
        oups = []

        for i in range(settings.stage_num):
            states = []
            for rnn, state in zip(self.rnns, old_states):
                x, st = rnn(x, state)
                states.append(st)
            x = self.dec(x)
            
            if settings.frame == 'Add' and i > 0:
                x = x + Variable(oups[-1].data)

            oups.append(x)
            old_states = states.copy()
            x = ori - x

        return oups
这篇文章的motivation是啥

作者说,预测透射区域和反射区域应该是相辅相成的,所以有两个branch来进行反光消除,通过预测反光的区域,能够使得图片去除反光区域更加干净。

这篇文章的网络结构

对于每一个time step的网络结构如下

上图中,输入的\(\hat{T}\)\(\hat{R}\)是网络预测的结果,和原图\(I\)一起concate成9通道的图片送到两个网络中,一个网络是\(G_T\),一个网络是\(G_R\),下标\(T\)和下标\(R\)分别表示transmission和reflection,即透射图和反射图。作者在论文中说,这两个网络结构式一样的,但是作用不一样,一个是预测transmission,一个是预测reflection。encoder一共用了11个conv-relu blocks。decoder用了8个conv-relu blocks。作者说这两个backbone都是卷积lstm,结合到有一个iterative的想法(目前为止并没有开源代码),这个应该是和RESCAN的结构是相似的。

因为是下一个time step是对上一个time step的输出结果的优化,所以,整个训练的pipline如下

loss函数

作者一共定义了4个loss。
第一个loss是重建loss,定义为

两路branch产生的\(\hat{T}\)\(\hat{R}\)加在一起,和原图做差,理论上来说应该是和原图一样的。
同时对于透射图,加了一个perceptual loss函数,定义如下

同时,作者对于透视图和反光图定义了一个mse loss,这里的反光图作者用的是直接做差得到的residual。以及增加了一个对抗的loss,感觉现在如果GAN不做创新的话,大多数也不会去独特的声称提出了某种GAN,只是作为一种提高精度的trick。对抗loss的权重较低。

实验

作者自己拍了一个数据集,并且命名为nature。200张训练,20张测试,感觉还是太少了。如下表格所示

作者的方法达到了比较好的结果

可以看一下,去除的也并不是特别干净,尤其是最后一行,感觉需要一个很大的数据集合来做。
同时作者也做了一些ablation study,比如time step

在time step为3的时候,结果能够达到最好。

总结一下

总的来说,作者用了两个比较重要的思想,第一个是,iterative,第二个是,可以同时预测反光区域和透射区域,二者应该是相辅相成的。记得之前看过南理工一篇讲的是用GAN做shadow remove就有说,阴影区域和其他区域应该是相辅相成的,所以作者同时预测了两个区域来提高阴影去除的精度。
感觉iterative在一些神经网络的任务上,还是由可以继续做一些任务的空间的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值