tum-phoenix / drive_ml Goto Github PK
View Code? Open in Web Editor NEWThis is the repository for our Machine Learning applications
This is the repository for our Machine Learning applications
Output should be (n,4) range each 0 to 64 (max value of our pixels).
Try using Tensorboard to viszualize training results.
Ground truth data can be easily generated using the Matlab Automated Driving System Toolbox.
Update the wiki-page of the datasets, such that it is clear how it can be used (i.e. add a table structure with information such as "annotations available?", ...)
Objective:
Improve the estimation of line-polynomials for different scenarios (straight/curve/intersection/...)
How to start with the ticket:
Constraints:
Benchmarks:
From gazebo simulation generate:
https://github.com/tum-phoenix/drive_sim_road_generation
For naming and storing conventions, please follow the GTSRB structure.
Implement the SlimYOLOv3 algorithm and apply it to different datasets to obtain results
When this ticket is completed, the SlimYOLOv3 can be applied to the CaroloCup-Dataset
Update the evaluation script of the classification with a confusion matrix, such that more insights of the results are gained.
Deep Reinforcement learning is a promising approach for autonomous robots and has been utilized in Autonomus Driving. This would be end-to-end trainable though.
https://github.com/simoninithomas/Deep_reinforcement_learning_Course
Implement, train and test a spatialCNN algorithm and test it with the open source datasets CULane and TuSimple
Create an object detection for road markings based on YOLOv3 or SlimYOLOv3 algorithm
Objective:
Currently, a simple regression is applied to go from the segmented image to a line polyomial. This ticket is thinking about a different ML approach and implement this idea.
How to start with the ticket:
Constraints:
Benchmarks:
confidence should not be 1.0
Evaluate tools from MS for ML development.
We have a subscription from MS available.
Implement, train and test a LaneNet algorithm and test it with the open source datasets CULane and TuSimple
Create a 2nd dataset for the object detection in the carolo-cup with a second folder with additional data for the same labels as the original dataset. A second should be created such that we still have the original one for comparison purposes.
Create a neural network structure that is able to perform multiple tasks (see also paper), such as classification, object detection, and lane detection.
paper_2017_Lee_LaneandRoadMarkingDetectionandRecognition.pdf
All classes should have approximately the same number of images to be balanced.
Historgram available:
https://github.com/tum-phoenix/drive_ml/blob/master/sign_recognition/utilities/data_augmentation/data_augmentation.ipynb
Goal: estimate the position of the car on the lane based on the labeled images from the Bosch workshop.
Convention for representation: 0 is middle, -1 middle of left lane, 1 is middle of the right lane (goes up to 2)
Can be put into a sub-folder directly at drive_ml (as a jupyter notebook for example)
Where to put the data:
SSD mount is under /datasets_2 on the workstation
Make a sub-folder called lane_offset for the data recorded
Tasks:
Create a general evaluation script that is able to evaluate the performance of a line detection algorithm.
Prune trained on our data.
Colab notebooks for this are available from google.
Text TBD
Implement and test the "Hough Transform" algorithm on the offline datasets CULane and TuSimple. Note: this is a classical approach and no machine learning.
Understand which datasets are currently used for lane detection, and define which dataset can be used for the CaroloCup.
Develop a pipeline for learning
Create a docker image where everything works.
Read the Keras Documentation and try to create a better model.
Read the Keras documentation.
https://keras.io/layers/convolutional/
Segmentation is a useful tool to perceive the environment and extracts a very rich representation. In
combination with Depth Perception, this can lead to a very accurate snapshot of the track.
Augment the YOLOv3 algorithm, such that it is able to detect (with 2D bounding box) an additional class
State-of-the-art Convolutional Neural Networks can be used to detect road lanes.
Different approaches and techniques can be implemented to train a NN that can detect lines. Several aspects need to be tried and decided on:
Create a wiki totorial how to flash the Jetson
Google recently announced its new Object Detection API. It could be very interessting for us.
The tools include:
More infos:
https://github.com/tensorflow/models/tree/master/research/object_detection
Determine how lane algorithms can be tested and evaluated with the Phoenix car on the racetrack (ground-thruth).
End the end of the training phase, store a plot with the accuracy and loss that was recorded each epoch.
The accuracy while fitting and during the evaluation part is not the same.
Find out why they are different and with the network is mostly 100% sure with the given data.
images should be normalized in terms of:
Objective:
Implement YoloV4
How to start with the ticket:
When is ticket finised?:
The ticket is finished when a small prove of concept is shown how YoloV4 can be implemented, and how it can be trained for custom classes (any dataset).
Further Information:
In a later ticket, this code will be used for our custom pictures. Sidenote: Labeled images (object + box) are also possible to be retrieved from here: /home/Images (LRZ cloud.tum-phoenix.de)
For the Carolo Cup some signs are not in the database, to solve this problem we need other pictures.
Improve the accuracy of the current YOLOv3 by first getting the baseline performance with open source datasets and the carolocup dataset, then find out which problems exist, and finally add improvements/test resutls.
Currently, we have included most public and private datasets. The notebook with the labels and conversion examples is available here. Dataset evaluation is found here.
Available public datasets:
Todo:
Create a Database from the picutes:
Relativen Pfad
Größe
Klassen
Boundingbox (x1 y1 x2 y2)
Datenset
SchildID - Szenenweise...
For better documentation there should be a table in a ReadMe.md (Markdown):
| Name | GTRSB Number | Picture |
{
'3': 'Geschwindigkeitsbegrenzung 60',
'11': 'Nächste Kreuzung Vorfahrt',
'22': 'Bodenwellen',
'33': 'Rechts Abbiegen',
'4': 'Geschwindigkeitsbegrenzung 70',
'27': 'Vorsicht Fußgänger',
'40': 'Kreisverkehr',
'39': 'Blauer Pfeil untenlinks',
'41': 'Überholverbot aufgehoben',
'43': 'Kein Schild',
'1': 'Geschwindigkeitsbegrenzung 30',
'19': 'Scharfe Kurve links',
'24': 'Straße wird enger links',
'28': 'Vorsicht Kinder',
'12': 'Vorfahtsstraße',
'38': 'Blauer Pfeil untenrechts',
'7': 'Geschwindigkeitsbegrenzung 100',
'0': 'Geschwindigkeitsbegrenzung 20',
'2': 'Geschwindigkeitsbegrenzung 50',
'30': 'Vorsicht Schnee',
'14': 'STOP',
'5': 'Geschwindigkeitsbegrenzung 80',
'13': 'Vorfahrt gewähren',
'8': 'Geschwindigkeitsbegrenzung 120',
'36': 'Geradeaus oder rechts abbiegen',
'17': 'Einbahnstraße falsche Seite',
'9': 'Überholverbot PKW',
'6': 'Geschwindigkeitsbegrenzung Ende 80',
'21': 'Kurvige Straße',
'26': 'Vorsicht Ampel',
'42': 'LKW-Überholverbot aufgehoben',
'29': 'Vorsicht Fahrrad',
'31': 'Vorsicht Wild',
'10': 'Überholverbot LKW',
'37': 'Geradeaus oder links abbiegen',
'35': 'Geradeaus',
'15': 'Durchfahrt verboten',
'32': 'Alle Regeln frei',
'23': 'Rutschgefahr',
'16': 'Durchfahrt verboten LKWs',
'25': 'Vorsicht Bauarbeiten',
'20': 'Scharfe Kurve rechts',
'34': 'Links Abbiegen',
'18': '!-Zeichen'
}
Objective:
A neural network is implemented so create segmented images. The neural network learns from rendered images (created in gazebo). This task is about retraining the neural network with improved images, after applying a better style tranfer.
How to start with the ticket:
Constraints:
Benchmarks:
Files:
Implement, train and test a ENet-SAD (Self Attention Distillation) algorithm and test it with the open source datasets CULane and TuSimple
We could generate synthetic training data with GTRSB or other sign images. The images can be projected in our "environment" to create the synthetically labeled data. Based on the projection parameters we can obtain the bounding boxes easily.
Code lives here: https://github.com/tum-phoenix/drive_ml/tree/master/sign_recognition/utilities/data_augmentation
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.