论文阅读:Blind Super-Resolution Kernel Estimation using an Internal-GAN
这是发表在 2019 年 NIPS 上的一篇文章,那个时候还叫 NIPS,现在已经改名为 NeurIPS 了。文章中的其中一个作者 Michal Irani 是以色 Weizmann Institute of Science (魏茨曼科学研究学院) 的一名教授,对图像纹理的内在统计规律有着很深入的研究,提出了很多基于单帧图像的 GAN 模型。这篇文章也是提出了基于单张图像的一种 Internal-GAN 模型,也算是最早开始尝试研究用深度学习进行盲超分的工作,今天看来,依然有一定的借鉴意义。文章中的一个重要假设就是 SR-kernel 是可以在不同尺度下进行递归作用的一种卷积核。
一般的超分方法都会假设一张高分辨率的图经过一个理想的下采样核(比如 Bicubic)得到一张低分辨率的图,基于这样的假设,进行超分的重建。然而,实际的下采样核往往不是理想的,也比一般的假设要复杂。基于理想下采样核训练的超分模型在遇到真实下采样核的时候,重建效果往往不好。这就延伸出了对盲超分的需求,盲超分,顾名思义,就是对下采样核未知情况下的超分重建。进一步证明,真实的 SR-核是能最大化的在 LR 图像的不同尺度上递归地作用在图像 patch 上的一个核。在这篇文章里,文章作者展示了这种跨尺度的递归属性可以通过 Deep Internal Learning 来实现。这篇文章介绍了一种 kernel-GAN,即面向特定图像的 Internal-GAN,在推理阶段,通过对待测试的 LR 图像进行训练,学习图像块之间的内在分布。这个 kernel GAN 的生成器用于生成一个 LR 图像的下采样版本,与此同时判别器无法区分原始 LR 图像的块分布与下采样图像的块分布。生成器一旦训练好,就可以作为特定图像的 SR-kernel。Kernel GAN 不需要额外的训练数据,只需要测试图像本身。
超分的基本假设是一张低分辨率的图像是由一张高分辨率的图像通过卷积和下采样之后得到的:
I L R = ( I H R ∗ k s ) ↓ s (1) I_{LR} = (I_{HR} \ast k_{s}) \downarrow_{s} \tag{1} ILR=(IHR∗ks)↓s(1)
超分的目标,就是给定低分辨率的图 I L R I_{LR} ILR,去恢复高分辨率的图 I H R I_{HR} IHR,之前的很多工作都是假设一些理想的卷积核,比如 Bicubic 等,然而实际的卷积核比这要复杂的多,实际的卷积核会受到 sensor 的影响,以及相机运动的影响,基于错误假设的 SR kernel 去训练超分模型,在实际的 LR 图像上的效果并不理想。
只给定输入的 LR 图像,文章的目的是找到图像特定的 SR 核。我们希望这个核能够最好地保持不同尺度下图像的块分布。更具体点说,我们希望能生成一个下采样的图像,这个图像的块分布与原始的 LR 图像的块分布要尽可能接近。为了匹配一个分布而不是某个单一的图像patch,文章利用了生成模型 GAN 网络,GAN 网络本身就是用来学习分布的一种模型,GAN 通常是通过大量的数据来学习图像的分布。将源分布的样本 p x p_x px 映射到目标分布 p y p_y py
G : x → y x ∼ p x G ( x ) ∼ p x G: x \rightarrow y \quad x \sim p_x \quad G(x) \sim p_x G:x→yx∼pxG(x)∼px
而文章中用到的 kernel GAN 是训练在一张图像上,学习的是这张图像内部图像块之间的独特分布。kernel GAN 包含一个下采样的生成器 G 和一个判别器 D。其中 G 和 D 都是全卷积网络,网络的输入是图像块。给定一张输入的低清图 I L R I_{LR} ILR,生成器 G 是为了生成一个下采样的图,而判别器 D 是为了对生成器生成的图与原始的低清图进行区分。
判别器 D 输出的是一张 heat map,可以称之为 D-map,D-map 上的每个像素会有一个概率,表示的是像素周围的 patch 有多大概率是来自于原始的块分布。D 的训练是交替着进行的,真实样本与虚假样本交替进行训练。D 的 loss 是 pixel-wise 的 MSE loss。label 分别是全 1 和全 0 两种形式。训练的损失函数为:
G ∗ ( I L R ) = arg min G max D { E x ∼ p a t c h e s ( I L R ) [ ∣ D ( x ) − 1 ∣ + ∣ D ( G ( x ) ) ∣ ] + R } (2) G^{*}(I_{LR}) = \argmin_{G} \max_{D} \{ \mathbb{E}_{x \sim patches(I_{LR})} [\left|D(x) - 1 \right| + \left| D(G(x))\right|] + R \} \tag{2} G∗(ILR)=GargminDmax{Ex∼patches(ILR)[∣D(x)−1∣+∣D(G(x))∣]+R}(2)
其中, R R R 表示正则项。
Discriminator
判别器的模型是一个全卷积网络,第一层是一个 7 × 7 7 \times 7 7×7 的卷积层,后面跟了 6 层 1 × 1 1 \times 1 1×1 的卷积层,输入和输出是相同 size 的。
Deep Linear Generator = The downscaling SR-Kernel
对于生成器,文章中使用了一个全线性的卷积网络,也称为深度线性网络,整个网络都是卷积操作,没有非线性的激活函数。整个生成器包含 6 层卷积层,前三层分别是 7 × 7 , 5 × 5 , 3 × 3 7 \times 7, 5 \times 5, 3 \times 3 7×7,5×5,3×3 的卷积层,后面三层是 1 × 1 1 \times 1 1×1 的卷积层,前三层的卷积层可以形成一个 13 × 13 13 \times 13 13×13 的感受野,相当于一个 13 × 13 13 \times 13 13×13 的卷积核。
在训练过程中,可以对生成器直接估计出一个等效的 SR-kernel,上式中的正则项其实是对提取出的 SR-kernel 做的假设,满足如下的关系:
R = α L s u m + β L b o u n d + γ L s p a r s e + σ L c e n t e r (3) R = \alpha \mathcal{L}_{sum} + \beta \mathcal{L}_{bound} + \gamma \mathcal{L}_{sparse} + \sigma \mathcal{L}_{center} \tag{3} R=αLsum+βLbound+γLsparse+σLcenter(3)
其中, α = 0.5 , β = 0.5 , γ = 5 , σ = 1 \alpha=0.5, \beta=0.5, \gamma=5, \sigma=1 α=0.5,β=0.5,γ=5,σ=1
- $\mathcal{L}{sum} = \left | 1 - \sum{i, j} k_{i, j} \right | $
- $\mathcal{L}{bound} = \sum{i, j} \left | k_{i, j} m_{i, j} \right | $ 希望 kernel 的分布尽量靠近中心, m i j m_{ij} mij 是一个预设好的 mask,随着离中心越远,权重越高
- $\mathcal{L}{spare} = \sum{i,j} \left | k_{i,j} \right |^{1/2} $ 希望 kernel 比较稀疏,而不是比较平均的分布
- $\mathcal{L}{center} = \left | (x_0, y_0) - \frac{\sum{i,j}k_{i,j}*(i,j)}{\sum_{i,j}k_{i,j}} \right |_{2} $ 希望kernel 的中心能在中心
文章中也提到,SR-kernel 除了与图像内容本身有关,也和需要下采样的尺度有关,文章中认为不同尺度的 SR-kernel 存在一个简单的变换关系,这也是文章一直强调的,SR-kernel 是可以在不同图像的尺度下重复递归作用的一种核。文章中列举了 4x 下采样与 2x 下采样下的SR-kernel 之间的关系:
( I H R ∗ k 4 ) ↓ 4 = ( ( I H R ∗ k 2 ) ↓ 2 ) ∗ k 2 ↓ 2 (I_{HR} \ast k_{4}) \downarrow_{4} = ((I_{HR} \ast k_{2}) \downarrow_{2}) \ast k_{2} \downarrow_{2} (IHR∗k4)↓4=((IHR∗k2)↓2)∗k2↓2
简单来说,文章认为,通过 2x 下采样的 SR-kernel 的估计,再通过递归关系,可以实现更大尺度下的 SR-kernel 的估计,所以文章最终只训练了一个 2x 下采样下的 SR-kernel。文章中也给出了基于 2x 下采样学习到的 SR-kernel 通过递归的方式去预测估计 4x 下采样的 SR-kernel,如下图所示。
相关文章:

论文阅读:Blind Super-Resolution Kernel Estimation using an Internal-GAN
这是发表在 2019 年 NIPS 上的一篇文章,那个时候还叫 NIPS,现在已经改名为 NeurIPS 了。文章中的其中一个作者 Michal Irani 是以色 Weizmann Institute of Science (魏茨曼科学研究学院) 的一名教授,对图像纹理的内在统计规律有着很深入的研…...

韩国Neowine车规认证加密芯片ALPU-CV
由工采网代理的ALPU-CV是韩国Neowine(纽文微)推出的一款高性能车规级加密芯片;也是ALPU系列中的高端IC,该芯片通过《AEC-Q100》认证,目前已经在国产前装车辆配件量产使用,主要用于版权license保护、设备防伪…...

【每日一题】收集巧克力
文章目录 Tag题目来源题目解读解题思路方法一:枚举操作数 写在最后 Tag 【枚举】【数组】【2023-12-28】 题目来源 2735. 收集巧克力 题目解读 有长度为 n, 下标从 0 开始的整数数组 nums, 表示收集不同类型的巧克力的成本. nums[i] 表示收集类型 i 巧克力的成本…...

【开源】基于Vue+SpringBoot的贫困地区人口信息管理系统
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 人口信息管理模块2.2 精准扶贫管理模块2.3 特殊群体管理模块2.4 案件信息管理模块2.5 物资补助模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 人口表3.2.2 扶贫表3.2.3 特殊群体表3.2.4 案件表3.2.5 物资补助表 四…...
八股文打卡day7——计算机网络(7)
面试题:HTTPS和HTTP的区别 我的回答: 1.加密方式:HTTP是明文传输;HTTPS使用了SSL/TLS进行加密传输。 2.安全性:由于HTTP是明文传输的,所以数据内容容易被第三方截获和读取。而HTTPS通过SSL/TLS进行加密传…...
南大通用数据库 GBase 8a 性能调优方法--Hash索引
南大通用数据库--GBase 8a中建立Hash Index 通常可以用来解决等值查询的定位效率,特别是对以单表精确查询为主的应用场景尤为适合,如电信业务中的并发话单查询等(特别是内存基本充足的场景)。 默认创建GLOBAL的哈希索引。创建全局…...
openFeign调用接口时传递表单参数、Json参数、HttpServletRequest对象
目录 一、控制器二、Feign客户端 openFeign调用接口时传递Json参数以及httpservletrequest对象 一、控制器 RestController RequestMapping("test") public class TestController {/*** 用来测试表单参数传递:单个参数*/PostMapping(value "/formD…...

中国人民银行总行原稽核司副司长王书刚一行莅临国鑫走访交流
12月27日,中国人民银行总行原稽核司副司长王书刚一行莅临Gooxi走访交流,Gooxi相关领导、接待人员陪同调研并汇报了公司有关情况。 中国人民银行总行原稽核司副司长王书刚一行莅临国鑫 在座谈会交流环节,Gooxi接待领导对中国人民银行行长期以来…...
单例模式学习
单例模式是应用最广的设计模式之一,也是程序员最熟悉的一个设计模式,使用单例模式的类必须保证只能有创建一个对象。 一、为什么要使用单例? 在开发过程中,很多时候一个类我们希望它只创建一个对象,比如:…...

基于Qt之QChart 图表(优美的曲线图案例)
## 项目演示 平台:ubuntu18.04 Qt版本:QT5.14.2 源码位置GitCode:https://gitcode.com/m0_45463480/QCharts/tree/main ## QChart 图表 自从 Qt 发布以来,给跨平台的用户带来很多便利。在 Qt5.7 之前,Qt 在开源社区版本里没有 Qt Charts(自带的绘图组件库)。这使得像…...

Flink1.17实战教程(第四篇:处理函数)
系列文章目录 Flink1.17实战教程(第一篇:概念、部署、架构) Flink1.17实战教程(第二篇:DataStream API) Flink1.17实战教程(第三篇:时间和窗口) Flink1.17实战教程&…...
WPF 已有资源字典文件,在xaml 里面引用
如果已经有一个资源字典文件(通常具有 .xaml 或 .resx 扩展名),您可以在 XAML 中通过 MergedDictionaries 属性引用它。MergedDictionaries 属性允许您将多个资源字典文件合并到一个资源字典中,以便在 XAML 中使用。 以下是在 XA…...

ImageJ几何测量
文章目录 距离测量批量测量 科研图像和艺术图像在处理上有一个显著的区别,就是有着定量分析的需求,ImageJ也提供了多种几何何亮工具,包括距离和角度。 距离测量 点击菜单栏File->Open Samples,打开一个示例图像Leafÿ…...
Docker 使用详解看了挺开悟的
使用docker ps命令可以查看所有正在运行中的容器列表, 使用docker inspect命令我们可以查看更详细的关于某一个容器的信息。 $ docker inspect 容器id/image[{"Id": "b57ee6bbf1f4f62a5aba6a73acd53b0f9b8ec542e1f9fa9213159ffd3828c7b4",&q…...
Superset二次开发之部署问题汇总
1.ERROR: Could not build wheels for python-geohash, which is required to install pyproject.toml-based projects # 缺少 geohash whl 文件, 下载地址 www.lfd.uci.edu/~gohlke/pythonlibs/ pip install geohash文件路径 2. AttributeError: module sqlparse.keywords has…...

Mybatis行为配置之Ⅲ—其他行为配置项说明
专栏精选 引入Mybatis Mybatis的快速入门 Mybatis的增删改查扩展功能说明 mapper映射的参数和结果 Mybatis复杂类型的结果映射 Mybatis基于注解的结果映射 Mybatis枚举类型处理和类型处理器 再谈动态SQL Mybatis配置入门 Mybatis行为配置之Ⅰ—缓存 Mybatis行为配置…...
高并发系统常见问题及解决方案(Java)
在 Java Web 应用中,高并发环境会带来一系列的挑战,这些挑战可能会影响应用的性能、稳定性和可用性。下面是一些常见的问题以及相应的解决方案: 1. 线程资源竞争 问题: 当多个线程尝试同时访问同一资源时,可能会导致竞争条件,进而影响数据的完整性。 解决方案: 使用同步…...

【鸿蒙千帆起】《钢岚》成为首款基于 HarmonyOS NEXT 开发的战棋新游
近日,紫龙游戏旗下 BlackJack 工作室全新战棋旗舰作品《钢岚》在华为游戏中心首发上线,并宣布《钢岚》完成鸿蒙原生应用开发,成为基于 HarmonyOS NEXT 开发的首款战棋新游,不但进一步丰富了鸿蒙生态战棋品类游戏内容,也…...
【QT】qt各模块描述
【未完待续】 QT主要版本,各个模块的作用描述。 QT5.12 版本(只有部分) qtgamepad: 提供了对游戏手柄的支持。qtandroidextras: 提供了一些特定于Android的功能。qtmacextras: 提供了一些特定于macOS的功能。qtx11extras: 提供了一些特定于X11的功能。qtsensors:…...

Go 泛型之明确使用时机与泛型实现原理
Go 泛型之明确使用时机与泛型实现原理 文章目录 Go 泛型之明确使用时机与泛型实现原理一、引入二、何时适合使用泛型?场景一:编写通用数据结构时场景二:函数操作的是 Go 原生的容器类型时场景三:不同类型实现一些方法的逻辑相同时…...

label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

Linux 下 DMA 内存映射浅析
序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存,但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程,可以参考这篇文章,我觉得写的非常…...

Qt的学习(一)
1.什么是Qt Qt特指用来进行桌面应用开发(电脑上写的程序)涉及到的一套技术Qt无法开发网页前端,也不能开发移动应用。 客户端开发的重要任务:编写和用户交互的界面。一般来说和用户交互的界面,有两种典型风格&…...
HTML中各种标签的作用
一、HTML文件主要标签结构及说明 1. <!DOCTYPE html> 作用:声明文档类型,告知浏览器这是 HTML5 文档。 必须:是。 2. <html lang“zh”>. </html> 作用:包裹整个网页内容,lang"z…...

数据挖掘是什么?数据挖掘技术有哪些?
目录 一、数据挖掘是什么 二、常见的数据挖掘技术 1. 关联规则挖掘 2. 分类算法 3. 聚类分析 4. 回归分析 三、数据挖掘的应用领域 1. 商业领域 2. 医疗领域 3. 金融领域 4. 其他领域 四、数据挖掘面临的挑战和未来趋势 1. 面临的挑战 2. 未来趋势 五、总结 数据…...

简单聊下阿里云DNS劫持事件
阿里云域名被DNS劫持事件 事件总结 根据ICANN规则,域名注册商(Verisign)认定aliyuncs.com域名下的部分网站被用于非法活动(如传播恶意软件);顶级域名DNS服务器将aliyuncs.com域名的DNS记录统一解析到shado…...