cszhilu1998 / SelfHDR

[ICLR 2024] Self-Supervised High Dynamic Range Imaging with Multi-Exposure Images in Dynamic Scenes
47 stars 1 forks source link

SelfHDR (ICLR 2024)

Official PyTorch implementation of SelfHDR (ICLR 2024)

Self-Supervised High Dynamic Range Imaging with Multi-Exposure Images in Dynamic Scenes
ICLR 2024
Zhilu Zhang$^1$, Haoyu Wang$^1$, Shuai Liu, Xiaotao Wang, Lei Lei, Wangmeng Zuo$^1$
$^1$ Harbin Institute of Technology, China

OpenReview   |   arXiv   |   visitors

News

1. Abstract

Merging multi-exposure images is a common approach for obtaining high dynamic range (HDR) images, with the primary challenge being the avoidance of ghosting artifacts in dynamic scenes. Recent methods have proposed using deep neural networks for deghosting. However, the methods typically rely on sufficient data with HDR ground-truths, which are difficult and costly to collect. In this work, to eliminate the need for labeled data, we propose SelfHDR, a self-supervised HDR reconstruction method that only requires dynamic multi-exposure images during training. Specifically, SelfHDR learns a reconstruction network under the supervision of two complementary components, which can be constructed from multi-exposure images and focus on HDR color as well as structure, respectively. The color component is estimated from aligned multi-exposure images, while the structure one is generated through a structure-focused network that is supervised by the color component and an input reference (\eg, medium-exposure) image. During testing, the learned reconstruction network is directly deployed to predict an HDR image. Experiments on real-world images demonstrate our SelfHDR achieves superior results against the state-of-the-art self-supervised methods, and comparable performance to supervised ones.

2. Preparation, datasets and pre-trained models

2.1 Prerequisites

2.2 Dataset and Pre-Trained Models

2.3 Image Alignment

3. Quick Start

3.1 Training

3.2 Testing

3.3 Tone Mapping and HDR-VDP Calculation

    % Load HDR Images
    target = double(hdrread('tatget.hdr')); 
    out = double(hdrread('output.hdr'));

    % HDR Output Tone Mapping Visualization
    tonemap_img = tonemap(out, 'AdjustLightness', [0,1], 'AdjustSaturation', 5.3);
    imwrite(tonemap_img, 'tonemap.png');

    % Calculate HDR-VDP Metric 
    ppd = hdrvdp_pix_per_deg(24, [size(out,2) size(out,1)], 0.5);
    metric = hdrvdp(target, out, 'sRGB-display', ppd);

    % Print Value of HDR-VDP Metric
    metric.Q 

3.4 Note

4. Citation

If you find it useful in your research, please consider citing:

@inproceedings{SelfHDR,
    title={Self-Supervised High Dynamic Range Imaging with Multi-Exposure Images in Dynamic Scenes},
    author={Zhang, Zhilu and Wang, Haoyu and Liu, Shuai and Wang, Xiaotao and Lei, Lei and Zuo, Wangmeng},
    booktitle={ICLR},
    year={2024}
}

If you are interested in our follow-up work, i.e., Exposure Bracketing is All You Need, please consider citing:

@article{BracketIRE,
    title={Exposure Bracketing is All You Need for Unifying Image Restoration and Enhancement Tasks},
    author={Zhang, Zhilu and Zhang, Shuohao and Wu, Renlong and Yan, Zifei and Zuo, Wangmeng},
    journal={arXiv preprint arXiv:2401.00766},
    year={2024}
}

5. Acknowledgement

This repo is built upon the framework of CycleGAN, and we borrow some codes from AHDRNet, FSHDR, HDR-Transformer and SCTNet. Thanks for their excellent works!