【论文笔记】Contrastive Learning for Compact Single Image Dehazing(AECR-Net)

文章目录
- 问题
- 创新
- 网络
- 主要贡献
- Autoencoder-like Dehazing Network
- Adaptive Mixup for Feature Preserving
- Dynamic Feature Enhancement
- 1. 可变形卷积的使用
- 2. 扩展感受野
- 3. 减少网格伪影
- 4. 融合空间结构信息
- Contrastive Regularization
- 1. 核心思想
- 2. 正样本对和负样本对的构建
- 3. 潜在特征空间
- 4.对比损失函数
- 4. 对比正则化的数学表示
- 5. 对比正则化的作用
- 6. 与感知损失的对比
- 7. 实现细节
- 8. 总结
问题
- 现有的基于深度学习的去雾方法只采用清晰的图像作为正样本来指导去雾网络的训练,而没有利用负信息。
- 它们大多侧重于增强去雾网络,增加深度和宽度,导致对计算和内存的需求很大。
创新
- 一种基于对比学习的对比正则化(CR)方法,分别利用模糊图像和清晰图像作为负样本和正样本的信息。
- 开发了一种基于类自编码器(AE)框架的紧凑型除雾网络
网络

将这种带有自编码器和对比正则化的去雾网络称为AECR-Net。
主要贡献
- 提出了一种新的ACER-Net,通过对比正则化和高度紧凑的基于自编码器的去雾网络有效地生成高质量的无雾图像。与最先进的方法相比,AECR-Net实现了最佳的参数-性能权衡。
- 提出的对比正则化作为一种通用正则化可以进一步提高各种最先进的除雾网络的性能。
- 提出的类自编码器(AE)消雾网络中的自适应混合模块和动态特征增强模块分别有助于消雾模型自适应地保持信息流和增强网络的变换能力
Autoencoder-like Dehazing Network

- 编码器-解码器的对称结构。
- 编码器部分:
通过下采样操作(如卷积层)将输入图像压缩到低分辨率空间,提取高层次的特征表示。在你的网络中,编码器部分使用了 4 倍下采样操作(例如,一个步幅为 1 的常规卷积和两个步幅为 2 的卷积层)。 - 解码器部分:
通过上采样操作(如反卷积或插值)将低分辨率特征图恢复到原始分辨率,生成去雾后的图像。在你的网络中,解码器部分使用了 4 倍上采样和一个常规卷积。
- 编码器部分:
- 通过下采样和上采样操作实现低维特征学习和图像重建。
- 自编码器的核心目标是将输入数据压缩到一个低维潜在空间,从而学习到数据的高效表示。在这个网络中,下采样操作将输入图像压缩到低分辨率空间,FA 模块在这些低分辨率特征上进行学习,提取去雾任务所需的关键特征。
- 自编码器的最终目标是从低维表示中重建原始数据。在这个网络中,解码器部分通过上采样操作将低分辨率特征图恢复到原始分辨率,生成去雾后的图像。
- 引入自适应混合和动态特征增强模块,改善特征保留和重建质量。
- 自编码器通常面临的一个问题是特征丢失,尤其是在深层网络中。为了解决这个问题,该网络引入了自适应混合(Adaptive Mixup)和动态特征增强模块(DFE),通过动态融合下采样层和上采样层的特征,保留更多的细节信息。
- 通过减少 FA 模块数量,实现紧凑模型设计。
- 自编码器通常被设计为紧凑模型,以减少计算和存储开销。该网络通过显著减少 FA 模块的数量(从 57 个减少到 6 个),实现了模型的轻量化。
Adaptive Mixup for Feature Preserving

-
动态特征融合:通过可学习因子动态调整特征融合的权重。
- 核心思想:自适应混合通过可学习因子动态调整下采样层和上采样层特征的融合权重,而不是使用固定的权重(如简单的加法或拼接)。
- 公式表示:

