原文地址:SNUNet-CD: A Densely Connected Siamese Network for Change Detection of VHR Images

摘要

问题:

一直专注于深层变化语义特征的提取而忽视了浅层信息的重要性(包含高分辨率和细粒度特征),于是经常导致变化目标边缘像素的不确定性小物体的缺失

工作

提出了一个稠密连接孪生网络SNUNet-CD来进行变化检测工作

SNUNet-CD通过encoder-decoder和decoder-decoder之间紧密的信息传输缓解了深层神经网络位置信息的丢失。并且提出了集成通道注意力模块ECAM来实现不同层次的特征的最终提炼。

引言

先前工作不足

基于U-Net的网络结构在连续的下采样后会丢失准确的空间位置信息,这往往会导致变化目标物体的边缘像素不确定和小物体的丢失。

动机

先前的研究已经表明浅层网络包含细粒度的位置信息,深层网络包含更多的粗粒度语义信息。

基于上述提到的先验知识,可以使用稠密孪生网络作用于变化检测。首先通过encoder获取high-level特征,然后经过decoder时添加浅层特征进行位置信息的补充。同时由于不同层次的特征还是有差距的,所以提出了ECAM模块来解决语义鸿沟问题

以下为该论文主要工作和目的:

  1. 提出基于NestedUNet的稠密连接网络SNUNet-CD:缓解深层网络位置信息丢失
  2. 提出ECAM:聚合和细化不同语义层次特征,一直语义鸿沟和定位误差
  3. 通过大量实验对比:模型性能(F1-Score)和计算复杂度都优于其他取得SOTA的方法

研究方法

网络结构

由于使用孪生网络分别提取双时相图像特征,所以采用concat的方法对特征进行融合来保证信息的完整性。为了保存高分辨率和细粒度的位置信息,该模型在encoder和decoder之间使用dense skip connection机制。如图显示的,在对图像对进行下采样时将两个分支的特征进行融合,并将融合之后的高分辨率、细粒度特征通过跳跃连接传递和相应的decoder部分来实现对深层特征位置信息的补充。

image-20221010183145012

image-20221010183430449

ECAM

生成的特征图X0,1X0,2X0,3X0,4X^{0,1}、X^{0,2}、X^{0,3}、X^{0,4}大小是相同的,但是具有不同的语义层次和空间位置表示。具体来说就是浅层输出特征具有更细粒度和精确的位置信息,深层输出特征具有更粗粒度和丰富的语义信息。由于语义鸿沟的存在,必须采用相应的方法来解决融合问题。ECAM通过调整对不同层次特征的关注度来实现对语义鸿沟的抑制(采用Channel Attention,CAM),具体计算流程如下:

CAM(F)=σ(MLP(AvgPoll(F))+MLP(MaxPool(F)))CAM(F) = \sigma(MLP(AvgPoll(F)) + MLP(MaxPool(F)))

Mintra=CAM(x0,1+x0,2+x0,3+x0,4)M_{intra} = CAM(x^{0,1}+x^{0,2}+x^{0,3}+x^{0,4})

Fensemble=[x0,1+x0,2+x0,3+x0,4]F_{ensemble} = [x^{0,1}+x^{0,2}+x^{0,3}+x^{0,4}]

Minter=CAM(Fensemble)M_{inter} = CAM(F_{ensemble})

ECAM(Fensemble)=(Fensemble+repeat(4)(Mintra))MinterECAM(F_{ensemble}) = (F_{ensemble} + repeat_{(4)}(M_{intra})) \bigotimes M_{inter}

image-20221010185122202

最后经过一个1×1卷积输出2×H×W的change map

损失函数

采用加权交叉熵损失和dice loss结合

L=Lwce+LdiceL = L_{wce} + L_{dice}

其中加权交叉熵损失为:

Ldice=1H×Wk=1H×Wweight[class](log(exp(y^[k][class])l=01exp(y^[k][l])))L_{dice} = \frac{1}{H × W} \sum_{k=1}^{H×W}weight[class]·(log(\frac{exp(\hat{y}[k][class])}{\sum_{l=0}^{1}exp(\hat{y}[k][l])}))

其中class表示0 or 1

Dice loss:

Ldice=12Ysoftmax(Y^)Y+softmax(Y^)L_{dice} = 1 - \frac{2 · Y · softmax(\hat{Y})}{Y + softmax(\hat{Y})}

其中Y^\hat{Y}代表change map,YY表示ground truth

实验分析

从图中可以看出SNUNet-CD相比于其他的方法能够取得很好的性能,并且在通道数不是很大时参数的大小相较于其他方法也处于不错的位置。

image-20221010190005902

image-20221010190451016

