/titaniumcar

Un projet de voiture autonome !

Primary LanguageJupyter Notebook

Titanium Car = đŸŽïž + đŸ€–


Un projet fait Ă  l'IMT Lille Douai Logo IMT

avec le suivi du Professeur Hazem Wannous

Novembre 2019

Le projet


L'objectif du projet s'insprire de celui du concours IronCar :

Transformer une voiture téléguidée en voiture autonome et effectuer le plus rapidement possible un tour de circuit.

Notre résultat

La demo

Le sommaire

  1. Le contexte
  2. L'installation
  3. Les technos
  4. La structure
  5. La labelisation
  6. Les auteurs

Ce dépÎt contient tous les notebooks et programmes faits durant le projet.

Le contexte


TitaniumCar a été un projet d'initiation au deep learning et de découverte des différentes librairies de la data science. Il nous a permis de pratiquer toutes les étapes qu'un projet de data science peut avoir :

  • DĂ©finition de la problĂ©matique
  • Conception
  • CrĂ©ation du dataset
  • Apprentissage
  • Tests
  • DĂ©ploiement

Le projet ne durant qu'un seul mois, le code a dĂ» ĂȘtre restructurĂ© par la suite. Le code destinĂ© Ă  ĂȘtre deployer sur la voiture pourrait contenir des bugs. Le reste du dĂ©pĂŽt a Ă©tĂ© testĂ©.

Installation


Pour pouvoir expérimenter et utiliser directement le code, l'environnement Conda a été exporté. L'installation se fait simplement avec :

conda create -n titaniumcar python=3.7
conda env update --file environment.yml

Cette méthode est plus simple à mettre en place que celle décrite dans le rapport pdf.

Les donnĂ©es Ă©tant volumineuses, elles doivent ĂȘtre tĂ©lĂ©chargĂ©es sĂ©parĂ©ment Ă  cette adresse : cdn.facchini.fr/92J7pN7jl8yQTZfp/data_titaniumcar.zip

Les technos


Le langage utilisé pour l'ensemble du projet est python 3.7. Ensuite les principales technos utilisées sont :

  • Numpy
  • OpenCV
  • Tensorflow (et Pytorch)
  • Pygame
  • Picamera et Adafruit

La structure


Le projet a été séparé en 5 parties :

  • Experimentations : Tous les tests que nous avons effectuĂ©s mais qui n'ont pas Ă©tĂ© utilisĂ©s dans la version finale du projet
  • Processes : Les notebooks pour tester les modĂšles de prĂ©dictions
  • Titaniumcar : Code source pour la conduite de la voiture
  • Labeling : MĂ©thodes pour la labĂ©lisation des photos prises par la voiture
  • (Data : comprend le dataset, les vidĂ©os et les tests, doit ĂȘtre tĂ©lĂ©chargĂ©)

Le dépÎt contient aussi le rapport complet du projet au format pdf.

La labelisation


L'apprentissage du CNN nécessite une grande quantité d'images. La solution adoptée est de labéliser des photos prises par la voiture. Nous avions plus de 18 000 frames.

1er exemple du programme de labélisation2nd exemple du programme de labélisation

Un programme a été fait pour définir avec la souris les 2 labels (nombres réels) :

  • la direction des roues
  • la puissance du moteur

En étant 4 personnes, nous mettions 1 heure pour toutes les labéliser avec notre méthode.

Les auteurs


La partie logicielle a été conçue par :

  • Pierre Montroeul
  • Antoine Facchini