资讯动态

MMagic 视频超分数据准备实战:REDS 数据集预处理、LMDB 加速与子图裁剪全指南

发布时间:2026/10/8 14:00:43 来源:尧图企业网站定制
媒体生成计算机视觉深度学习人工智能大模型【免费下载链接】mmagicOpenMMLab Multimodal Advanced, Generative, and Intelligent Creation Toolbox. Unlock the magic : Generative-AI (AIGC), easy-to-use APIs, awsome model zoo, diffusion models, for text-to-image generation, image/video restoration/enhancement, etc.项目地址https://gitcode.com/gh_mirrors/mm/mmagic点击查看免费下载导读REDSREalistic and Dynamic Scenes是 NTIRE 2019 挑战赛发布的真实动态场景视频数据集也是视频超分辨率Video Super-Resolution, VSR、视频去模糊等任务中最常用的基准之一。本文基于 MMagic 仓库的官方数据转换工具系统讲解 REDS 数据集的下载前提、目录规划、train/val 合并策略、注解文件生成原理、LMDB 高速 IO 方案以及滑动窗口子图裁剪并深入源码与训练配置帮助你在 MMagic 中快速完成 REDS 数据集从原始压缩包到可训练/可评测数据形态的完整链路搭建。REDS 数据集背景与引用REDS 数据集源自 NTIRE 2019 挑战赛视频去模糊与超分辨率赛道官方论文如下使用该数据集进行学术研究时请引用InProceedings{Nah_2019_CVPR_Workshops_REDS, author {Nah, Seungjun and Baik, Sungyong and Hong, Seokil and Moon, Gyeongsik and Son, Sanghyun and Timofte, Radu and Lee, Kyoung Mu}, title {NTIRE 2019 Challenge on Video Deblurring and Super-Resolution: Dataset and Study}, booktitle {The IEEE Conference on Computer Vision and Pattern Recognition (CVPR) Workshops}, month {June}, year {2019} }在 MMagic 中训练集官方 REDS 数据集验证集官方 REDS 验证集以及 Vid4 数据集相关准备流程见 tools/dataset_converters/vid4/README.md。原始 REDS 数据可通过官方主页获取。仓库脚本的--help说明中还给出了一个下载脚本 gist 地址作为参考见 preprocess_reds_dataset.py 中parse_args的epilog。为什么要把 train 与 val 合并MMagic 官方做法是合并 REDS 的 train 与 val 数据集以便在 EDVR 使用的 REDS4 划分与官方验证划分之间自由切换官方 REDS 共 240 个训练片段编号000~239官方 val 数据集片段名为000~029直接合并会与训练集编号冲突因此脚本将验证片段的编号统一改为240 ~ 269即原编号 240合并后共 270 个片段每个片段 100 帧互不冲突。这一逻辑在 preprocess_reds_dataset.py 的merge_train_val函数中有精确实现def merge_train_val(train_path, val_path): ... val_folders glob.glob(osp.join(val_path, *)) for folder in val_folders: index int(re.split(r[\\/], folder)[-1]) new_folder_idx f{index 240:03d} shutil.move(folder, osp.join(train_path, new_folder_idx))一、整体预处理一键脚本 preprocess_reds_dataset.py下载好 REDS 原始压缩包后将其放入./data/REDS目录脚本会扫描该目录下所有.zip文件并自动解压然后运行python tools/dataset_converters/reds/preprocess_reds_dataset.py --root-path ./data/REDS脚本 preprocess_reds_dataset.py 支持两个命令行参数参数类型说明--root-pathstrREDS 数据的根目录路径必填--make-lmdb布尔开关若指定则在预处理完成后额外为各数据子集生成 LMDB 文件脚本内部执行流程源码级拆解从__main__入口看预处理共分四个阶段解压并整理目录结构unzip函数扫描root_path下所有.zip逐个解压。若出现train_sharp/train/train_sharp/*这类嵌套结构会自动重组为train_sharp/*的标准形态。官方脚本可处理的压缩包清单包括必备train_sharp_part1.zip、train_sharp_part2.zip、train_sharp_part3.zip、train_sharp_bicubic.zip、val_sharp.zip、val_sharp_bicubic.zip可选视任务需要train_blur_bicubic.zip、val_blur_bicubic.zip、train_blur_part1.zip、train_blur_part2.zip、train_blur_part3.zip、val_blur.zip、train_blur_comp_part1.zip、train_blur_comp_part2.zip、train_blur_comp_part3.zip、val_blur_comp.zip。合并 train 与 valmerge_train_val对每个含train的文件夹找到对应的val_*文件夹将 val 片段重编号为 240~269 并移入 train 目录随后删除原 val 目录。含bicubic的目录还需进入X4子目录处理因为官方压缩包中 bicubic 降采样数据存放在X4子文件夹。生成注解文件generate_anno_file生成全量meta_info_REDS_GT.txtsplit_anno_file依据划分模式拆分为训练/验证两份注解文件。可选生成 LMDB当指定--make-lmdb时对每个已合并的数据子集调用make_lmdb生成.lmdb文件。注解文件Annotation的两种划分split_anno_file支持两种验证划分模式REDS4 划分默认对应val_partitionRED4即 EDVR 论文使用的划分验证片段为000、011、015、020其余 266 个片段作为训练集生成meta_info_reds4_train.txt266 个片段meta_info_reds4_val.txt4 个片段官方划分val_partitionofficial验证片段为240~269生成meta_info_official_train.txt240 个片段meta_info_official_val.txt30 个片段注解文件的每一行格式为片段号/帧号.png (高度, 宽度, 通道数)例如000/00000000.png (720, 1280, 3)。预处理完成后的目录结构mmagic ├── mmagic ├── tools ├── configs ├── data │ ├── REDS │ │ ├── train_sharp │ │ │ ├── 000 │ │ │ ├── 001 │ │ │ ├── ... │ │ ├── train_sharp_bicubic │ │ │ ├── X4 │ │ │ | ├── 000 │ │ │ | ├── 001 │ │ │ | ├── ... │ │ ├── meta_info_reds4_train.txt │ │ ├── meta_info_reds4_val.txt │ │ ├── meta_info_official_train.txt │ │ ├── meta_info_official_val.txt │ │ ├── meta_info_REDS_GT.txt │ ├── REDS4 │ │ ├── GT │ │ ├── sharp_bicubic其中data/REDS4是使用 REDS4 划分时常用的独立存放目录GT 与 X4 bicubic 降采样数据便于验证时直接挂载。二、注解文件与数据加载层的对接原理预处理生成的meta_info_*.txt正是训练/评测时数据集加载的依据。MMagic 的视频帧数据集 BasicFramesDataset 支持两种数据组织方式从注解文件读取_get_path_list_from_ann逐行解析ann_file取每行第一个空格前的路径作为序列标识。对于 REDS 格式000/00000000.png若depth大于注解路径深度还会继续向文件夹递归补齐子路径从而支持depth1只取到片段目录帧由num_input_frames/fixed_seq_len控制或depth2取到具体帧文件两种粒度从文件夹自动扫描_get_path_list_from_folder按search_key指定的 data_prefix 递归列出文件按目录名统计每个片段的序列长度_set_seq_lens。以 REDS4 训练配置为例在 configs/basicvsr/basicvsr_2xb4_reds4.py 中data_root data/REDS train_dataloader dict( num_workers6, batch_size4, samplerdict(typeInfiniteSampler, shuffleTrue), datasetdict( typeBasicFramesDataset, metainfodict(dataset_typereds_reds4, task_namevsr), data_rootdata_root, data_prefixdict(imgtrain_sharp_bicubic/X4, gttrain_sharp), ann_filemeta_info_reds4_train.txt, depth1, num_input_frames15, pipelinetrain_pipeline))关键点data_prefix.img指向 bicubic X4 降采样后的低分辨率帧data_prefix.gt指向train_sharp高清 GT 帧ann_filemeta_info_reds4_train.txt即脚本生成的注解文件depth1表示只按片段目录组织数据每个片段 100 帧由num_input_frames训练采样 15 帧片段或fixed_seq_len评测固定 100 帧决定验证/测试阶段则挂载meta_info_reds4_val.txt并使用fixed_seq_len100对全部帧进行评测见 configs/base/datasets/basicvsr_test_config.py。三、LMDB 加速方案--make-lmdb视频超分任务需要逐帧读取大量 PNG频繁的磁盘 IO 会成为训练瓶颈。MMagic 支持将 REDS 转为 LMDB 格式以获得更快的 IO 速度一条命令即可完成python tools/dataset_converters/reds/preprocess_reds_dataset.py --root-path ./data/REDS --make-lmdb脚本会为每个已合并的数据子集如train_sharp、train_sharp_bicubic等在data/REDS下生成对应的xxx.lmdb文件。make_lmdb 内部实现要点从 preprocess_reds_dataset.py 的make_lmdb函数可以看到其设计细节键key设计以“片段号_帧号”如000_00000000作为 LMDB 的 key去掉.png扩展名由folder _ img_name拼接而成meta_info.txtLMDB 目录下会额外生成一个meta_info.txt每行记录图像名(含扩展名) 图像形状 压缩级别例如000_00000000.png (720,1280,3) 1供数据集加载时读取元信息尺寸断言GT 类数据train_sharp、train_blur、train_blur_comp校验h720, w1280, c3bicubic 降采样数据校验h180, w320, c3不符合即报错从源头杜绝错误数据混入空间预算map_size按单张 PNG 编码字节数 × 图片总数 × 10 预分配避免写入过程中空间不足批量提交每处理batch5000张图片执行一次txn.commit()兼顾写入效率与内存占用压缩级别compress_level1默认通过cv2.IMWRITE_PNG_COMPRESSION编码后写入。LMDB 文件的典型结构example.lmdb ├── data.mdb ├── lock.mdb ├── meta_info.txt注意LMDB 键与注解文件路径的对应关系由BasicFramesDataset等加载层处理使用 LMDB 时需在数据集配置中相应启用 LMDB 后端具体可结合仓库中 LMDB 相关数据集实现查看。四、裁剪子图crop_sub_images.py 与滑动窗口机制为了进一步降低单帧 IO 开销MMagic 支持将 REDS 大图按滑动窗口裁剪为子图sub-images官方脚本为 crop_sub_images.pypython tools/dataset_converters/reds/crop_sub_images.py --data-root ./data/REDS -scales 4命令行参数一览参数默认值说明--data-root无必填REDS 数据根目录--scales[]需要处理的降采样倍率列表如4表示处理X4可传多个--crop-size480HR 图像的裁剪尺寸LR 侧自动除以 scale--step240滑动窗口步长重叠率 50%即step crop_size / 2--thresh-size0阈值尺寸末尾剩余区域小于该值时丢弃否则补一刀裁到边界--compression-level3PNG 保存压缩级别0~9越高体积越小但压缩越慢--n-thread20多进程线程数滑动窗口裁剪逻辑worker 函数源码解读worker函数对每张图执行如下逻辑读取图像校验ndim为 2 或 3在高度方向生成裁剪起点序列np.arange(0, h - crop_size 1, step)若最后一段剩余高度h - (h_space[-1] crop_size)大于thresh_size则把h - crop_size补入序列即“补一刀”裁到边界避免边缘信息丢失宽度方向同理对每个起点组合裁剪出crop_size × crop_size的子图保存到以片段号_s序号命名的子文件夹中例如000_s001、000_s002。裁剪过程使用multiprocessing.Pool多进程并行默认 20 线程并通过mmengine.ProgressBar实时显示进度。子图数据的目录结构mmagic ├── mmagic ├── tools ├── configs ├── data │ ├── REDS │ │ ├── train_sharp │ │ │ ├── 000 │ │ │ ├── 001 │ │ │ ├── ... │ │ ├── train_sharp_sub │ │ │ ├── 000_s001 │ │ │ ├── 000_s002 │ │ │ ├── ... │ │ │ ├── 001_s001 │ │ │ ├── ... │ │ ├── train_sharp_bicubic │ │ │ ├── X4 │ │ │ │ ├── 000 │ │ │ │ ├── 001 │ │ │ │ ├── ... │ │ │ ├── X4_sub │ │ │ ├── 000_s001 │ │ │ ├── 000_s002 │ │ │ ├── ... │ │ │ ├── 001_s001 │ │ │ ├── ...其中_sub后缀即表示子图数据HR 侧生成train_sharp_sub每个 scale 的 LR 侧生成train_sharp_bicubic/X{scale}_sub。脚本保证 HR 与 LR 各子文件夹内的子图一一对应、数量一致因为 LR 的crop_size、step、thresh_size均按 scale 整除缩放便于后续按子图组织训练样本。五、使用 REDS 数据训练与评测配置对接完成上述任一形态的数据准备后即可直接套用仓库现成配置训练视频超分模型。以 BasicVSR 为例# 训练REDS4 划分 python tools/train.py configs/basicvsr/basicvsr_2xb4_reds4.py # 测试 python tools/test.py configs/basicvsr/basicvsr_2xb4_reds4.py checkpoint路径训练配置 basicvsr_2xb4_reds4.py 中训练数据meta_info_reds4_train.txt每批 4 个 15 帧片段训练 300k iters验证数据meta_info_reds4_val.txt固定 100 帧整段评测指标为 PSNR 与 SSIM评测阶段如需同时在 REDS4、Vimeo-90K、UDM10、Vid4 等多个基准上出分可直接复用 configs/base/datasets/basicvsr_test_config.py 中的多数据集评测配置。仓库中基于 REDS 的其他算法配置还包括 basicvsr_pp、edvr、iconvsr、real_basicvsr 等均可沿用本文所述的数据准备产物。六、注意事项与常见问题裁剪后默认不生成 LMDB 与注解文件官方文档明确说明preprocess_reds_dataset.py默认不会为裁剪出的子图数据集生成 LMDB 或注解文件。如需对子图数据继续做 LMDB 化需要按需修改脚本逻辑如调整main_extract_subimages后的处理流程。LMDB 目录已存在时会直接退出make_lmdb检测到目标lmdb_path已存在时会打印提示并sys.exit(1)避免重复写入覆盖数据重跑前请先清理旧文件。尺寸与划分的一致性注解文件默认按(720, 1280, 3)生成若使用裁剪子图或其他分辨率数据需同步调整注解与加载配置中的尺寸信息。视频超分评测基准REDS4 划分4 个片段用于主评测官方 30 片段划分可用于更充分的验证配合 Vid4见 tools/dataset_converters/vid4/README.md可构成更全面的跨数据集泛化评估。小结本文围绕 MMagic 官方的 REDS 数据准备工具链完整覆盖了从原始压缩包解压、train/val 合并、注解文件生成、LMDB 加速到滑动窗口子图裁剪的整条流水线并结合 preprocess_reds_dataset.py、crop_sub_images.py、BasicFramesDataset 与 basicvsr_2xb4_reds4.py 等源码剖析了每一步的底层实现。按照文中命令与目录规范操作即可在 MMagic 中无缝衔接 REDS 相关的视频超分、去模糊等任务的训练与评测。赞分享媒体生成计算机视觉深度学习人工智能大模型【免费下载链接】mmagicOpenMMLab Multimodal Advanced, Generative, and Intelligent Creation Toolbox. Unlock the magic : Generative-AI (AIGC), easy-to-use APIs, awsome model zoo, diffusion models, for text-to-image generation, image/video restoration/enhancement, etc.项目地址https://gitcode.com/gh_mirrors/mm/mmagic点击查看免费下载相关推荐PDF补丁丁教程4 个高频场景搞定 PDF 书签、合并与限制去除PDF补丁丁教程4 个高频场景搞定 PDF 书签、合并与限制去除 PDF补丁丁PDFPatcher是一款 Windows 上免费、便携的 PDF 工具箱媒体生成计算机视觉深度学习人工智能大模型大麦自动抢票工具快速指南3步完成环境检查、配置与启动大麦自动抢票工具快速指南3步完成环境检查、配置与启动 大麦自动抢票工具ticket purchase是一个开源自动化项目用脚本接管选场次、选票档、填观演媒体生成计算机视觉深度学习人工智能大模型dlt Schema 查看与导出实战用 dict、JSON、YAML、DBML、Graphviz 和 Mermaid 审视 dlt.Schemadlt Schema 查看与导出实战用 dict、JSON、YAML、DBML、Graphviz 和 Mermaid 审视 dlt.Schema 在 dlt媒体生成计算机视觉深度学习人工智能大模型上一篇7天数据瘦身计划1Panel历史数据归档与存储优化终极指南下一篇如何快速实现音频频谱分析audioMotion-analyzer的完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