Skip to content

Commit

Permalink
文档更新
Browse files Browse the repository at this point in the history
  • Loading branch information
liuxinwei committed Dec 7, 2024
1 parent 19a8b41 commit 532b845
Show file tree
Hide file tree
Showing 23 changed files with 174 additions and 25 deletions.
7 changes: 7 additions & 0 deletions doc/datasets/cv/DIV2K.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,13 @@
" - `DIV2K/DIV2K_test_LR_unknown/X4/` -- 0901x4.png, 0902x4.png, ..., 1000x4.png 测试低分辨率图像,下采样因子x4 "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 数据处理"
]
},
{
"cell_type": "markdown",
"metadata": {},
Expand Down
30 changes: 20 additions & 10 deletions doc/refs.bib
Original file line number Diff line number Diff line change
@@ -1,3 +1,23 @@
@misc{dong2015imagesuperresolutionusingdeep,
title={Image Super-Resolution Using Deep Convolutional Networks},
author={Chao Dong and Chen Change Loy and Kaiming He and Xiaoou Tang},
year={2015},
eprint={1501.00092},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/1501.00092},
}

@misc{dong2015imagesuperresolutionusingdeepv1,
title={Learning a Deep Convolutional Network for Image Super-Resolution},
author={Chao Dong and Chen Change Loy and Kaiming He and Xiaoou Tang},
year={2014},
eprint={1501.00092},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/1501.00092v1},
}

