代码:https://github.com/hezhangsprinter/DCPDN

目录

  • 1. 摘要
  • 2. 网络结构
    • 2.1 Pyramid Densely Connected Transmission Map Estimation
    • 2.2 Atmospheric Light Estimation Network
    • 2.3 Joint Discriminator
  • 3. 损失函数
    • 3.1 GAN优化目标
    • 3.2 边界感知损失
    • 3.3 总损失函数
  • 4. 读后感

1. 摘要

    本文提出了Densely Connected Pyramid Dehazing Network(DCPDN),该网络嵌入了大气散射模型。该网络包含两个生成器,分别用于生成传输率图和大气光,再通过大气散射模型产生去雾图。同时该网络还包含一个判别器,判别器输入为无雾图和传输率图的堆叠。本文还提出了一种新的损失函数,即边界感知损失函数。

2. 网络结构

    DCPDN整体结构如图1所示。

图1 DCPDN整体结构

    该网络包含三个部分,分别为:金字塔稠密链接传输率图估计网络,大气光估计网络和连结判别器。前两个网络分别生成雾图的传输率图和大气光值,经由大气散射模型生成去雾图。将该去雾图和前面提到的传输率图进行堆叠,送入连结判别器。

2.1 Pyramid Densely Connected Transmission Map Estimation

    该网络的框架如图2所示。

图2 传输率估计网络框架

    该网络是一个编码器-解码器结构的网络。第一个卷积层和前三个稠密块部分采用了预训练的dense-net121的相同部分。下面是根据forward()函数整理的,具体内容见源码。

结果 操作
x0 Conv2d(in_channels=3, out_channels=64, kernel_size=7, stride=2, padding=3, bias=False)
BatchNorm2d(64)
ReLU(inplace=True)
MaxPool2d(kernel_size=3, stride=2, padding=1)
x1 trans_blocks1(dense_blocks(x0))
x2 trans_blocks1(dense_blocks(x1))
x3 trans_blocks1(dense_blocks(x2))
x4 trans_blocks1(dense_blocks(x3))
x42 cat([x4, x2], 1)
x5 trans_blocks1(dense_blocks(x42))
x52 cat([x5, x1], 1)
x6 trans_blocks1(dense_blocks(x52))
x7 trans_blocks1(dense_blocks(x6))
x8 trans_blocks1(dense_blocks(x7))
x8 cat([x8, x], 1)
x9 relu=LeakyReLU(0.2, inplace=True)
relu(Conv2d(19, 20, 3, 1, 1))
shape_out x9.data.size()[2:4]
x101
x102
x103
x104
F.avg_pool2d(x9, 32)
F.avg_pool2d(x9, 16)
F.avg_pool2d(x9, 8)
F.avg_pool2d(x9, 4)
x1010
x1020
x1030
x1040
self.upsample(self.relu(self.conv1010(x101)), size=shape_out)
self.upsample(self.relu(self.conv1020(x102)), size=shape_out)
self.upsample(self.relu(self.conv1030(x103)), size=shape_out)
self.upsample(self.relu(self.conv1040(x104)), size=shape_out)
dehaze cat([x1010, x1020, x1030, x1040, x9], 1)
dehaze self.tanh(self.refine3(dehaze))

2.2 Atmospheric Light Estimation Network

    本文中假定大气光是一个全局常数,即AAA是一个2D的图像,其中每一个像素A(z)A(z)A(z)有相同的值。该网络采用了8个块的U-net结构网络。下表是通过整理forward()函数得到的:

结果 操作
out1 self.layer1(x)
out2 self.layer2(out1)
out3 self.layer3(out2)
out4 self.layer4(out3)
out5 self.layer5(out4)
out6 self.layer6(out5)
out7 self.layer7(out6)
out8 self.layer8(out7)
dout8 self.dlayer8(out8)
dout8_out7 torch.cat([dout8, out7], 1)
dout7 self.dlayer7(dout8_out7)
dout7_out6 torch.cat([dout7, out6], 1)
dout6 self.dlayer6(dout7_out6)
dout6_out5 torch.cat([dout6, out5], 1)
dout5 self.dlayer5(dout6_out5)
dout5_out4 torch.cat([dout5, out4], 1)
dout4 self.dlayer4(dout5_out4)
dout4_out3 torch.cat([dout4, out3], 1)
dout3 self.dlayer3(dout4_out3)
dout3_out2 torch.cat([dout3, out2], 1)
dout2 self.dlayer2(dout3_out2)
dout2_out1 torch.cat([dout2, out1], 1)
dout1 self.dlayer1(dout2_out1)

