3. sur votre machine et sur la cible embarquée (dans notre cas Raspberry Pi 4).
2. (obligatoire) Veiller à donner la preuve que le code fonctionne sur la cible.
3. (obligatoire) Évaluer (et mesurer) les complexités temporelle et mémoire de vos algorithmes.
4. (obligatoire) Vérifier la performance de chaque classificateur embarqué sur les fichiers de test sélectionnés avant l'entraînement afin de les comparer.
5. Programmer une extraction de paramètres en C++ performante :
1. (obligatoire) compléter le fichier au_reading.h afin de [convertir les fichiers AU du dataset en DataVector en C++](https://en.wikipedia.org/wiki/Au_file_format).
2. (obligatoire) efficace dans son exécution (1 Go de données musicales peuvent être traitées en 60 secondes ou moins),
3. minimale en termes de paramètres significatifs générés pour l'apprentissage :
1. (obligatoire) approche STFT,
2. (facultatif) approche MFCC.
6. Programmer des arbres de décision :
1. (obligatoire) générer automatiquement le code C++ à compiler pour exécuter la prise de décision sur la cible depuis le CART Python fourni ou Skearn,
2. (facultatif) proposer une implémentation de CART en C++-20 à partir de celle proposée en Python,
4. (facultatif) proposer une implémentation simple de l'exécution d'une Random Forest en C++-20 en se servant des codes générés automatiquement.
7. Programmer une SVM :
1. (obligatoire) Élaborer une SVM optimale à l'aide de Scikit Learn, à partir des paramètres extraits en C++,
2. (obligatoire) Implémenter la prédiction *un contre un* en C++-20 sur la cible.
8. Programmer un réseau de neurones :
1. (obligatoire) Implémenter un ANN en C++,
2. (facultatif) Implémenter un ANN en C++ en utilisant le paradigme objet,
9. (facultatif) Comparer vos implémentations avec TensorFlow sur Raspberry Pi,
10. (obligatoire) Comparer les approches et faire un tableau synthétique des caractéristiques et des performances de chacune des approches (CART, RF, SVM, ANN).
## Évaluation pour le 18/01/2022 (dépôt Moodle) :
- Rapport au format PDF police 11 de 10 pages maximum qui rend compte précisément de votre travail.
//TODO USE THESE HEADERS ELEMENTS TO READ .AU FILES
//32 bit word (unsigned) field Description/Content Hexadecimal numbers in C notation
//0 magic number the value 0x2e736e64 (four ASCII characters ".snd")
//1 data offset the offset to the data in bytes, must be divisible by 8. The minimum valid number is 24 (decimal), since this is the header length (six 32-bit words) with no space reserved for extra information (the annotation field). The minimum valid number with an annotation field present is 32 (decimal).
...
...
@@ -37,11 +34,10 @@
//5 channels the number of interleaved channels, e.g., 1 for mono, 2 for stereo; more channels possible, but may not be supported by all readers.
Ce projet GitLab est la base du code que vous devez rendre sur Moodle. Il faut en respecter l'esprit et l'organisation.
# Embarquer la prédiction issue de l'apprentissage automatique ?
L'idée fondamentale de ce cours est de poser la problématique
...
...
@@ -135,61 +134,3 @@ Ils seront automatiquement inscrits dans le fichier généré par write_csv.
- ANN : élaborer un réseau de neurones artificiel optimal, implémenter le réseau en C++ pour prédire sur la cible.
# Objectifs et évaluation --> 18/01/2022
## Programmation des séances
- Présentation du cours (1h)
- Extraction des paramètres via STFT (3h) pour utilisation avec tous les algorithmes suivants.
- Arbre de décision (2h) :
- élaboration d'un arbre de décision de type CART (Python brut et sklearn),
- génération automatique du code de prise de décision en C++,
- programmation sur la cible,
- tests sur la cible.
- Séparateur à Vaste Marge (SVM) (3h) :
- élaboration du classificateur,
- extraction des coefficients,
- programmation de la prédiction sur la cible,
- tests sur la cible.
- Réseaux de neurones (ANN) (3h)
- élaboration du classificateur,
- programmation de la prédiction sur la cible,
- tests sur la cible.
- Améliorations (4h)
- MFCC plutôt que STFT pour limiter le nombre de paramètres d'entrée,
- Implémentation de la prédiction via Random Forest en C++.
- Utiliser le paradigme objet pour programmer les réseaux de neurones en C++.
- Programmer sur la cible en utilisant le moteur TensorFlow Light.
## Objectifs :
1. (obligatoire) Implémenter en C++-20
1. en utilisant la bibliothèque standard
2. sans utiliser de bibliothèques externes
3. sur votre machine et sur la cible embarquée (dans notre cas Raspberry Pi 4).
2. (obligatoire) Veiller à donner la preuve que le code fonctionne sur la cible.
3. (obligatoire) Évaluer (et mesurer) les complexités temporelle et mémoire de vos algorithmes.
4. (obligatoire) Vérifier la performance de chaque classificateur embarqué sur les fichiers de test sélectionnés avant l'entraînement afin de les comparer.
5. Programmer une extraction de paramètres en C++ performante :
1. (obligatoire) compléter le fichier au_reading.h afin de [convertir les fichiers AU du dataset en DataVector en C++](https://en.wikipedia.org/wiki/Au_file_format).
2. (obligatoire) efficace dans son exécution (1 Go de données musicales peuvent être traitées en 60 secondes ou moins),
3. minimale en termes de paramètres significatifs générés pour l'apprentissage :
1. (obligatoire) approche STFT
2. (facultatif) approche MFCC
6. Programmer des arbres de décision :
1. (obligatoire) générer automatiquement le code C++ à compiler pour exécuter la prise de décision sur la cible depuis le CART Python fourni.
2. (facultatif) proposer un implémentation de CART en C++-20 à partir de celle proposée en Python.
4. (facultatif) proposer un algorithme de type Random Forest à partir du code de CART C++.
7. Programmer une SVM :
1. (obligatoire) Élaborer une SVM optimale à l'aide de Scikit Learn, à partir des paramètres extraits en C++.
2. (obligatoire) Implémenter la prédiction un contre un SVM en C++-20 sur la cible.
8. Programmer un réseau de neurones :
1. (obligatoire) Implémenter un ANN en C++.
2. (facultatif) Implémenter un ANN en C++ en utilisant le paradigme objet.
9. (facultatif) Comparer vos implémentations avec TensorFlow sur Raspberry Pi.
10. (obligatoire) Comparer les approches et faire un tableau synthétique des caractéristiques et des performances de chacune approche SVM à une approche NN.
## Évaluation pour le 18/01/2022 (dépôt Moodle) :
- Rapport au format PDF police 11 de 10 pages maximum qui rend compte précisément de votre travail.