【深度学习实践】基于深度学习的图像去雾算法-ChaIR-实践
本文介绍一个去雾算法ChaIR的使用方法,可以完成图像去雾,也可以用于图像去雨、去噪音等任务。本文不涉及论文原理,只包含源代码的跑通和使用。
先展示一下效果:
| 原图 | 去雾 |
![]() | ![]() |
![]() | ![]() |
论文:Exploring the potential of channel interactions for image restoration
代码地址:https://github.com/c-yn/ChaIR/tree/main/Dehazing
本文的代码及数据集、训练好的权重:图像去雾代码-SOTS划分好的8:2数据集-训练好的去雾权重-包含推理代码
一、准备数据集
作者在github中给出了去雾数据集reside-indoor,reside-outdoor ,SOTS的地址,因为reside-indoor/outdoor太大了,本文介绍SOTS数据集的使用方法。
数据集地址:
| 数据集 | google drive | 百度云 |
| reside-indoor | https://drive.google.com/drive/folders/1pbtfTp29j7Ip-mRzDpMpyopCfXd-ZJhC?usp=sharing | 百度网盘 请输入提取码 |
| reside-outdoor | https://drive.google.com/drive/folders/1eL4Qs-WNj7PzsKwDRsgUEzmysdjkRs22?usp=sharing | - |
| SOTS | https://drive.google.com/file/d/16j2dwVIa9q_0RtpIXMzhu-7Q6dwz_D1N/view?usp=sharing | 百度网盘 请输入提取码 |
这里请注意,使用SOTS需要将其转换为如下格式:

SOTS数据集也有indoor和outdoor,本文只使用outdoor,本文将SOTS outdoor数据集按照8:2划分训练集和测试集,并提供转换好的数据连接:SOTS数据集8:2划分训练和验证集,可用于训练去雾模型
准备好了数据集之后,按照如下目录结构放置即可:

至此数据集准备完成。
二、安装环境
接下来安装conda环境,首先下载代码:
git clone https://github.com/c-yn/ChaIR.git
cd ChaIR
创建虚拟环境:
conda create -n chair python=3.10
conda activate chair
按照官网教程安装pytorch,我安装的是torch 2.3.1 cuda118(可以跳过):
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
安装pytorch-gradual-warmup-lr:
cd pytorch-gradual-warmup-lr
python setup.py install
后续使用过程中会提示缺少相关库,因为源代码未提供requirements.txt库,缺少的库需要自行安装,本文不做赘述。
三、训练验证
环境安装完成,因为本文只介绍去雾模型,所以进入ChaIR/Dehazing/OTS目录:
cd ChaIR/Dehazing/OTS
开始训练,如果显存不够,可以降低batch size,我用的rtx3060,我把batch size降低为2:
python main.py --mode train --data_dir SOTS/outdoor
训练完成后,results/ChaIR目录的ots里面有权重,如下图:

使用best权重进行验证:
python main.py --data_dir SOTS/outdoor --test_model results/ChaIR/ots/Best.pkl
可以看到我训练的精度:

