All Projects → HuiZeng → Image Adaptive 3dlut

HuiZeng / Image Adaptive 3dlut

Learning Image-adaptive 3D Lookup Tables for High Performance Photo Enhancement in Real-time

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Image Adaptive 3dlut

Perceptual Reflection Removal
Single Image Reflection Separation with Perceptual Losses
Stars: ✭ 247 (-7.49%)
Mutual labels:  image-processing
Rawpy
📷 RAW image processing for Python, a wrapper for libraw
Stars: ✭ 256 (-4.12%)
Mutual labels:  image-processing
Otb
Github mirror of https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb
Stars: ✭ 265 (-0.75%)
Mutual labels:  image-processing
Buildopencvtx2
Build and install OpenCV for the NVIDIA Jetson TX2
Stars: ✭ 249 (-6.74%)
Mutual labels:  image-processing
Ai Job Notes
AI算法岗求职攻略(涵盖准备攻略、刷题指南、内推和AI公司清单等资料)
Stars: ✭ 3,191 (+1095.13%)
Mutual labels:  image-processing
Photoflare
Quick, simple but powerful Cross Platform image editor.
Stars: ✭ 260 (-2.62%)
Mutual labels:  image-processing
Image Super Resolution
🔎 Super-scale your images and run experiments with Residual Dense and Adversarial Networks.
Stars: ✭ 3,293 (+1133.33%)
Mutual labels:  image-processing
Primify
Embed any image into a prime number.
Stars: ✭ 266 (-0.37%)
Mutual labels:  image-processing
Noaa Apt
NOAA APT weather satellite image decoder, for Linux, Windows, RPi 2+ and OSX
Stars: ✭ 257 (-3.75%)
Mutual labels:  image-processing
Shadesketch
Implementation of "Learning to Shadow Hand-drawn Sketches" CVPR 2020 (Oral)
Stars: ✭ 263 (-1.5%)
Mutual labels:  image-processing
Opencv
Open Source Computer Vision Library
Stars: ✭ 58,652 (+21867.04%)
Mutual labels:  image-processing
Photoeditor
A Photo Editor library with simple, easy support for image editing using paints,text,filters,emoji and Sticker like stories.
Stars: ✭ 3,105 (+1062.92%)
Mutual labels:  image-processing
High Quality Ellipse Detection
A high-quality ellipse detector based on arc-support line segments which can both accurately and efficiently detect ellipses in images.
Stars: ✭ 261 (-2.25%)
Mutual labels:  image-processing
Computer Vision Guide
📖 This guide is to help you understand the basics of the computerized image and develop computer vision projects with OpenCV. Includes Python, Java, JavaScript, C# and C++ examples.
Stars: ✭ 244 (-8.61%)
Mutual labels:  image-processing
Selene
A C++17 image representation, processing and I/O library.
Stars: ✭ 266 (-0.37%)
Mutual labels:  image-processing
Image Js
Image processing and manipulation in JavaScript
Stars: ✭ 241 (-9.74%)
Mutual labels:  image-processing
Popsift
PopSift is an implementation of the SIFT algorithm in CUDA.
Stars: ✭ 259 (-3%)
Mutual labels:  image-processing
Androiddocumentscanner
This library helps to scan a document like CamScanner.
Stars: ✭ 264 (-1.12%)
Mutual labels:  image-processing
Imager
Automated image compression for efficiently distributing images on the web.
Stars: ✭ 266 (-0.37%)
Mutual labels:  image-processing
Opencv Python Blueprints
M. Beyeler (2015). OpenCV with Python Blueprints: Design and develop advanced computer vision projects using OpenCV with Python, Packt Publishing Ltd., ISBN 978-178528269-0.
Stars: ✭ 262 (-1.87%)
Mutual labels:  image-processing

Image-Adaptive-3DLUT

Learning Image-adaptive 3D Lookup Tables for High Performance Photo Enhancement in Real-time

Downloads

