【论文笔记】a Light Weight Transformer for Image Enhancement and Exposure Correction

摘要

  • 现实世界中具有挑战性的照明条件(低光,曝光不足和过度曝光)不仅会造成不愉快的视觉外观,而且会污染计算机视觉任务。
  • 相机采集原始rgb数据后,通过图像信号处理器(ISP)呈现标准的sRGB图像。通过将ISP管道分解为局部和全局图像组件,我们提出了一种轻量级的快速照明自适应转换器(IAT),可以从低光或过曝光条件下恢复正常照明的sRGB图像。
  • 具体来说,IAT使用注意力查询来表示和调整与isp相关的参数,如色彩校正、伽马校正。仅使用~ 90k个参数和~ 0.004s的处理速度,我们的IAT在基准低光增强和曝光校正数据集上始终实现优于最先进(SOTA)的性能。实验性能表明,我们的IAT在各种光照条件下显著增强了目标检测和语义分割任务。

动机

  • 计算机视觉在拍摄质量良好的图像和视频上取得了巨大的成功。然而,现实世界中不断变化的光线条件对人类的视觉表现和下游任务(语义分割和目标检测)提出了挑战。当前,有光线不足、传感器原因导致的图像饱和以及光线不足和过爆可能同时存在。虽然很多研究都在阐述如何改善以人为导向的视觉感知,但也有一些方法通过提高高级别任务对低光和过度曝光条件的鲁棒性来增强它们。

现状

  • 弱光增强、曝光校正已被提出来处理恶劣的光照条件。弱光增强方法在抑制伴随噪声的同时恢复细节。曝光校正方法主要是调整欠曝光/过曝光图像,在短曝光/长曝光时间下重建清晰图像。

贡献

  • 提出了一个快速和轻量级的框架,照明自适应变压器(照明自适应变压器,IAT),以适应现实世界中具有挑战性的光照条件,既可以处理弱光增强任务,也可以处理曝光校正任务。
  • 提出了一种新的变压器式结构来估计isp相关参数,以融合目标sRGB图像,其中可学习的注意查询被用于关注整个图像,我们还将层范数替换为新的轻归一化,以更好地处理低级视觉任务。
  • 在3个低级任务和3个高级任务的多个真实数据集上的大量实验证明了IAT方法优于SOTA方法的性能。IAT重量轻,便于移动设备,模型参数只有0.09M,每张图像处理时间为0.004秒。我们将在发布时发布源代码。

模型

IAT: Illumination Adaptive Transformer

在这里插入图片描述

Pixel-wise Enhancement Module (PEM) and Global Prediction Module (GPM).

在这里插入图片描述

名词

  • 图像评价指标:PSNR 、SSIM、LPIPS
    • PSNR峰值信噪比 :是基于对应像素点间的误差,即基于误差敏感的图像质量评价,由于并未考虑到人眼的视觉特性(人眼对空间频率较低的对比差异敏感度较高,人眼对亮度对比差异的敏感度较色度高,人眼对一个 区域的感知结果会受到其周围邻近区域的影响等),因而经常出现评价结果与人的主观感觉不一致的情况。必须满足两张图像的size要完全一样。
    • SSIM(结构相似性):可以衡量图片的失真程度,也可以衡量两张图片的相似程度。与MSE和PSNR衡量绝对误差不同,SSIM是感知模型,即更符合人眼的直观感受。
    • LPIPS(感知损失):基于学习的感知相似度度量LPIPS 比传统方法(比如L2/PSNR, SSIM, FSIM)更符合人类的感知情况。来源于论文《The Unreasonable Effectiveness of Deep Features as a Perceptual Metric》
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IAT表加密是一种常见的壳技术,可以有效防止程序被静态调试或动态调试。下面是一个简单的IAT表加密示例: ```c // 定义一个函数指针类型 typedef int (*PFunc)(int, int); int main() { // 获取指向MessageBox函数的指针 PFunc pMessageBox = (PFunc)GetProcAddress(GetModuleHandle(L"user32.dll"), "MessageBoxW"); // 执行IAT表加密 DWORD oldProtect; VirtualProtect(&pMessageBox, sizeof(PFunc), PAGE_READWRITE, &oldProtect); DWORD_PTR dwMessageBox = (DWORD_PTR)pMessageBox; DWORD_PTR dwImageBase = (DWORD_PTR)GetModuleHandle(NULL); DWORD_PTR dwOffset = dwMessageBox - dwImageBase; DWORD_PTR dwNewOffset = dwOffset ^ 0x12345678; // 加密密钥 DWORD_PTR dwNewMessageBox = dwImageBase + dwNewOffset; memcpy(&pMessageBox, &dwNewMessageBox, sizeof(PFunc)); VirtualProtect(&pMessageBox, sizeof(PFunc), oldProtect, &oldProtect); // 调用加密后的MessageBox函数 pMessageBox(NULL, L"Hello, world!", L"Title", MB_OK); return 0; } ``` 以上代码中,我们首先使用 GetProcAddress 函数获取指向 MessageBox 函数的指针,然后执行 IAT 表加密。具体来说,我们首先将指针所指向的内存区域修改为可读写的,然后计算 MessageBox 函数在内存中的偏移量,再对该偏移量进行异或运算(使用密钥 0x12345678),得到加密后的偏移量。最后,我们将加密后的偏移量加上模块的基地址,得到加密后的 MessageBox 函数地址,并将其写回原先的指针中。最后,我们调用加密后的 MessageBox 函数,程序就可以正常运行了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值