当前位置:网站首页>文章复现:SRCNN
文章复现:SRCNN
2022-08-10 05:30:00 【公众号学一点会一点】
12 年,AlexNet 在 ImageNet 图像分类比赛上的超神表现(参考链接【1】),证明了卷积神经网络在图像分类方面的强大能力,之后各个学者在 CNN 的基础上提出了多种改进的图像分类网络架构。
14 年,DONG 首次提出用 CNN 来进行图像的超分辨率重建工作(参考链接【2】),文章提出了 SRCNN 的架构。图像的超分可以认为是一种像素级的回归任务。
在 climate 领域,一般是回归任务,毕竟多数是连续值。
本文来复现一下 SRCNN。
文章摘要
We propose a deep learning method for single image super- resolution (SR). Our method directly learns an end-to-end mapping be- tween the low/high-resolution images. The mapping is represented as a deep convolutional neural network (CNN) [15] that takes the low- resolution image as the input and outputs the high-resolution one. We further show that traditional sparse-coding-based SR methods can also be viewed as a deep convolutional network. But unlike traditional meth- ods that handle each component separately, our method jointly optimizes all layers. Our deep CNN has a lightweight structure, yet demonstrates state-of-the-art restoration quality, and achieves fast speed for practical on-line usage.
大意就是说本文提出了一种轻量化的、端到端的、基于CNN的神经网络,在图像超分任务上的表现超过了传统的稀疏编码方法,且速度很快。
网络架构
SRCNN的网络架构确实也很简单,其网络只有三个卷积层:

对应代码:
class SRCNN(nn.Module):
def __init__(self, inchannels):
super(SRCNN, self).__init__()
self.main = nn.Sequential(
nn.Conv2d(inchannels, 64, kernel_size=9, stride=(1, 1), padding=(4, 4)),
nn.ReLU(),
nn.Conv2d(64, 32, kernel_size=1, stride=(1, 1), padding=(0, 0)),
nn.ReLU(),
nn.Conv2d(32, 1, kernel_size=5, stride=(1, 1), padding=(2, 2))
)
def forward(self, x):
y = self.main(x)
return y
本文采用的是9-1-5的卷积核,这个可以自己调整; SRCNN的输入是先用双线性内插到目标尺寸,然后再输入到网络中; 每一层padding的数量可以自己计算一下,确保输入和输出的大小一致;

SRCNN是用深度卷积来进行超分的第一篇,也算是开创性的工作,但是想要根据自己的研究进行应用,只能说道阻且长。。。。
参考
【1】CNN 用于图像分类的首篇:KRIZHEVSKY A, SUTSKEVER I, HINTON G E J C O T A 2012. ImageNet classification with deep convolutional neural networks. 60: 84 - 90.
【2】CNN 用于图像回归的首篇:DONG C, LOY C C, HE K, et al. Learning a Deep Convolutional Network for Image Super-Resolution[C]//Computer Vision – ECCV 2014.Springer International Publishing,2014:184-199. 10.1007/978-3-319-10593-2_13.
本文由 mdnice 多平台发布
边栏推荐
- aliases node analysis
- pytorch框架学习(9)torchvision.transform
- OpenGauss source code, is it maintained with VSCode in the window system?
- 如何模拟后台API调用场景,很细!
- conda创建虚拟环境方法和pqi使用国内镜像源安装第三方库的方法教程
- 【LeetCode】41. The first missing positive number
- Guys, is it normal that the oracle archive log grows by 3G in 20 minutes after running cdc?
- Tkinter 入门之旅
- 速刷正则表达式一周目(上)
- PyTorch 入门之旅
猜你喜欢
随机推荐
pytorch框架学习(7) tensorboard使用
MongoDB 基础了解(一)
Touch chip used in smart touch remote control
Buu Web
8.STM32F407之HAL库——PWM笔记
An article to master the entire JVM, JVM ultra-detailed analysis!!!
EasyGBS connects to mysql database and prompts "can't connect to mysql server", how to solve it?
利用PyQt5制作YOLOv5的GUI界面
Pony语言学习(九)——泛型与模式匹配(终章)
Jenkins 如何玩转接口自动化测试?
基于Qiskit——《量子计算编程实战》读书笔记(六)
Qiskit学习笔记(三)
The time for flinkcdc to read pgsql is enlarged. Does anyone know what happened? gmt_create':1
反转链表中的第m至第n个节点---leetcode
FPGA工程师面试试题集锦31~40
How cursors work in Pulsar
pytorch框架学习(6)训练一个简单的自己的CNN (三)细节篇
Tkinter 入门之旅
summer preschool assignments
FPGA工程师面试试题集锦11~20