依赖版本锁得较死(如 torch==1.3.0.post2、numpy==1.16.4),新版环境可能装不上;需额外编译 Pyflow 光流库,仓库只提供 Ubuntu/macOS + Python 3.7 的二进制;测试脚本默认从数据集内随机取视频,需自行准备数据。

iSeeBetter
amanchadhaMIT活跃维护基于循环生成式反投影网络的视频超分辨率方案,用 GAN 和 CNN 把低清视频重建为高清画面,适合做视频增强与修复。
iSeeBetter: Spatio-Temporal Video Super Resolution using Recurrent-Generative Back-Projection Networks | Python3 | PyTorch | GANs | CNNs | ResNets | RNNs | Published in Springer Journal of Computational Visual Media, September 2020, Tsinghua University Press
pip3 install -r requirements.txt
cd pyflow/ && python setup.py build_ext -i && cp pyflow*.so ..README 提到训练在 NVIDIA Tesla V100 16GB 显存上、batch size 为 2 时约 1.5 小时/epoch;未说明 CPU 运行或其他 GPU 型号支持情况。
用循环生成式反投影网络做视频超分,兼顾时空信息与感知细节
基于循环生成式反投影网络的视频超分辨率方案,用 GAN 和 CNN 把低清视频重建为高清画面,适合做视频增强与修复。
核心能力
- 以 RBPN 为生成器,从当前帧和相邻帧提取时空信息
- 复用 SRGAN 判别器提升纹理自然度、抑制伪影
- 采用 MSE、感知、对抗、TV 四重损失联合训练
- 支持 --upscale_only 参数关闭初始下采样
- 在 VID4 4x 超分榜单上排名第一
容易踩的坑
暂无 release 数据(可能没有发版,或尚未同步)。
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
iSeeBetter: Spatio-Temporal Video Super Resolution using Recurrent-Generative Back-Projection Networks
Project for Stanford CS230: Deep Learning. Published in Springer Journal of Computational Visual Media, September 2020, Tsinghua University Press. This is the official PyTorch implementation of our paper.
Python3 | PyTorch | GANs | CNNs | ResNets | RNNs
PDF: SpringerLink | arXiv | amanchadha.com
Misc: YouTube Video | Poster | PapersWithCode | ResearchGate | Mendeley | NASA ADS | SemanticScholar
We’re #1 on the Video Super Resolution leaderboard on PapersWithCode!

Citation
If you found our work interesting, please cite it as:
@article{Chadha2020iSeeBetter,
title={{i}{S}ee{B}etter: Spatio-Temporal Video Super-Resolution using Recurrent Generative Back-Projection Networks},
author={Chadha, Aman and Britto, John and Roja, Mani M.},
journal={Springer Journal of Computational Visual Media, September 2020, Tsinghua University Press},
volume={6},
number={3},
pages={307-317},
year={2020},
publisher={Springer}
}
A. Chadha, J. Britto and M. M. Roja. iSeeBetter: Spatio-Temporal Video Super-Resolution using Recurrent Generative Back-Projection Networks. Springer Journal of Computational Visual Media, Tsinghua University Press, 6(3):1–11, 2020.
Required Packages
torch==1.3.0.post2
pytorch-ssim==0.1
numpy==1.16.4
scikit-image==0.15.0
tqdm==4.37.0
opencv-python==4.5.1.48
Step 0: To load the required Python modules:
pip3 install -r requirements.txt
Also needed is Pyflow which is a Python wrapper for Ce Liu's C++ implementation of Coarse2Fine Optical Flow. Pyflow binaries that we used have been built for Ubuntu and macOS with Python 3.7 and are available in the repository. If you need to rebuild Pyflow, (i) simply follow the instructions below or (ii) refer to the Pyflow Git
Step 1: Build Pyflow:
cd pyflow/
python setup.py build_ext -i # build pyflow
python demo.py # to make sure pyflow works
cp pyflow*.so ..
Step 2: Train or test iSeeBetter using the instructions in the relevant sections below.
Elevator Pitch
Deep learning has taken the world by storm!
Amongst the plethora of fields that deep learning has impacted, super resolution (which by definition is upscaling a low-res sample to a high-res sample) is one of them.
So why did I chose this topic? I felt that I could use my newly minted DL chops to develop something interesting which might propel the state-of-the-art further in the process.
Lets start with a low-res video sequence. The easiest way to super-resolve such an input low-res video is to apply super resolution to every single frame individually. However, this would be wasteful of the temporal details inherent in video sequences, especially motion patterns.
So I thought why not make my algorithm look left, look right - use details from adjacent images and train it with a GAN to extract fine-grained details such as complex textures.
Presenting iSeeBetter, a novel spatio-temporal approach to video super resolution which uses as its generator a Recurrent Back-Projection Network (RBPN) to extract spatial and temporal information from the current and neighboring frames.
We use the discriminator within Super-Resolution Generative Adversarial Network (SRGAN) as our discriminator.
Now, as far as the loss function goes, using Mean Squared Error as a primary loss-minimization objective improves PSNR and SSIM which are important image quality metrics, but these metrics may not capture fine details in the image leading to misrepresentation of perceptual quality.
To address this, we use a four-fold loss function composed of adversarial loss, perceptual loss, MSE loss and Total-Variation loss.
Finally, with extensive experimentation, our results demonstrate that iSeeBetter offers superior VSR fidelity and surpasses state-of-the-art performance in the vast majority of SR cases.
Overview
Recently, learning-based models have enhanced the performance of single-image super-resolution (SISR). However, applying SISR successively to each video frame leads to a lack of temporal coherency. Convolutional neural networks (CNNs) outperform traditional approaches in terms of image quality metrics such as peak signal to noise ratio (PSNR) and structural similarity (SSIM). However, generative adversarial networks (GANs) offer a competitive advantage by being able to mitigate the issue of a lack of finer texture details, usually seen with CNNs when super-resolving at large upscaling factors. We present iSeeBetter, a novel GAN-based spatio-temporal approach to video super-resolution (VSR) that renders temporally consistent super-resolution videos. iSeeBetter extracts spatial and temporal information from the current and neighboring frames using the concept of recurrent back-projection networks as its generator. Furthermore, to improve the "naturality" of the super-resolved image while eliminating artifacts seen with traditional algorithms, we utilize the discriminator from super-resolution generative adversarial network (SRGAN). Although mean squared error (MSE) as a primary loss-minimization objective improves PSNR/SSIM, these metrics may not capture fine details in the image resulting in misrepresentation of perceptual quality. To address this, we use a four-fold (MSE, perceptual, adversarial, and total-variation (TV)) loss function. Our results demonstrate that iSeeBetter offers superior VSR fidelity and surpasses state-of-the-art performance.


