论文阅读之《Learn to see in the dark》

Learning to See in the Dark-CVPR2018

Chen ChenUIUC(伊利诺伊大学厄巴纳-香槟分校)

Qifeng Chen, Jia Xu, Vladlen Koltun Intel Labs(英特尔研究院)

文章链接:https://arxiv.org/pdf/1805.01934.pdficon-default.png?t=N7T8https://arxiv.org/pdf/1805.01934.pdf源码地址:
GitHub - cchen156/Learning-to-See-in-the-Dark: Learning to See in the Dark. CVPR 2018Learning to See in the Dark. CVPR 2018. Contribute to cchen156/Learning-to-See-in-the-Dark development by creating an account on GitHub.icon-default.png?t=N7T8https://github.com/cchen156/Learning-to-See-in-the-Dark

研究背景

        在暗光条件下,受到低信噪比和低亮度的影响,图片的质量会受到很大的影响。此外,低曝光率的照片会出现很多噪声,而长曝光时间会让照片变得模糊、不真实。目前很多关于去噪、去模糊、图像增强等技术在极端光照条件下作用很有限。论文中主要解决关注的问题是极端低光条件下的图像成像问题,提出了一种在黑暗中也能快速、清晰的成像系统。

主要工作

        论文提出一种通过全卷积神经网络(FCN)方法将在黑暗环境中进行的拍摄还原的方法,通过控制变量法来对比不同的去噪方法,增加信噪比,并找到一个较好的解决方案。

创新点

本文的主要创新点为:

1.提出了一个新的照片数据集,包含原始的short-exposure low-light图像,并附有long-exposure reference图像作为Ground truth,以往类似的研究使用的都是合成的图像;  

2.与以往方法使用相机拍摄出RGB图像进行复原不同,使用原始的传感器数据作为网络输入。

 3.提出了一种端到端学习方法,通过训练一个全卷积网络来直接处理快速成像系统中低亮度图像。

已有工作回顾   

        传统图像处理过程会应用一系列模块,例如白平衡、去马赛克、去噪、增加图像锐度、 伽马矫正等等。而这些图像处理模块针对不同的相机需要特定的去设计。一些研究提出使用局部线性、可学习的L3 过滤器来模拟现代成像系统中复杂的非线性流程,但是这些方法都无法成功解决在低光条件中快速成像的问题,也无法解决极低的SNR 问题。此外,通过智能手机相机拍摄的照片,利用bursting imaging破裂成像方法,结合多张图像也可以生成效果较好的图像,但是这种方法的复杂程度较高。 

提出的方法

        这是一种端到端的学习方法,训练一个全卷积网络FCN 来直接处理快速成像系统中的低亮度图像。纯粹的FCN 结构可以有效地代表许多图像处理算法,用原始传感器数据作为输入。对于 Bayer 数组,将输入打包为四个通道并在每个通道上将空间分辨率降低一半。原始数据以6×6排列块组成;通过交换相邻通道元素的方法将36个通道的数组打包成9个通道。消除黑色像素并按照期望的倍数缩放数据,将处理后数据作为 FCN 模型的输入,输出是一个带12通道的图像,其空间分辨率只有输入的一半。这个一半大小的输出被子像素层处理,以恢复原始分辨率。

        两个标准的 FCN 作为模型的核心:用于快速图像处理的多尺度上下文聚合网络 (CAN) 和U-net 网络,最终选用的是U-net网络。放大比率决定了模型的亮度输出,在外部指定并作为输入提供给模型,这类似于相机中的 ISO 设置。模型使用L1损失和Adam优化器,网络输入为原始短曝光图像,对应的真实数据是长曝光图像,他们之间的曝光时间的倍数差作为放大因子,训练中随机裁剪512x512的补丁用于训练,用翻转,旋转等操作来做数据增强,初始学习率设为0.0001,2000次迭代后降为0.00001,共进行4000次迭代。

FCN网络

FCN和CNN的区别:CNN卷积层之后连接的是全连接层;FCN卷积层之后仍连接卷积层,输出的是与输入大小相同的特征图。FCN将传统CNN中的全连接层转化成一个个的卷积层。FCN多次卷积图像越来越小,像素越来越低。

         在传统的CNN结构中,前5层是卷积层,第6层和第7层分别是一个长度为4096的一维向量,第8层是长度为1000的一维向量,分别对应1000个类别的概率。FCN将这3层表示为卷积层,卷积核的大小(通道数,宽,高)分别为(4096,7,7)、(4096,1,1)、(1000,1,1)。所有的层都是卷积层,称为全卷积网络。 

 

