/mmWave-radar-signal-processing-and-microDoppler-classification

Codes and template data for paper "Experiments with mmWave Automotive Radar Test-bed"

Primary LanguageMATLAB

mmWave-radar-signal-processing-and-microDoppler-classification

This is a repository for codes and template data of paper "Experiments with mmWave Automotive Radar Test-bed"

NEW!!! The micro-Dooler classification part has been updated

Please cite our paper with below bibtex when you find the codes useful.

@INPROCEEDINGS{9048939,  author={Gao, Xiangyu and Xing, Guanbin and Roy, Sumit and Liu, Hui}, 
booktitle={2019 53rd Asilomar Conference on Signals, Systems, and Computers}, 
title={Experiments with mmWave Automotive Radar Test-bed}, 
year={2019},  volume={},  number={},  pages={1-6},  doi={10.1109/IEEECONF44664.2019.9048939}}

Software requirement

MATLAB, Python 3.6, Tensorflow 2.0, Jupyter Notebook

Run codes for generating range-angle maps, range-Doppler maps, and 3D point clouds

  1. Customize your testbed/FMCW parameter in script:
    ./config/get_params_value.m
    
  2. Select the input data ('pms1000_30fs.mat', 'bms1000_30fs.mat' or 'cms1000_30fs.mat') in script:
    generate_ra_3dfft.m
    
  3. Run 'generate_ra_3dfft.m' script to get results. For example, the range-angle image, range-Doppler image, and detected 3D point clouds for input data 'pms1000_30fs' are shown below:

pms1000_ra pms1000_rd pms1000_pointclouds

  1. You can manipulate the algorithm parameters of below commands in "./utils/cfar_RV.m" script to obtain the desired point-cloud results:
    x_detected = cfar_ca1D_square(Dopdata_sum(rani,:), 4, 7, Pfa, 0, 0.7);
    y_detected = cfar_ca1D_square(Dopdata_sum(:, C(1,dopi)), 4, 8, Pfa, 0, 0.7);
    
  2. It is optional to stop the range-Doppler image by setting below flag in codes to 0:
    Is_plot_rangeDop = 1;
    

Run codes for generating micro-Doppler maps

  1. Customize your testbed/FMCW parameter in script:

    ./config/get_params_value.m
    
  2. Select the input data ('pms1000_30fs.mat', 'bms1000_30fs.mat' or 'cms1000_30fs.mat') in script:

    generate_microdoppler_stft.m
    
  3. Run 'generate_microdoppler_stft.m' script to get results. For example, the micro-Doppler map for input data 'pms1000_30fs' is shown below:

    pms1000_md

  4. You can manipulate the algorithm parameters in "generate_microdoppler_stft.m" to customize the micro-Doppler map properties:

    M = 16; % number of frames for generating micro-Doppler image
    Lr = 11; % length of cropped region along range
    La = 5; % length of cropped region along angle
    Ang_seq = [2,5,8,11,14]; % dialated angle bin index for cropping
    WINDOW =  255; % STFT parameters
    NOVEPLAP = 240; % STFT parameters
    

Train and Test VGG16 classifier

  1. Download the template training data, testing data, and trained model from the Google Drive with below link:

    https://drive.google.com/file/d/1Lbfd5h8bJASUcPU6_YJ-7JnGcfJdaocy/view?usp=sharing
    https://drive.google.com/file/d/1fZQw1uUCwAa-rW_cvX4I0Nx2OaBHW9Ib/view?usp=sharing 
    https://drive.google.com/file/d/1qYIlSGqfva4S476ADKXTrQV2uXIH1mK6/view?usp=sharing
    

    Note that we select part of our training and testing set for your use here and the model was trainied with whole complete training set.

    You may use the above algorithm "generate_microdoppler_stft.m" to create your own training and testing set (micro-Doopler images).

  2. Put the decompressed training data, testing data, and trained model in "template data" folder as follow:

    '.\template data\train_data_part'
    '.\template data\test_data_part'
    '.\template data\trained_model\new_epoch10'
    
  3. Run the training:

    train_classify.ipynb
    
  4. Run the testing

    test_classify.ipynb