SkillAgentSearch skills...

QCRNet

This is the repository for paper "A Distribution Adapter for Quantization in Deep Learning-Based Massive MIMO CSI Feedback".

Install / Use

/learn @zhang-xd18/QCRNet
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

QCRNet

Overview

This is a Pytorch implementation for paper Quantization Adaptor for Bit-Level Deep Learning-Based Massive MIMO CSI Feedback. The test script and trained models are listed here and the key results can be reproduced as a validation of our work .

Requirements

To use this project, you need to ensure the following requirements are installed.

  • Python >= 3.8
  • Pytorch == 1.6
  • thop

Project preparation

A. Data Preparation

We consider both the COST2100 and the CDL channel models in this work. COST2100 dataset is generated referring to this paper. Chao-Kai Wen and Shi Jin group provides a pre-processed version of COST2100 dataset which is easier to use for the CSI feedback task. You can download it from Baidu Netdisk.You can generate your own dataset according to the open source library of COST2100 as well. The details of data pre-processing can be found in our paper.

The CDL dataset is generated referring to the Wireless-Intelligence libirary from OPPO. You can download it from their official website Wireless-Intelligence. The parameter settings are described in detail in our paper. We also provide download links of Google Drive or Baidu Netdisk (passwd:4gbc).

B. Checkpoints Downloading

The checkpoints of our proposed method can be downloaded from Baidu Netdisk (passwd: yn5b) or Google Drive.

Performance Reproduction

A. Network-based Adaptor

Project tree arrangement

We recommend you to arrange the project tree as follows.

home
├── CRNet_NA  # The cloned QCRNet repository
│   ├── dataset
│   ├── models
│   ├── utils
│   ├── main.py
├── Dataset  # Datasets downloaded following Data Preparation
│   ├── DATA_Htestin.mat
│   ├── ...
├── checkpoint_NA # The checkpoints folder downloaded following Checkpoints Downloading
│   ├── in_4_6bit.pth
│   ├── ... 
├── run.sh # The bash script
...

Results and reproduction

The main results reported in our paper are presented as follows. All the listed results can be found in Table I and Table II of our paper. They are achieved from our proposed training scheme and quantization strategy.

Scenario | Compression Ratio | Quantization bit width | NMSE(dB) | SNR(dB) | Checkpoints :--: | :--: | :--: | :--: | :--: | :--: indoor | 4 | 6 | -25.82 | 47.11 | in_4_6bit.pth indoor | 4 | 4 | -19.94 | 30.76 | in_4_4bit.pth indoor | 8 | 6 | -15.58 | 46.19 | in_8_6bit.pth indoor | 8 | 4 | -14.32 | 29.71 | in_8_4bit.pth indoor | 16 | 6 | -11.68 | 43.62 | in_16_6bit.pth indoor | 16 | 4 | -10.55 | 29.02 | in_16_4bit.pth outdoor | 4 | 6 | -12.70 | 39.06 | out_4_6bit.pth outdoor | 4 | 4 | -12.13 | 27.16 | out_4_4bit.pth outdoor | 8 | 6 | -8.352 | 36.73 | out_8_6bit.pth outdoor | 8 | 4 | -8.102 | 27.00 | out_8_4bit.pth outdoor | 16 | 6 | -5.513 | 35.50 | out_16_6bit.pth outdoor | 16 | 4 | -5.359 | 26.65 | out_16_4bit.pth

As aforementioned, we provide model checkpoints for all the results. Our code library supports easy inference.

To reproduce all these results, you need to download the given dataset and corresponding checkpoints. Also, you should arrange your projects tree as instructed. An example of run.sh is shown as follows.

python ./CRNet_NA/main.py \
  --data-dir './Dataset' \ # path to the dataset
  --scenario 'in' \ # chosen from ['in','out'] for indoor or outdoor scenarios respectively.
  --pretrained './checkpoint_NA/in_4_6bit.pth' \  # path to the pretrained checkpoint
  --cr 4 \  # compression ratio
  --nbit 6 \  # quantization bit width, chosen from [6, 4]
  --evaluate \
  --batch-size 200 \
  --workers 0 \
  --cpu

B. Expert knowledge-based Adaptor

Project tree arrangement

We recommend you to arrange the project tree as follows.

