暗光增强——IAT网络推理测试(详细图文教程)

在这里插入图片描述

IAT模型由两个独立的分支组成,局部分支用于像素调整,并输出两个用于加法和乘法的特征图。全局分支用于全局调整并输出颜色矩阵和gamma值,全局分支受DETR启发,网络通过动态查询学习的方式更新颜色矩阵和gamma值。整个模型只有超过90 k+参数,在LOL数据集上的推理速度仅为0.004s/图像(单个Nvidia-3090 GPU)。(文章中给出的测试速度)

目录

  • 一、源码包准备
  • 二、环境准备
  • 三、测试集准备
  • 四、 推理测试+指标分析
    • 4.1 LOL-V1
      • 4.1.1 脚本及模型
      • 4.1.2 参数修改
      • 4.1.3 测试结果
    • 4.2 LOL-V2
      • 4.2.1 脚本及模型
      • 4.2.2 参数修改
      • 4.2.3 测试结果
  • 五、 仅推理测试
  • 六、推理速度
    • 6.1 GPU
    • 6.2 CPU
  • 七、效果展示
  • 八、总结

一、源码包准备

官网地址为:IAT官网

论文地址:论文

中文解读地址为:中文解读

我在官网源码基础修改了一些代码,并新增了两个脚本,本教程是基于我提供源码包进行讲解,获取方法文章末扫码到公众号「视觉研坊」中回复关键字:暗光增强IAT。获取下载链接。我提供源码包中有测试集。

下载解压后的样子如下:

在这里插入图片描述

二、环境准备

下面是我自己测试环境,仅供参考,运行系统Ubuntu和Windows都可以,我在Ubuntu系统上测试的。

在这里插入图片描述

三、测试集准备

在我的源码包中测试集,官网提供的数据集LOw Light paired dataset下载链接为:添加链接描述

测试集的样子如下,主要测试图像为low文件夹中图像,还有一个high是为了和模型推理后的图像配对做指标分析。

在这里插入图片描述

四、 推理测试+指标分析

对于暗光增强,官网提供了两个模型权重文件,分别对应两个测试脚本,下面分别讲解。

4.1 LOL-V1

4.1.1 脚本及模型

在我源码中,测试脚本为evaluation_lol_v1_GPU.py,模型为best_Epoch_lol_v1.pth,如下,此脚本的输入图像可以单通道,也可以是三通道。

在这里插入图片描述

4.1.2 参数修改

下面是修改可以读入哪些图像:

在这里插入图片描述
在这里插入图片描述

4.1.3 测试结果

上面参数后修改好后,直接运行evaluation_lol_v1_GPU.py即可,测试结果会保存到测试集同级目录下的Result文件夹中,,如下:

在这里插入图片描述

4.2 LOL-V2

4.2.1 脚本及模型

在我源码中,测试脚本为evaluation_lol_v2.py,模型为best_Epoch_lol.pth,如下,此脚本的输入图像只能是三通道。

在这里插入图片描述

4.2.2 参数修改

选择读入哪些图片的修改方法通4.1.2。

在这里插入图片描述
在这里插入图片描述

4.2.3 测试结果

测试结果会自动保存到上面参数修改指定的路径中。

运行上面脚本会输出评价指标,如下:

在这里插入图片描述

五、 仅推理测试

上面的两个测试脚本,都需要准备对应的high样本,如果只是想查看模型推理结果,不想输出评价指标,那么使用evaluation_lol_v1_GPU_Only_predict.py脚本,该脚本使用时只需要准备暗光数据集即可,具体使用见下:

在这里插入图片描述

修改好参数后直接运行。

六、推理速度

6.1 GPU

对应脚本为:evaluation_lol_v1_GPU.py

GPU测试环境:Nvidia GeForce RTX 3060,测试图片640*480,推理时间:2.3ms/fps。

在这里插入图片描述

6.2 CPU

对应脚本为:evaluation_lol_v1_CPU.py

测试环境:12th Gen Intel® Core™ i7-12700H 2.30 GHz,测试图片120*90,推理速度:230ms/fps。

在这里插入图片描述

七、效果展示

下左图为原始暗光图,右侧是IAT模型处理结果图。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

八、总结

目前我就测试了上面讲解的模型,IAT网络很强悍,还有检测和分割的功能,其次官网也提供了训练的方法,学者自行参考官网教程学习。