对于可视化实验分析,可以明显的看出,SNUNet-CD方法能够更加有效地描述变化目标的边缘,如图第三行对于道路的检测;同时对小目标的检测更加有效,如图中第一行车辆部分。

image-20221010190359114

总结

该方法采用稠密连接网络的主要出发点是为了弥补多次下采样后浅层信息丢失情况,通过不断的浅层特征的叠加实现最终特征图的信息完整性,这里指大物体边缘信息和小物体自身。实验上也证明了通过特征叠加的有效性,但是可能会出现特征过多导致模型的泛化能力降低,论文中并没有给出相应的实验。同时,本文中提出的解决不同层次语义鸿沟的策略:ECAM,主要是通过通道注意力的方法对浅层和深层特征的关注部分进行自适应性调整后再融合,在上述的消融实验中也证明了ECAM模块的有效性。

核心

  1. 重视浅层特征的主要性,主要为位置信息
  2. 对于多尺度特征融合需要进行一定的手段处理,消除或抑制语义鸿沟

《Deep Learning-Based Change Detection in Remote Sensing Images: A Review》

Change Detection(CD):识别不同时期获取的图像中的差异

用途:fire detection, environmental monitoring, disaster monitoring, urban change analysis, and land management, etc

传统CD方法:

  • pixel-based CD(PBCD)
  1. 通过图像差异、主成分分析(PCA)、变化向量分析(CVA)等方法生成差异图像

  2. 采用基于阈值的方法生成变化检测结果

  • object-based CD(OBCD)
  1. 提取双时相图像的特征并将他们划分为不同的语义信息

  2. 分析双时相之间的差异

缺点:

对于传统方法而言很难挖掘大量高分辨率图像之间的潜在联系

image-20220928162415577

基于深度学习的变化检测:

  1. 单分支结构:直接将双时相图像concat作为模型输入。如基于U-Net

  2. 双分支结构:共享权重,孪生网络

常用数据集:

  • SAR Images

img

  • Multi-Spectral Images:

    1. Wide-Area Datasets:
      image-20220928162623433

    2. Local-Area Datasets:
      image-20220928162924043

  • Hyperspectral Images
    image-20220928163017512

    Primary challenges for HSI-CD:

    • Limited Labeled Data

    • High-Dimensionality

    • Mixed Pixels Problem

  • Very High Spatial Resolution (VHR) Images
    image-20220928163201290

    Technological challenge:

    • Limited Spectral Information

    • Spectral Variability

    • Information Loss

  • Heterogeneous Datasets:
    img

Change Detection Architecture:

工作流程:
image-20220928163259801

  • Pre-Processing:有利于图像特征提取和图像分析结果。数学归一化

  • Geometric Registration:修复图像几何失真

  • Radiometric Correction:absolute calibration、relative calibration

  • Despeckling

  • Denoising

原文地址:SMD-Net: Siamese Multi-Scale Difference-Enhancement Network for Change Detection in Remote Sensing

摘要

问题:

由于双时像图像的环境差异和复杂的成像条件,在变化检测结果中通常会存在一些问题:丢失小物体物体不完整边缘粗糙等。现有的变化检测方法通常对这方面缺少关注

工作:

提出孪生变化检测方法SMD-NET用于双时相遥感图像

  1. 使用多尺度差异图逐步增强变化区域的信息来获得更好的变化检测结果

  2. 提出用于高层次特征的孪生残差多核池化模块SRMP提升模型中的high-level变化信息

  3. 对于低级特征提出特征差异模块FDM,该模块使用特征差异来完全提取变化信息并帮助模型生成更准确的细节

引言

模型设计动机:

  1. 孪生网络:单分支结构存在双时相图像空间特征纠缠和不对应问题,在特征融合过程中会影响模型性能。而孪生网络分别从双时相图像中提取特征,然后融合他们生成变化检测结果
  2. 多尺度特征差异图:由于位置偏移、光照条件、季节变化等因素,很难检测像素较弱的变化区域,同时孪生网络缺少对相对脆弱变化区域信息的关注和连续的下采样和卷积造成这些变化区域的丢失,此外当前的RS变化检测模型并没用充分的利用特征差异
  3. 孪生残差多核池化模块(SRMP):low-level特征包含细粒度位置信息,如:坐标和图像纹理;high-level特征包含粗粒度语义信息,如:物体范围、土地属性、语义等。SRMP可以提升对象的完整性和基于高级语义信息的小物体检测能力
  4. 特征差异模块(FDM):提供多尺度详细的变化信息来增强变化区域局部细节,FDM能够提升模型在物体边缘上的性能

先前工作不足:

没有充分利用差异图difference map或者只是使用差异图而没有保留原始的特征图。这将使变化信息没有被完全挖掘导致丢失小物体和变化检测结果不完整

研究方法

网络结构

