EDSR代码阅读

不知道读了多少遍了加油

  1. 把数据集解压一下cd EDSR_train然后``

  2. 更改Then, change the dir_data argument in src/option.py to the place where DIV2K images are located.在这里插入图片描述
    改成在这里插入图片描述

  3. 我们建议您在训练前对图像进行预处理。这一步将解码所有png文件并将它们保存为二进制文件。在第一次运行时使用——ext sep_reset参数。您可以跳过解码部分,使用已保存的二进制文件,并使用—ext sep参数。看不懂什么意思。

Saving...
Traceback (most recent call last):
  File "main.py", line 33, in <module>
    main()
  File "main.py", line 28, in main
    t.test()
  File "/home/zhj/EDSR-PyTorch/src/trainer.py", line 123, in test
    self.ckp.save(self, epoch, is_best=(best[1][0, 0] + 1 == epoch))
  File "/home/zhj/EDSR-PyTorch/src/utility.py", line 88, in save
    trainer.loss.plot_loss(self.dir, epoch)
  File "/home/zhj/EDSR-PyTorch/src/loss/__init__.py", line 111, in plot_loss
    plt.plot(axis, self.log[:, i].numpy(), label=label)
  File "/home/zhj/anaconda3/envs/EDSR/lib/python3.6/site-packages/matplotlib/pyplot.py", line 2763, in plot
    is not None else {}), **kwargs)
  File "/home/zhj/anaconda3/envs/EDSR/lib/python3.6/site-packages/matplotlib/axes/_axes.py", line 1646, in plot
    lines = [*self._get_lines(*args, data=data, **kwargs)]
  File "/home/zhj/anaconda3/envs/EDSR/lib/python3.6/site-packages/matplotlib/axes/_base.py", line 216, in __call__
    yield from self._plot_args(this, kwargs)
  File "/home/zhj/anaconda3/envs/EDSR/lib/python3.6/site-packages/matplotlib/axes/_base.py", line 342, in _plot_args
    raise ValueError(f"x and y must have same first dimension, but "
ValueError: x and y must have same first dimension, but have shapes (0,) and (1,)

更换成1.0.0版本的代码就好了。
5.开始跑起来了 乘以2版本的

EDSR(Enhanced Deep Super-Resolution)是一种用于图像超分辨率重建的深度学习模型。EDSR代码基于TensorFlow 2.0实现,具有以下特点: 1. **模型结构**:EDSR通过去除传统残差网络中的批量归一化层,减少了计算复杂度和内存占用,从而提高了模型的性能和效率。 2. **数据预处理**:代码中包含了数据预处理的步骤,主要是对输入图像进行裁剪、缩放和归一化处理,以便于模型训练。 3. **训练过程**:训练过程包括定义损失函数、优化器和训练循环。常用的损失函数包括均方误差(MSE)和感知损失(Perceptual Loss),优化器通常选择Adam优化器。 4. **模型保存与加载**:训练完成后,模型参数可以保存到文件中,方便后续使用。加载模型参数后,可以对新图像进行超分辨率重建。 5. **超分辨率重建**:使用训练好的模型对低分辨率图像进行超分辨率重建,得到高分辨率图像。 以下是一个简单的EDSR代码示例: ```python import tensorflow as tf from tensorflow.keras import layers, models # 定义EDSR模型 def edsr_model(scale=2, num_filters=64, num_res_blocks=8): x_in = layers.Input(shape=(None, None, 3)) x = x_in x = layers.Conv2D(num_filters, 3, padding='same')(x) x_init = x for i in range(num_res_blocks): x = res_block(x, num_filters) x = layers.Conv2D(num_filters, 3, padding='same')(x) x = layers.Add()([x, x_init]) x = upsample(x, scale, num_filters) x = layers.Conv2D(3, 3, padding='same')(x) return models.Model(x_in, x, name="EDSR") # 定义残差块 def res_block(x_in, num_filters): x = layers.Conv2D(num_filters, 3, padding='same')(x_in) x = layers.Activation('relu')(x) x = layers.Conv2D(num_filters, 3, padding='same')(x) x = layers.Add()([x, x_in]) return x # 定义上采样层 def upsample(x, scale, num_filters): def upsample_1(x, factor, **kwargs): x = layers.Conv2D(num_filters * (factor ** 2), 3, padding='same', **kwargs)(x) return tf.nn.depth_to_space(x, factor) if scale == 2: x = upsample_1(x, 2) elif scale == 3: x = upsample_1(x, 3) elif scale == 4: x = upsample_1(x, 2) x = upsample_1(x, 2) return x # 编译模型 model = edsr_model(scale=2, num_filters=64, num_res_blocks=8) model.compile(optimizer='adam', loss='mse') # 训练模型 model.fit(train_dataset, epochs=100, steps_per_epoch=1000) # 保存模型 model.save('edsr_model.h5') # 加载模型 model = models.load_model('edsr_model.h5') # 进行超分辨率重建 low_res_image = tf.image.decode_jpeg(tf.io.read_file('low_res_image.jpg')) low_res_image = tf.image.convert_image_dtype(low_res_image, tf.float32) high_res_image = model.predict(tf.expand_dims(low_res_image, 0)) ```
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值