奋进小牛 2023-09-21 21:20 采纳率: 88.6%
浏览 3
已结题

超分辨率重建一直提高不了分辨率


import os
import shutil
import tensorflow as tf

import isr_train
import tensorboard as tb

import isr_util

tf.io.gfile = tb.compat.tensorflow_stub.io.gfile

CHECKPOINT_DIR = './checkpoint/'  # 模型保存的路径
TRAIN_LOG_DIR = './train_log/'  # 训练日志保存的路径

train_hr_dir = './dataset/data1/'  # 训练集高分辨率图片路径
test_hr_dir = './dataset/data-test1/'  # 测试集高分辨率图片路径

resize_train_dir = './dataset/train1/'  # 调整后的训练集图片路径
resize_test_dir = './dataset/test1/'  # 调整后的测试集图片路径

def delete_or_makedir(dir_path):
    # 删除目录或创建目录
    if tf.io.gfile.exists(dir_path):
        shutil.rmtree(dir_path)
    tf.io.gfile.makedirs(dir_path)

def resize_data():
    # 调整训练集和测试集的图片大小
    train_files = os.listdir(train_hr_dir)
    test_files = os.listdir(test_hr_dir)

    delete_or_makedir(resize_train_dir)
    delete_or_makedir(resize_test_dir)

    for file in train_files:
        isr_util.resize_image(file, train_hr_dir, resize_train_dir)

    for file in test_files:
        isr_util.resize_image(file, test_hr_dir, resize_test_dir)

def train():
    # 创建模型保存和训练日志保存的目录
    delete_or_makedir(CHECKPOINT_DIR)
    delete_or_makedir(TRAIN_LOG_DIR)

    # 加载调整后的训练集和测试集
    train_image_ds = isr_util.load_data(resize_train_dir, training=True)
    test_image_ds = isr_util.load_data(resize_test_dir, training=False)

    # 保存测试集的特征图片和标签图片
    isr_util.save_feature_label(TRAIN_LOG_DIR, test_image_ds)

    # 开始训练
    isr_train.train(TRAIN_LOG_DIR, train_image_ds, test_image_ds, 20, CHECKPOINT_DIR)

if __name__ == '__main__':
    resize_data()
    train()

  • 写回答

2条回答 默认 最新

  • Leodong. 2023-09-21 21:23
    关注

    该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
    超分辨率重建是一项复杂的任务,提高分辨率不仅仅依赖于代码的实现,还取决于数据集的质量、模型的选择和参数的调整等多个因素。根据提供的代码片段,我无法直接确定为什么你无法提高分辨率。然而,我可以提供一些常见的建议和注意事项,希望能帮助你解决问题。

    1. 数据集:确保你的训练集包含足够多的高分辨率图像,并且这些图像与你要重建的场景类似。如果训练集中的图像与目标场景不匹配,模型可能无法正确学习到场景的特征。
    2. 模型选择:选择适合超分辨率重建任务的模型。常见的模型包括SRCNN、ESPCN、SRGAN等。不同的模型具有不同的结构和复杂度,可能适用于不同的场景。尝试使用不同的模型来看看结果是否有所改善。
    3. 参数调整:模型的训练参数对于超分辨率重建至关重要。例如,学习率、批大小、迭代次数等参数都可能对结果产生影响。尝试调整这些参数,并观察它们对结果的影响。
    4. 损失函数:选择合适的损失函数来度量重建图像与真实高分辨率图像之间的差异。常用的损失函数包括均方误差(MSE)和感知损失(Perceptual Loss)。这些损失函数可以帮助模型更好地学习到图像的细节和结构。
    5. 数据预处理:确保在训练和测试之前对图像进行适当的预处理,例如裁剪、缩放和归一化等。这些预处理步骤可以帮助模型更好地学习到图像的特征。
    6. 训练时间和硬件资源:超分辨率重建可能需要大量的训练时间和计算资源。确保你有足够的训练时间和适当的硬件资源来完成训练过程。
      综上所述,超分辨率重建是一个复杂的任务,需要综合考虑多个因素。如果你仍然无法提高分辨率,我建议逐步检查和调整上述因素,并进行实验以观察它们对结果的影响。此外,查看训练过程中的日志和输出,可以帮助你了解模型的训练情况和可能的问题。
      希望这些建议对你有帮助!如果你有更多的问题,请随时提问。

    如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月30日
  • 已采纳回答 9月22日
  • 创建了问题 9月21日

悬赏问题

  • ¥15 如何解除Uniaccess管控
  • ¥15 微信小程序跳转关联公众号
  • ¥15 Java AES 算法 加密采用24位向量报错如何处理?
  • ¥15 使用X11可以找到托盘句柄,监控到窗口点击事件但是如何在监听的同时获取托盘中应用的上下文菜单句柄
  • ¥45 字符串操作——数组越界问题
  • ¥15 Loss下降到0.08时不在下降调整学习率也没用
  • ¥15 QT+FFmpeg使用GPU加速解码
  • ¥15 为什么投影机用酷喵播放电影放一段时间就播放不下去了?提示发生未知故障,有什么解决办法吗?
  • ¥15 来个会搭建付费网站的有偿
  • ¥100 有能够实现人机模式的c/c++代码,有图片背景等,能够直接进行游戏