Model Architecture
Figure 2 shows the iSeeBetter architecture that consists of and SRGAN as its generator and discriminator respectively. RBPN has two approaches that extract missing details from different sources, namely SISR and MISR. Figure 3 shows the horizontal flow (represented by blue arrows in Fig. 2) that enlarges LR(t) using SISR. Figure 4 shows the vertical flow (represented by red arrows in Figure 2) which is based on MISR that computes residual features from a pair of LR(t) and its neighboring frames (LR(t−1), ..., LR(t−n) coupled with the pre-computed dense motion flow maps (F(t−1), ..., F(t−n)). At each projection step, RBPN observes the missing details from LR(t) and extracts residual features from neighboring frames to recover details. Within the projection models, RBPN utilizes a recurrent encoder-decoder mechanism for fusing details extracted from adjacent frames in SISR and MISR and incorporates them into the estimated frame SR(t) through back-projection. Once an SR frame is synthesized, it is sent over to the discriminator (shown in Figure 5) to validate its "authenticity".




Dataset
To train iSeeBetter, we amalgamated diverse datasets with differing video lengths, resolutions, motion sequences and number of clips. Table 1 presents a summary of the datasets used. When training our model, we generated the corresponding LR frame for each HR input frame by performing 4x down-sampling using bicubic interpolation. We also applied data augmentation techniques such as rotation, flipping and random cropping. To extend our dataset further, we wrote scripts to collect additional data from YouTube, bringing our dataset total to about 170,000 clips which were shuffled for training and testing. Our training/validation/test split was 80%/10%/10%.
Get the SPMCS and Vid4 dataset and the Vimeo90K dataset. You can also use DatasetFetcher.py to get Vimeo90K.

Results
We compared iSeeBetter with six state-of-the-art VSR algorithms: DBPN, B123 + T, DRDVSR, FRVSR, VSR-DUF and RBPN/6-PF.


Pretrained Model
Model trained for 4 epochs included under weights/
Usage
Training
Train the model using:
python3 iSeeBetterTrain.py
(takes roughly 1.5 hours per epoch with a batch size of 2 on an NVIDIA Tesla V100 with 16GB VRAM)
Testing
To use the pre-trained model and test on a random video from within the dataset:
python3 iSeeBetterTest.py
Use parameter --upscale_only to turn off initial downscaling.
Credits
- SRGAN Implementation by LeftThomas.
- We used RBPN-PyTorch as a baseline for our Generator implementation.