Siamese U-shaped network:Siamese encoders、a feature difference map processing module、a decoder

特征差异图处理模块由一个SRMP和四个FDM模块构成

为了提高模型的性能,Encoder第一个部分采用在Imagenet上预训练的ResNet-34,并且取除了最后的池化层和全连接层,之后的四个encoder块由几个残差块构成(加速收敛、防止梯度消失)。Decoder部分采用卷积-转置卷积-卷积结构构成

image-20220926210608417

SRMP模块

基于The Residual Multi-kernel Pooling module (RMP)改进,能够进一步提取上下文信息并且扩大感受野。

具体操作流程如下:

  1. 计算深层特征图的绝对差异值来得到特征差异图D
  2. 使用四个不同stride的最大池化层进行下采样来获得具有不同细节层次的多个特征图(2x2、3x3、4x4、5x5)
  3. 由于不同感受野的融合同时会产生不同细节的高层次变化信息,所以采用1x1卷积和上采样将四个单通道特征图恢复到原特征差异图大小即D,同时采用最近邻近差值防止信息丢失
  4. 将原始的两个特征图和上采样的特征图进行concat操作作为SRMP的输出

image-20220927093014912

FDM模块

使用FDM从低层次差异图中提取变化信息增强变化区域的特征细节,能够使模型生成更准确的边缘。并且由于特征差异图不仅包含变化信息而且包含伪变化信息(光照、季节等原因导致),FDM在提取变化信息时可以去除在低层次特征差异图中的一些伪变化。

对于每个浅层特征,使用FDM提取特征并且生成多尺度和多深度的特征图,随后这些高分辨率特征图和深层变化信息一起送入Decoder中。在融合几阶段,该模型使用高级特征指导这些高分辨率变化特征图,以至于能够进一步优化变化区域的边缘并且最终生成更好的变化检测结果。

具体操作流程如下:

  1. 根据生成的特征图计算差异图D
  2. 将D输入进Conv-BN-ReLU模块以减少维度(1/8)
  3. 降维后的差异图送入一个残差模块获得浅层变化特征图
  4. 将得到的浅层变化特征图和最初的两个特征图进行concat作为FDM的输出

image-20220927095340306

损失函数设计

一般的,在像素级别的任务中使用Dice Loss或者交叉熵损失函数。但由于在遥感图像变化检测中通常正样本会远小于负样本,即正负样本数量是不平衡的。此时如果直接使用上述损失函数计算会导致准确率很高,但是会导致大量正样本被误判并且召回率recall会很低。为了解决正负样本不平衡问题,论文中采用BCE Loss和Tversky Loss进行训练。

Lloss=LT+LBCEL_{loss} = L_T + L_{BCE}

其中LTL_T为Tversky loss:

LT(A,B)=(AB)((AB)+αAB+βBA)L_T(A,B)=\frac{(A \cap B)}{((A \cap B) + \alpha |A - B| + \beta |B - A|)}

LBCEL_{BCE}为二元交叉熵损失:

LBCE=(B×lnA+(1B)×ln(1A))L_{BCE} = -(B \times lnA + (1 - B) \times ln(1 - A))

其中A为模型的预测结果,B为实际结果;|A-B|为false positive(FP),|B-A|为false negative(FN);α\alphaβ\beta用来控制FP和FN的权重

实验结果

数据集选取:

采用三种数据集:CDD、BCDD、OSCD

比较方法和评估指标

比较方法:

  • FC-EF
  • FC-Siam-Conc
  • FC-Siam-Diff
  • DASNet(VGG16、ResNet50)
  • SNUNet-CD
  • RDP-Net

评估指标

  • Precision(P)

    P=TPTP+FPP = \frac {TP} {TP + FP}

  • Recall(R)

    R=TPTP+FNR = \frac {TP} {TP + FN}

  • F1-score

    F1=2×P×RP+RF1 = 2 \times \frac {P \times R}{P + R}

  • Overall Accuracy(OA)

    OA=TP+TNTP+FN+FP+TNOA = \frac {TP + TN}{TP + FN + FP + TN}

  • Intersection-over-Union(IoU)

    IoU=TPTP+FP+FNIoU = \frac {TP}{TP + FP + FN}

  • Kappa

    Kappa=OAPRE1PREKappa = \frac {OA - PRE}{1 - PRE}

其中PRE为:

PRE=(TP+FP)(TP+FN)+(FN+TN)(FP+TN)(TP+FP+TN+FN)2PRE = \frac{(TP+FP)(TP+FN)+(FN+TN)(FP+TN)}{(TP+FP+TN+FN)^2}

消融实验

SRMP & FDM

对比了特征差异图进行最大池化后的不同插值结果,最近插值和双线性插值

