/SaferAuto

Modular system able to assist during driving ๐Ÿš—, detecting road elements such as traffic lights ๐Ÿšฆ or traffic signs โ›” and informing the driver of possible threats.

Primary LanguageC++MIT LicenseMIT

Safer Auto

Safer Auto

Real-time detection system to assist during driving.

GitHub Website Twitter Follow Website

Key Features โ€ข How To Use โ€ข Author โ€ข License

Detect, locate and track road elements from a video stream using YOLOv3 real-time object detection system. Among the elements to classify, the model will be trained to detect traffic lights, vehicles and some types of road signs.

Key Features

  • Detection of speed limit road signs and speed identification. โœ”๏ธ
  • Detection of traffic lights and classification depending on its state (green, amber, red). โœ”๏ธ
  • Detect the previous elements in real-time. โœ”๏ธ
  • Track the previous elements in real-time. โœ”๏ธ
  • UI that displays the current detection and tracking of the road elements, showing bounding boxes with the different classes. โœ”๏ธ
  • Detection of cars and classification of the type. [work in progress]
  • Implementation of a chatbot that notifies the driver of possible road threats and is able to repeat last notifications. [work in progress]

How to use

GUI for Safer Auto [beta]

The second way of testing the detector is a Graphical UI that shows the detection in a more user-friendly way. The process now is a bit tedious but I will try to imporve it in the future with Docker.

Requirements

  • Clone this repository (git clone https://github.com/angeligareta/SaferAuto.git).
  • Nvidia GPU and correct driver.
  • CUDA and OPENCV. I have written a tutorial about it. You would need to follow the steps CUDA INSTALLATION(Nvidia GPU required) and Installing OPENCV.
  • QT Creator 5.12. It is important to install this version.
  • Weights file that represents the trained model. The next step would be to set the weights file in the correct folder:
cd SaferAuto/
mkdir -p models/weights/
mv <downloaded-weights> models/weights/yolov3-saferauto.weights

Compiling

Once you satisfy all the requirements, you have to compile the darknet program. I am using a fork by AlexeyAB. For compiling it with GPU follow these steps (from SaferAuto folder):

cd darknet/
sed -i s/GPU=0/GPU=1/g Makefile
sed -i s/CUDNN=0/CUDNN=1/g Makefile
sed -i s/OPENCV=0/OPENCV=1/g Makefile
sed -i s/LIBSO=0/LIBSO=1/g Makefile
make
cd ..
mkdir lib
cp libdarknet.so lib

Executing

After that, you need to open the project SaferAutoGUI.pro with QT Creator. Finally you only need to execute the program.

The main window will open. In this first window, there are 4 options you can change, the configuration, names, weights and input file paths for testing the SaferAuto detector. Once you have selected the correct configuration (there is one selected by default), you can press the start button to start detecting!

You can see the interface windows here:


Bibliography

Here I show some of the latest documentation I have found related with Advanced Driver Assistance Systems (ADAS). You can find a more detailed version of the project in my final degree project report (only in spanish).

Papers

Example of final products

Tutorials

Author

รngel Igareta - Computer Engineering Student

License

This project is licensed under the MIT License