Paper, Supplementary, Datasets([onedrive],[baiduyun:5fyk]), [PCT patent]

The whole datasets used in the paper are over 300G. Here I only provided the FiveK dataset resized into 480p resolution (including 8-bit sRGB, 16-bit XYZ inputs and 8-bit sRGB targets). I also provided 10 full-resolution images for testing speed. To obtain the entire full-resolution images, it is recommended to transform from the original FiveK dataset.

A model trained on the 480p resolution can be directly applied to images of 4K (or higher) resolution without performance drop. This can significantly speedup the training stage without loading the very heavy high-resolution images.

Abstract

Recent years have witnessed the increasing popularity of learning based methods to enhance the color and tone of photos. However, many existing photo enhancement methods either deliver unsatisfactory results or consume too much computational and memory resources, hindering their application to high-resolution images (usually with more than 12 megapixels) in practice. In this paper, we learn image-adaptive 3-dimensional lookup tables (3D LUTs) to achieve fast and robust photo enhancement. 3D LUTs are widely used for manipulating color and tone of photos, but they are usually manually tuned and fixed in camera imaging pipeline or photo editing tools. We, for the first time to our best knowledge, propose to learn 3D LUTs from annotated data using pairwise or unpaired learning. More importantly, our learned 3D LUT is image-adaptive for flexible photo enhancement. We learn multiple basis 3D LUTs and a small convolutional neural network (CNN) simultaneously in an end-to-end manner. The small CNN works on the down-sampled version of the input image to predict content-dependent weights to fuse the multiple basis 3D LUTs into an image-adaptive one, which is employed to transform the color and tone of source images efficiently. Our model contains less than 600K parameters and takes less than 2 ms to process an image of 4K resolution using one Titan RTX GPU. While being highly efficient, our model also outperforms the state-of-the-art photo enhancement methods by a large margin in terms of PSNR, SSIM and a color difference metric on two publically available benchmark datasets.

Framework

Usage

Requirements

Python3, requirements.txt

Build

By default, we use pytorch 0.4.1:

cd trilinear_c
sh make.sh

For pytorch 1.x:

cd trilinear_cpp
sh setup.sh

Please also replace the following lines:

# in image_adaptive_lut_train_paired.py, image_adaptive_lut_evaluation.py, demo_eval.py, and image_adaptive_lut_train_unpaired.py
from models import * --> from models_x import *
# in demo_eval.py
result = trilinear_(LUT, img) --> _, result = trilinear_(LUT, img)
# in image_adaptive_lut_train_paired.py and image_adaptive_lut_evaluation.py
combine_A = trilinear_(LUT,img) --> _, combine_A = trilinear_(LUT,img)

Training

paired training

 python3 image_adaptive_lut_train_paired.py

unpaired training

python3 image_adaptive_lut_train_unpaired.py

Evaluation

  1. use python to generate and save the test images:

    python3 image_adaptive_lut_evaluation.py
    

speed can also be tested in above code.

  1. use matlab to calculate the indexes used in our paper:

    average_psnr_ssim.m
    

Demo

python3 demo_eval.py

Tools

  1. You can generate identity 3DLUT with arbitrary dimension by using utils/generate_identity_3DLUT.py as follows:
# you can replace 33 with any number you want
python3 utils/generate_identity_3DLUT.py -d 33
  1. You can visualize the learned 3D LUT either by using the matlab code in visualization_lut or using the python code utils/visualize_lut.py as follows:
python3 utils/visualize_lut.py path/to/your/lut
# you can also modify the dimension of the lut as follows
python3 utils/visualize_lut.py path/to/your/lut --lut_dim 64

Citation

@article{zeng2020lut,
  title={Learning Image-adaptive 3D Lookup Tables for High Performance Photo Enhancement in Real-time},
  author={Zeng, Hui and Cai, Jianrui and Li, Lida and Cao, Zisheng and Zhang, Lei},
  journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
  volume={},
  number={},
  pages={},
  year={2020},
  publisher={IEEE}
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].