This repository is an implementation of the research paper ReconNet.
ReconNet: Non-Iterative Reconstruction of Images from Compressively Sensed Measurements
- Kuldeep Kulkarni, Suhas Lohit, Pavan Turaga, Ronan Kerviche, Amit Ashok
[arXiv][Github]
The paper introduces a non-iterative and an extremely fast image reconstruction algorithm from the compressively sensed random measurements. The authors proposed a CNN architecture which outputs intermediate reconstruction, which is further passsed through a denoiser to further improve the reconstruction. This algorithm is suitable when the task is to identify the major contents in the image. It tries to acquire very few measurements and is still able to reconstruct the image preserving the property of the scene. Moreover, it is computationally inexpensive due to it's non-iterative nature and can be introduced in resource-constrained environments.
The following image is taken from the research paper.
It is a technique widely used in signal processing to sample a signal at sub-Nyguist rates. It takes the advantage of sparseness of the signal to reconstruct the original signal. The input signal is generally converted to DFT or DCT to make it sparse.
A small number of random linear projections of original signal are measured (less than the signal size) and a reconstruction algorithm is used to recover the original signal. In this paper, the measurement matrix is constructed by generating a random Gaussian matric and then orthonormalizing its rows to find a set of orthogonal vectors. An improvement of ReconNet (AdaptiveReconNet) allows learning of the measurements by the network itself. The idea is that adaptive measurement fits dataset better rather than random Gaussian measurement matrix, under the same measurement rate.
Following is the architecture of ReconNet taken from its paper.
Following is the structure of Adaptive ReconNet taken from the paper Adaptive measurement network for CS image reconstruction.
- python = 3.6
- pytorch = 1.0
- opencv = 3.4.9
- pandas = 0.22.0
- numpy = 1.14.3
- CUDA (recommended version >= 8.0)
Original Image | Reconstructed Image |
---|---|
The paper suggests use of off-the-shelf denoiser (BM3D) on the intermediate reconstruction to improve the image's quality. I have not implemented the denoising part, if you want to add the implementation of BM3D to this repository, feel free to submit a pull request. 😃
ReconNet paper
ReconNet code (Caffe)
ReconNet code (TF)
Adaptive ReconNet paper
Adaptive ReconNet code (TF)
Compressive Sensing