Commit e548b4f2 authored by LouisDeOliveira's avatar LouisDeOliveira
Browse files
parents a193a478 f565d644
......@@ -9,3 +9,64 @@ Louis De Oliveira, Guillaume Allègre
Ce projet consite à générer des extraits de musique classique avec un GAN.
## __Le but__ :
- Générer des extraits de musique classique écoutables
- Construire un modèle de GAN assez performant pour être utilisé pour d'autres tâches
## __Difficultés rencontrées__ :
- Instabilité de l'entraînement du GAN
- Durée de l'entrainement de GAN
- Difficultés pour trouver un dataset de fichiers midis adéquats
## __Implémentation__ :
# Construction d'un dataset
Le dataset d'entraînement pour le GAN est construit à l'aide d'un dataset
de fichiers midi de grands compositeurs classiques.
On utilise la fonction midi2img issue de ce [repo](https://github.com/mathigatti/midi2img), légérements modifiée, pour convertir
les fichiers midis en images sur lesquelles ont peut facilement entrainer un GAN
Une fois ceci fait, les images sont converties en noir et blanc, puis en array numpy (après avoir filtré les imga complètement noires).
# entraînement du GAN
La structure du GAN est disponible dans le notebook.
Pour aider à l'entrainement du GAN, nous faisons appel à plusieurs astuces:
- Le label smoothing qui consiste a remplacer les valeurs de vérité binaires fournies au discriminateur
par des valeurs comme 0.1 et 0.9 ou 0.2 et 0.8 pour éviter de rendre le discriminateur trop fort.
- Le label flipping qui consiste a inverser de temps en temps les valeurs de vérité fournies au discriminateur pour la encore faciliter l'apprentissage du générateur.
# écoute des morceaux générés :
Nous utilisons la fonction img2midi issue du même repo que midi2img pour convertir les images générées par
notre GAN en fichier midis que l'on peut écouter.
## __Conclusion et perspectives__ :
Les morceaux générés par le GAN ont un certains rythmes mais restent assez éloignés de la musique classique que nous voulions générer.
Voici quelques pistes d'amélioration:
- Utiliser un modèle génératif permettant d'intégrer une notion temporelle pour avoir une meilleure cohérence dans le temps des morceaux générés.
- Mieux nettoyer le dataset d'entrainement pour enlever les images majoritairement vides qui n'aident pas a générer des musiques intéressantes.
- Se renseigner sur d'autre modes de représentation de la musique que le midi.
## __Sources__ :
- [Article medium sur le sujet](https://towardsdatascience.com/bachgan-using-gans-to-generate-original-baroque-music-10c521d39e52), nous utilisons une architecture de GAN assez différente de la sienne pour éviter d'avoir un nombre trop important de paramètres mais l'idée en similaire.
- [Repo git de fonctions sur les fichiers midi](https://github.com/mathigatti/midi2img)
- [librairire python music21](https://web.mit.edu/music21/)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment