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

  • 31
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
AutoDL是一个自动化深度学习框架,它可以帮助用户自动化地进行模型选择、超参数调优和模型训练。COCO(Common Objects in Context)数据集是一个广泛使用的目标检测、分割和关键点检测数据集。 要在AutoDL中使用COCO数据集,你需要按照以下步骤进行操作: 1. 下载COCO数据集:首先,你需要从COCO官方网站下载COCO数据集。该数据集包含了大量的图像和对应的标注信息,可以用于目标检测、分割和关键点检测任务。 2. 数据预处理:在使用COCO数据集之前,你可能需要对数据进行一些预处理操作,例如将图像和标注信息转换为模型可接受的格式。这可能涉及到图像的缩放、裁剪、归一化等操作,以及标注信息的解析和转换。 3. 数据加载:在AutoDL中,你可以使用各种数据加载器来加载COCO数据集。这些数据加载器可以帮助你将数据集划分为训练集、验证集和测试集,并提供方便的接口来获取图像和对应的标注信息。 4. 模型选择和配置:在AutoDL中,你可以选择适合COCO数据集的模型,并配置模型的超参数。AutoDL提供了一系列经典的深度学习模型,例如Faster R-CNN、Mask R-CNN等,你可以根据任务需求选择合适的模型。 5. 模型训练:一旦你选择了模型并配置好了超参数,你可以使用AutoDL提供的训练接口来进行模型训练。在训练过程中,AutoDL会自动进行模型选择和超参数调优,以提高模型的性能。 6. 模型评估:在模型训练完成后,你可以使用AutoDL提供的评估接口来评估模型在COCO数据集上的性能。这些评估指标包括准确率、召回率、平均精度等,可以帮助你了解模型的表现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

茶色岛^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值