2.3 Joint Discriminator

    用GtG_tGt​和GdG_dGd​分别表示网络生成的传输率图和去雾图。连结判别器的输入为cat([G_t, G_d], 1)。

3. 损失函数

3.1 GAN优化目标

    该损失函数为常规GAN网络的优化目标。对于判别器,最大化该函数;对于生成器,最小化该函数。详情看GAN网络的优化函数。
min⁡Gt,Gdmax⁡DjointEI∼pdata(I)[log⁡(1−Djoint(Gt(I)))]+EI∼pdata(I)[log⁡(1−Djoint(Gd(I)))]+Et,J∼pdata(t,J)[log⁡Djoint(t,J))](1)\begin{aligned} \min _{G_{t}, G_{d}} \max _{D_{joint}}&\ \mathbb{E}_{I \sim p_{{data}}(I)}\left[\log \left(1-D_{joint}\left(G_{t}(I)\right)\right)\right]+\\ &\ \mathbb{E}_{I \sim p_{{data}}(I)}\left[\log \left(1-D_{joint}\left(G_{d}(I)\right)\right)\right]+\\ & \left. \mathbb{E}_{\left.t, J \sim p_{{data}}(t, J\right)}\left[\log D_{\text {joint}}(t, J)\right)\right] \end{aligned} \tag{1} Gt​,Gd​min​Djoint​max​​ EI∼pdata​(I)​[log(1−Djoint​(Gt​(I)))]+ EI∼pdata​(I)​[log(1−Djoint​(Gd​(I)))]+Et,J∼pdata​(t,J)​[logDjoint​(t,J))]​(1)


    这里应该是作者的失误。

3.2 边界感知损失

    边界感知损失受如下两点观察的启发:1)边界通常和图像强度不连续相关联,因此可以通过图像梯度来特征化边界;2)神经网络浅层(最前面的几层)提取的特征图通常与边界和等高线有关,换句话说,深度神经网络的前几层可以作为边界检测器。
    本文提出的边界感知损失结合了如下三部分:L2L2L2损失,两个方向的梯度损失以及特征边界损失,定义如下:
LE=λE,l2LE,l2+λE,gLE,g+λE,fLE,f(2)L^{E}=\lambda_{E, l_{2}} L_{E, l_{2}}+\lambda_{E, g} L_{E, g}+\lambda_{E, f} L_{E, f} \tag{2} LE=λE,l2​​LE,l2​​+λE,g​LE,g​+λE,f​LE,f​(2)

    其中,LE,l2L_{E, l_{2}}LE,l2​​表示L2L2L2损失,LE,gL_{E, g}LE,g​表示两个方向(水平和垂直)的梯度损失,LE,fL_{E, f}LE,f​表示特征损失。λE,l2\lambda_{E,l_2}λE,l2​​,λE,g\lambda_{E,g}λE,g​和λE,f\lambda_{E,f}λE,f​表示对应的权重系数。
    LE,l2L_{E, l_{2}}LE,l2​​定义如下:
LE,l2=∥Gt(I)−t∥22(3)L_{E, l_{2}} = \| G_t(I) - t \|_2^2 \tag{3} LE,l2​​=∥Gt​(I)−t∥22​(3)

    LE,gL_{E, g}LE,g​定义如下:
LE,g=∑w,h∥(Hx(Gt(I)))w,h−(Hx(t))w,h∥2+∥(Hy(Gt(I)))w,h−(Hy(t))w,h∥2(4)\begin{aligned} L_{E, g}=&\ \sum_{w, h}\left\|\left(H_{x}\left(G_{t}(I)\right)\right)_{w, h}-\left(H_{x}(t)\right)_{w, h}\right\|_{2} \\ &\ +\left\|\left(H_{y}\left(G_{t}(I)\right)\right)_{w, h}-\left(H_{y}(t)\right)_{w, h}\right\|_{2} \end{aligned} \tag{4} LE,g​=​ w,h∑​∥∥∥​(Hx​(Gt​(I)))w,h​−(Hx​(t))w,h​∥∥∥​2​ +∥∥∥​(Hy​(Gt​(I)))w,h​−(Hy​(t))w,h​∥∥∥​2​​(4)

    其中,HxH_xHx​和HyH_yHy​分别表示计算水平和竖直梯度的操作。w,hw, hw,h表示输出特征图的宽度和高度。
    LE,fL_{E, f}LE,f​定义如下:
LE,f=∑c1,w1,h1∥(V1(Gt(I)))c1,w1,h1−(V1(t))c1,w1,h1∥2+∑c2,w2,h2∥(V2(Gt(I)))c2,w2,h2−(V2(t))c2,w2,h2∥2(5)\begin{aligned} L_{E, f} &=\sum_{c_{1}, w_{1}, h_{1}}\left\|\left(V_{1}\left(G_{t}(I)\right)\right)_{c_{1}, w_{1}, h_{1}}-\left(V_{1}(t)\right)_{c_{1}, w_{1}, h_{1}}\right\|_{2} \\ &+\sum_{c_{2}, w_{2}, h_{2}}\left\|\left(V_{2}\left(G_{t}(I)\right)\right)_{c_{2}, w_{2}, h_{2}}-\left(V_{2}(t)\right)_{c_{2}, w_{2}, h_{2}}\right\|_{2} \end{aligned} \tag{5} LE,f​​=c1​,w1​,h1​∑​∥∥∥​(V1​(Gt​(I)))c1​,w1​,h1​​−(V1​(t))c1​,w1​,h1​​∥∥∥​2​+c2​,w2​,h2​∑​∥∥∥​(V2​(Gt​(I)))c2​,w2​,h2​​−(V2​(t))c2​,w2​,h2​​∥∥∥​2​​(5)

    V1V_1V1​和V2V_2V2​分别表示VGG-16中relu1_1和relu2_1层的边界提取器。c1,w2,h1c_1, w_2, h_1c1​,w2​,h1​分别为对应特征图的通道数、宽和高。

3.3 总损失函数

    DCPDN的总损失函数如下:
L=Lt+La+Ld+λjLj(6)L=L^{t}+L^{a}+L^{d}+\lambda_{j} L^{j} \tag{6} L=Lt+La+Ld+λj​Lj(6)

    其中,LtL^tLt为LEL^ELE,表示传输率图的损失。LaL^aLa为大气光损失,使用L2L2L2损失。LdL^dLd为去雾结果损失,也是使用L2L2L2损失。LjL^jLj为判别器损失,定义如下:
Lj=−log⁡(Djoint(Gt(I))−log⁡(Djoint(Gd(I))(7)L^{j}=-\log \left(D_{ {joint}}\left(G_{t}(I)\right)-\log \left(D_{{joint}}\left(G_{d}(I)\right) \right.\right. \tag{7} Lj=−log(Djoint​(Gt​(I))−log(Djoint​(Gd​(I))(7)

    最小化LjL^jLj,即最大化log(Djonit(Gt(I)))log(D_{jonit}(G_t(I)))log(Djonit​(Gt​(I))),表明要让判别器判别生成的传输率图是真实的(训练生成器)。同理后一项也是这么理解。

4. 读后感

    网络很大,可以说是堆出来的性能。当时(2018)用GAN来去雾的文章可能比较少,所以当时来说应该是挺有创新的一篇文章。同时,本文提出的边界感知损失的思想还是值得学习的。

论文阅读:Densely Connected Pyramid Dehazing Network相关推荐

  1. 读Densely Connected Pyramid Dehazing Network

    学习目标: Densely Connected Pyramid Dehazing Network 代码看完一部分 个人体会: 本文提出了AOD-Net,这是一种一体化的管道,可以通过端到端的CNN直接 ...

  2. Densely Connected Pyramid Dehazing Network(DCPDN)

    简介: 本文提出了一种新的端到端单幅图像去雾方法--密连金字塔去雾网络(dcpdn) ,它可以将透射图.大气光和去雾三者结合起来共同学习.通过将大气散射模型直接嵌入到网络中,实现端到端的学习,从而确保 ...

  3. Densely Connected Pyramid Dehazing Network

    Abstract 提出了一种新的端到端的单幅图像去雾方法,称为稠密连接金字塔去雾网络(DCPDN),该方法可以联合学习透射图.大气光照和去雾.通过将大气散射模型直接嵌入到网络中,实现了端到端的学习,从 ...

  4. 论文阅读:Multi-Scale Boosted Dehazing Network with Dense Feature Fusion

    代码:https://github.com/BookerDeWitt/MSBDN-DFF 目录 1. 摘要 2. 提出的方法 2.1 Multi-Scale Boosted Dehazing Netw ...

  5. 论文阅读——Densely Connected Convolutional Networks

    前言 之前有一段时间看了挺多深度学习方面的论文,但是由于时间方面的问题一直没来得及进行总结.最近一段时间突发奇想把自己看论文时的学习笔记给记录一下,由于之前没写过博文,所以排版可能会有点emmm... ...

  6. 文档级关系抽取:A Densely Connected Criss-Cross Attention Network for Document-level Relation Extraction

    提示:文档级关系抽取相关论文 A Densely Connected Criss-Cross Attention Network for Document-level Relation Extract ...

  7. 论文阅读11——《Mutual Boost Network for Attributed Graph Clustering》

    是聚类让我们"聚类",我整理了部分深度图聚类代码,希望大家多多支持(GitHub代码):A-Unified-Framework-for-Deep-Attribute-Graph-C ...

  8. 论文阅读:Saliency-Guided Region Proposal Network for CNN Based Object Detection

    论文阅读:Saliency-Guided Region Proposal Network for CNN Based Object Detection (1)Author (2)Abstract (3 ...

  9. 【论文阅读笔记】Pyramid Scene Paring Networks

    [论文阅读笔记]Pyramid Scene Paring Networks 阅读第一遍(2021.1.18) 提出的问题:当前基于FCN的模型的主要问题是缺乏合适的策略来利用全局场景类别线索 提出:金 ...

最新文章

  1. Linux查看用户所属用户组
  2. Linux实战教学笔记49:Zabbix监控平台3.2.4(一)搭建部署与概述
  3. 综合布线智能配线系统发展趋势
  4. 释放锁的逻辑-LockInternals.releaseLock
  5. 1、oracle数据库简介
  6. SharePoint2010开发最佳实践
  7. 更新显示当前歌曲的名称 winform 0130
  8. 最长回文子串——Manacher 算法​​​​​​​
  9. 用Diff和Patch工具维护源码
  10. android解析json数据 no value for message_Hive使用lateral view和explode处理嵌套json
  11. java cmyk和rgb的转换_CMYK和RGB怎么转换
  12. 计算机的软键盘在哪里,如何调出软键盘_怎么在电脑上调出软键盘_如何调出搜狗软键盘-Guide信息网...
  13. 获取行政边界经纬度数据
  14. 点击word页面自动弹出信息检索
  15. RHCE认证考试教材
  16. POS消费小票(签购单)上的“秘密”
  17. Vue突然报错 doesn‘t work properly without JavaScript enabled
  18. 【黑客攻防技术宝典】第4章 解析应用程序
  19. 我本以为你们会写简历
  20. org.apache.http.conn.HttpHostConnectException: Connect to sonatype-download.global.ssl.fastly.net:44

热门文章

  1. 判断图形是否封闭算法
  2. android仿支付宝收款播报,【iOS】实现类似支付宝收钱语音播报功能
  3. CDR怎么保存JPG格式
  4. matlab裂纹扩展程序,XFEM裂纹扩展范例.ppt
  5. 最扎心的社会潜规则,你知道几个
  6. Java工具类解决Spring初始化ApplicationContext为null的问题
  7. 光隔离器的工作原理及其应用
  8. 钢铁侠马斯克,当上了美国院士
  9. Foursquare收购地理空间分析与可视化平台Unfolded
  10. 内存检测工具Dr.Memory在Windows上的使用