一、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)https://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