总结不易,多多支持,谢谢!

感谢您阅读到最后!关注公众号「视觉研坊」,获取干货教程、实战案例、技术解答、行业资讯!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/538728.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Maven简单入门

Maven 一:什么是Maven: Maven是一个项目管理工具,用于构建和管理Java项目。它可以帮助开发人员自动化构建过程,管理项目依赖关系,并协助项目的发布和部署。通过Maven,开发人员可以定义项目的结构、依赖关…

为什么选择VR全景进行企业宣传,如何将VR全景运用在企业展示

引言: 随着科技的不断发展,VR全景技术逐渐成为企业宣传的热门选择。那么,为什么越来越多的企业选择使用VR全景技术进行宣传呢? 一.为什么选择VR全景技术进行企业宣传 1. 提升用户体验 VR全景技术可以为用户营造身临…

基于udp协议的网络通信(windows客户端版+简易聊天室版),重定向到终端

目录 和windows通信 引入 思路 WSADATA 代码 运行情况 简单的聊天室 思路 重定向 代码 terminal.hpp -- 重定向函数 服务端 客户端 运行情况 和windows通信 引入 linux和windows都需要联网,虽然他们系统设计不同,但网络部分一定是相同的,所以套接字也是一样的 这…

【学习记录】调试千寻服务+DTU+导远RTK过程的记录

最近调试车载定位的时候,遇到了一些问题,千寻服务已经正确配置到RTK里面了,但是导远的定位设备一直显示RTK浮动解,通过千寻服务后台查看状态,长时间显示不合法的GGA值。 首先,通过四处查资料,千…

一种基于宏和serde_json实现的rust web中统一返回类

本人rust萌新,写web碰到了这个,基于ChatGPT和文心一言学了宏,强行把这玩意实现出来了,做个学习记录,如果有更好的方法,勿喷。 先看效果,注意不支持嵌套,且kv映射要用>(因为它这个…

C语言实战——扫雷游戏

目录 1. 扫雷游戏分析和设计2.扫雷游戏的代码实现 1. 扫雷游戏分析和设计 1.1扫雷游戏的功能说明 使用控制台实现经典的扫雷游戏游戏可以通过菜单实现继续玩或者退出游戏扫雷的棋盘是9*9的格子默认随机布置10个雷可以排查雷 如果位置不是雷,就显示周围有几个雷 如果…

leetcode代码记录(有效的括号

目录 1. 题目:2. 我的代码:小结: 1. 题目: 给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。 有效字符串需满足&…

C语言——详解字符函数和字符串函数(一)

Hi,铁子们好呀!今天博主来给大家更一篇C语言的字符函数和字符串函数~ 具体讲的内容如下: 文章目录 🎆1.字符分类函数💯💯⏩1.1 什么是字符分类函数的?💯💯⏩1.2 字符函数的类型有哪…

2024.3.14 C++

思维导图 封装类 用其成员函数实现&#xff08;对该类的&#xff09;数学运算符的重载&#xff08;加法&#xff09;&#xff0c;并封装一个全局函数实现&#xff08;对该类的&#xff09;数学运算符的重载&#xff08;减法&#xff09;。 #include <iostream>using nam…

山景BP1048 烧录器烧写

1.首先确保硬件连接没问题&#xff0c;烧写器不能亮红灯&#xff0c;亮红灯说明硬件没正确连接。硬件连接如下&#xff1a; 2.点击Flash Burner 3.编程目标闪存选择SDK包自带的烧写驱动器&#xff0c;闪存映像档选择编译好的bin文件。 4.点击刻录 5.看见有进度条在跑&#x…

使用timm库的一些知识点

timm&#xff08;Torch Image Models&#xff09;是一个在PyTorch上构建的图像模型库&#xff0c;它提供了一系列预训练的深度学习模型&#xff0c;使得研究人员和开发者可以方便地进行图像分类、目标检测等任务。 使用timm库创建模型时&#xff0c;如何确定模型的名字 使用…

Kotlin/Java中String的equals和==

Kotlin/Java中String的equals和 在Java中&#xff0c;如果定义一个常量String和new出一个String对象&#xff0c;是不同的&#xff1a; String s1 "zhang" String s2 new String("zhang") 因为在Java看来&#xff0c;s1只是一个常量&#xff0c;会放在…