Jekyll2023-04-07T07:11:31+00:00https://elyar-adil.github.io/feed.xmlMy blogMy very nice blogElyar Adil利用深度估计去雾2023-02-01T00:00:00+00:002023-02-01T00:00:00+00:00https://elyar-adil.github.io/2023/02/01/removing-fog-by-depth-estimation<p>这篇文章研究了如何使用图像深度估计进行去雾操作。该方法只需要使用训练好的深度估计网络(本文使用了 monodepth2<a href="#1">[1]</a>),即可实现去雾。但由于要对图像进行逆向求解,因此推理速度相对较慢。此外,由于受深度估计精度和假设雾分布均匀的限制,该方法具有一定的局限性。</p>
<p>文献<a href="#2">[2]</a>中使用的公式$I(x) = R(x)t(x) + L(1 − t(x))$可用于为图像添加雾,其中$I(x)$表示经过加雾处理的图像,$R(x)$代表未经处理的原始清晰图像,$L$表示环境光,而$t(x) = exp (−\beta\ell(x))$,其中的$\ell(x)$是图像深度图。该方法可以生成非常逼真的雾天图像,并且该公式可微分,因此可以利用梯度下降法从$I(x)$逆向求出去雾后的图像$R(x)$。</p>
<p>在去雾过程中,将上面公式中$t(x)$改为$t(x) = exp (\alpha\ell(x)+\beta)$,即对深度估计进行线性变换,另外$R(x)$与$L$变为可训练参数,其中$R(x)$为与有雾图像大小相同,利用标准正态分布的随机数进行舒适化的张量,另外利用了$sigmoid$函数保证图像在0到1之间。$L$是一个三维向量,代表环境光颜色。对加雾后的利用L1损失项与输入的加雾图片进行比较,利用反向传播更新输入图像与环境光等参数,反向传播过程中冻结了深度估计网络。产生去雾图像的过程使用Adam优化器(学习率为0.01)训练了1000次,产生去雾图像的结果如下图所示,可以看到对输入图像有一定程度的去雾效果。</p>
<div align="center"><img width="500" src="https://elyar-adil.github.io/images/2023-04-07-removing-fog-by-depth-estimation/1680791289874.png" /></div>
<p>生成去雾图像的过程如下图所示,可以看到从随机初始化的参数慢慢生成了去雾后的图像。</p>
<div align="center"><img width="800" src="https://elyar-adil.github.io/images/2023-04-07-removing-fog-by-depth-estimation/1680795385164.png" /></div>
<p>但是这种方法非查依赖于深度估计网络的精度,对于OOD的数据不能有效处理。</p>
<p><a id="1">[1]</a> C. Sakaridis, D. Dai, and L. Van Gool, ‘Semantic Foggy Scene Understanding with Synthetic Data’, International Journal of Computer Vision, vol. 126, no. 9, pp. 973–992, Sep. 2018.</p>
<p><a id="2">[2]</a> C. Godard, O. Mac Aodha, M. Firman, and G. J. Brostow, ‘Digging into Self-Supervised Monocular Depth Prediction’, Oct. 2019.</p>Elyar Adil这篇文章研究了如何使用图像深度估计进行去雾操作。该方法只需要使用训练好的深度估计网络(本文使用了 monodepth2[1]),即可实现去雾。但由于要对图像进行逆向求解,因此推理速度相对较慢。此外,由于受深度估计精度和假设雾分布均匀的限制,该方法具有一定的局限性。