@misc{yun2019cutmix,
title={CutMix: Regularization Strategy to Train Strong Classifiers with Localizable Features},
author={Sangdoo Yun and Dongyoon Han and Seong Joon Oh and Sanghyuk Chun and Junsuk Choe and Youngjoon Yoo},
Expand Down Expand Up @@ -208,16 +228,6 @@ @article{DBLP:journals/corr/abs-2106-08295
bibsource = {dblp computer science bibliography, https://dblp.org}
}

@misc{dong2015imagesuperresolutionusingdeep,
title={Image Super-Resolution Using Deep Convolutional Networks},
author={Chao Dong and Chen Change Loy and Kaiming He and Xiaoou Tang},
year={2015},
eprint={1501.00092},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/1501.00092},
}

@ARTICLE{9044873,
author={Wang, Zhihao and Chen, Jian and Hoi, Steven C. H.},
journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
Expand Down
79 changes: 68 additions & 11 deletions doc/sr/SRCNN/paper.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,73 @@
# SRCNN 论文解读
# SRCNN 论文阅读

SRCNN 提出了一种用于单图像超分辨率 (SR) 的新型深度学习方法。SRCNN 表明,传统的基于稀疏编码的 SR 方法可以重新表述为深度卷积神经网络。SRCNN 提出的结构具有简单和鲁棒的优点,可以应用于其他低级视觉问题,如图像去模糊或同步 SR+去噪。还可以研究网络以应对不同的上采样因子。
```{topic} 来源
- [Image Super-Resolution Using Deep Convolutional Networks](https://mmlab.ie.cuhk.edu.hk/projects/SRCNN.html)
- [Caffe 源码](https://mmlab.ie.cuhk.edu.hk/projects/SRCNN/SRCNN_train.zip)
- {cite:t}`dong2015imagesuperresolutionusingdeep`
```

主要贡献:
1. SRCNN 提出了用于图像超分辨率的全卷积神经网络(fully convolutional neural network)。该网络直接学习低分辨率和高分辨率图像之间的端到端映射,除了优化之外,几乎没有前/后处理。
2. SRCNN 建立了基于深度学习的 SR 方法和传统的基于稀疏编码的 SR 方法的关系。此关系为网络结构的设计提供了指导。
3. 证明深度学习在超分辨率的经典计算机视觉问题中很有用,并且可以获得良好的质量和速度。
## 摘要

## SRCNN 网络结构
本文提出了一种用于单幅图像超分辨率(SR)的深度学习方法。本文的方法直接学习低分辨率和高分辨率图像之间的端到端映射。该映射被表示为深度卷积神经网络(CNN),它以低分辨率图像作为输入,并输出高分辨率图像。进一步研究表明,传统的基于稀疏编码的 SR 方法也可以被视为深度卷积网络。但与传统方法分别处理每个组件不同,本文的方法联合优化所有层。本文的深度 CNN 具有轻量级结构,但展示了最先进的恢复质量,并在实际在线使用中实现了快速速度。本文探索了不同的网络结构和参数设置,以在性能和速度之间取得平衡。此外,本文将网络扩展到同时处理三个颜色通道,并展示了更好的整体重建质量。

SRCNN 网络结构主要包括三个部分:
所提出的超分辨率卷积神经网络(SRCNN)在仅经过几次训练迭代后,就超越了双三次插值基线,并且在适度训练后优于基于稀疏编码的方法(SC)。通过更多的训练迭代,性能可能会进一步提高。

- patch 提取和表示:从低分辨率图像中提取重叠的 patch,并通过卷积算子表示为高维向量。这些高维向量组成特征图(feature maps)。
- 非线性映射:将每个高维向量非线性地映射到另一个高维向量上。这个映射过程可以通过1x1卷积实现,从而改变特征的个数但保持特征本身不变。非线性体现在使用了ReLU激活函数。
- 重构:聚合高维向量以生成最终的高分辨率图像。重建后的图像应尽可能与原始高分辨率图像相似。
## 1 引言

单幅图像超分辨率(SR)旨在从单幅低分辨率图像中恢复高分辨率图像,是计算机视觉中的经典问题。由于对于任何给定的低分辨率像素都存在多种解决方案,因此这个问题本质上是不适定的(ill-posed)。换句话说,它是欠定的反问题(underdetermined inverse problem),其解不是唯一的。通常通过强先验信息约束解空间来缓解这个问题。为了学习先验信息,最近的最先进方法大多采用基于示例的策略。这些方法要么利用同一图像的内部相似性,要么从外部低分辨率和高分辨率示例对中学习映射函数。基于外部示例的方法可以针对通用图像超分辨率进行建模,也可以根据提供的训练样本设计为适合特定领域任务,例如人脸幻觉。

基于稀疏编码的方法是代表性的基于外部示例的 SR 方法之一。该方法在其解决方案流程中涉及几个步骤。首先,从输入图像中密集地裁剪重叠的图像块,并进行预处理(例如,减去均值和归一化)。然后,这些图像块通过低分辨率字典进行编码。稀疏系数随后传递到高分辨率字典中,以重建高分辨率图像块。重叠重建的图像块通过(例如,加权平均)聚合以生成最终输出。大多数基于外部示例的方法都共享这一流程,特别关注于学习与优化字典或构建高效的映射函数。然而,流程中的其余步骤很少在统一的优化框架中进行优化或考虑。

在本文展示了上述流程等价于深度卷积神经网络(更多细节见第3.2节)。受此启发,考虑直接学习低分辨率和高分辨率图像之间端到端映射的卷积神经网络。本文的方法与现有的基于外部示例的方法有根本区别,因为本文的方法不显式地学习字典或流形来建模图像块空间。这些是通过隐藏层隐式实现的。此外,图像块提取和聚合也被表述为卷积层,因此也参与了优化。在本文的方法中,整个 SR 流程通过学习完全获得,几乎没有预处理或后处理。

本文将提出的模型命名为超分辨率卷积神经网络(SRCNN)[^1]。所提出的 SRCNN 具有几个吸引人的特性。首先,其结构设计简洁,但与最先进的基于示例的方法相比,提供了更高的准确性[^2]。其次,在适度的滤波器和层数下,即使在 CPU 上也能实现快速的实际在线使用速度。本文的方法比许多基于示例的方法更快,因为它完全是前馈的,在使用时不需要解决任何优化问题。第三,实验表明,当(i)更大和更多样化的数据集可用,和/或(ii)使用更大和更深的模型时,网络的恢复质量可以进一步提高。相反,更大的数据集/模型对现有的基于示例的方法提出了挑战。此外,所提出的网络可以同时处理彩色图像的三个通道,以实现改进的超分辨率性能。

总的来说,本研究的主要贡献主要在三个方面:
1. 提出了一种用于图像超分辨率的完全卷积神经网络。该网络直接学习低分辨率和高分辨率图像之间的端到端映射,除了优化之外几乎没有预处理或后处理。
2. 建立了基于深度学习的 SR 方法与传统的基于稀疏编码的 SR 方法之间的关系。这种关系为网络结构的设计提供了指导。
3. 证明了深度学习在经典的计算机视觉问题——超分辨率中的有效性,并且可以实现良好的质量和速度。

这项工作的初步版本之前已经发表 {cite:t}`dong2015imagesuperresolutionusingdeepv1`。当前的工作在初始版本的基础上有了显著的补充。首先,通过在非线性映射层引入更大的滤波器尺寸,并探索通过添加非线性映射层来加深结构,从而改进了 SRCNN。其次,将 SRCNN 扩展到同时处理三个颜色通道(在 YCbCr 或 RGB 颜色空间中)。实验上,证明了与单通道网络相比,性能可以得到提升。第三,对初始结果增加了大量的新分析和直观的解释。还从 [Set5](https://paperswithcode.com/dataset/set5)[Set14](https://paperswithcode.com/dataset/set14)测试图像扩展到 BSD200(200张测试图像)。此外,与许多最近发表的方法进行了比较,并确认模型在使用不同评估指标时仍然优于现有方法。

[^1]: 实现代码可在 <http://mmlab.ie.cuhk.edu.hk/projects/SRCNN.html> 获取。

[^2]: 当存在真实图像时,使用不同的评估指标(如峰值信噪比(PSNR)、结构相似性指数(SSIM)[43]、多尺度SSIM[44]、信息保真度准则[38])进行数值评估。

## 2 相关工作

### 2.1 图像超分辨率

根据图像先验,单幅图像超分辨率算法可以分为四类——预测模型、基于边缘的方法、图像统计方法和基于图像块(或基于示例)的方法。这些方法在 Yang 等人的工作中得到了彻底的研究和评估。其中,基于示例的方法达到了最先进的性能。

基于内部示例的方法利用自相似性属性,并从输入图像生成示例图像块。Glasner的工作首次提出,并提出了几种改进的变体以加速实现。基于外部示例的方法从外部数据集中学习低分辨率和高分辨率图像块之间的映射。这些研究在如何学习紧凑的字典或流形空间以关联低分辨率和高分辨率图像块,以及如何在这样空间中进行表示方案方面有所不同。在Freeman等人的开创性工作中,字典直接表示为低分辨率和高分辨率图像块对,并在低分辨率空间中找到输入图像块的最近邻(NN),使用其对应的高分辨率图像块进行重建。Chang等人引入流形嵌入技术作为NN策略的替代方案。在Yang等人的工作中,上述NN对应关系进一步发展为更复杂的稀疏编码公式。其他映射函数如核回归、简单函数、随机森林和锚定邻域回归被提出以进一步提高映射的准确性和速度。基于稀疏编码的方法及其几种改进是目前最先进的SR方法之一。在这些方法中,图像块是优化的重点;图像块提取和聚合步骤被视为预处理/后处理,并单独处理。

大多数SR算法[2][4][15][41][48][49][50][51]专注于灰度或单通道图像超分辨率。对于彩色图像,上述方法首先将问题转换到不同的颜色空间(YCbCr或YUV),然后仅在亮度通道上应用SR。也有一些工作尝试同时超分辨所有通道。例如,Kim和Kwon[25]以及Dai等人[7]将他们的模型应用于每个RGB通道,并将它们组合以产生最终结果。然而,他们都没有分析不同通道的SR性能,以及恢复所有三个通道的必要性。

### 2.2 卷积神经网络
卷积神经网络(CNN)已有数十年的历史[27],最近由于其在图像分类[18][26]中的成功,深度CNN显示出爆炸性的流行。它们也成功应用于其他计算机视觉领域,如目标检测[34][40][52]、人脸识别[39]和行人检测[35]。这一进展的几个关键因素包括:(i)在现代强大GPU上的高效训练实现[26],(ii)提出整流线性单元(ReLU)[33],使得收敛更快,同时仍保持良好质量[26],以及(iii)易于获取大量数据(如ImageNet[9])用于训练更大模型。我们的方法也从这些进展中受益。

### 2.3 用于图像恢复的深度学习
已有一些研究使用深度学习技术进行图像恢复。多层感知器(MLP),其所有层都是全连接的(与卷积相反),被应用于自然图像去噪[3]和去模糊后去噪[36]。与我们的工作更相关的是,卷积神经网络被应用于自然图像去噪[22]和去除噪声模式(污垢/雨)[12]。这些恢复问题或多或少都是去噪驱动的。Cui等人[5]提出在他们的超分辨率流程中嵌入自动编码器网络,基于内部示例方法[16]。深度模型并非专门设计为端到端解决方案,因为级联的每一层都需要独立优化自相似性搜索过程和自动编码器。相反,所提出的SRCNN优化了端到端映射。此外,SRCNN在速度上更快。它不仅在定量上是一种优越的方法,而且在实际应用中也是一种有用的方法。

## 3 用于超分辨率的卷积神经网络

## 3.1 公式化

考虑单幅低分辨率图像,首先使用双三次插值将其放大到所需尺寸,这是执行的唯一预处理[^3]。将插值后的图像表示为 $Y$。目标是从 $Y$ 中恢复图像 $F(Y)$,使其尽可能接近真实的高分辨率图像 $X$。为了便于表示,仍然称 $Y$ 为“低分辨率”图像,尽管它与 $X$ 具有相同的大小。希望学习映射 $F$,从概念上讲,它包括三个操作:
1. 图像块提取与表示:此操作从低分辨率图像 $Y$ 中提取(重叠的)图像块,并将每个图像块表示为高维向量。这些向量构成一组特征图,其数量等于向量的维度。
3. 非线性映射:此操作将每个高维向量非线性地映射到另一个高维向量。每个映射后的向量在概念上是高分辨率图像块的表示。这些向量构成另一组特征图。
3. 重建:此操作聚合上述高分辨率图像块的表示,以生成最终的高分辨率图像。该图像应与真实图像 $X$ 相似。

所有这些操作形成一个卷积神经网络。网络的概览如图2所示。接下来详细定义每个操作。

[^3]: 双三次插值也是一种卷积操作,因此可以将其表述为卷积层。然而,该层的输出大小大于输入大小,因此存在分数步幅。为了利用流行的优化实现(如cuda-convnet[26]),将此“层”排除在学习之外。

### 3.1.1 图像块提取与表示

在图像恢复中的一种流行策略(例如,[1])是密集地提取图像块,然后通过一组预训练的基(如 PCA、DCT、Haar 等)来表示它们。这等价于通过一组滤波器对图像进行卷积,每个滤波器都是一个基。在本文的公式中,将这些基的优化纳入网络的优化中。形式上,第一层表示为操作 $F_1$:

$$
F_1(Y) = \max (0, W_1 ∗ Y + B_1)
$$

其中,W1和B1分别表示滤波器和偏置,'∗'表示卷积操作。这里,W1对应于n1个支持c×f1×f1的滤波器,其中c是输入图像的通道数,f1是滤波器的空间大小。直观地说,W1在图像上应用n1个卷积,每个卷积的核大小为c×f1×f1。输出由n1个特征图组成。B1是一个n1维向量,其每个元素与一个滤波器相关联。我们在滤波器响应上应用整流线性单元(ReLU,max(0, x))[33]4。
39 changes: 39 additions & 0 deletions doc/sr/SRCNN/srcnn.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
以下是与超分辨率卷积神经网络(SRCNN)相关的论文列表,包括原始工作、扩展和应用:


## 1. 原始SRCNN论文:
- **Dong, C., Loy, C. C., He, K., & Tang, X. (2016).**
"Image Super-Resolution Using Deep Convolutional Networks."
*IEEE Transactions on Pattern Analysis and Machine Intelligence*, 38(2), 295-307.
[DOI: 10.1109/TPAMI.2015.2439281](https://doi.org/10.1109/TPAMI.2015.2439281)

## 2. 扩展和改进:
- **Kim, J., Lee, J. K., & Lee, K. M. (2016).**
"Accurate Image Super-Resolution Using Very Deep Convolutional Networks."
*Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition*, pp. 1646-1654.
[arXiv:1511.04587](https://arxiv.org/abs/1511.04587)

- **Ledig, C., Theis, L., Huszár, F., Caballero, J., Cunningham, A., Acosta, A., & Aitken, A. P. (2017).**
"Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network."
*Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition*, pp. 4681-4690.
[arXiv:1609.04802](https://arxiv.org/abs/1609.04802)

- **Shi, W., Caballero, J., Huszár, F., & Aitken, A. P. (2016).**
"Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network."
*Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition*, pp. 1874-1883.
[arXiv:1609.05158](https://arxiv.org/abs/1609.05158)

SRCNN 提出了一种用于单图像超分辨率 (SR) 的新型深度学习方法。SRCNN 表明,传统的基于稀疏编码的 SR 方法可以重新表述为深度卷积神经网络。SRCNN 提出的结构具有简单和鲁棒的优点,可以应用于其他低级视觉问题,如图像去模糊或同步 SR+去噪。还可以研究网络以应对不同的上采样因子。

主要贡献:
1. SRCNN 提出了用于图像超分辨率的全卷积神经网络(fully convolutional neural network)。该网络直接学习低分辨率和高分辨率图像之间的端到端映射,除了优化之外,几乎没有前/后处理。
2. SRCNN 建立了基于深度学习的 SR 方法和传统的基于稀疏编码的 SR 方法的关系。此关系为网络结构的设计提供了指导。
3. 证明深度学习在超分辨率的经典计算机视觉问题中很有用,并且可以获得良好的质量和速度。

## SRCNN 网络结构

SRCNN 网络结构主要包括三个部分:

- patch 提取和表示:从低分辨率图像中提取重叠的 patch,并通过卷积算子表示为高维向量。这些高维向量组成特征图(feature maps)。
- 非线性映射:将每个高维向量非线性地映射到另一个高维向量上。这个映射过程可以通过1x1卷积实现,从而改变特征的个数但保持特征本身不变。非线性体现在使用了ReLU激活函数。
- 重构:聚合高维向量以生成最终的高分辨率图像。重建后的图像应尽可能与原始高分辨率图像相似。
1 change: 0 additions & 1 deletion doc/sr/index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# 超分辨率

```{toctree}
intro
SRCNN/index
```
1 change: 0 additions & 1 deletion doc/tutorials/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
```{toctree}
basics/index
transforms/index
vision/index
feature-extraction
old/index
```
1 change: 0 additions & 1 deletion doc/tutorials/old/intermediate/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,4 @@ fx_profiling
memory_format
forward_ad_usage
fx_conv_bn_fuser
nlp/index
```
2 changes: 1 addition & 1 deletion doc/tutorials/old/intermediate/pinmem-nonblock.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@
"tensordict in your environment yet, install it by running the following\n",
"command in a separate cell:\n",
"\n",
"``` {.bash}\n",
"```bash\n",
"# Install tensordict with the following command\n",
"!pip3 install tensordict\n",
"```\n",
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
3 changes: 3 additions & 0 deletions tests/refs/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# 资料汇总

本目录收录临时的一些资料,后续会整理到其他地方
File renamed without changes.
Loading

0 comments on commit 532b845

Please sign in to comment.