可以从图中看出经过最大池化后由于增加了感受野,大物体更加完整、细长物体更加连续(橙色圈出部分)。并且当采用双线性插值进行上采样时会模糊大物体的边缘(绿色圈出部分),同时还会对小物体变化检测造成严重损害(红色圈出部分)。从图7.c中可以看出虽然更粗糙但是却保留了相当高的变化像素强度(个人理解为区分度),以便后续对浅层变化特征进行指导

image-20220928100947577

从表中可以看出SRMP模块能够从深层特征差异图中提取有效的深层变化信息并且能够更好地解决物体多尺度问题和物体完整性问题。同时最近插值能够保护小物体和物体边缘的变化像素强度。

对于FDM模块从表中可以看出对比baseline,添加FDM后的各个指标均有增加,说明FDM模块是具有作用的

image-20220928102333044

对比实验

CDD

image-20220928122118095

image-20220928122825113

BCDD

image-20220928124109221

image-20220928124129688

OSCD

image-20220928124402230

image-20220928124421832

参数总数和运行速度

image-20220928124757222

image-20220928124813971

当然原论文做了更多更详细的实验分析,感兴趣可以阅读原论文!

结论

采用孪生网络、SRMP模块和FDM模块为解码器提供多尺度和多深度信息,以增强变化强度和保留原始特征。该网络模型能在物体完整性、小物体检测和物体边缘检测中取得很好的性能。并且在和其他模型在以上三个数据集中比较是同样取得了很好的效果,在模型体量和运行速度上有一个很好的权衡。然而该模型还有一些不足的地方,如模型的推理速度需要进一步缩短等。

原文地址:Attribute filter based infrared and visible image fusion

基本思想

本文主要保留了可见光图像的纹理细节部分,并且将近红外图像中的显著目标部分与可见光图像融合。在提取近红外图像中的显著特征时首先采用特征过滤器(attribute filter)获得基于显著对象的初始权重图(不能保证对齐),之后再采用边缘保护过滤器(edge-preserving filter)对初始权重图进行完善。最后采用拉普拉斯金字塔(Laplacian Pyramid)策略将源图像和最终权重进行融合得到最终输出。

主要创新点

  • 提出了一种以属性为指导的可见光与近红外图像融合算法AGF

  • 设计了一种能够拍摄可见光与近红外图像和视频数据集的系统

  • 在公开的和创建的数据集上的实验证明了AGF方法相比于其他融合算法的优越性

相关背景

Attribute filtering

未完待续…

Edge-preserving filtering

未完待续…

具体实现

AGF实现流程

image-20220914164013843

首先根据不同的阈值和过滤规则获取近红外图像的暗物体和亮物体差异图sasbs_a、s_b,之后进行相加操作获取近红外图像中亮暗区域权重图S=sa+sbWR=THRESE(S,θ)S=s_a+s_b、W_R=THRESE(S,\theta)(大于设定阈值即为1,否则为0)。经过attribute filter获取到了初始权重图,之后使用域递归滤波器(The domain transform recursive filter)对初始权重图进行优化:W=DTRF(WR,R,δs,δr)W=DTRF(W_R,R,\delta_s,\delta_r)RR代表直到图像,如源近红外图像。最后进行拉普拉斯金字塔融合,分别构建出可见光与近红外图像的拉普拉斯金字塔,然后

为权重图WW构建高斯金字塔,其中图像金字塔的最大分解层数由源图像分辨率决定,其中:n=log(min(m,n))log(2),m×nn=\frac{log(min(m,n))}{log(2)}, m\times n代表分辨率;然后对相应的分解层进行计算,最后融合图像FF可表示为

F=recon(n=1N(1GWn)LVISn+GWnLIRn)F=recon(\sum^{N}_{n=1}(1-G^n_W)L^n_{VIS}+G_W^nL_{IR}^n)

实验结果

评价指标选取

一般的,融合指标分为四类:基于信息理论指标基于图像特征指标基于图像结构相似性指标基于人类感知启发的融合指标.本篇论文中采用FMIFMI(Information Theory-Based Metrics)、QAB/FQ^{AB/F}(Image Feature-Based Metrics)、QYQ_Y(Image Structural Similarity-Based Metrics)、QCBQ_{CB}(Human Perception Inspired Fusion Metrics)

原文地址:Explicit and implicit models in infrared and visible image fusion

Abstract

这篇文章主要讨论深度学习模型在图像融合中的限制和相应的优化策略,并且将各种模型分为显式模型和隐式模型(即能够自适应地学习高级特征或者能够建立全局像素的联系)

同时提出图像融合任务面临的两个问题:

  • 维持不同模态间的独特特征
  • 维持不同等级的图像特征(如全局特征和局部特征)

