All Projects → ceciliavision → Perceptual Reflection Removal

ceciliavision / Perceptual Reflection Removal

Single Image Reflection Separation with Perceptual Losses

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Perceptual Reflection Removal

Gwu data mining
Materials for GWU DNSC 6279 and DNSC 6290.
Stars: ✭ 217 (-12.15%)
Mutual labels:  image-processing
Image Compress Without Backend
Pure frontend solution to compress images
Stars: ✭ 224 (-9.31%)
Mutual labels:  image-processing
Node S3 Uploader
Flexible and efficient resize, rename, and upload images to Amazon S3 disk storage. Uses the official AWS Node SDK for transfer, and ImageMagick for image processing. Support for multiple image versions targets.
Stars: ✭ 237 (-4.05%)
Mutual labels:  image-processing
Obs Kinect
OBS Plugin to use a Kinect (all models supported) in OBS (and setup a virtual green screen based on depth and/or body detection).
Stars: ✭ 217 (-12.15%)
Mutual labels:  image-processing
Zoom Learn Zoom
computational zoom from raw sensor data
Stars: ✭ 224 (-9.31%)
Mutual labels:  image-processing
Graphite
Open source 2D node-based raster/vector graphics editor (Photoshop + Illustrator + Houdini = Graphite)
Stars: ✭ 223 (-9.72%)
Mutual labels:  image-processing
Iipsrv
iipsrv is an advanced high-performance feature-rich image server for web-based streamed viewing and zooming of ultra high-resolution images.
Stars: ✭ 216 (-12.55%)
Mutual labels:  image-processing
Image Super Resolution
🔎 Super-scale your images and run experiments with Residual Dense and Adversarial Networks.
Stars: ✭ 3,293 (+1233.2%)
Mutual labels:  image-processing
Catalyst
Accelerated deep learning R&D
Stars: ✭ 2,804 (+1035.22%)
Mutual labels:  image-processing
Lycon
A minimal and fast image library for Python and C++
Stars: ✭ 235 (-4.86%)
Mutual labels:  image-processing
Simplecv
Stars: ✭ 2,522 (+921.05%)
Mutual labels:  image-processing
Thug Memes
Command line Thug Meme generator written in Python
Stars: ✭ 224 (-9.31%)
Mutual labels:  image-processing
Imageglass
🏞 A lightweight, versatile image viewer
Stars: ✭ 3,284 (+1229.55%)
Mutual labels:  image-processing
Relion
Image-processing software for cryo-electron microscopy
Stars: ✭ 219 (-11.34%)
Mutual labels:  image-processing
Png
decode, inspect, edit, and encode png images in pure swift
Stars: ✭ 238 (-3.64%)
Mutual labels:  image-processing
Agimagecontrols
cool tools for image edition
Stars: ✭ 217 (-12.15%)
Mutual labels:  image-processing
Dehazezoo
DehazeZoo for collecting dehazing methods, datasets, and codes.
Stars: ✭ 228 (-7.69%)
Mutual labels:  image-processing
Image Js
Image processing and manipulation in JavaScript
Stars: ✭ 241 (-2.43%)
Mutual labels:  image-processing
Resize
Pure golang image resizing
Stars: ✭ 2,765 (+1019.43%)
Mutual labels:  image-processing
Nyximageskit
A set of efficient categories for UIImage class. It allows filtering, resizing, masking, rotating, enhancing... and more.
Stars: ✭ 2,553 (+933.6%)
Mutual labels:  image-processing

perceptual-reflection-removal

Code and data for CVPR 2018 paper: Single Image Reflection Removal with Perceptual Losses

Project Website | Paper

This code is based on tensorflow. It has been tested on Ubuntu 16.04 LTS.

Our result compared against CEILNet on real images.

Setup

  • Clone/Download this repo
  • $ cd perceptual-reflection-removal
  • $ mkdir VGG_Model
  • Download VGG-19. Search imagenet-vgg-verydeep-19 in this page and download imagenet-vgg-verydeep-19.mat. We need the pre-trained VGG-19 model for our hypercolumn input and feature loss
  • move the downloaded vgg model to folder VGG_Model

Conda environment

A minimal conda environment to test the pretrained model is provided. (credit to @ironbar)

conda env create -f env.yml

Dataset

Use our collected synthetic and real data

Both synthetic and real dataset are now available here.

  • synthetically blended data is created on-the-fly so there is only reflection layer and transmission layer folders
  • real data has blended images and ground truth transmission layer (NO ground truth reflection layer, reason is detailed in the paper)
  • real images used for test have indices: [3, 4, 9, 12, 15, 22, 23, 25, 29, 39, 46, 47, 58, 86, 87, 89, 93, 103, 107, 110]
    • special thanks to @Vandermode who helped with sorting out dataset-related problems

Try with your own dataset

You can also try with your own dataset. For example, to generate your own synthetic dataset, prepare for two folders of images, one used for transmission layer and the other used for reflection layer. In order to use our data loader, please follow the instructions below to organize your dataset directories. Overall, we name the directory of input image with reflection blended, the ground truth transmission layer transmission_layer and the ground truth reflection layer reflection_layer.

For synthetic data, since we generate images on the fly, there is no need to have the blended subdirectory.

+-- root_training_synthetic_data

+-- reflection_layer
+-- transmission_layer

For real data, since the ground truth reflection layer is not available, there is no need to have the reflection_layer subdirectory.

+-- root_training_real_data

+-- blended
+-- transmission_layer

Training

Quick Start

(please have yous real and synthetic data paths set up correctly as described above):

python3 main.py --data_syn_dir your_syn_data_path --data_real_dir your_real_data_path for triaining from scratch

python3 main.py --continue_training --data_syn_dir your_syn_data_path --data_real_dir your_real_data_path --task your_checkpoint_path for training with existing checkpoint (checkpoint path specified by the --task argument)

Arguments

--task: the checkpoint directory path. For example, for --task experiment_1, the checkpoints (e.g. *.model) are saved inside ./experiment_1/

--data_syn_dir: root path to the images to generate synthetic data

--data_real_dir: root path to the real images

--save_model_freq: frequency to save model and the output images

--is_hyper: whether to use hypercolumn features as input, all our trained models uses hypercolumn features as input

Testing

  • Download pre-trained model here
  • $ tar -xvzf pre-trained.tar.gz
  • this should extract the models into a newly created folder called pre-trained
  • Change test_path (line 419) to your test image folder. If you want to test on the provided test images (e.g. in ./test_images/real/), keep it as it is.
  • test results can be found in ./test_results/

Then, run

$ python3 main.py --task pre-trained --is_training 0

Acknowledgement

Part of the code is based upon FastImageProcessing

Citation

If you find this work useful for your research, please cite:

@inproceedings{zhang2018single,
  title = {Single Image Reflection Separation with Perceptual Losses},
  author = {Zhang, Xuaner and Ng, Ren and Chen, Qifeng}
  booktitle = {IEEE Conference on Computer Vision and Pattern Recognition},
  year = {2018}
}

Contact

Please contact me if there is any question (Cecilia Zhang [email protected])

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