-
特征保留:自适应混合通过融合下采样层和上采样层的特征,保留了浅层特征中的细节信息。解决了浅层特征丢失的问题,保留了边缘、轮廓等细节信息。
-
可学习因子 σ(θi):通过训练学习的参数,用于动态调整特征融合的权重。σ(θi)的值由 sigmoid 函数计算,范围在 (0, 1) 之间。
-
多层级融合:在不同尺度上融合特征,提升网络的表达能力。自适应混合操作应用于多个层级(如两个下采样层和两个上采样层),从而在不同尺度上融合特征。
Dynamic Feature Enhancement

1. 可变形卷积的使用
- 可变形卷积通过以下步骤实现:
- 偏移量预测:首先,通过一个额外的卷积层预测每个采样点的偏移量(offset)。这些偏移量表示卷积核的采样位置相对于固定网格位置的偏移。
- 动态采样:根据预测的偏移量,卷积核的采样位置会动态调整,从而能够更好地捕捉图像中的结构化信息。
- 特征融合:通过动态调整后的卷积核进行卷积操作,生成新的特征图。
- 核心思想:
动态特征增强模块(DFE)通过 可变形卷积(Deformable Convolution) 实现。可变形卷积允许卷积核的采样位置根据输入数据的局部结构动态调整,从而捕捉更多重要信息。 - 与传统卷积的对比:
- 传统卷积使用固定网格核,采样位置是规则的、均匀分布的。
- 可变形卷积通过可学习的偏移量(offset)调整采样位置,使其能够适应输入数据的几何变换和局部结构变化。
2. 扩展感受野
- 感受野(Receptive Field):
感受野是指卷积神经网络中某一层的一个神经元能够“看到”的输入图像的区域大小。 - DFE 的作用:
DFE 通过可变形卷积扩展了感受野,并使其具有自适应形状,从而提升了网络的特征表达能力。
3. 减少网格伪影
- 网格伪影(Gridding Artifacts):
空洞卷积(Dilated Convolution)虽然可以扩大感受野,但可能会导致网格伪影。 - DFE 的优势:
DFE 通过可变形卷积的动态采样机制,避免了网格伪影的产生,从而提升了图像质量。
4. 融合空间结构信息
- 空间结构信息(Spatially Structured Information):
指图像中与空间位置相关的特征信息,如边缘、纹理、形状等。 - DFE 的作用:
DFE 通过可变形卷积动态调整采样位置,使网络能够更有效地融合空间结构信息。
Contrastive Regularization

对比正则化(Contrastive Regularization, CR) 是一种基于对比学习思想的正则化方法,旨在通过拉近正样本对的表示并推远负样本对的表示,约束模型的解空间,从而提升模型的性能。以下是对对比正则化的详细理解:
1. 核心思想
对比正则化的核心思想来源于对比学习(Contrastive Learning),其目标是通过学习一种表示,使得:
- 正样本对(相似的样本)在特征空间中尽可能接近。
- 负样本对(不相似的样本)在特征空间中尽可能远离。
在图像去雾任务中,对比正则化的具体目标是:
- 将恢复图像 ( \hat{J} ) 拉近清晰图像 ( J )(正样本对)。
- 将恢复图像 ( \hat{J} ) 推离雾霾图像 ( I )(负样本对)。
2. 正样本对和负样本对的构建
- 正样本对:
由清晰图像 ( J ) 和恢复图像 ( \hat{J} ) 组成。目标是让恢复图像尽可能接近清晰图像。 - 负样本对:
由恢复图像 ( \hat{J} ) 和雾霾图像 ( I ) 组成。目标是让恢复图像尽可能远离雾霾图像。
3. 潜在特征空间
为了进行对比,需要将图像映射到一个潜在特征空间。在这里,潜在特征空间是通过一个固定的预训练模型(如 VGG-19)提取的中间特征表示的。这些特征能够捕捉图像的语义信息(如边缘、纹理、形状等)。
4.对比损失函数
对比正则化的目标是最小化恢复图像与清晰图像之间的距离,同时最大化恢复图像与雾霾图像之间的距离。具体来说,对比正则化的损失函数可以表示为:

4. 对比正则化的数学表示
对比正则化的目标函数可以表示为:

通过最小化正样本对的距离并最大化负样本对的距离,约束模型的解空间。
5. 对比正则化的作用
- 拉近正样本对:
通过最小化清晰图像和恢复图像在特征空间中的距离,使恢复图像尽可能接近清晰图像。 - 推远负样本对:
通过最大化雾霾图像和恢复图像在特征空间中的距离,使恢复图像尽可能远离雾霾图像。 - 约束解空间:
通过对比正样本对和负样本对,约束模型的解空间,避免过拟合,提升泛化能力。
6. 与感知损失的对比
- 感知损失(Perceptual Loss):
仅通过清晰图像和恢复图像在特征空间中的距离来约束模型(仅使用正样本)。 - 对比正则化(CR):
不仅使用清晰图像和恢复图像(正样本对),还使用雾霾图像和恢复图像(负样本对)来约束模型。
优势:
对比正则化通过引入负样本对,进一步约束解空间,从而提升模型的去雾效果。
7. 实现细节
- 特征提取:
从预训练模型(如 VGG-19)的不同层中提取特征,以捕捉多尺度的语义信息。 - 距离度量:
使用 L1 距离度量特征空间中的距离。 - 权重系数:
不同层的特征可能对任务的重要性不同,因此引入权重系数 ( $ \omega_i $ )来平衡各层的贡献。
8. 总结
对比正则化(CR)通过引入对比学习的思想,利用正样本对和负样本对约束模型的解空间,从而提升去雾效果。其核心思想是:
- 拉近恢复图像和清晰图像的距离(正样本对)。
- 推远恢复图像和雾霾图像的距离(负样本对)。
通过这种方式,CR 不仅能够提升恢复图像的质量,还能避免过拟合,增强模型的泛化能力。
⭐感谢你的阅读,希望本文能够对你有所帮助。如果你喜欢我的内容,记得点赞关注收藏我的博客,我会继续分享更多的内容。⭐
相关文章:
【论文笔记】Contrastive Learning for Compact Single Image Dehazing(AECR-Net)
文章目录 问题创新网络主要贡献Autoencoder-like Dehazing NetworkAdaptive Mixup for Feature PreservingDynamic Feature Enhancement1. 可变形卷积的使用2. 扩展感受野3. 减少网格伪影4. 融合空间结构信息 Contrastive Regularization1. 核心思想2. 正样本对和负样本对的构建…...
分布式存储学习——HBase表结构设计
目录 1.4.1 模式创建 1.4.2 Rowkey设计 1.4.3 列族定义 1.4.3.1 可配置的数据块大小 1.4.3.2 数据块缓存 1.4.3.3 布隆过滤器 1.4.3.4 数据压缩 1.4.3.5 单元时间版本 1.4.3.6 生存时间 1.4.4 模式设计实例 1.4.4.1 实例1:动物分类 1.4.4.2 …...
vue项目如何实现条件查询?
目录 1.前端 2.后端 3.mybatis的sql语句 结语 1.前端 说白了就是,无论该参数是否是空字符串,都会传递到后端。(反正不是null就行)。 2.后端 在controller层中,使用RequestParam注解接收名为registerName的参数&…...
使用multiprocessing实现进程间共享内存
在 Python 中,可以使用多种方法来实现几个进程之间的通信。 简单消息传递:使用 multiprocessing.Queue 或 multiprocessing.Pipe。 共享简单数据:使用 multiprocessing.Value 或 multiprocessing.Array。 共享复杂数据:使用 multiprocessing.Manager。 进程间信号控制:使用…...
在Linux中安装Nginx
上传nginx安装包 Nginx的安装包,从官方下载下来的是c语言的源码包,我们需要自己编译安装。具体操作步骤如下: 安装nginx 安装nginx运行时需要的依赖 yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel 解压源码包到当…...
【每日学点HarmonyOS Next知识】状态栏字体、生命周期、自定义对话框屏幕中间、透明度、tab居中
1、HarmonyOS 单页面如何控制状态栏字体颜色? 状态栏字体颜色可通过设置statusBarContentColor修改,参考文档如下: https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5 参考代码: import…...
地基Prompt提示常用方式
思维链(Chain of Thought, CoT) 思维链(Chain of Thought, CoT) 是指让 AI 在回答问题时,像人类一样展示出一步步的推理过程,而不仅仅是直接给出最终答案。这种方法的目的是让答案更清晰、可信&#…...
外贸企业可以申请网络专线吗?
在对外业务不断扩大的情况下,外贸企业对网络的需求愈发迫切。稳定、快速的网络连接不仅是企业开展国际业务的基础,更是提升竞争力的关键。外贸企业是否可以申请网络专线?如何选择适合的外贸网络专线服务?本文将为您详细解答。 网络…...
阿里巴巴发布 R1-Omni:首个基于 RLVR 的全模态大语言模型,用于情感识别
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
【 Linux 系统中 /etc/resolv.conf 文件的 DNS 配置】
如何在 Linux 系统中修改 /etc/resolv.conf 文件的 DNS 配置 在 Linux 系统中,/etc/resolv.conf 文件用于配置系统的 DNS 服务器。通过修改该文件,可以指定系统使用的 DNS 解析服务器。本文将详细介绍如何通过命令行和脚本修改 /etc/resolv.conf 文件&a…...
《探秘人工智能与鸿蒙系统集成开发的硬件基石》
在科技飞速发展的当下,人工智能与鸿蒙系统的集成开发开辟了创新的前沿领域。这一融合不仅代表着技术的演进,更预示着智能设备生态的全新变革。而在这场技术盛宴的背后,坚实的硬件配置是确保开发顺利进行的关键,它就像一座大厦的基…...
datax源码分析
文章目录 前言一、加载配置文件二、根据加载的配置文件进行调度三、根据配置文件执行读取写入任务总结 前言 在上一篇文章当中我们已经了解了datax的启动原理,以及datax的最基础的配置,datax底层java启动类的入口及关键参数。 接下来我将进行启动类执行…...
QuickAPI 和 DBAPI 谁更香?SQL生成API工具的硬核对比(一)
最近低代码开发火得不行,尤其是能把数据库秒变API的工具,简直是开发者的救星。今天咱就聊聊两款国内玩家:QuickAPI(麦聪软件搞出来的低代码神器)和 DBAPI(开源社区的硬核作品)。这两货都能靠SQL…...
Git使用(一)--如何在 Windows 上安装 Git:详细步骤指南
如果你想在 Windows 机器上安装 Git,可以按照以下详细指南进行操作。 第一步:下载 Git 可通过官网下载 适用于 Windows 的 Git 最新版本。 如果下载速度较慢,可以通过下面提供的百度网盘 链接下载安装包, https://git-scm.com/d…...
C#-使用VisualStudio编译C#工程
一.创建csproj文件 二.创建源cs文件 三.生成解决方案 四.运行解决方案 五.VisualStudio功能列表 <1.代码格式化: CtrlKD完成代码整体格式化 <2.窗口布局 窗口->重置窗口布局 <3.引用查找&关联 <4.包管理 <5.日志输出级别 工具->选项->项目解决方案…...
Qt常见面试题合集
零、基本概念 什么是信号槽? 信号槽类似于软件设计模式中的观察者模式,(观察者模式是一种对象行为模式。它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。…...
使用 Golang 操作 MySQL
在Go语言中,操作SQL数据库,通常会用到一些第三方库来简化数据库的连接、查询和操作过程。其中原生的 database/sql go-sql-driver/mysql 库更符合sql语句使用习惯。 安装 go get github.com/go-sql-driver/mysql 直接上代码来演示基本的创建ÿ…...
单片机—中断系统
什么是中断系统? 为使得CPU具有对外界紧急事件的实时处理能力而设置的,当CPU正在处理某些事的时候,当外界紧急事件请求,CPU会停止当前的事情,先去处理紧急的事件,处理结束后,在返回处理当前事件…...
vscode编译器的一些使用问题
目录 解决pip不可用问题 检查VSCode的终端配置 解决pip不可用问题 eg: C:\Users\student>pip pip 不是内部或外部命令,也不是可运行的程序或批处理文件。 先找到系统环境变量 高级->环境变量 系统属性->Path 变量名随意,自己后续知道…...
ubuntu 和 RV1126 交叉编译Mosqutiio-1.6.9
最近需要交叉编译mosquitto,遇到一些小问题记录一下。 1.众所周知使用它自带的Makefile编译的时候,只需要在编译前,指定它config.mk中的变量:CFLAGS头文件路径 和 LDFLAGS库文件路径就ok,例子如下: expor…...
Docker 》》Docker Compose 》》network 网络 compose
docker 默认的网络 三种模式 # 列出所有当前主机上或Swarm集群上的网络 docker network ls#查看网络详情 docker network inspect network名称# 清除未使用的docker网络 docker network prune -f# 创建网络 ocker network create -d bridge 网络名称 docker network create –s…...
【SpringMVC】深入解析使用 Postman 和浏览器模拟将单个与多个参数传递到后端的原理和后端接收参数的过程
SpringMVC—请求(Request) 访问不同的路径,就是发送不同的请求;在发送请求时,可能会带一些参数,所以学习Spring的请求,主要是学习如何传递参数到后端以及后端如何接收; 我们主要是使用 浏览器 和 Postman …...
VSTO(C#)Excel开发10:启动和卸载顺序 事件处理 监视变化
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…...
vue 仿deepseek前端开发一个对话界面
后端:调用deepseek的api,所以返回数据格式和deepseek相同 {"model": "DeepSeek-R1-Distill-Qwen-1.5B", "choices": [{"index": 0, "delta": {"role": "assistant", "cont…...
UE5以插件的形式加载第三方库
之前在UE中加载第三方库的形式是以静态或者动态链接的形式加载但是不太容易复用。就想着能不能以插件的形式加载第三方库,这样直接把插件打包发行就可以复用了,之前也找过相应的教程但是很难找到比较简单易懂的教程,要么是比较复杂࿰…...
Vue3全局化配置(ConfigProvider)
效果如下图: 在线预览 APIs ConfigProvider 参数说明类型默认值theme主题对象Theme{}abstractboolean是否不存在 DOM 包裹元素truetagstringConfigProvider 被渲染成的元素,abstract 为 true 时有效‘div’ Theme Type 名称说明类型默认值common?全…...
Centos7系统基于docker下载ollama部署Deepseek-r1(GPU版不踩坑)
目录 一、Docker下载安装 二、Ollama安装 三、部署Deepseek-R1 一、Docker下载安装 1、更新源 sudo yum update -y 2、下载依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2 3、添加docker远程仓库地址 yum-config-manager --add-repo http://down…...
[目标检测] 训练之前要做什么
背景:训练一个Yolo8模型,在训练之前,数据集的处理是影响效果的关键因素。 Step1 定义规则 什么是人/车,比如人的话可能是站着的人,如果是骑电动车/自行车就不算是人。 Step2 收集数据集 1. 自己标注。如果是自己标…...
写了一个QT的定时器
主程序 #include <QCoreApplication> #include "mainwindow.h"int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);MainWindow w;return a.exec(); }mainwindow.cpp程序 #include "mainwindow.h"#include <QDateTime>MainWi…...
LeetCode 力扣热题100 分割等和子集
题目解析 题目:给定一个正整数数组 nums,判断是否可以将数组分成两个和相等的子集。 等价问题: • 计算 nums 的总和 S • 如果 S 是奇数,直接返回 false(因为不能均分) • 目标是找到一个子集ÿ…...
