超分辨率重建测试(DASR)

2023-11-17

测试链接:GitHub - LongguangWang/DASR: [CVPR 2021] Unsupervised Degradation Representation Learning for Blind Super-Resolutionhttps://github.com/LongguangWang/DASR

 0.环境

windows10系统,python3.7.0,我这个是pytorch的虚拟环境,我这边基环境是CUDA11.1,python3.7.3,为了不破坏原有环境,建议你们也装虚拟环境

这个环境有点老了,但请务必保持一致,新版本跑不了,尤其pytorch的版本不能大于1.1.0,至少我测试的是这个版本,在问答里原作者也说了版本号,在虚拟环境安装好以后,最好通过:

conda install pytorch==1.1.0 torchvision==0.3.0 -c pytorch -c conda-forge  的方式安装训练环境,这样会自动为你配置CUDA10.0。

1.数据准备

我的数据是人脸,我框出来的部分是代码识别的标识,最好一致,不然要去改代码,反正图片放自己的就行了。数据准备好基本就可以训练了。

2.训练

python .\main.py --dir_data=./datasets/ --model=blindsr --scale=4 --blur_type=aniso_gaussian --noise=25.0 --lambda_min=0.2 --lambda_max=4.0

参数的意义在option.py文件里面已经有说明了,这里就不多说了,这里再次强调下,如果不想改代码,数据的路径./datasets(这是我的存放位置)里面文件必须是DF2K/HR

scale 这里4的意思就是最后模型预测的时候你给256的图像,输出的是1024大小的图像

blur_type的意思是你给的数据集会处理成对应的低质量图像,并且和你的数据集一起放进模型训练,这也是这篇文章无监督的体现,只需要给训练图,标签自动生成,生成方式给了几种在option.py中也有说明的

另外训练结果如模型、参数配置等文件都会自动创建,在./experiment中

训练过程的样子:

 3.预测

python quick_test.py ----img_dir=./datasets/test_lr/0.png --scale=4 --resume=197 --blur_type=aniso_gaussian

这里采用quick_test.py快速测试单张图片的效果,输出位置自动存到训练时创建的文件中,resume给的是epoch值,也就是用哪一个epoch的模型做预测,其它参数和训练时保持一致

            

                                                         原图(1024*1024)

                                            

                                                          测试图(256*256)

                

                                                       测试图resize(1024*1024)

                

                                                         预测输出图(1024*1024) 

                               

                             256低质量的测试图(左)与输出结果resize成256后(右)的对比

说明:测试图用的是欧美人脸,训练图用的是亚洲人脸,测试图是加了高斯噪声变模糊的,测试图生成的代码为

import os
import cv2
import numpy as np
 
path = './DASR-main/datasets/test/'
save = './DASR-main/datasets/test_lr/'
imgs = os.listdir(path)

for im in imgs:
    name = im.split('.')[0]
    im_full = os.path.join(path, im)
    img = cv2.imread(im_full)
    im_resize = cv2.resize(img, (256,256), interpolation=cv2.INTER_NEAREST)
    re_path = os.path.join(save,im)
    # cv2.imwrite(re_path,im_resize)
    save_full = os.path.join(save,im)
    im_ga = cv2.GaussianBlur(im_resize, (5, 5), 0)
    cv2.imwrite(save_full, im_ga)

结束:其实对比resize以后的图和预测输出图就很明显的看到,小图放大了肯定变模糊,而重建却基本能保证足够的清晰,多少还是有点效果的。和上一篇博客一样,这里用的也只是标准的高清正面照,而作者无监督的方式也是通过用高清训练数据人为降低了图像质量产生了对应的标签来训练模型,和自然状态下比如摄像头拍摄出的模糊图像还是有区别,后面再探索。

补充:如果训练遇到以下错误,直接找到data文件夹下的multiscalesrdata.py第153行,改为hr = np.load(_f, allow_pickle=True)[0]['image'], 也就是增加了allow_pickle=True

