yansicing / DCRNN

This repo contains all the codes and sample files for the DCRNN paper

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GitHub repo size

Driving Style Representation in Convolutional Recurrent Neural Network Models of Driver Identification

This repository contains all the implementations (including proposed models as well as baselines) and sample files for the D-CRNN paper.

Feature Engineering

  • Statistical Feature Matrix: to generate feature matrix as input for deep models, use Create_FeatureMatrix.py.
  • Feature Vector V1: to generate the original feature vector for a trajectory to be used by GBDT model, use Create_FeatureVector_V1.py.
  • Feature Vector V2: to generate the modified feature vector for a trajectory to be used by GBDT model, use Create_FeatureVector_V2.py.

Models

  • D-CRNN: this is our proposed model to perform driver prediction based on driving style information. This model combines several important compoenents of deep-neural-network architectures including recurrent, convolutional, and fully connected components. An implementation of this model in Tensorflow can be find here. Following diagram also describes the design of this model:

  • VRAE: this is the Variational Recurrent Auto-encoder model, proposed by Fabius and Amersfoort (2015). Here we extend the original implementation to use it for driver prediction task by a modified loss function. The implementation of this model in Theano can be find here.

  • GBDT: this is a Gradient Boosting Decision Tree model which we use it for driver prediction task. A Python imeplementatin of this method based on scikit-learn library is available here.

  • CNN-model: this is a Convolutional Neural Network model to perform driver prediction task, which is proposed by Dong et al. (2016). Imeplementation of this method in Tensorflow can be find here.

  • RNN-model: this is a Recurrent Neural Network model to perform driver prediction task, which is proposed by Dong et al. (2016). Imeplementation of this method in Tensorflow can be find here.

Requirements

  • Python: You may use either Python 2.7 or 3.
  • Tensorflow: For all the deep models, except VRAE, you need Tensorflow (version >= 1.12.0 is recommended).
  • Theano: To run VRAE model, you need Theano (version >= ??? is recommended).
  • Cuda Library: You need Cuda Library for tensorflow and theano-based codes; version > 9.0.176 is recommended.

Note that our models can be run on both CPU and GPU machines.

How to Run

Creating Feature Vector/Matrix

  • Generate Feature Matrix: Use python Create_FeatureMatrix.py to create feature matrix. This will result in creating two files in data directory, one npy and one pkl file.
  • Generate Feature Vector: This is to generate input for non-deep models, such as GBDT. For the original version of features as described here, use Create_FeatureVector_V1.py, and for the modified version as described in our paper, use Create_FeatureVector_V2.py. For each data file, we create one npy and one pkl file, using either of scripts.

Modeling and Prediction

  • Run Deep Models: You just need to use python [MODEL_NAME].py. Make sure you have all the requirements satisfied.
  • Run GBDT Models: Set the desired input data file in script and use python GBDT.py to run the model. Use --version v1 for the original feature vector (size 321), or --version v2 for the modified version (size 384).

Sample Data

You may find a raw sample file in data directory. In this file we have 5 drivers, and 10 random trajectories for each driver. The format of this file is described as follows:

Attribute Description
Driver Indicates driver id, which is a string.
ID Indicates trajectory id, which is a string.
Time An integer which indicates the timestep for a datapoint of a trajectory.
Lat Shows the latitude value of GPS coordinate.
Lon Shows the longitude value of GPS coordinate.
Speed Shows the ground velocity of the vehicle as reported by OBD-II port.
Acceleration Shows the rate of change of ground velocity or speed.
RPM Shows the round per minute, as reported by OBD-II port.
Heading Shows the bearing of the vehicle, which is a value between 0 and 359.
AccelX Shows the acceleration sensor reading along with X-axis.
AccelY Shows the acceleration sensor reading along with Y-axis.
AccelZ Shows the acceleration sensor reading along with Z-axis.

Sample Results

Following is the result of different models on a random sample set of 50 drivers, with 50 trajectories for each driver. For deep models, we report accuracy on both segment as well as trajectory, see the paper for details.

Model Accuracy--Segment Accuracy--Trajectory
GBDT-V1 -- 25.13%
GBDT-V2 -- 49.24%
CNN-model 42.83% 59.90%
RNN-model 55.45% 70.73%
VRAE 51.28% 63.67%
D-CRNN 62.94% 78.00%

Acknowledgments

  • Sobhan Moosavi, Pravar D. Mahajan, Eric Fosler-Lussier, Colleen Saunders-Chukwu, and Rajiv Ramnath; "Driving Style Representation in Convolutional Recurrent Neural Network Models of Driver Identification", 2019

About

This repo contains all the codes and sample files for the DCRNN paper


Languages

Language:Python 95.0%Language:HTML 5.0%