Unet网络

        U-Net整体的流程是编码和解码,可用于分割,压缩图像和去噪声。也可以用在原图像去噪,做法就是训练的阶段在原图人为的加上噪声,然后放到编码解码器中,下采样可以增加对输入图像的一些小扰动的鲁棒性,比如图像平移,旋转等,减少过拟合的风险,降低运算量,和增加感受野的大小。上采样把抽象的特征再还原解码到原图的尺寸,得到输出。

        复制+剪切特征图可以使浅层网络会保留明显的内容信息,网络层变深,内容会减少,特征会增多,在深层网络添加内容的信息。简单来说就是前期不断的卷积池化来进行下采样,然后再不断卷积上采样,形成一个U形。而下采样的结果还会合成至对应的上采样结果,实现抽象与细节的结合。

CAN卷积

        作者提出一个新颖的卷积方式:膨胀卷积-CAN:MULTI-SCALE CONTEXT AGGREGATION BY DILATED CONVOLUTIONS。通过膨胀卷积实现多尺度语义信息融合,增长感受野的区域,从而获得更好的稠密分类结果。目前FCN通过pooing的方式增大感受野代价是空间分辨率降低,这种方式浪费了很多空间信息。相比原来的标准卷积膨胀卷积多了一个超参数-扩张率,指的是kernel各点之前的间隔数量。这样在不丢失分辨率的前提下拥有了更大的感受野。

数据集 

        See in the dark(SID)数据集包含5094张原始的短曝光图像,每一张都有一个参考的长曝光图像。图像由两台相机(顶部和底部)采集,包含室内和室外。比较有价值的一点就是数据集合都是在极其暗的光照条件下进行拍摄的,是第一个建立的有groundtruth的低光照数据集合。

 实验结果

        传统的图像处理方法在极端低光条件下容易受到严重的噪声影响,该方法能够有效地抑制图像噪声,生成色彩均衡、逼真的图像。

总结

        论文创建了一个黑暗的图像数据集 (SID) 以支持数据驱动方法的研究。利用 SID 数据集,提出一种基于 FCN 模型(以U-net为核心),通过端到端训练,改善了传统的处理低光图像的方法。可以抑制噪声并正确地实现颜色转换。

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

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

相关文章

Android Studio展示Activty生命周期

前言 本文章以及之后文章的程序版本使用Android Studio 2022.3.1 Patch 1 版本编辑,使用语言为java,最低支持API 27 Android 8.1,构建工具版本如下: 本文章主要是介绍Activty跳转和删除,以备后续使用,所以就…

计算机的字符与编码集

文章目录 前言一、字符编码集的历史1.ASCII码2.Extended ASCII码3.字符编码集的国际化 二、中文编码集 前言 今天给大家介绍计算机的字符与编码集,分为两部分:字符编码集的历史、中文编码集。 一、字符编码集的历史 这部分包含三个板块内容&#xff1a…

【通信系列 5 -- HTTPS 介绍】

