当前位置:网站首页>文章复现:超分辨率网络-VDSR
文章复现:超分辨率网络-VDSR
2022-08-04 20:31:00 【GIS与Climate】
VDSR全称Very Deep Super Resolution,意思就是非常深的超分辨率网络(相比于SRCNN的3层网络结构),一共有20层,其文章见参考链接【1】。
摘要
We present a highly accurate single-image super-resolution (SR) method. Our method uses a very deep con-volutional network inspired by VGG-net used for ImageNet classification. We find increasing our network depth shows a significant improvement in accuracy.Our final model uses 20 weight layers. By cascading small filters many times in a deep network structure, contextual information over large image regions is exploited in an efficient way. With very deep networks, however, convergence speed becomes a critical issue during training. We propose a simple yet effective training procedure. We learn residuals only and use extremely high learning rates (104times higher than SRCNN) enabled by adjustable gradient clipping. Our proposed method performs better than existing meth- ods in accuracy and visual improvements in our results are easily noticeable.
大意就是作者仿照VGG提出了一个有20层的深层网络,且通过残差学习来提升网络的收敛速度,在超分的任务上表现由于传统的SRCNN。
网络架构
作者认为SRCNN的主要缺点有:
其捕获到的信息是小区域的信息(对数据patch的缺点); 收敛太慢; 只适用于单个尺度(就是放大倍数);
VDSR网络的架构图如下所示:
跟SRCNN主要的不同有:
输入与输出大小一样(通过padding); 每一层使用相同的学习率;
主要可以分为如下几个部分:
首先对LR图像进行插值得到ILR(Interpolated low-resolution); 中间的特征提取部分(卷积层+激活层)(其实就是残差信息); 把上面学习到的残差信息和经过插值的ILR图像相加,得到HR图像;
代码
有了上面的结构信息,就可以按照积木思想搭建网络了,只要注意几个细节就好:
中间的特征提取层为3x3x64,也就是kernel size为3,filter数量为64; 每一层记得padding以保持输入和输出的尺寸一致; 每个卷积层后面跟上ReLU激活层;
class VDSR(nn.Module):
def __init__(self, in_channels) -> None:
super(VDSR, self).__init__()
self.block1 = nn.Sequential(
nn.Conv2d(in_channels=in_channels,out_channels=64, kernel_size=3,stride=1, padding=1),
nn.ReLU()
)
self.block2 = nn.Sequential(
nn.Conv2d(64,64,kernel_size=3, stride=1,padding=1),
nn.ReLU(),
nn.Conv2d(64,64,kernel_size=3, stride=1,padding=1),
nn.ReLU(),
nn.Conv2d(64,64,kernel_size=3, stride=1,padding=1),
nn.ReLU(),
nn.Conv2d(64,64,kernel_size=3, stride=1,padding=1),
nn.ReLU(),
nn.Conv2d(64,64,kernel_size=3, stride=1,padding=1),
nn.ReLU(),
nn.Conv2d(64,64,kernel_size=3, stride=1,padding=1),
nn.ReLU(),
nn.Conv2d(64,64,kernel_size=3, stride=1,padding=1),
nn.ReLU(),
nn.Conv2d(64,64,kernel_size=3, stride=1,padding=1),
nn.ReLU(),
nn.Conv2d(64,64,kernel_size=3, stride=1,padding=1),
nn.ReLU(),
nn.Conv2d(64,64,kernel_size=3, stride=1,padding=1),
nn.ReLU(),
)
self.block3 = nn.Sequential(
nn.Conv2d(64,in_channels,kernel_size=3, stride=1,padding=1)
)
def forward(self, x):
y = self.block1(x)
y = self.block2(y)
y = self.block3(y)
y = x + y
return y
上面的层数不对,随便写的,文章中说的是20层,不过本质没有变,主要就是三块; 输入网络的数据记得要预先插值为目标尺寸。
总结
VDSR这个网络整体来说没什么特别的,就是用了残差学习的思想,然后网络层深了点。其他的跟SRCNN是一样的思想。
参考
【1】KIM J, LEE J K, LEE K M 2016. Accurate Image Super-Resolution Using Very Deep Convolutional Networks. 2016 Ieee Conference on Computer Vision and Pattern Recognition (Cvpr) [J]: 1646-1654.
【2】https://medium.com/towards-data-science/review-vdsr-super-resolution-f8050d49362f
边栏推荐
- WIN10系统如何开启终端
- After encountering MapStruct, the conversion between PO, DTO and VO objects is no longer handwritten
- MySQL stored procedure introduction, creation, case, delete, view "recommended collection"
- JS new一个构造器发生了什么?从零手写一个new方法
- 多用户同时远程登录连接到一台服务器
- Go study notes (Part 1) Configuring the Go development environment
- Order of lds links
- 2022年国内手机满意度榜单:华为稳坐国产品牌第一
- ts集成和使用
- 从卖产品到卖“链路”:20条策略 解读直播带货迭代玩法
猜你喜欢
C语言小笔记+题
Interviewer: How is the expired key in Redis deleted?
Zero-knowledge proof notes - private transaction, pederson, interval proof, proof of ownership
长时间序列遥感数据处理及在全球变化、物候提取、植被变绿与固碳分析、生物量估算与趋势分析等领域中的应用
明明加了唯一索引,为什么还是产生了重复数据?
【TypeScript】深入学习TypeScript枚举
漫画 | 老板裁掉我两周后,又把我请回去,工资翻番!
搭建MyCat2一主一从的MySQL读写分离
How to promote the implementation of rural revitalization
Oreo域名授权验证系统v1.0.6公益开源版本网站源码
随机推荐
Feign 与 OpenFeign
Zero-knowledge proof - zkSNARK proof system
如何找到某个 ABAP structure 某字段的源头来自哪个数据库表
工龄10年的测试员从大厂“裸辞”后...
C语言——青蛙跳台阶(递归)
linkboy 5.0 正式发布,新增语音识别、图像识别
c sqlite...
漫画 | 老板裁掉我两周后,又把我请回去,工资翻番!
Tensorflow2 环境搭建
如何使用 jMeter Parallel Controller - 并行控制器以及一些常犯的错误
vscode离线安装插件方法
[TypeScript] In-depth study of TypeScript enumeration
两种白名单限流方案(redis lua限流,guava方案)
How to promote the implementation of rural revitalization
面试官:索引为什么会失效?
刷题-洛谷-P1179 数字统计
SAP UI5 ensures that the control id is globally unique implementation method
Getting Started with Lattice Passwords
C#的Dictionary字典集合按照key键进行升序和降序排列
在vs code中进行本地调试和开启本地服务器