首页 > 其他分享 >SRCNN-图像超分辨的学习

SRCNN-图像超分辨的学习

时间:2022-10-18 15:32:46浏览次数:78  
标签:SRCNN flags 图像 分辨 FLAGS DEFINE dir size



文章摘要

《Learning a Deep Convolutional Network for Image Super-Resolution》的学习。
本文深度学习的方法实现单张图的超分辨,其中深度学习是采用卷积神经网络来实现。这种方法(SRCNN)是一种端到端的作法,输入低分辨率的图像,直接输出高分辨率的图像。本文设计是一种轻量级的神经网络结构,可是它能够实现先进的恢复质量,并且可以快速在线使用。


算法模型

SRCNN-图像超分辨的学习_ide

此图展示了SRCNN的网络结构。

SRCNN-图像超分辨的学习_tensorflow_02

SRCNN-图像超分辨的学习_插值_03

  • TensorFlow代码
// 主函数from model import SRCNNfrom utils import input_setup
import numpy as npimport tensorflow as tf
import pprintimport os
flags = tf.app.flagsflags.DEFINE_integer("epoch", 15000, "Number of epoch [15000]")flags.DEFINE_integer("batch_size", 128, "The size of batch images [128]")flags.DEFINE_integer("image_size", 33, "The size of image to use [33]")flags.DEFINE_integer("label_size", 21, "The size of label to produce [21]")flags.DEFINE_float("learning_rate", 1e-4, "The learning rate of gradient descent algorithm [1e-4]")flags.DEFINE_integer("c_dim", 1, "Dimension of image color. [1]")flags.DEFINE_integer("scale", 3, "The size of scale factor for preprocessing input image [3]")flags.DEFINE_integer("stride", 14, "The size of stride to apply input image [14]")flags.DEFINE_string("checkpoint_dir", "checkpoint", "Name of checkpoint directory [checkpoint]")flags.DEFINE_string("sample_dir", "sample", "Name of sample directory [sample]")flags.DEFINE_boolean("is_train", True, "True for training, False for testing [True]")FLAGS = flags.FLAGS
pp = pprint.PrettyPrinter()
def main(_): pp.pprint(flags.FLAGS.__flags)
if not os.path.exists(FLAGS.checkpoint_dir): os.makedirs(FLAGS.checkpoint_dir) if not os.path.exists(FLAGS.sample_dir): os.makedirs(FLAGS.sample_dir)
with tf.Session() as sess: srcnn = SRCNN(sess, image_size=FLAGS.image_size, label_size=FLAGS.label_size, batch_size=FLAGS.batch_size, c_dim=FLAGS.c_dim, checkpoint_dir=FLAGS.checkpoint_dir, sample_dir=FLAGS.sample_dir)
srcnn.train(FLAGS)
if __name__ == '__main__': tf.app.run()

Tensorflow完整代码:​https://github.com/tegg89/SRCNN-Tensorflow​


结果

SRCNN-图像超分辨的学习_ide_04

SRCNN-图像超分辨的学习_tensorflow_05

SRCNN-图像超分辨的学习_tensorflow_06

    双三次差值的 :      PSNR=26.633759 dB

    SRCNN的:            PSNR=29.290147 dB

    相比两种算法的PSNR,SRCNN有着明显的提升。


SRCNN的不足

  1. 利用Relu作为激活函数虽然速度快,但是训练的时候很”脆弱”,很容易就”die”;
  2. SRCNN需要先通过双三次插值的方法对低分辨率的图片插值放大尺寸。


参考文献

    [1] https://zhuanlan.zhihu.com/p/49846783

    [2] https://medium.com/coinmonks/review-srcnn-super-resolution-3cb3a4f67a7c

    [3] http://jiaqianlee.com/2018/06/09/SRCNN/


SRCNN-图像超分辨的学习_ide_07

标签:SRCNN,flags,图像,分辨,FLAGS,DEFINE,dir,size
From: https://blog.51cto.com/u_15699042/5766770

相关文章

  • 基于OpenCV实现图像间快速颜色迁移
    作者:AdrianRosebrock编译:ColorSpace导读本文主要介绍如何在两个图像之间实现颜色迁移的功能。给定任意两个图像,一个源图像,一个目标图像,然后可以将源图像的颜色空间迁移到......
  • 基于OpenCV的图像形状检测(含源码)
    导读本文给大家分享一个用OpenCV传统方法实现形状检测的小案例。 背景介绍实例来源:https://github.com/akshaybhatia10/ComputerVision-Projects/tree/master/FindShapes......
  • OpenCV图像拼接函数vconcat()&hconcat()
        OpenCV图像直接拼接方法下面链接已做介绍,​​OpenCV常用图像拼接方法(一):直接拼接​​,只是这次我们将使用现成的函数实现,它们是vconcat()和hconcat(),当然也有一些......
  • OpenCV4.2使用viz模块显示3D图像
        在OpenCV3D视觉中如果需要显示三维数据或图像就需要用到viz模块,viz是OpenCV的3D显示模块,OpenCV官方release版本不包含此模块,需要我们自己cmake编译。  Cmake步......
  • OpenCV常用图像拼接方法(一) :直接拼接
      OpenCV常用图像拼接方法将分为四部分与大家分享,这里是第一种方法,欢迎关注后续。  OpenCV常用图像拼接方法(一):直接拼接,俗称硬拼,就是简单的将两张图片合并成一张......
  • OpenCV常用图像拼接方法(二) :基于模板匹配拼接
      OpenCV常用图像拼接方法将分为四部分与大家分享,这里是第二种方法,欢迎关注后续,本文源码与素材链接位于文章末尾。  OpenCV常用图像拼接方法(二):基于模板匹配的图......
  • 762-GMAX3265 3.2微米 6500万分辨率 全局快门CMOS图像传感器
    GMAX32653.2微米6500万分辨率全局快门CMOS图像传感器        GMAX3265图像传感器的像素尺寸为3.2μm,具有6500万像素全分辨率,在12bi......
  • 图像合成技能
    这节课讲解保姆级抠图教程,抠图工具有【魔棒工具】和【钢笔工具】,我们必须根据图像去判断哪种方法是最合适,最有效率。2.接着开始今天的讲解,首先观察【图片的形状特征】,图像......
  • 一张图理清所有的RAW RGB YUV图像格式
    0.引言之前一直做着和camera有关的工作,所以常常会涉及到图像格式的问题。感觉接触的名字和种类很多,索性好好整理一下,分个类,也方便后面再整理。1.直接上结论直接......
  • 图片、接口封装 文字可生成的奇特图像
    脑洞大开!这个简易命令行工具,输入文字可生成的奇特图像 https://copyfuture.com/blogs-details/20210418130919282a图片、接口封装  https://blog.csdn.net/weix......