【去雨】Self-Learning Video Rain Streak Removal: When Cyclic Consistency Meets Temporal Correspondence

(#.#)终于要开启我的第一篇记录blog了

欢迎浏览,欢迎指导,共同进步~

关键词

derain, unsupervised, temporal consistency

有关去雨的分类

  1. 雨 => 雨纹 & 雨滴
    【去雨】Self-Learning Video Rain Streak Removal: When Cyclic Consistency Meets Temporal Correspondence_第1张图片
  2. 去雨 => 视频去雨 + 单图像去雨
    【去雨】Self-Learning Video Rain Streak Removal: When Cyclic Consistency Meets Temporal Correspondence_第2张图片

问题是什么

雨的存在不仅会影响视觉体验,而且会影响其他计算机视觉任务(如目标检测 )的处理。

  1. 影响视觉体验:依附在摄像镜头和挡风玻璃
  2. 影响目标检测:遮挡背景内容, 同时使得场景模糊
    (*2. 涉及的其他计算机视觉任务,mark,未来跟进~~~)

问题的重要性

对应 [ 问题是什么的1&2 ]。

  1. 尽量保证暴雨天拍摄内容的质量;(如:去除传达台风现状的新闻播报前沿战士的摄像机镜头的雨)
  2. 保证监控视频在雨天的记录信息的质量;(如:严防工厂/ 公司的无关人员进入;犯罪分子的识别;还原案发现场)

现有方法为什么不能解决及难点在哪

传统单图像去雨:利用引导滤波器、频域信息先验知识等模型驱动的方法,可以一定程度实现去雨效果,但是较为依赖算法设计者的丰富先验知识,同时由于往往针对的是特定的数据集,对其他数据集的处理效果稍有逊色;
利用深度学习的单图像去雨方法:可以通过数据驱动,获得更具泛化性的模型,但是由于仅利用空间冗余,去雨效果仍有待提高。
以往视频去雨:不仅利用图像的空间冗余信息,而且进一步利用了时间相关性和上下文,去雨效果进一步提升,但是合成的数据集并不能完全拟合真实的下雨的情况,故基于配对数据集的去雨的结果质量仍有待提高。

方法主要贡献

  1. 第一个自监督(无需配对数据集)的视频去雨尝试;
  2. 划分两个阶段:
    一、利用相邻帧和当前帧的时序相关性,去除当前帧中的雨;
    二、利用时序一致性,进一步提高去雨质量并且保证所得视频时序一致性。
    【去雨】Self-Learning Video Rain Streak Removal: When Cyclic Consistency Meets Temporal Correspondence_第3张图片

模型

有关上述模型的描述如下:

  1. 【Warping】首先利用FlowNet2.0提取当前帧(t)和相邻帧(t-3, t-2, t-1, t+1, t+2, t+3)的光流 [光流是二维向量,有关提取光流的方法有: FlowNet2.0 / PWC-Net / SpyNet],并根据所得相邻帧信息和提取的光流得到对齐后的图像(其他帧向当前帧对齐);
  2. 【PredNet】1所得对齐后的图像(~t-3, ~t-2, ~t-1, ~t+1, ~t+2, ~t+3)经过Conv3d后得到初步的当前帧无雨图(Bt-1);
  3. 【EGNet】2所得当前帧无雨图(Bt-1)与(~t-3, ~t-2, ~t-1, ~t+1, ~t+2, ~t+3)经过Conv3d后得到当前帧对应雨纹图(△Bt)的差值,最后将初步的当前帧去雨图和当前帧对应雨纹图相加得到预测当前帧的雨图(Bt-2)。
    (很好奇为什么还要得到预测的当前帧的雨图叭?这就是有关loss funtion的设计了~)

Loss

Total loss

【去雨】Self-Learning Video Rain Streak Removal: When Cyclic Consistency Meets Temporal Correspondence_第4张图片
论文的loss如上所示,其中L-Fid-T包含了下述的两个子loss,L-Fid-TCon和L-Fid-TCor。

Sub loss

【去雨】Self-Learning Video Rain Streak Removal: When Cyclic Consistency Meets Temporal Correspondence_第5张图片

L-Flow:主要目的是为了保证视频的时序一致性。前两项表示相邻帧向当前帧对齐后的图像与当前帧的距离(L2),之所以有两项是因为将当前帧作为中间项划分了当前帧前面和后面的帧;后两项表示当前帧向相邻帧对齐后所得 [ !无雨图 ] 向当前帧对齐后的图像与当前帧 [ !无雨图 ]的距离(L2),后两项对齐公式如下。
该图截自论文:Self-Learning Video Rain Streak Removal: When Cyclic Consistency Meets Temporal Correspondence

【去雨】Self-Learning Video Rain Streak Removal: When Cyclic Consistency Meets Temporal Correspondence_第6张图片
L-Fid-TCor:主要目的为了保证当前帧的无雨区域信息得以保留。(因为其他帧都是向当前帧靠拢,所以稳住当前帧很重要)主要计算当前帧的无雨图(Bt-1)和当前帧的距离(L2)。
【去雨】Self-Learning Video Rain Streak Removal: When Cyclic Consistency Meets Temporal Correspondence_第7张图片
L-Fid-TCon:主要目的为了保证相邻帧的无雨区域的信息在对齐后仍能保留。其中M-NA(adjacent)表示相邻帧的无雨区域。
该图截自论文:Self-Learning Video Rain Streak Removal: When Cyclic Consistency Meets Temporal Correspondence

L-Fid-B:主要目的为了保证当前帧的无雨区域的信息经过去雨操作后能保留。其中M-NC(current)表示相邻帧的无雨区域。有关M-NA和M-NC的计算如下,这个公式体现了文章提及的光流的提取效果和去雨效果的相辅相成。
【去雨】Self-Learning Video Rain Streak Removal: When Cyclic Consistency Meets Temporal Correspondence_第8张图片

所用数据集

NTURain 数据集(配对),其中25个用作训练,8个用作测试。

实现

由于论文运行所需的虚拟环境中需要用到torch0.4.0(版本较低),对于像博主一样的代码小渣可以考虑的方法有:降低cuda 和 使用docker,本章主要分享降cuda和运行时遇到的一个有关tensorboardX的可视化问题。
PS:有关docker的安装和使用计划安排一个小白版的教程并有机会附上大佬的一个Github论文实现库。

降cuda

***主要参考
(***:注意在安装cuda的时候有关driver的那个问题一定要选择:n!!!)
*部分参考

tensorboardX
  1. pip install tensorflow(必须安装tensorflow)
  2. pip install tensorboardX(若报错见3.)
  3. pip install certifi --ignore-installed

局限性

去雨后图像/ 视频糊化~

下集预告

  1. Learning Blind Video Temporal Consistency
  2. 待定

(#.#) 期待指导及在评论区扩展其他相关信息哇~

祝您萌万事胜意,平安喜乐~

参考文献

[1] Self-Learning Video Rain Streak Removal: When Cyclic Consistency Meets Temporal Correspondence
[2] A comprehensive survey: Image deraining and stereo-matching task-driven performance analysis
[3] Survey on rain removal from videos or a single image
[4] Learning Blind Video Temporal Consistency

你可能感兴趣的:(深度学习,计算机视觉,人工智能)