File "D:\BaiduNetdiskDownload\DASR-main\data\multiscalesrdata.py", line 153, in _load_file
    hr = np.load(_f)[0]['image']
  File "C:\Users\Administrator\AppData\Roaming\Python\Python37\site-packages\numpy\lib\npyio.py", line 444, in load
    raise ValueError("Cannot load file containing pickled data "
ValueError: Cannot load file containing pickled data when allow_pickle=False

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

超分辨率重建测试(DASR) 的相关文章

  • torchvision.transforms.Normalize 是如何操作的?

    我不明白如何标准化Pytorch works 我想将平均值设置为0和标准差1跨越张量中的所有列x形状的 2 2 3 一个简单的例子 gt gt gt x torch tensor 1 2 3 4 5 6 7 8 9 10 11 12 gt
  • torch.mm、torch.matmul 和 torch.mul 有什么区别?

    阅读完 pytorch 文档后 我仍然需要帮助来理解之间的区别torch mm torch matmul and torch mul 由于我不完全理解它们 所以我无法简明地解释这一点 B torch tensor 1 1207 0 3137
  • 尝试理解 Pytorch 的 LSTM 实现

    我有一个包含 1000 个示例的数据集 其中每个示例都有5特征 a b c d e 我想喂7LSTM 的示例 以便它预测第 8 天的特征 a 阅读 nn LSTM 的 Pytorchs 文档 我得出以下结论 input size 5 hid
  • PyTorch:如何检查训练期间某些权重是否没有改变?

    如何检查 PyTorch 训练期间某些权重是否未更改 据我了解 一种选择可以是在某些时期转储模型权重 并检查它们是否通过迭代权重进行更改 但也许有一些更简单的方法 有两种方法可以解决这个问题 First for name param in
  • 使 CUDA 内存不足

    我正在尝试训练网络 但我明白了 我将批量大小设置为 300 并收到此错误 但即使我将其减少到 100 我仍然收到此错误 更令人沮丧的是 在 1200 个图像上运行 10 epoch 大约需要 40 分钟 有什么建议吗 错了 我怎样才能加快这
  • 如何更新 PyTorch 中神经网络的参数?

    假设我想将神经网络的所有参数相乘PyTorch 继承自的类的实例torch nn Module http pytorch org docs master nn html torch nn Module by 0 9 我该怎么做呢 Let n
  • Pytorch Tensor 如何获取元素索引? [复制]

    这个问题在这里已经有答案了 我有 2 个名为x and list它们的定义如下 x torch tensor 3 list torch tensor 1 2 3 4 5 现在我想获取元素的索引x from list 预期输出是一个整数 2
  • 如何使用Python计算多类分割任务的dice系数?

    我想知道如何计算多类分割的骰子系数 这是计算二元分割任务的骰子系数的脚本 如何循环每个类并计算每个类的骰子 先感谢您 import numpy def dice coeff im1 im2 empty score 1 0 im1 numpy
  • PyTorch 中的连接张量

    我有一个张量叫做data形状的 128 4 150 150 其中 128 是批量大小 4 是通道数 最后 2 个维度是高度和宽度 我有另一个张量叫做fake形状的 128 1 150 150 我想放弃最后一个list array从第 2 维
  • 保存具有自定义前向功能的 Bert 模型并将其置于 Huggingface 上

    我创建了自己的 BertClassifier 模型 从预训练开始 然后添加由不同层组成的我自己的分类头 微调后 我想使用 model save pretrained 保存模型 但是当我打印它并从预训练上传时 我看不到我的分类器头 代码如下
  • 如何使用 pytorch 同时迭代两个数据加载器?

    我正在尝试实现一个接收两张图像的暹罗网络 我加载这些图像并创建两个单独的数据加载器 在我的循环中 我想同时遍历两个数据加载器 以便我可以在两个图像上训练网络 for i data in enumerate zip dataloaders1
  • 样本()和r样本()有什么区别?

    当我从 PyTorch 中的发行版中采样时 两者sample and rsample似乎给出了类似的结果 import torch seaborn as sns x torch distributions Normal torch tens
  • 将 Pytorch LSTM 的状态参数转换为 Keras LSTM

    我试图将现有的经过训练的 PyTorch 模型移植到 Keras 中 在移植过程中 我陷入了LSTM层 LSTM 网络的 Keras 实现似乎具有三种状态类型的状态矩阵 而 Pytorch 实现则具有四种状态矩阵 例如 对于hidden l
  • Pytorch - 推断线性层 in_features

    我正在构建一个玩具模型来获取一些图像并进行分类 我的模型看起来像 conv2d gt pool gt conv2d gt linear gt linear 我的问题是 当我们创建模型时 我们必须计算第一个线性层的大小in features基
  • 尝试将 cuda 与 pytorch 一起使用时出现运行时错误 999

    我为我的 Geforce 2080 ti 安装了 Cuda 10 1 和最新的 Nvidia 驱动程序 我尝试运行一个基本脚本来测试 pytorch 是否正常工作 但出现以下错误 RuntimeError cuda runtime erro
  • 如何让火车装载机使用特定数量的图像?

    假设我正在使用以下调用 trainset torchvision datasets ImageFolder root imgs transform transform trainloader torch utils data DataLoa
  • 如何从 PyTorch 模型的特定层获取输出?

    如何从预训练的 PyTorch 模型 例如 ResNet 或 VGG 中提取特定层的特征 而无需再次进行前向传递 新答案 Edit torchvision v0 11 0 中有一个新功能 允许提取特征 https github com py
  • PyTorch 如何计算二阶雅可比行列式?

    我有一个正在计算向量的神经网络u 我想计算关于输入的一阶和二阶雅可比矩阵x 单个元素 有人知道如何在 PyTorch 中做到这一点吗 下面是我项目中的代码片段 import torch import torch nn as nn class
  • 如何在pytorch中动态索引张量?

    例如 我有一个张量 tensor torch rand 12 512 768 我得到了一个索引列表 说它是 0 2 3 400 5 32 7 8 321 107 100 511 我希望从给定索引列表的维度 2 上的 512 个元素中选择 1
  • 带有填充掩码的 TransformerEncoder

    我正在尝试使用 src key padding mask 不等于 none 来实现 torch nn TransformerEncoder 想象输入的形状src 20 95 二进制填充掩码的形状为src mask 20 95 填充标记的位置

随机推荐

  • Java 中的 Restful Web 服务教程

    欢迎来到 Java 中的 Restful Web 服务教程 REST是缩写代表性状态转移 休息是一个建筑风格用于开发可通过网络访问的应用程序 Roy Fielding 在 2000 年的博士论文中提出了 REST 架构风格 宁静的网络服务
  • 如何在 Ubuntu 18.04 上安装和保护 Grafana

    笔者精选 dev 颜色接受捐赠作为为捐款而写程序 介绍 Grafana是一个开源数据可视化和监控工具 集成了来自以下来源的复杂数据普罗米修斯 InfluxDB Graphite and 弹性搜索 Grafana 允许您为数据创建警报 通知和
  • Mockito 模拟静态方法 - PowerMock

    Mockito 允许我们创建模拟对象 由于静态方法属于类 因此 Mockito 中无法模拟静态方法 但是 我们可以使用 PowerMock 和 Mockito 框架来模拟静态方法 使用 PowerMock 的 Mockito 模拟静态方法
  • 如何在 Ubuntu 22.04 上使用 Nginx-RTMP 设置视频流服务器

    介绍 流媒体视频有很多用例 服务提供商如Twitch在处理流媒体的网络发现和社区管理方面非常受欢迎 并且免费软件 例如OBS工作室广泛用于实时组合来自多个不同流源的视频叠加 虽然这些平台非常强大 但在某些情况下 您可能希望能够托管不依赖其他
  • 如何在 Debian 11 上安装 MariaDB

    介绍 MariaDB是一个开源关系数据库管理系统 通常用作 MySQL 的替代品 作为流行的数据库部分LAMP Linux Apache MySQL PHP Python Perl 堆栈 它旨在成为 MySQL 的直接替代品 本安装指南的简
  • 如何在 Ubuntu 18.04 上使用 LEMP 安装 WordPress

    介绍 WordPress 是互联网上最流行的 CMS 内容管理系统 它允许您在具有 PHP 处理功能的 MySQL 后端上轻松设置灵活的博客和网站 WordPress 得到了令人难以置信的采用 是快速启动和运行网站的绝佳选择 设置完成后 几
  • 从 Python 列表中获取唯一值

    在这篇文章中 我们将了解从 Python 列表中获取唯一值的 3 种方法 在处理大量原始数据时 我们经常遇到需要从原始输入数据集中提取唯一且不重复的数据集的情况 下面列出的方法将帮助您解决这个问题 让我们开始吧 在 Python 中从列表中
  • 如何在 Ubuntu 14.04 上安装 MySQL

    介绍 MySQL是一个开源数据库管理系统 通常作为流行的一部分安装LAMP Linux Apache MySQL PHP Python Perl 堆栈 它使用关系数据库和 SQL 结构化查询语言 来管理其数据 简短版本的安装很简单 更新您的
  • 如何在 Ubuntu 12.04 上设置 vsftpd

    Status 已弃用 本文介绍不再受支持的 Ubuntu 版本 如果您当前运行的服务器运行 Ubuntu 12 04 我们强烈建议您升级或迁移到受支持的 Ubuntu 版本 升级到Ubuntu 14 04 从 Ubuntu 14 04 升级
  • 图像处理第 5 部分:算术、按位和掩码

    在图像处理系列的第五部分中 我们将详细讨论 Python 中的算术和位运算以及图像掩码 建议以前的文章在开始您的蒙面学习冒险之前 请先完成一遍 设置环境 以下代码行用于下面给出的所有应用程序 我们将把它们包含在这里 这样您就不必阅读大量代码
  • 计算机网络(五)传输层详解

    目录 第五章 传输层 5 1 传输层概述 进程之间的通信 网络层与传输层的区别 传输层的两个主要协议 传输层的端口 TCP IP传输层端口 5 2 UDP UDP需要实现的功能 UDP提供的服务 UDP适合哪些应用 UDP协议的特点 UDP
  • 华为OD机试真题(Java),吃到最多的刚好合适的菜(100%通过+复盘思路)

    一 题目描述 入职后 导师会请你吃饭 你选择了火锅 火锅里会在不同时间下很多菜 不同食材要煮不同的时间 才能变得刚好合适 你希望吃到最多的刚好合适的菜 但你的手速不够快 用m代表手速 每次下手捞菜后至少要过m庙才能在捞 每次只能捞一个 那么
  • umijs + dva + request + js-cookie实现登录

    umijs dva umi request js cookie实现登录 一 在src下创建models文件夹 创建user ts 二 在pages下创建login文件下 组件使用函数创建 三 创建cookie管理文件 和request ts
  • 阿里云dataworks就是个半成品!

    用hadoop EMR 不要用dataworks 不要用dataworks 不要用dataworks 重要的事情说三遍 各种莫名其妙的坑 ip黑盒 工程师无法干涉 傻瓜式无限的提交 发布 点来点去浪费时间 各种bug fuxi错误 完全没有
  • (2023,网络修剪)探索 few-shot 图像生成中的不相容知识迁移

    Exploring Incompatible Knowledge Transfer in Few shot Image Generation 公众号 EDPJ 目录 0 摘要 1 简介 2 相关工作 3 基础 4 FSIG 中不兼容的知识转
  • Mac之zip unzip 命令(压缩)

    https blog csdn net yxys01 article details 73848720 最通俗的用法 zip q r e m o myfile zip someThing 1 q 表示不显示压缩进度状态 r 表示子目录子文件
  • 记录自己开发入职第一天需要干的事情

    拉取代码前的准备工作 安装JDK 数据库本地可视化客户端 如Navicat SQLyog DBeaver Workbench Windows连接linux终端工具 Xshell SecureCRT Putty 下载IDEA 配置IDEA开发
  • adb shell 获取手机分辨率

    使用adb修改屏幕像素密度 此命令针对全志开发板子 adb shell am display density 120 以下命令针对高通的开发板子 获取Android设备屏幕分辨率 adb shell wm size获取android设备屏幕
  • Tomcat简介及优化思路

    Tomcat 处理请求大致流程和架构 请求流程 1 HTTP服务器会把请求信息使 ServletRequest对象封装起来 2 进 步去调 Servlet容器中某个具体的Servlet 3 在 2中 Servlet容器拿到请求后 根据URL
  • 超分辨率重建测试(DASR)

    测试链接 GitHub LongguangWang DASR CVPR 2021 Unsupervised Degradation Representation Learning for Blind Super Resolutionhttp