EvTexture (ICML 2024)
"EvTexture: 事件驱动的纹理增强用于视频超分辨率"论文(ICML 2024)的官方 Pytorch 实现。
作者: 凯大春:email:️, 陆佳耀, 张月毅:email:️, 孙晓燕, 中国科学技术大学
欢迎提出问题。如果我们的工作对您有帮助,请不要犹豫给我们一个 :star:!
:rocket: 新闻
- 发布训练代码
- 2024/07/02: 发布用于快速测试的 Colab 文件
- 2024/06/28: 发布准备数据集的详细信息
- 2024/06/08: 发布 Docker 镜像
- 2024/06/08: 发布预训练模型和用于快速测试的测试集
- 2024/06/07: 发布视频演示
- 2024/05/25: 初始化仓库
- 2024/05/02: :tada: :tada: 我们的论文被 ICML'2024 接收
:bookmark: 目录
:fire: 视频演示
在 Vid4 和 REDS4 测试集上的 $4\times$ 上采样结果。
https://github.com/DachunKai/EvTexture/assets/66354783/fcf48952-ea48-491c-a4fb-002bb2d04ad3
https://github.com/DachunKai/EvTexture/assets/66354783/ea3dd475-ba8f-411f-883d-385a5fdf7ff6
https://github.com/DachunKai/EvTexture/assets/66354783/e1e6b340-64b3-4d94-90ee-54f025f255fb
https://github.com/DachunKai/EvTexture/assets/66354783/01880c40-147b-4c02-8789-ced0c1bff9c4
代码
安装
-
依赖项: Miniconda, CUDA Toolkit 11.1.1, torch 1.10.2+cu111, 和 torchvision 0.11.3+cu111。
-
在 Conda 中运行
conda create -y -n evtexture python=3.7 conda activate evtexture pip install torch-1.10.2+cu111-cp37-cp37m-linux_x86_64.whl pip install torchvision-0.11.3+cu111-cp37-cp37m-linux_x86_64.whl git clone https://github.com/DachunKai/EvTexture.git cd EvTexture && pip install -r requirements.txt && python setup.py develop
-
在 Docker 中运行 :clap:
注意:在运行 Docker 镜像之前,请确保按照官方指南安装 nvidia-docker。
[选项 1] 直接从阿里云拉取我们提供的已发布 Docker 镜像。
docker pull registry.cn-hangzhou.aliyuncs.com/dachunkai/evtexture:latest
[选项 2] 我们还提供了一个 Dockerfile,您可以用它自行构建镜像。
cd EvTexture && docker build -t evtexture ./docker
拉取或自行构建的 Docker 镜像包含一个完整的名为
evtexture
的 conda 环境。运行镜像后,您可以挂载数据并在此环境中操作。source activate evtexture && cd EvTexture && python setup.py develop
测试
-
从 (Releases / Onedrive / Google Drive / 百度网盘(n8hg)) 下载预训练模型并将它们放置到
experiments/pretrained_models/EvTexture/
。网络架构代码在 evtexture_arch.py 中。- EvTexture_REDS_BIx4.pth:在 REDS 数据集上训练,用于 $4\times$ SR 尺度的 BI 退化。
- EvTexture_Vimeo90K_BIx4.pth:在 Vimeo-90K 数据集上训练,用于 $4\times$ SR 尺度的 BI 退化。
-
从(Releases / Onedrive / Google Drive / 百度网盘(n8hg))下载REDS4和Vid4的预处理测试集(包括事件数据),并将它们放置在
datasets/
目录下。- Vid4_h5:包含Vid4预处理测试数据集的HDF5文件。
- REDS4_h5:包含REDS4预处理测试数据集的HDF5文件。
-
运行以下命令:
- 在Vid4上进行4倍视频超分辨率测试:
./scripts/dist_test.sh [num_gpus] options/test/EvTexture/test_EvTexture_Vid4_BIx4.yml
- 在REDS4上进行4倍视频超分辨率测试:
这将在./scripts/dist_test.sh [num_gpus] options/test/EvTexture/test_EvTexture_REDS4_BIx4.yml
results/
目录中生成推理结果。REDS4和Vid4的输出结果可以从(Releases / Onedrive / Google Drive / 百度网盘(n8hg))下载。
- 在Vid4上进行4倍视频超分辨率测试:
数据准备
-
示例:Vid4数据集中
calendar.h5
文件的结构如下所示。calendar.h5 ├── images │ ├── 000000 # 帧,ndarray,[H, W, C] │ ├── ... ├── voxels_f │ ├── 000000 # 前向事件体素,ndarray,[Bins, H, W] │ ├── ... ├── voxels_b │ ├── 000000 # 后向事件体素,ndarray,[Bins, H, W] │ ├── ...
-
如需模拟和生成事件体素,请参考DataPreparation.md中的数据集准备详情。
在自己的视频上进行推理
:heart: 寻求合作:针对#6和#7这两个问题,我们的方法确实可以在没有事件数据的视频上进行推理。解决方案是使用事件相机模拟器,如vid2e,从视频生成事件数据,然后将视频数据和生成的事件数据一起输入到我们的模型中。然而,这部分可能需要大量的工程工作来将所有内容打包成一个脚本,详见DataPreparation.md。我们目前没有足够的时间来完成这项任务,所以我们正在寻找合作者加入我们的努力!:blush:
:blush: 引用
如果您发现代码和预训练模型对您的研究有用,请考虑引用我们的论文。:smiley:
@inproceedings{kai2024evtexture,
title={Ev{T}exture: {E}vent-driven {T}exture {E}nhancement for {V}ideo {S}uper-{R}esolution},
author={Kai, Dachun and Lu, Jiayao and Zhang, Yueyi and Sun, Xiaoyan},
booktitle={International Conference on Machine Learning},
year={2024},
organization={PMLR}
}
联系方式
如果您遇到任何问题,请在issues中描述或联系:
许可和致谢
本项目根据Apache-2.0许可发布。我们的工作基于BasicSR构建,这是一个用于图像/视频修复任务的开源工具箱。感谢来自RAFT、event_utils和EvTexture-jupyter的启发和代码。