autodl数据集下载及裁剪子图像操作

一、autodl数据集下载

里面数据集可以直接使用
一般是先用无卡模式对数据集进行解压,然后移动文件夹到指定位置


1.解压操作如下
unzip 压缩包路径 -d 解压文件夹


2.移动操作如下
mv 移动前文件夹 移动后文件夹

3.移动文件夹内的文件

以下命令将当前目录下名为sourceFolder的文件夹内的所有文件移动到名为destinationFolder的目录下。注意,这不会移动sourceFolder内的子目录,只会移动文件。
mv sourceFolder/* destinationFolder/

4.移动文件夹中部分文件

# 移动文件夹中命名排序后的第10到第20个.jpg图片到目标文件夹
# 使用ls, tail和head命令进行选择
ls "$SOURCE_FOLDER"/*.png | head -20 | tail -11 | xargs -I {} mv {} "$DESTINATION_FOLDER"

上述操作完成后,一般数据集就存在你想要的路径之下,然后如果想要对数据集进行裁剪子图像操作,则推荐更换GPU来操作,强推,用CPU会很慢,人已经麻了!!!

二、裁剪到子图像:

DIV2K 具有 2K 分辨率(例如,2048 × 1080)图像,但训练补丁通常很小(例如,128x128 或 192x192)。因此,如果阅读整个图像但只使用其中的一小部分,则存在浪费。为了在训练过程中加快 IO 速度,我们将 2K 分辨率的图像裁剪为子图像(这里我们裁剪为 480x480 子图像)。
请注意,子图像的大小与配置文件中定义的训练补丁大小 不同。具体来说,存储 480x480 的裁剪子图像。数据加载器将进一步将子图像随机裁剪为补丁以进行训练。

更换GPU后,在服务器终端界面,先进入你的项目目录下,例如project_1
命令如下
cd project_1
利用下面的代码进行Crop to sub-images操作

代码如下

import cv2
import numpy as np
import os
import sys
from multiprocessing import Pool
from os import path as osp
from tqdm import tqdm

from basicsr.utils import scandir

def main():

    opt = {}
    opt['n_thread'] = 20
    opt['compression_level'] = 3

    # HR images
    opt['input_folder'] = 'datasets/DF2K/DF2K_train_HR'
    opt['save_folder'] = 'datasets/DF2K/DF2K_train_HR_sub'
    opt['crop_size'] = 480
    opt['step'] = 240
    opt['thresh_size'] = 0
    extract_subimages(opt)

    # LRx2 images
    opt['input_folder'] = 'datasets/DF2K/DF2K_train_LR_bicubic/X2'
    opt['save_folder'] = 'datasets/DF2K/DF2K_train_LR_bicubic/X2_sub'
    opt['crop_size'] = 240
    opt['step'] = 120
    opt['thresh_size'] = 0
    extract_subimages(opt)

    # LRx3 images
    opt['input_folder'] = 'datasets/DF2K/DF2K_train_LR_bicubic/X3'
    opt['save_folder'] = 'datasets/DF2K/DF2K_train_LR_bicubic/X3_sub'
    opt['crop_size'] = 160
    opt['step'] = 80
    opt['thresh_size'] = 0
    extract_subimages(opt)
    #
    # LRx4 images
    opt['input_folder'] = 'datasets/DF2K/DF2K_train_LR_bicubic/X4'
    opt['save_folder'] = 'datasets/DF2K/DF2K_train_LR_bicubic/X4_sub'
    opt['crop_size'] = 120
    opt['step'] = 60
    opt['thresh_size'] = 0
    extract_subimages(opt)


def extract_subimages(opt):

    input_folder = opt['input_folder']
    save_folder = opt['save_folder']
    if not osp.exists(save_folder):
        os.makedirs(save_folder)
        print(f'mkdir {save_folder} ...')
    else:
        print(f'Folder {save_folder} already exists. Exit.')
        sys.exit(1)

    img_list = list(scandir(input_folder, full_path=True))

    pbar = tqdm(total=len(img_list), unit='image', desc='Extract')
    pool = Pool(opt['n_thread'])
    for path in img_list:
        pool.apply_async(worker, args=(path, opt), callback=lambda arg: pbar.update(1))
    pool.close()
    pool.join()
    pbar.close()
    print('All processes done.')

def worker(path, opt):

    crop_size = opt['crop_size']
    step = opt['step']
    thresh_size = opt['thresh_size']
    img_name, extension = osp.splitext(osp.basename(path))

    # remove the x2, x3, x4 and x8 in the filename for DF2K
    img_name = img_name.replace('x2', '').replace('x3', '').replace('x4', '').replace('x8', '')

    img = cv2.imread(path, cv2.IMREAD_UNCHANGED)

    h, w = img.shape[0:2]
    h_space = np.arange(0, h - crop_size + 1, step)
    if h - (h_space[-1] + crop_size) > thresh_size:
        h_space = np.append(h_space, h - crop_size)
    w_space = np.arange(0, w - crop_size + 1, step)
    if w - (w_space[-1] + crop_size) > thresh_size:
        w_space = np.append(w_space, w - crop_size)

    index = 0
    for x in h_space:
        for y in w_space:
            index += 1
            cropped_img = img[x:x + crop_size, y:y + crop_size, ...]
            cropped_img = np.ascontiguousarray(cropped_img)

            cv2.imwrite(
                osp.join(opt['save_folder'], f'{img_name}_s{index:03d}{extension}'), cropped_img,
                [cv2.IMWRITE_PNG_COMPRESSION, opt['compression_level']])

    process_info = f'Processing {img_name} ...'
    return process_info

if __name__ == '__main__':
    main()
Args:
    opt (dict): 配置dict。
 It contains:
    n_thread (int): 线程数。
    compression_level (int):  
            从0到9。值越大表示尺寸越小
            压缩时间更长。使用0可以更快地进行CPU解压缩。默认值:3,与cv2相同。
    input_folder (str): 输入文件夹的路径。
    save_folder (str): 保存文件夹的路径。
    crop_size (int): 裁剪大小。
    step (int): 用于重叠滑动窗口的步骤。
    thresh_size (int): 阈值大小。大小小于thresh_size的修补程序将被丢弃。

Usage:
   对于每个文件夹,运行此脚本。
   通常,DF2K数据集有四个文件夹需要处理。
        * DF2K_train_HR
        * DF2K_train_LR_bicubic/X2
        * DF2K_train_LR_bicubic/X3
        * DF2K_train_LR_bicubic/X4

上述

opt['input_folder'] = 'datasets/DF2K/DF2K_train_HR'
opt['save_folder'] = 'datasets/DF2K/DF2K_train_HR_sub',在每次运行代码之前要进行相应修改, input_folder为保存HR数据集的路径,save_folder为要对HR进行裁剪子图像的路径


然后在终端输入python xxx.py


py文件位于project_1目录下


然后等待ing

 如果要使用 meta_info_file,可能需要运行以生成meta_info_file。python generate_meta_info.py,代码如下:

from os import path as osp
from PIL import Image

from basicsr.utils import scandir


def generate_meta_info_div2k():
    """Generate meta info for DIV2K dataset.
    """

    gt_folder = 'Flickr2K_HR/Flickr2K_HR/Flickr2K_HR_sub'
    meta_info_txt = 'Flickr2K_HR/Flickr2K_HR/Flickr2K_HR_sub/meta_info_DIV2K800sub_GT.txt'

    img_list = sorted(list(scandir(gt_folder)))

    with open(meta_info_txt, 'w') as f:
        for idx, img_path in enumerate(img_list):
            img = Image.open(osp.join(gt_folder, img_path))  # lazy load
            width, height = img.size
            mode = img.mode
            if mode == 'RGB':
                n_channel = 3
            elif mode == 'L':
                n_channel = 1
            else:
                raise ValueError(f'Unsupported mode {mode}.')

            info = f'{img_path} ({height},{width},{n_channel})'
            print(idx + 1, info)
            f.write(f'{info}\n')


if __name__ == '__main__':
    generate_meta_info_div2k()

 有一些可能用到的操作代码


# 删除指定目标文件夹路径
TARGET_FOLDER="/path/to/target/folder"
rm -r TARGET_FOLDER

# 列出目标文件夹中的所有文件,然后使用管道命令(head和tail)选取第5到第10个文件进行删除
这个命令首先列出TARGET_FOLDER中的所有文件,然后使用head命令选出前10个文件,紧接着用tail命令从这10个文件中选出最后6个(也就是第5到第10个文件),最后通过xargs命令和rm将这些文件删除。
ls "$TARGET_FOLDER" | head -10 | tail -6 | xargs -I {} rm "$TARGET_FOLDER"/{}

# 复制所有.txt文件
cp /path/to/source/*.txt /path/to/destination/

 

# 使用ls和管道命令来选择文件段并复制文件
ls "$SOURCE_DIR" | head -10 | tail -6 | xargs -I {} cp "$SOURCE_DIR"/{} "$DESTINATION_DIR"/

 


三、阿里云盘-----向服务器(Linux)传输大文件并下载


将windows文件传输到linux服务器中


cd aliyunpan  #进入目录

# 此处进入的是解压后的目录
./aliyunpan #启动aliyunpan
login #登录账号

如果需要使用RefreshToken,则按如下操作:

回到本机(不是服务器中打开!本机!)的阿里云盘网页版中,按F12选择打开开发工具

点击应用程序->

本地存储下面的找到https://www.aliyundrive.com->  

密钥中的token,点击token,可以看到RefreshToken,然后输入后面的码

#可以查看下面的图片

RefreshToken,这就是刚刚在服务器上需要输入的登录密码


可以在aliyunpan交互指令界面指定将从云盘下载的文件存放在哪个目录下
config set -savedir save_path #save_path是你服务器想要将文件存放的地址路径
config set -savedir /root/autodl-tmp/Flickr2K/Flickr2K_LR_bicubic/
download xxx


等待,中途可能会遇到某些文件没传过去,查找终端显示未传过去的文件,重新传入就行


 

四、使用加速管理可以提速
 

网址如下

加速管理 - 比扬云 (beyondnetwork.net)icon-default.png?t=N7T8https://dash.beyondnetwork.net/console/globalIpAcc/manage按相应步骤进行操作即可

先在autodl找到对应的服务器,密码等,复制下来

全球加速方式:打开https://dash.beyondnetwork.net/console/globalIpAcc/manage网址
找到对应的接入点:例:fluminous.gipa.link:10338,则在终端输入ssh root@fluminous.gipa.link -p 10338
然后输入服务器的密码即可,速度大约为5MB/s

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/483281.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMq高可用

消息队列高级 服务异步通信-高级篇1.消息可靠性1.1.生产者消息确认1.2.消息持久化1.3.消费者消息确认1.4.消费失败重试机制1.5.总结 2.死信交换机2.1.初识死信交换机2.2.TTL2.3.延迟队列 3.惰性队列3.1.消息堆积问题3.2.惰性队列 4.MQ集群4.1.集群分类4.2.普通集群4.3.镜像集群…

矩阵计算-线性系统和 LU 分解

一、三角系统 …… 二、高斯消元法 …… 三、LU分解--直接三角分解法 求解线性方程Axb: 参考视频:【数值分析】矩阵LU三角分解| 速成讲解 考试宝典_哔哩哔哩_bilibili 令ALU,其中L是单位下三角矩阵(对角线上元素都是1&#xff…

【漏洞复现】netgear路由器 boarddataww 存在RCE漏洞

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…

PAT题解 --- 寻宝图

今天是PTA题库解法讲解的第十天,今天我们要讲解浪漫侧影,题目如下: 题解思路: 要解决这个问题,可以使用深度优先搜索(DFS)方法来遍历每一个陆地或宝藏格子,标记所有与之相连的格子…

【JavaScript 漫游】【042】表单和FormData 对象

文章简介 本篇文章为【JavaScript 漫游】专栏的第 042 篇文章&#xff0c;对浏览器模型中的表单和 FormData 对象的知识点进行了总结。 表单概述 表单&#xff08;<form>&#xff09;用来收集用户提交的数据&#xff0c;发送到服务器。比如&#xff0c;用户提交用户名…

面试算法-87-分隔链表

题目 给你一个链表的头节点 head 和一个特定值 x &#xff0c;请你对链表进行分隔&#xff0c;使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留 两个分区中每个节点的初始相对位置。 示例 1&#xff1a; 输入&#xff1a;head [1,4,3,2,5,2], x …

2024年 前端JavaScript Web APIs 第五天 笔记

5.1-BOM和延迟函数setTimeout 5.2-事件循环eventloop 1-》 3 -》2 1-》 3 -》2 5.3-location对象 案例&#xff1a;5秒钟之后自动跳转页面 <body><a href"http://www.itcast.cn">支付成功<span>5</span>秒钟之后跳转到首页</a><sc…

利用API打造卓越的用户体验

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;日常聊聊 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 正文 1. 数据驱动的设计 2. 功能扩展与整合 3. 实时性与响应性 4. 个性化推荐与定制化服务 结语 我的其他博客 正文 随着数字化时代的…

程序设计语言+嵌入式系统设计师备考笔记

0、前言 本专栏为个人备考软考嵌入式系统设计师的复习笔记&#xff0c;未经本人许可&#xff0c;请勿转载&#xff0c;如发现本笔记内容的错误还望各位不吝赐教&#xff08;笔记内容可能有误怕产生错误引导&#xff09;。 1、嵌入式系统开发与设计 1.1嵌入式应用程序的生成与加…

机器学习基础知识面经(个人记录)

朴素贝叶斯 特征为理想状态下的独立同分布&#xff0c;作为机器学习的重要基石和工具 由贝叶斯公式推导而来 是后验概率&#xff1a;在B发生的条件下A发生的概率。 是似然概率: 在 发生的条件下 发生的概率。 是先验概率: 发生的概率&#xff0c;而不考虑 的影响。 是…

Redis入门到实战-第五弹

Redis实战热身Hashes篇 完整命令参考官网 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://redis.io/Redis概述 Redis是一个开源的&#xff08;采用BSD许可证&#xff09;&#xff0c;用作数据库、缓存、消息代理和…

【Java初阶(四)】数组的定义和使用

❣博主主页: 33的博客❣ ▶文章专栏分类: Java从入门到精通◀ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; 目录 1.前言2.数组的概念2.1数组的初始化2.2数组的使用2.2.1数组元素访问2.2.2遍历数组 3.数组是引用类型3.1实例3.2 认识null 4.数组的应用4.1 二分查找4.2…

合成孔径雷达干涉测量InSAR数据处理、地形三维重建、形变信息提取、监测

原文链接&#xff1a;合成孔径雷达干涉测量InSAR数据处理、地形三维重建、形变信息提取、监测https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247598798&idx7&snc054ed7c9d9c433d00837a7798080935&chksmfa820329cdf58a3f6b5986d6d4da3d19f81e3efd0b159f…

YOLOv9/YOLOv8算法改进【NO.106】使用YOLOv7下采样进行改进

前 言 YOLO算法改进系列出到这&#xff0c;很多朋友问改进如何选择是最佳的&#xff0c;下面我就根据个人多年的写作发文章以及指导发文章的经验来看&#xff0c;按照优先顺序进行排序讲解YOLO算法改进方法的顺序选择。具体有需求的同学可以私信我沟通&#xff1a; 首推…

米多论文怎么用 #学习方法#职场发展

米多论文是一款专为论文写作者设计的工具&#xff0c;可以帮助用户进行论文的查重和降重。它的使用非常简单&#xff0c;只需将需要检测的论文内容粘贴到相应的输入框中&#xff0c;点击“检测”按钮即可开始查重。米多论文通过比对用户提交的论文和互联网上已经存在的内容&…

零基础机器学习(4)之线性回归的基本原理

文章目录 一、线性回归的基本原理1.相关与回归2.线性回归的原理分析①线性回归的一般公式②线性回归的损失函数③线性回归方程的参数求解方法A.最小二乘法B.梯度下降法 一、线性回归的基本原理 1.相关与回归 相关描述的是变量之间的一种关系。 从统计角度看&#xff0c;变量之…

数据结构面试题

1、数据结构三要素&#xff1f; 逻辑结构、物理结构、数据运算 2、数组和链表的区别&#xff1f; 数组的特点&#xff1a; 数组是将元素在内存中连续存放&#xff0c;由于每个元素占用内存相同&#xff0c;可以通过下标迅速访问数组中任何元素。数组的插入数据和删除数据效率低…

自己动手做一个批量doc转换为docx文件的小工具

前言 最近遇到了一个需求&#xff0c;就是要把大量的doc格式文件转换为docx文件&#xff0c;因此就动手做了一个批量转换的小工具。 背景 doc文件是什么&#xff1f; “doc” 文件是一种常见的文件格式&#xff0c;通常用于存储文本文档。它是 Microsoft Word 文档的文件扩…

主干网络篇 | YOLOv8更换主干网络之SwinTransformer

前言:Hello大家好,我是小哥谈。Swin Transformer是一种基于Transformer架构的图像分类模型,与传统的Transformer模型不同,Swin Transformer通过引入分层的窗口机制来处理图像,从而解决了传统Transformer在处理大尺寸图像时的计算和内存开销问题。Swin Transformer的核心思…

【算法】环形纸牌均分问题

104. 货仓选址 - AcWing题库 有n家商店&#xff0c;求把货仓建在哪能使得货仓到每个点的距离总和最小&#xff0c;输出最短的距离总和。 首先&#xff0c;我们看只有两个点的情况&#xff0c;在这种情况下我们选[1,2]的任何一个位置都是一样的&#xff0c;总和就是这段区间的长…