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

暂无版本384star67fork同步于 2026-11-07 07:33 UTC

怎么上手

由 README 提炼,执行前请确认
pip3 install -r requirements.txt
cd pyflow/ && python setup.py build_ext -i && cp pyflow*.so ..
硬件要求按 README 说明

README 提到训练在 NVIDIA Tesla V100 16GB 显存上、batch size 为 2 时约 1.5 小时/epoch;未说明 CPU 运行或其他 GPU 型号支持情况。

16G 显存可跑
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

用循环生成式反投影网络做视频超分,兼顾时空信息与感知细节

基于循环生成式反投影网络的视频超分辨率方案,用 GAN 和 CNN 把低清视频重建为高清画面,适合做视频增强与修复。

核心能力

  • 以 RBPN 为生成器,从当前帧和相邻帧提取时空信息
  • 复用 SRGAN 判别器提升纹理自然度、抑制伪影
  • 采用 MSE、感知、对抗、TV 四重损失联合训练
  • 支持 --upscale_only 参数关闭初始下采样
  • 在 VID4 4x 超分榜单上排名第一

容易踩的坑

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

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

0 个版本

暂无 release 数据(可能没有发版,或尚未同步)。

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    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!


    iSeeBetter_Poster

    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.

    adjacent frame similarity

    network arch

    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".

    ResNet_MISR

    DBPN_SISR

    Disc

    iSB_Loss

    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

    Results

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

    results2

    results1

    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