当前位置: 首页 > news >正文

【深度学习实践】基于深度学习的图像去雾算法-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-indoorhttps://drive.google.com/drive/folders/1pbtfTp29j7Ip-mRzDpMpyopCfXd-ZJhC?usp=sharing百度网盘 请输入提取码
reside-outdoorhttps://drive.google.com/drive/folders/1eL4Qs-WNj7PzsKwDRsgUEzmysdjkRs22?usp=sharing-
SOTShttps://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数据集-训练好的去雾权重-包含推理代码

http://www.lryc.cn/news/421691.html

相关文章:

  • 《乳腺密度高的女性中,使用AI辅助的乳腺X线筛查与补充筛查超声的比较研究》| 文献速递-基于深度学习的乳房、前列腺疾病诊断系统
  • crm 销售管理系统有哪些?国内外排名前十盘点
  • package-lock.json 要提交到git吗?
  • 算法学习day32
  • 知识与智慧
  • 使用FFmpeg实现摄像头RTMP实时推流
  • 使用 LabVIEW 编程更改 IMAQ/IMAQdx 接口的相机文件
  • [后端代码审计] PHP 基础学习
  • 【OpenCV C++20 学习笔记】直方图计算-split, calcHist, normalize
  • js入门经典学习小结
  • nps内网穿透之——腾讯云服务器和linux虚拟机
  • 大数据知识点
  • 【计算机毕设项目】2025级计算机专业项目推荐 (前后端Web项目)
  • 【MySQL】2.MySQL实际操作
  • Winform画圆以及无边框窗体的移动
  • 如何高效记录并整理编程学习笔记?
  • docker的安装和常用命令
  • haproxy 7000字配图超详细教程 从小白到入门
  • 使用 LangChain 掌握检索增强生成 (RAG) 的终极指南:5、将自然语言问题转换为结构化查询
  • 浅析JavaScript 堆内存及其通过 Chrome DevTools 捕获堆快照的方法
  • C++学习笔记----2、使用C++进行优雅编程(五)----命名
  • Element UI顶部导航栏与左侧导航栏联动实现~
  • ECMAScript6模板字面量:反引号、${}占位符的使用
  • 网关与AWS云心跳周期,网关断电或者网络不稳定的离线机制
  • 【代码随想录训练营第42期 Day26打卡 贪心Part1 - LeetCode 455.分发饼干 376. 摆动序列 53. 最大子序和
  • 利用有限元法(FEM)模拟电磁场与样品的相互作用
  • 如何保持git主分支树的整洁
  • Datawhale X 魔搭 AI夏令营 Task1 从零入门AI生图原理实践笔记
  • Python中将代码打包成exe文件
  • 【C++ 面试 - 基础题】每日 3 题(十三)