home
├── CRNet_LA  # The cloned QCRNet repository
│   ├── dataset
│   ├── models
│   ├── utils
│   ├── main.py
├── Dataset  # Datasets downloaded following Data Preparation
│   ├── DATA_Htestin.mat
│   ├── ...
├── checkpoint_LA # The checkpoints folder downloaded following Checkpoints Downloading
│   ├── in_4_6bit.pth
│   ├── ... 
├── run.sh # The bash script
...

Results

We test the performance of the L1 adaptor on both the COST2100 and the CDL channel datasets. The results are listed in the following.

Performance on the COST2100 dataset

All the listed results can be found in Table I and Table II of our paper.

Scenario | Compression Ratio | Quantization bit width | NMSE(dB) | SNR(dB) | Checkpoints :--: | :--: | :--: | :--: | :--: | :--: indoor | 4 | 6 | -25.25 | 47.14 | in_4_6bit.pth indoor | 4 | 4 | -18.71 | 30.58 | in_4_4bit.pth indoor | 8 | 6 | -15.38 | 46.06 | in_8_6bit.pth indoor | 8 | 4 | -13.95 | 33.14 | in_8_4bit.pth indoor | 16 | 6 | -11.61 | 44.42 | in_16_6bit.pth indoor | 16 | 4 | -10.48 | 31.66 | in_16_4bit.pth outdoor | 4 | 6 | -11.79 | 49.28 | out_4_6bit.pth outdoor | 4 | 4 | -11.69 | 28.46 | out_4_4bit.pth outdoor | 8 | 6 | -8.223 | 44.70 | out_8_6bit.pth outdoor | 8 | 4 | -8.045 | 29.90 | out_8_4bit.pth outdoor | 16 | 6 | -5.437 | 41.56 | out_16_6bit.pth outdoor | 16 | 4 | -5.287 | 26.11 | out_16_4bit.pth

Performance on the CDL dataset

All the listed results can be found in Table V of our paper.

Delay Spread(ns) | Compression Ratio | Quantization bit width | NMSE(dB) | SNR(dB) | Checkpoints :--: | :--: | :--: | :--: | :--: | :--: 30 | 16 | 6 | -30.89 | 45.20 | A30_16_6bit.pth 30 | 16 | 4 | -22.59 | 29.26 | A30_16_4bit.pth 30 | 64 | 6 | -21.80 | 44.71 | A30_64_6bit.pth 30 | 64 | 4 | -16.29 | 29.65 | A30_64_4bit.pth 30 | 128 | 6 | -15.46 | 44.32 | A30_128_6bit.pth 30 | 128 | 4 | -12.64 | 29.72 | A30_128_4bit.pth 300 | 16 | 6 | -27.68 | 47.50 | A300_16_6bit.pth 300 | 16 | 4 | -18.98 | 30.29 | A300_16_4bit.pth 300 | 64 | 6 | -13.86 | 45.99 | A300_64_6bit.pth 300 | 64 | 4 | -12.35 | 31.32 | A300_64_4bit.pth 300 | 128 | 6 | -10.33 | 43.53 | A300_128_6bit.pth 300 | 128 | 4 | -9.700 | 29.33 | A300_128_4bit.pth

As aforementioned, we provide model checkpoints for all the results. Our code library supports easy inference.

Reproduction

To reproduce all these results, you need to download the given dataset and checkpoints. Also, you should arrange your projects tree as instructed. An example of run.sh is shown as follows.

python ./CRNet_LA/main.py \
  --data-dir './Dataset' \ # path to the dataset
  --scenario 'in' \ # chosen from ['in', 'out', 'A30', 'A300']. 'in' or 'out' for indoor or outdoor scenarios of the COST2100 dataset. 'A30' or 'A300' for the CDL dataset with delay spread set to 30 or 300 ns.
  --pretrained './checkpoint_LA/in_4_6bit.pth' \  # path to the pretrained checkpoint
  --cr 4 \  # compression ratio
  --nbit 6 \  # quantization bit width, chosen from [6, 4]
  --evaluate \
  --batch-size 200 \
  --workers 0 \
  --cpu

Acknowledgement

This repository is modified from the CRNet open source code. Thank zhilin for his work named CRNet and you can refer to it if you are instereted in the details.

Thank Chao-Kai Wen and Shi Jin group again for providing the pre-processed COST2100 dataset.

Thank OPPO for providing the open wireless communication dataset Wireless-Intelligence.

Related Skills

View on GitHub
GitHub Stars23
CategoryEducation
Updated17d ago
Forks2

Languages

Python

Security Score

90/100

Audited on Mar 19, 2026

No findings