文章目录 1.1 HTTPS链接网址1.1.1 HTTPS 产生背景1.1.2 HTTPS工作内容1.1.3 SSL/TLS1.1.4 TLS 的命名规范1.1.5 TLS 加密算法1.1.6 分组模式1.1.7 摘要算法1.1.8 非对称加密1.1.9 CA认证 1.2 openssl1.2.1 RSA 签名验签 1.1 HTTPS链接网址 HTTP 是一种 超文本传输协议(Hyperte…

DOCKER本地仓库

概述 随着docker的应用越来越多,安装部署越来越方便,批量自动化的镜像生成和发布都需要docker仓库的本地化应用。 试用了docker的本地仓库功能,简单易上手,记录下来以备后用。 环境 centos:CentOS release 7.0 (F…

CANoe创建仿真工程

CANoe创建仿真工程 写在前面仿真工程的创建创建工程添加CAN数据库添加系统变量创建面板创建网络节点为节点添加代码工程运行测试总结 写在前面 Canoe的安装不是特别方便,我是参加了松勤的培训课程,不仅需要安装软件还需要安装驱动,刚刚学习的…

【PWN · 栈迁移】[CISCN 2019东南]PWN2

一道非常典型、适合用作学习栈迁移的题目。 前言 当存在栈溢出但是溢出字符数并不多的情况下,可以尝试在别处构造rop链,通过栈迁移到目标内存区域,执行rop链。这里不讲栈迁移原理,仅是对题目的分析,适合对栈迁移有初步…

WPF中的多重绑定

MultiBinding 将会给后端传回一个数组, 其顺序为绑定的顺序. 例如: <DataGridMargin"10"AutoGenerateColumns"False"ItemsSource"{Binding Stu}"><DataGrid.Columns><DataGridTextColumn Binding"{Binding Id}" Header…

bash一行输入,多行回显demo脚本

效果图&#xff1a; 脚本&#xff1a; #!/bin/bash # 定义一个变量&#xff0c;用来存储输入的内容 input"" # 定义一个变量&#xff0c;用来存储输入的字符 char""# 为了让read能读到空格键 IFS_store$IFS IFS# 提示内容&#xff0c;在while循环中也有&a…

three.js入门 —— 实现第一个3D案例

前言&#xff1a; three.js入门&#xff0c;根据文档实现第一个3D案例 效果图&#xff1a; 代码实现&#xff1a; const scene new THREE.Scene();//创建一个长方体几何对象Geometryconst geometry new THREE.BoxGeometry(100, 100, 100);//创建一个网络基础材质的材质对象…

机器人革命:脑洞大开的前沿机器人技术!

原创 | 文 BFT机器人 01 由生物启发的多模式移动形态机器人 在一个不断运动的世界中&#xff0c;一种新开发的名为M4&#xff08;多模式移动形态机器人&#xff09;的机器人展示了在包括滚动、飞行和行走在内的八种不同运动模式之间切换的能力。这款机器人由加州理工学院自主…

SOLIDWORKS® 2024 新功能 - 3D CAD

1、 先前版本的兼容性 • 利用您订阅的 SOLIDWORKS&#xff0c;可将您的 SOLIDWORKS 设计作品保存为旧版本&#xff0c;与使用旧版本 SOLIDWORKS 的供应商无缝协作。 • 可将零件、装配体和工程图保存为新版本前两年之内的SOLIDWORKS 版本。 优点&#xff1a; 即使其他用户正…

conda 创建虚拟环境

1.为什么要创建虚拟环境 我们在做开发或者跑论文实验可能会同时进行多个任务&#xff0c;这些任务可能会依赖于不同的python环境&#xff0c;比如有的用到3.6有的用到3.7&#xff0c;这时我们创建不同版本的python&#xff0c;放到虚拟环境中给不同的任务分别提供其所需要的版本…

Git相关知识(1)

目录 1.初识Git 1.基础知识 2.centos中下载 2.基本操作 1.创建本地仓库 2.配置本地仓库 3.版本库、工作区、暂存区 4.添加文件 5.add和commit对git文件的作用 6.修改文件 7.版本回退 8.撤销修改 9.删除文件 3.分支操作 1.HEAD与分支 2.创建分支 3.删除分支 …

基于SSM的班级事务管理系统

基于SSM的班级事务管理系统 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringSpringMVCMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 前台界面 登录界面 班委界面 学生界面 管理员界面 摘要 基于SSM&#xff08;Spring、Spring…

ARM-day9作业

main.c: #include "uart.h"#include "key_it.h"int main(){char c;char *s;uart4_init(); //串口初始化//中断初始化key_it_config();key3_it_config();//完成GPIO相关初始化all_led_init();//风扇初始化fs_init();//蜂鸣器初始化fmq_init();while(1){…

矿区井下智慧用电安全监测解决方案

一、背景 矿区井下作业具有复杂的环境和较高的危险性&#xff0c;对于用电安全的要求尤为严格。传统的管理模式和监测方法往往无法实时、准确地掌握井下用电情况&#xff0c;对安全隐患的排查与预防存在一定局限性。因此&#xff0c;引入智慧用电安全监测解决方案&#xff…

黑马JVM总结(三十二)

&#xff08;1&#xff09;类加载器-线程上下文1 使用的应用程序类加载器来完成类的加载&#xff0c;不是用的启动类加载器&#xff0c;jdk在某些情况下要打破&#xff0c;双亲委派的模式&#xff0c;有时候需要调用应用程序类加载器来完成类的加载&#xff0c;否则有些类它是找…

YB4058是一款经济高效、完全集成的高输入电压单电池锂离子电池充电器

高输入电压充电器支持I2C和OVP保护 概述&#xff1a; YB4058是一款经济高效、完全集成的高输入电压单电池锂离子电池充电器。充电器使用了锂离子电池所需的CC/CV充电曲线。充电器可接受高达27V的输入电压&#xff0c;但当输入电压超过OVP时禁用阈值&#xff0c;通常为6.8V&am…

倒置边框半径卡片

效果展示 CSS 知识点 实现多曲面的思路 实现整体布局 <div class"card"><div class"img_box"></div><div class"content"><div class"price"></div></div> </div>.card {position…

Idea执行Pom.xml导入jar包提示sun.misc.BASE64Encoder jar找不到---SpringCloud工作笔记197

奇怪之前都是好好的,这个是因为,jdk的版本不对,重新打开以后自动被选择成jdk11了...记录一下 原因是从jdk9的时候,这个jar包已经被删除了,所以会报错,如果你用的是jdk自带的这个jar包就会报错,那么还可以,修改,不让他用jdk的,让他用 用org.apache.commons.codec.binary.Base64…