通过10个模型在21个测试集上的对比实验表明:隐式模型比显式模型具有更全面的学习图像特征能力,但是同时也需要提高其稳定性。

Introduction

近红外图像包含目标的热度信息,而可见光图像包含图像的纹理细节和梯度信息。其中可见光图像中的独特特征为高分辨率和局部特征,并且可以通过简单的网络实现;而近红外图像中的特有特征为高级语义特征和全局轮廓特征,需要更加复杂和深层的网络进行提取。

目前神经网络存在一些缺点:

  • 特征提取阶段具有局限性:

    虽然传统的神经网络提升了对非线性特征的表达能力并且对局部特征的提取执完成地很好,但是当通过神经网络提取高级语义和全局特征时会造成梯度消失、梯度爆炸问题,同时会降低网络的性能。并且如果只保留和输出最后一层特征,中间层特征将会消失。相应的解决方法如ResNet和DenseNet可以保护网络梯度,其他的像U-Net和特征金字塔等能够保留更多的中间特征

  • 研究者很少考虑模态间的不同:

    在更多的情况下,人们会使用相同的encoder或者相同的网络提取源图像特征,相应的会忽视不同模态之间的不同。于是会采用双流结构分别提取不同模态图像的特征

以下为针对显式模型和隐式模型自身缺点和优化方法做出的表格:

image-20220903182617938

Conclusion

最后,在多模式图像的融合任务中,我们总结了两个关键方面。一方面,我们最好考虑方式的差异。另一方面,还应考虑将模式中各个特征级别的特征级别之间的差异以及全面提取本地和全局特征的差异,以确保最大程度地保留信息。在未来的研究中,我们提出了建议,将明确的模型与隐式模型相结合,以全面提取本地和全局特征,并提高隐式模型的稳定性。

Hexo博客的备份及恢复

前提 and 机制

Hexo能够备份的前提是你已经初始化好了需要备份的博客(各种需要的环境配置)

Hexo每次执行hexo d其实是将hexo编译后的文件上传部署到gitee或者github,用来生成网页,不包含博客源文件。也就是上传本地目录生成的

.deploy_git文件夹里的内容,其他内容包括source主题文件配置文件均没有上传到gitee上,所以可以将这部分内容上传到项目的另一个分支中

image-20220809163025528

备份博客

创建新分支

因为github速度问题这里已gitee为例。首先在原有的master分支基础上新建分支sources,并将其设置为默认分支(方便后续备份上传)

image-20220809163515897

关于使用Ajax提交表单后页面异常加载和报错问题

1、bug出现场景

本想要实现表单的异步多文件上传功能,通过点击按钮调用ajax方法,然后与后端进行通信。

html代码:

<form id="test_form">
    <input type="text" id="txt" value="111">
    <button onclick=test_form()>点击测试</button>
</form>

js代码:

<script>
        function test_form() {
            $.ajax({
                type: 'post',
                url: '/test',
                data: 'aaa',
                dataType: "json",
                success: function (res) {
                    alert('success')
                },
                error: function (err) {
                    alert('error')
                }
            })
        }
</srcipt>

后端Java代码:

@PostMapping("test")
@ResponseBody
public String Test() {
    System.out.println("测试表单提交...");
    return "sss";
}

预计结果应该是弹出“success”,可结果却是”error“,并且浏览器地址也会发生改变,可实际上我并没有设置form的action属性。而且控制台也会输出“测试表单提交...”字样,说明后台方法是已经执行了的。

image-20220311150130064

2、分析原因

既然后台也执行了,那么为什么会出现这种情况?后来我又测试了直接通过按钮调用ajax请求而不通过表单,奇怪的事情发生了,可以完美的运行程序,并且地址栏也不会发生改变。于是猜测会不会是表单会在提交ajax请求后会自己再提交一次请求,于是我就在表单action属性添加了地址,并且将后台方法设置为get

<form id="test_form" action="/test2">
    <input type="text" name="txt" value="111">
    <button onclick=test_form()>点击测试</button>
</form>
@GetMapping("test2")
@ResponseBody
public String Test2() {
    System.out.println("测试表单提交2...");
    return "sss2";
}

然后奇怪的事情又发生了,运行程序后地址栏会发生这样变化:

image-20220311151009967

看到这样的变化似乎找到了原因。我们都知道?代表的是get方法传递参数,同时我ajax方法传递的就是表单中的txt数据,而/test2则是表单action数据。那么就代表表单进行了两次提交,一次是/test,另一次是/test2。这就代表button在表单中可能默认代表submit。于是百度查了一下,果然button在表单中默认为type=submit,所以会提交两次,如果想要只提交一次的话就设置type=button,确实有点我非我我感觉。

3、总结

