This repository contains implementation of a QPSK-based telecommunication system optimized using deep learning based image compression and denoising in LabVIEW Communications environment using Python and Keras. To run the CAE compressor and CNN denoiser, you do not have to have LabVIEW installed. For more information about the research, please refer to the paper.
Abstract - In this research, deep learning methods are used for optimization of QPSK-based communication systems. We propose a convolutional autoencoder based lossy image compression technique to increase data rate. We also propose a ResNet classifier to analyze the performance of the CAE compressor. This research also presents a CNN denoiser architecture for removing additive white Gaussian noise (AWGN) from images. In this research, we conducted performance analysis of filters by using PSNR (peak-signal-to-noise-ratio) and SSIM (structural similarity index measure) evaluation metrics. Experimental results demonstrate that our CNN denoiser model outperforms classical image filtering techniques which are Gaussian and Wiener filtering based on SSIM values. Our QPSK implementation includes root-raised-cosine filtering for pulse shaping and matched filtering to improve bit error ratio as well as to minimize intersymbol interference (ISI). It also has an adaptive equalizer filter to eliminate the ISI caused by the filtering effect of the communication channel.
LabVIEW Communications System Design Suite is where you can connect to USRP-2900, a software defined radio, and use it as transmitter and receiver. In this application, we basically send an image and receive it back. In this project, there are two main aims.
- Increase the data rate using image compression
- Eliminate AWGN (additive white Gaussian noise) using denoising
What you can do with this repository
- If you have LabVIEW Communications installed, you can run all the communication system.
- If you do not have LabVIEW Communications installed, you can run CAE compressor and CNN denoiser anyway.
To compress images, we designed a simple convolutional autoencoder (CAE) model. This is a lossy image compression technique and can be implemented only for gray scale handwritten digits since we used the MNIST handwritten digits data set [1] in training. The compressed form of images is called bottleneck. Original images are 28x28 and bottleneck is 4x4x8. We added an AWGN with random variances to training images to add a noise elimination feature to the CAE compressor.
The denoiser is supposed to eliminate AWGN from received images since AWGN is one of the most common forms of distortion in communication systems. The CNN denoiser consist of consecutive convolutional layers. AWGN with random variances is added to the training set and mean squared error loss function was used in training.
If you have Python installed and have the libraries specified in requirements.txt
, you can run directly run compressor.py
and denoiser.py
. However, we recommend you to have Anaconda installed on your computer to create a virtual environment.
Open the Anaconda Command Prompt
and clone this repository.
git clone https://github.com/bilalkabas/QPSK-with-CAE-Compressor-and-CNN-Denoiser
Create the environment comm-env
conda create -n comm-env python==3.8
Activate the environment
conda activate comm-env
cd QPSK-with-CAE-Compressor-and-CNN-Denoiser
pip install -r requirements.txt
At this point, you can use the existing handwritten digits in app/test-set
directory or you may go and download CIFAR10 and MNIST handwritten digits and save them in app/test-set/cifar10
and app/test-set/mnist
directories respectively.
cd app
python compressor.py
Make sure that you are in the app
directory.
python denoiser.py
For this, you need to have LabVIEW Communications System Design Suite installed and also an USRP connected to your computer. In this research, we used USRP-2900 with lookback cable connected.
Go to main directory of this project and open QPSK_Main.lvproject
. On the left, you should see two project files: QPSK_TX.gvi
and QPSK_RX.gvi
. Open and run QPSK_TX.gvi
. It will open up the CAE compressor or CNN denoiser GUI based on your selection. Click the 'LabVIEW' button on the top-right corner so it turns to green. Select the image that you want to process and transmit then click 'Start'. Open and run QPSK_RX.gvi
. Now, you should see the received image on the GUI.
[1] Y. LeCun, C. Cortes, and C. Burges, “Mnist handwritten digit database,” ATT Labs [Online]. Available: http://yann.lecun.com/exdb/mnist, vol. 2, 2010
Include Files: B. A. Black, Introduction to Communication Systems Lab Based Learning with NI USRP and LabVIEW Communications. National Instruments, 2014.
This project is licensed under the GNU Affero General Public License.