留个笔记自用
BidNet: Binocular Image Dehazing without Explicit Disparity Estimation
做什么
Binocular Image Dehazing,双目图像去雾,也就是左右双眼的两张图(相机同理),左上左下分别是左眼与右眼看到的带雾的图像,右上和右下分别是左眼和右眼去雾之后的结果
做了什么
这里的I(x)表示雾化图像中每个像素x的值,J(x)表示清晰图像中每个像素x的值,t(x)表示透射率,A表示全局大气光
由此可见,图像去雾过程就是根据I(x)求解J(x)的过程。要求解出J(x),还需要根据I(x)求解出t(x)和A。
然后需要提前了解的是文章中有用到的一个核心部分non-local networks
假设考虑的是图片,那么大小为(1,H,W,1024),这里可以经由1×1卷积进行降维,并且1×1卷积是不会引起信息丢失的。然后得到左右(1,H,W,512),将两个reshape后构造成(1,HW,512)和(1,512,HW)的形式后,元素相乘得到(1,HW,HW),这里的意义是为了寻找相似性。然后经过对最后一维的softmax后得到(1,HW,HW)这里的意义是为了做空间注意力,就是找图片每个像素与其他所有位置像素的相关性,也就是上面相乘的相似性的归一化。然后另取一路也是1×1降维得到(1,H,W,512)后reshape成(1,HW,512),然后和前面的空间注意力(1,HW,HW)相乘得到(1,HW,512)就是将空间注意力直接引用到了原图上,就是对原图的每个点都做了跟其他所有点的关系权重和。然后1×1卷积恢复得到(1,H,W,1024),逐元素加上处理前的图片后得到最后的结果
Non-local的作用很简单,普通的卷积都是local的,因为只计算卷积核大小的图片部分,non-local则是能计算距离外的关系,所以模型是很强大的并且用的非常广泛,可以在很多地方无缝插入。
怎么做
整体结构分为两个部分,一个是Stereo Transmission Map Estimation Network(TMENet)部分,一个是Atmospheric Light Estimation Network(ALENet)两个部分
首先是第一部分也就是网络的主体部分,分为三个小部分,权重共享的特征提取部分,立体变换模块STM,精化模块
特征提取部分输入为Il即左目图像和Ir即右目图像,它们共同经过一个共享权重的encoder-decoder网络,没有什么特别的。
然后两者的输出进入STM模块后得到左透视图tl和右透视图tr,以下是STM的具体结构,这里文中说借鉴了non local networks的结构,在上面也有提到
具体公式
之后是最后一部分精化部分,这里也用了简单的几层平均池化来赋予它一点尺度信息,然后得到最后的tl和tr,再使用标准公式得到去雾图Jr和Jl。然后再加上基层卷积对最后的结果进行精化后完成
之后是第二大部分ALENet,这部分使用Il作为输入,经过一个encoder-decoder结构后得到A(x)
然后是LOSS部分
这里的普通的Jl和Jj就是GT去雾图,加了^号的就是预测出的去雾图,Jrl和Jrr就是精化过的去雾图,这个loss是为了使精化和未精化的去雾结果均接近GT
这里的LOSS与上面的LOSS同理,仅仅是将J也就是去雾图换成了t也就是透视图
这个LOSS是为了控制ALENe中A的生成
这里的C、H、W均为feature的维度,J为GT,带^的J为预测的去雾图,φ为共享权重的VGG网络
最后将所有LOSS加起来
总结
1.主要使用了左右协作来同时直接估计左右结果,而不需要估计视差,这里使用的non-local网络值得学习