尽量使用input并设置type=button进行表单提交,这样可以避免不必要的麻烦和bug,同时记住button也是有type属性的,并且在表单中默认为submit。(纯粹有种脱裤子放屁的感觉,button不再是button还得设置type=button,我非我了属于是

Abstract

由于低光图像中的高强度噪声放大了RGB和NIR图像之间结构不一致的影响,使得现有的算法失效。为了解决这一问题,本文提出了一种新的RGB-NIR融合算法 Dark Vision Net(DVN)。该算法的两个技术新颖点是Deep Structure 和 Deep Inconsistency Prior (DIP)两部分。同时设计了新的由对齐的RGB-NIR图像对组成的数据集Dark Vision Dataset(DVD),也是第一个公开的RGB-NIR融合基准。本文结果显示DVN在PSNR和SSIM指标方面明显优于其他算法,特别是在极低光条件下。

Introduction

高质量的低光图像是一个具有挑战但是很有意义的任务。一方面他是很多重要任务的基础(24小时监控、手机拍摄等);另一方面在极低环境下图像中的大量噪声会阻碍算法进行图像恢复。RGB-NIR图像融合技术要做的是:通过相应的近红外图像中的丰富的详细的信息来增强低光环境中具有大量噪声的RGB图像,极大地提高融合后RGB图像的信噪比(SNR)。

image-20220303222024522

但是目前存在的RGB-NIR融合算法存在着RGB和NIR图像结构不一致的问题,导致了生成了不自然的图像和关键信息的缺失,这些限制了RGN-NIR融合算法在低光环境下的应用(因为在低光环境下RGB图像会因为大量的噪声极大地加剧和NIR图像的结构不一致性)。

本文主要通过解决低光环境RGB-NIR图像结构不一致问题来改进具有极低信噪比的RGB-NIR图像融合问题。作者认为通过引入深度特征的先验信息可以很好地解决上述问题。下方是整个算法的结构图:

image-20220303223232068

其中有两个主要新颖技术点:

  • DSEM

    即使面对低信噪比,该结构也能很有效地提取和表示可靠的结构信息,对后续的先验信息很重要。

  • DIP

Image Denoising

虽然现在有很多图像去噪的算法,但是在极低光照环境下,被高强度噪声破坏的精细纹理和很难再恢复,与此同时去噪算法会倾向于输出过于平滑的图像。

RGB-NIR Fusion

现有算法大部分有以下两个问题:

  • 处理结构不一致图像时能力不足,导致结果出现严重的伪影。
  • 噪声抑制能力不足,特别是在低光环境下。

DataSets

由于获取RGB-NIR图像对比较困难,所以目前只有少量数据数据可以用于RGB-NIR融合研究。为了解决这一问题,作者团队收集了一个名为Dark Vision Datase(DVD)的数据集,作为第一个公开的RGB-NIR融合基准。

Approach

Prior Knowledge of Structure Inconsistency

本文首先从各个特征通道提取出二值边缘图,然后将不一致性用函数 F 来定义。

image-202203041348775

其中C和N代表RGB和NIR图像的R/G/B通道,edgeCedge^{C}edgeNedge^{N}分别代表C和N的二值边缘映射。当 F 等于0时则代表edgeCedge^{C}edgeNedge^{N}具有严重的不一致性,相反,在RGB和NIR结构一致的区域 F 为1。利用 F 的输出可以直接通过与NIR相乘来抑制不一致的结构。

Extraction of Deep Structures

虽然函数 F 能够很好的描述RGB-NIR之间的不一致性,但是却不能直接应用于低光环境下。当面对大量噪声的RGB图像时,计算出的不一致映射只包含非信息噪声。所以,为了避免噪声在结构不一致提取上的影响,本文提出了深度结构提取模块 Deep Structure Extraction Module (DSEM)和深度不一致先验模块Deep Inconsistency Prior (DIP)来计算特征空间上的结构不一致性。

image-20220304140042125

Supervision of DSEM

DSEM从网络R中提取多尺度特征featifeat_{i}(i代表尺度),并且输出多尺度深度结构映射structistruct_{i}。为了使DSEM预测出高质量的深度结构映射,本文引入了一个监督信号structi,cgtstruct^{gt}_{i,c},损失函数表示为:Lstru=i=13c=1ChiDist(structi,c,structi,cgt)\mathcal{L}_{stru} = \sum_{i=1}^{3}\sum_{c=1}^{Ch_{i}}Dist(struct_{i,c},struct^{gt}_{i,c}),其中ChiCh_{i}是第i层深度结构的通道数,Dist是Dice Loss,structi,cstruct_{i,c}是第i层第c个通道的预测深度结构,structi,cgtstruct^{gt}_{i,c}代表相应的ground-truth。其中Dice Loss表示为Dist(P,G)=(jNpj2+jNgj2)/(2jNpjgj)Dist(P,G) = (\sum_{j}^{N}p_{j}^{2}+\sum_{j}^{N}g_{j}^{2})/(2\sum_{j}^{N}p_{j}g_{j})pjp_{j}gjg_{j}代表在P和G上的第j个像素。


本文根据Deep Image Prior这篇论文的思想建立了监督信号。structi,cgtstruct_{i,c}^{gt}从而一个预训练的网络AutoEncoder中获得,其中AE网络和R相比只是少了skip connection结构。其中structi,cgtstruct_{i,c}^{gt}计算公式为:

image-20220304150109062

其中deci,cdec_{i,c}表示多尺度特征,\bigtriangledown代表Sobel算子,m代表均值。

image-20220304150022031

Calculation of DIP and Image Fusion

通过DSEM提取出的深度结构包含丰富的结构信息同时对噪声具有鲁棒性,根据RGB和NIR图像产生的struct可以引入上述的结构不一致函数F\mathcal{F}来计算高质量的结构不一致先验:Mi,cDIP=F(structi,cC,structi,cN)M_{i,c}^{DIP} = \mathcal{F}(struct_{i,c}^{C},struct_{i,c}^{N}),其中C和N分别代表RGB和NIR图像。由于Mi,cDIPM_{i,c}^{DIP}代表的是结构不一致而不是像素强度不一致,所以可以直接用structi,cNstruct_{i,c}^{N}代替feati,cNfeat_{i,c}^{N},其中转换公式为:struct^i,cN=Mi,cNstructi,cN\hat{struct}_{i,c}^{N} = M_{i,c}^{N} \cdot struct_{i,c}^{N},在DIP的引导下struct^i,cN\hat{struct}_{i,c}^{N}直接舍弃了与RGB图像不一致的结构,从而解决了结构不一致性。为了进一步将NIR中的结构细节融入到RGB中,本文设计了一个多尺度融合模块,详见上图©。

Loss Function

该模型的总损失函数为:L=LrecC+LrecC^+LrecN+λ1LstruC+λ2LstruN\mathcal{L} = \mathcal{L}_{rec}^{C} + \mathcal{L}_{rec}^{\hat{C}} + \mathcal{L}_{rec}^{N} + \lambda_{1} \cdot \mathcal{L}_{stru}^{C} + \lambda_{2} \cdot \mathcal{L}_{stru}^{N} 其中LstruC\mathcal{L}_{stru}^{C}LstruN\mathcal{L}_{stru}^{N}是深度结构预测损失函数λ1\lambda_{1}λ2\lambda_{2}为对应的系数,分别设置为1/1000和1/3000,LrecC\mathcal{L}_{rec}^{C}LrecC^\mathcal{L}_{rec}^{\hat{C}}LrecN\mathcal{L}_{rec}^{N}分别表示fused-RGB、coarse-RGB、NIR图像的重构损失函数。其中L=sqrt(XXgt2+ε2)\mathcal{L} = sqrt{(\|X - X_{gt}\|^{2} + \varepsilon^{2})}ε\varepsilon一般被设置为10310^{-3}

Experiment

训练图片随机裁剪为128*128,learning rate从2e-4逐渐减少为1e-6

Performance Comparison

在DVD数据集上PSNR和SSIM指标的比较结果:

image-20220304211734225

同时DVN与同领域的其他算法相比还具有更好的去噪、细节恢复和伪影抑制能力。

image-20220304211939388

本文还进行了真实低光环境下的性能测试,同样取得了很好的效果

image-20220304212220048

Effectiveness of DIP

本文中作者还验证了DIP这一结构的有效性,为此作者重新训练模型(去除DIP模块)来进行比较。

image-20220304212741907

可以看出DIP可以抑制图像伪影和增强细节特征,能够更好地处理结构不一致性问题。

Code

注:根据作者Bingbing Yu提供的运行demo进行研究。


  • 提取深度特征

    作者首先是先通过R网络(个人理解为编码器与解码器结构,代码中用到了RCAB模块)输出RGB和NIR的三层特征结构,然后再计算NIR各层特征的梯度图nir_structure。RGB图像的步骤相似,首先也是提取编码器和解码器特征然后再输出梯度图rgb_structure

  • DIP模块应用

    根据上述得到的rgb_structurenir_structure可以算出MDIPM^{DIP}

    def f(x, y):
        return 1 / 2 * (1 - x) * (1 - y) + x * y
    masks = []
    for i in range(len(rgb_structure)):
    	masks.append(f(rgb_structure[i], nir_structure[i]))
  • 特征融合

    重复上述编码器和解码器步骤,不过在编码时在对应尺度加上相应的NIR特征struct^\hat{struct}(抑制了结构不一致性)

    # 编码部分
    enc1 = self.encoder_level1(x)
    enc1_fuse_nir = enc1 + self.atten_conv1(mask[0] * encoder_outs[0])
    x = self.down12(enc1_fuse_nir)
    enc2 = self.encoder_level2(x)
    enc2_fuse_nir = enc2 + self.atten_conv2(mask[1] * encoder_outs[1])
    x = self.down23(enc2_fuse_nir)
    enc3_fuse_nir = enc3 + self.atten_conv3(mask[2] * encoder_outs[2])

Summary

算法基本运行流程

  • 分别提取RGB和NIR图像的深度特征featCfeat^{C}featNfeat^{N}
  • featCfeat^{C}作为DSEM的输入,在监督信号的指导下训练DSEM,其中监督信号由AutoEncoder输出(因为RGB和NIR第一步结构一样,所以选取一个进行训练DSEM就行)
  • 而后将训练好的DSEM的输出structCstruct^{C}structNstruct^{N}进行DIP模块处理,即生成抑制结构不一致的struct^N\hat{struct}^{N}作为第三步融合模块的输入
  • 第一步获取到的DSEM的输出structCstruct^{C}作为输入传入最后的融合模块,struct^N\hat{struct}^{N}在相应层与RGB进行相加融合,最后通过解码器输出融合图像

大致思想

  • 首先想的是用NIR图像的丰富细节结构与RGB图像融合,来补充低光环境下RGB图像包含大量噪声的影响
  • 融合的话采取的是结构融合,又因为低光RGB包含大量噪声,所以得先进行去噪处理,于是作者提出了DSEM模块用来处理噪声。
  • 处理完噪声后RGB和NIR图像又存在结构不一致这个问题,融合后会导致伪影等问题,于是作者又提出了DIP模块,用来生成抑制结构不一致性的NIR结构图
  • 后续就直接用生成的RGB结构图与NIR结构图进行融合

使用PicGo + Gitee + Typora实现博客图床功能

1、Gitee账户配置

新建仓库

image-20220226192440682

注意修改为开源

私人令牌token配置获取

  • 找到设置->安全设置->私人令牌,点击生成新令牌,按照下图勾选后提交并保存token

到此gitee部分配置完成~

2、PicGo配置

下载PicGo

点击此下载链接进行下载

插件安装

插件配置

上传测试

上传成功后可以在相册看到

image-20220226193838206

设置快捷上传按键(根据个人习惯)

image-20220226193943129

这样可以直接截图或复制网图后直接上传到gitee然后会返回粘贴板一个Markdown的图片链接形式

3、Typora配置

配置图像设置

文件->偏好设置->图像

image-20220226194231638

根据上图这样配置后点击验证图片上传选项测试是否成功

image-20220226194312798

大功告成!

关于flex布局的初步认识

flex布局简单介绍

Flex 全称 Flexible box 布局模型,通常称为 flexbox 或 flex,也称为弹性盒子或弹性布局。一种比较高效率的 css3 布局方案。

既然是盒子,首先需要一个容器 container,然后是项目 item。容器包裹着项目,再通过配置不同的属性,实现各种各样的排列分布。

flex 有两根轴线,分别是主轴和交叉轴,主轴的方向由 flex-diretion 属性控制,交叉轴始终垂直于主轴。

容器为项目的分布提供的空间,轴线则控制项目的排列跟对齐的方向, flex 是一种一维的布局,一个容器只能是一行(左右)或者一列(上下),通过主轴控制项目排列的方向(上下/左右),交叉轴配合实现不同的对齐方式。有时候一行放不下,可以实现多行的布局,但是对于 flex 来说,新的一行就是一个新的独立的 flex 容器。作为对比的是另外一个二维布局 CSS Grid 布局,可以同时处理行和列上的布局。

flex基本属性

flex由flex-diretion控制主轴方向,一般是横轴和纵轴。之后再由justify-content控制容器内部元素在主轴上的排列方式,主要分为center、space-around、space-between、flex-start、flex-end。而后用align-items控制元素在垂直主轴方向的排列样式。

flex布局演示

<view>示例一</view>
<view class="menu">
  <view class="item">
    <image src="image1.jpg"></image>
    <text>item1</text>
  </view>
  <view class="item">
    <image src="image2.jpg"></image>
    <text>item2</text>
  </view>
  <view class="item">
    <image src="image3.jpg"></image>
    <text>item3</text>
  </view>
  <view class="item">
    <image src="image4.jpg"></image>
    <text>item4</text>
  </view>
</view>
.menu image {
  width: 150rpx;
  height: 120rpx;
}

.menu {
  display: flex;
  flex-direction: row;
  justify-content: space-around;
}

.menu .item {
  display: flex;
  flex-direction: column;
  align-items: center;
}