四、推理
因为ChaIR没有推理代码,所以自己写了一个推理代码进行推理,效果如下图:
| 原图 | 标签 | ChaIR推理结果(自己的权重) |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
本文提供训练好的模型和推理代码以及数据集,地址:图像去雾代码-SOTS划分好的8:2数据集-训练好的去雾权重-包含推理代码
相关文章:
【深度学习实践】基于深度学习的图像去雾算法-ChaIR-实践
本文介绍一个去雾算法ChaIR的使用方法,可以完成图像去雾,也可以用于图像去雨、去噪音等任务。本文不涉及论文原理,只包含源代码的跑通和使用。 先展示一下效果: 原图去雾 论文:Exploring the potential of channel …...
《乳腺密度高的女性中,使用AI辅助的乳腺X线筛查与补充筛查超声的比较研究》| 文献速递-基于深度学习的乳房、前列腺疾病诊断系统
Title 题目 Screening Outcomes of Mammography with AI in Dense Breasts: A Comparative Study with Supplemental Screening US 《乳腺密度高的女性中,使用AI辅助的乳腺X线筛查与补充筛查超声的比较研究》 Background 背景 Comparative performance between…...
crm 销售管理系统有哪些?国内外排名前十盘点
本文深入对比的 crm销售管理系统有:1.纷享销客; 2.Zoho CRM; 3.销售易; 4.有赞CRM; 5.Salesforce; 6.HubSpot; 7.简道云CRM; 8.爱客CRM; 9.Apptivo。 如果你正寻找一种方…...
package-lock.json 要提交到git吗?
之前一直没有提交package-lock.json文件到git仓库,直到我打包失败了。。。 我才知道package-lock.json需要提交到git仓库。 npm官网建议将package-lock.json一起提交到代码库中,不要忽略它。 package-lock.json的主要作用是锁定dependencies的版…...
算法学习day32
一、解码方法II(解码方法I的升级版) 在I的基础上增加了*,可以代替1-9中任意一个数字,求解码的方法有多少种 输入:s "*" 输出:9 解释:这一条编码消息可以表示 "1"、"…...
知识与智慧
前两天在medium上看到一篇文章,探讨知识(knowledge)和智慧(wisdom)之间的区别,很受启发,结合自己的经历和理解,形成此文: 何为知识 知识通常指的是信息的积累和对特定领…...
使用FFmpeg实现摄像头RTMP实时推流
在当今的数字时代,视频直播已成为连接人与人之间的重要桥梁,广泛应用于在线教育、远程会议、娱乐直播等多个领域。随着技术的不断进步,人们对于直播的实时性、稳定性和高质量需求日益增加。为了实现高效的视频直播,选择合适的工具和协议至关重要。 RTMP(Real-Time Messagi…...
使用 LabVIEW 编程更改 IMAQ/IMAQdx 接口的相机文件
问题详情 可能需要通过编程方式更改与 IMAQ/IMAQdx 接口关联的相机文件。这种需求通常发生在图像采集系统中,例如使用 PCIe-1433 硬件时,可能需要动态切换不同的相机配置文件来适应不同的应用场景。 解决方案 当前在 Measurement & Automation Ex…...
[后端代码审计] PHP 基础学习
文章目录 前言1. 基础语法1 .1 注释1 .2 分隔符 2. 变量与常量2 .1 变量2 . 1 .1 变量定义2 . 1 .2 变量释放 2 .2 常量2 . 2 .1 常量定义2 . 2 .2 预定义常量 3. 运算符3. 1 算数运算符3 .2 字符串运算符3 .3 赋值运算符3 .4 比较运算符3 .5 逻辑运算符3 .6 其他运算符 4. 流程…...
【OpenCV C++20 学习笔记】直方图计算-split, calcHist, normalize
直方图计算-split, calcHist, normalize 广义直方图示例目标分离通道计算直方图绘制计算结果归一化绘制 最终结果 广义直方图 直方图的横坐标除了可以是图片中的强度值,也可以是任何其他我们想要观察的特征。例如,下面的图片矩阵中包含了0-255的强度值&…...
js入门经典学习小结
简介 js是解释型语言,虽然名字有java,但和java,c等编译型语言不同,它是解释型的,类似perl,py 历史 90年代最早js 1.0版本是网景navigator2引入的 然后欧洲计算机制造商协会(ECMA)…...
nps内网穿透之——腾讯云服务器和linux虚拟机
准备 1、客户端:准备一个内网的linux内网主机,或是一个虚拟机。 2、服务端:准备一个云服务器(阿里、腾讯、华为都行)。 安装方式: 1、自己到Github官网下载安装包上传。 下载地址:https://…...
大数据知识点
VMWare 设置网段 虚拟机设置 JDK部署 云平台 创建VPC 找到阿里云控制台里的VPC,点击专有网络 安全组 搁置…有需要再使用,因为每月要花200左右 大数据 数据导论...
【计算机毕设项目】2025级计算机专业项目推荐 (前后端Web项目)
以下项目选题适合计算机专业大部分专业,技术栈主要为:Java语言,SSMVue框架,MySQL数据库 后台免费获取源码,可提供远程调试、环境安装配置服务(文末有联系方式) 以下是本次部分项目推荐1-end&a…...
【MySQL】2.MySQL实际操作
目录 一、数据分析基本流程 注:Navicat快捷键 二、获取数据后的代码操作 (1)探索数据,查看定义 (2)筛选有用的字段 (3)建新表(查询建表插值 三合一) 注意…...
Winform画圆以及无边框窗体的移动
普通圆 在WinForms中绘制一个圆形,可以通过几种方式实现: 1. 使用ControlPaint类 在窗体的Paint事件中使用ControlPaint.DrawCircle方法来绘制圆形。 private void Form1_Paint(object sender, PaintEventArgs e) {int x 100; // 圆心的X坐标int y …...
如何高效记录并整理编程学习笔记?
高效记录并整理编程学习笔记是提升编程学习效率和效果的重要方法。以下是一些具体的步骤、工具及其使用方法的介绍: 一、高效记录笔记的方法 专注理解:在记录笔记时,首先要保持高度的专注,努力理解老师或教程中讲解的知识点。避免…...
docker的安装和常用命令
docker的安装和常用命令 安装老版本新版本 镜像源配置常用命令基本命令清理文件复制构建镜像上传镜像 补充权限不足无目录权限无用户权限 容器访问jenkins推送镜像失败修改主机名编写Dockerfile 注:这里的安装是针对于cetnos7。 安装 老版本 安装老版本可能遇到报…...
haproxy 7000字配图超详细教程 从小白到入门
简介:HAProxy是一个免费的负载均衡软件,可以运行于大部分主流的Linux操作系统上。HAProxy提供了L4(TCP)和L7(HTTP)两种负载均衡能力,具备丰富的功能。HAProxy的社区非常活跃,版本更新快速,HAProxy具备媲美商用负载均衡器的性能和稳…...
使用 LangChain 掌握检索增强生成 (RAG) 的终极指南:5、将自然语言问题转换为结构化查询
5. 查询构建 — Ragatouille 用户用自然语言提出问题并被路由到特定数据源(例如,向量存储、图形数据库等)后,该问题需要被转换为结构化查询,以便从选定的数据源检索信息(例如,文本到SQL、文本到…...
5分钟本地部署Asian Beauty Z-Image Turbo:零基础生成东方美学人像写真
5分钟本地部署Asian Beauty Z-Image Turbo:零基础生成东方美学人像写真 在数字内容创作蓬勃发展的今天,高质量人像图像的需求与日俱增。特别是对于东方审美风格的人像写真,传统拍摄方式成本高昂且效率低下。今天,我将带你快速部署…...
OpenClaw故障排查指南:Qwen3.5-9B-AWQ-4bit接口连接失败解决方案
OpenClaw故障排查指南:Qwen3.5-9B-AWQ-4bit接口连接失败解决方案 1. 问题背景与典型症状 上周我在本地部署Qwen3.5-9B-AWQ-4bit模型时,遇到了OpenClaw连接失败的棘手问题。明明模型服务已经启动,但OpenClaw始终报错"Model provider un…...
别只盯着代码了!用Multisim仿真带你理解74LS90和555的‘数字心脏’
用Multisim仿真揭秘数字电路:从555脉冲到74LS90计数的实战之旅 当你第一次看到数字电路时,是否觉得那些密密麻麻的芯片引脚和抽象的逻辑符号令人望而生畏?作为一名软件开发者,我曾经也有同样的困惑——直到发现Multisim这个神奇的…...
Project Quay故障排查指南:常见问题及解决方案
Project Quay故障排查指南:常见问题及解决方案 【免费下载链接】quay Build, Store, and Distribute your Applications and Containers 项目地址: https://gitcode.com/gh_mirrors/quay/quay Project Quay是一款强大的容器镜像仓库管理工具,用于…...
你的RAG应用安全吗?藏在向量数据库里的‘特洛伊木马’——外部数据注入风险详解
RAG应用安全深度剖析:如何抵御外部数据源中的"特洛伊木马" 当你在咖啡馆用手机查看银行账户时,是否想过那个看似无害的二维码可能藏着窃取密码的指令?类似的威胁正在AI领域上演——攻击者通过污染RAG(检索增强生成&…...
OpenClaw效率对比:Qwen2.5-VL-7B与传统OCR工具在文档处理中的表现
OpenClaw效率对比:Qwen2.5-VL-7B与传统OCR工具在文档处理中的表现 1. 测试背景与动机 最近在整理公司历史项目文档时,遇到了一个棘手的问题:大量扫描版PDF和图片格式的技术文档需要数字化处理。这些文档包含代码片段、手写注释和复杂表格&a…...
ARM单片机位带操作原理与应用详解
1. ARM单片机位带操作基础回顾在嵌入式开发中,位带操作(Bit-Banding)是Cortex-M系列处理器提供的一个非常实用的功能特性。简单来说,它允许开发者通过访问特定内存地址的方式,直接操作某个寄存器的单个比特位,而无需进行传统的&qu…...
用AirSim和Habitat手把手教你搭建第一个无人机VLN仿真环境(避坑指南)
从零搭建无人机视觉语言导航仿真环境:AirSim与Habitat实战指南 第一次接触无人机视觉语言导航(VLN)时,我被这个交叉领域深深吸引——它完美融合了计算机视觉、自然语言处理和机器人控制三大技术方向。但当我真正开始动手实践时&am…...
2025届毕业生推荐的五大降AI率方案解析与推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 人工智能写作工具,是借助自然语言处理以及深度学习技术制造的智能辅助系统&#…...
TypeScript 快速实战系列:基础入门|TypeScript 核心语法 1 小时吃透(必备基础)
🔥 导读:上一篇我们搞定了TS环境搭建,也搞懂了为什么大模型开发必须学TS。今天这篇,不搞复杂理论,只讲大模型开发中「最常用、最核心」的TS语法——基础类型类型注解,1小时就能吃透,学完就能给大…...



























