# scalable-auto-encoder-image-compression
**Repository Path**: dnrops/scalable-auto-encoder-image-compression
## Basic Information
- **Project Name**: scalable-auto-encoder-image-compression
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-04-14
- **Last Updated**: 2021-04-14
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## Scalable Auto-Enoder for Layered Image Compression
### [[Paper]](https://ieeexplore.ieee.org/abstract/document/8695403/) [[Citation]](#citation)
TensorFlow implementation of **Layered Image Compression using Scalable Auto-encoder**, published in IEEE-MIPR 2019.
The overall structure is a present a generic scalable model by stacking various auto-encoders such that variable bit-rate points could be realized.
---
### Prerequisites
- [Download CLIC2018 Dataset for Training](http://www.compression.cc/2018/challenge/) and extract them to
`corpus/clic2018`
- Python 3 (tested with Python 3.5)
- Tensorflow (tested with tensorflow-gpu 1.4.1)
- [Tensorflow-compression module](https://tensorflow.github.io/compression/)
- Python packages as specified by requirements.txt (`pip install -r requirements.txt`)
- A CUDA-compatible GPU
---
### Train
To conduct training of the scalable auto-encoder (SAE), please make sure the training set is prepared. You may also adjust the hyper-parameters in the training files. Then use the following command
python train_base.py
to train the base layer of the SAE. Similarly, the consequent training for enhance layers (ELs) can be achieved by
python train_el*.py
where `train_el*` denotes the EL number, which should be replaced by
- `train_el1`: base layer plus one enhance layer
- `train_el2`: base layer plus two enhance layers
- `train_el3`: base layer plus three enhance layers
NOTE: we should emphasize that since the proposed architecture is a scalable cascaded structure, to obtain the highest bit-rate point, all layers including base and Els are needed to be trained with the order of base, EL1, El2, EL3, etc.
### Inference
After trained the models, please prepared the Kodak datset for testing and place them it folder `kodak/`.
---
To do inference, use the following command
python test_base.py
similar to training, for the ELs, the inference should be,
python test_el*.py
where `test_el*` denotes the EL number, which should be replaced by
- `test_el1`: base layer plus one enhance layer
- `test_el2`: base layer plus two enhance layers
- `test_el3`: base layer plus three enhance layers
Note that after training, the checkpointer for each layer will store the trained networks, the parameters for each EL are saved separately.
The rate-distorion curves over all images in Kodak dataset are shown below:
---
### Visual Comparisons
Two simple examples for visual comparisons of restored images are provided (bpp/PSNR/MS-SSIM).
For more details of the reconstructed images and their corresponding bit-rate, please refer to the following GitHub repo:
[[Supplymentary Material MIPR2019]](https://github.com/chuanminj/MIPR2019)
which contains each reconstructed image of Kodak dataset under multiple bit-rate points.
---
### Citation
If you find this repo is useful for your research, please cite this paper:
@inproceedings{jia2019layered,
title={Layered Image Compression using Scalable Auto-encoder},
author={Jia, Chuanmin and Liu, Zhaoyi and Wang, Yao and Ma, Siwei and Gao, Wen},
booktitle={IEEE Conference on Multimedia Information Processing and Retrieval (MIPR)},
pages={431--436},
year={2019},
organization={IEEE}
}