Créer avec l’IA

Comment entraîner un style d’image et une reconnaissance de la parole sur votre propre machine?

Écrit en date du · Publié le · Mis à jour le · Par Robert Scales, avec l’aide d’outils d’IA · 6 min de lecture

Réponse courte

Pour les images, entraînez un petit modèle de diffusion, ajoutez un adaptateur de faible rang et montrez-lui une trentaine d’images du nouveau style; pour la parole, enseignez des commandes à un petit réseau et testez-le sur des voix jamais entendues. Dans des tests mesurés, le style s’est transféré au complet mais la bonne forme est tombée à 56–76 %, et adapter Whisper à des noms inventés a fait passer l’orthographe correcte de 4 % à 85 % tout en dégradant les phrases ordinaires.

Les images et le son semblent loin du texte, mais les idées de cette série s’y appliquent : des poids gelés avec un petit adaptateur, des tests sur ce qui a été mis de côté et une mesure distincte pour ce qui ne doit pas changer. Cet article compte deux projets, tous deux exécutés sur un Apple M5 Max (PyTorch 2.15, Transformers 5.22). Les durées ci-dessous incluent d’autres travaux en cours sur la machine et sont donc élevées. Aucune carte NVIDIA n’a été testée, et aucun des projets n’utilise les images ou les voix de vraies personnes.

Projet A : enseigner un nouveau style à un petit modèle d’images

Un modèle de diffusion apprend à prédire le bruit ajouté à une image, puis crée des images en retirant le bruit étape par étape. Les modèles d’images de taille normale exigent des gigaoctets. Pour rester accessible, 12a_image_style.py dessine ses propres images de 32 pixels sur 32 : un cercle ou un carré, dans le style A (taches bleues douces sur fond pâle) ou le style B (hachures orange et noires sur fond sombre). Il construit un réseau de 597 571 paramètres, à qui l’on indique la forme à dessiner.

Le modèle de base s’entraîne sur 4 000 images du style A seulement. Il rencontre ensuite 30 images du style B, grâce à un adaptateur sur ses couches de convolution :

class LoRAConv(nn.Module):
    """Une convolution gelée et une petite correction entraînable."""
    def __init__(self, conv, rank=4):
        super().__init__()
        self.conv = conv
        for p in conv.parameters():
            p.requires_grad_(False)
        self.down = nn.Conv2d(conv.in_channels, rank, conv.kernel_size, conv.stride, conv.padding, bias=False)
        self.up = nn.Conv2d(rank, conv.out_channels, 1, bias=False)
        nn.init.normal_(self.down.weight, std=0.02)
        nn.init.zeros_(self.up.weight)     # commence par « aucun changement »

    def forward(self, x):
        return self.conv(x) + self.up(self.down(x))

C’est l’idée de LoRA appliquée aux images. Mettre up à zéro signifie que le modèle adapté commence identique à la base.

Comment noter une image sans qu’une personne en regarde 200? Le script entraîne deux petits juges : l’un nomme le style, l’autre la forme. Vérifiés sur de vrais dessins, le juge du style a obtenu 100 % sur les deux styles, et celui de la forme, 100 % et 99,7 %. Le script demande ensuite un mélange de formes et juge 200 échantillons par modèle.

Point de départParamètres entraînablesTemps d’entraînementÉchantillons en style BBonne forme
Modèle de base, sans adaptateur380 s0 %100 %
Adaptateur, rang 18 016 (1,3 %)102 s100 %56 %
Adaptateur, rang 432 064 (5,4 %)113 s100 %64 %
Adaptateur, rang 16128 256 (21,5 %)127 s100 %72 %
Modèle de base, tous les poids réentraînés sur les 30 images597 571114 s100 %76 %
Nouveau modèle à partir de zéro sur les 30 images597 571103 s100 %73 %

Le hasard pour la forme se situe à 50 %. Le style s’est donc déplacé complètement dans tous les cas, et c’est le contenu qui a souffert, la version image du projet dix. Mesurer le style seul aurait annoncé un succès total.

Le second constat est moins flatteur pour les adaptateurs. Sur ce problème jouet, ils n’ont donné aucun avantage de qualité. Un modèle à partir de zéro sur les mêmes 30 images a fait aussi bien, parce que la tâche est très simple. Ce qu’un adaptateur vous donne à coup sûr, c’est la taille : le rang 4 représente environ 5 % du modèle et s’active ou se désactive à volonté. Sur de vrais modèles d’images, entraînés sur des données bien plus riches, l’argument pour les réutiliser est beaucoup plus fort, mais ce projet ne l’a pas testé. Les explications pour exécuter Stable Diffusion peuvent vous y mener, avec leurs propres exigences matérielles et leur licence.

Projet B : enseigner la reconnaissance et tester sur des inconnus

Le son vient de la commande say de macOS, et le script fonctionne donc sur un Mac. Sous Linux et Windows, il faudrait un autre générateur de voix, ce qui n’a pas été testé. Il y a 27 voix anglaises, 12 mots de commande comme « open » et « cancel » et trois vitesses d’élocution : 972 extraits. Chacun devient un spectrogramme de Mel, une image de l’énergie du son dans le temps, passée à un petit réseau de 24 300 paramètres. L’entraînement a pris environ 7 secondes. Ce genre de tâche, repérer un nombre limité de mots, est la raison d’être du jeu Speech Commands, dont les auteurs soutiennent qu’elle exige ses propres données plutôt que des enregistrements de phrases.

Comment le test a été fait (12 mots, hasard à 8,3 %)Exactitude
Partage aléatoire : mêmes voix des deux côtés97,4 %
6 voix jamais entendues, 21 pour l’entraînement83,3 %
6 voix jamais entendues, seulement 3 pour l’entraînement53,7 %

La chute de 14 points entre les deux premières lignes est encore une fuite : un partage aléatoire permet au modèle de reconnaître la voix. La dernière ligne montre quoi recueillir : plus de locuteurs, même avec peu d’extraits de chacun. Ce sont des voix synthétiques; attendez-vous à ce que de vrais micros, de vraies pièces et de vrais accents soient plus difficiles.

La reconnaissance de phrases est un travail trop gros pour partir de rien ici, et la seconde partie adapte donc un modèle tout prêt. Whisper tiny.en trébuche sur les noms qu’il n’a jamais entendus. Le script en utilise six, inventés, comme Zorvane et Kelmora. Seul le décodeur, la partie qui écrit les mots, a été entraîné (29,6 millions de paramètres) : 300 étapes, 323 secondes, à partir de 576 extraits de 12 voix. Le test utilise d’autres phrases et d’autres voix.

Test sur des voix inconnuesAvantAprès
Nom inventé écrit correctement (108 extraits)3,7 %85,2 %
Taux d’erreur par mot sur ces phrases40,4 %33,8 %
Taux d’erreur par mot sur des phrases ordinaires sans noms17,6 %23,5 %

Le taux d’erreur par mot compte les mots remplacés, ajoutés ou omis, par mot prononcé. Le gain sur les noms est grand et le coût paraît à la dernière ligne. Le modèle a empiré sur la parole de tous les jours. Une sortie après l’entraînement donnait « Our partner Zorvane launched the Quillby » pour « Our partner Zorvane wants a quote » : les noms d’entraînement apparaissaient là où ils n’ont pas leur place. Si vous n’aviez testé que les noms, vous auriez livré cela. Avant d’entraîner, essayez les options moins coûteuses de Whisper, comme un plus gros modèle ou le fait de lui donner d’avance les noms difficiles.

À essayer : modifiez TEST_V dans 12b_speech.py pour ne mettre de côté que des voix d’un seul accent et voyez si l’exactitude change. Cela vous dit qui vos données laissent tomber.

Quelles images et quelles voix avez-vous le droit d’utiliser pour l’entraînement?

Rien ici n’a utilisé le visage, l’art ou la voix d’une vraie personne, ce qui a simplifié le projet. Le vôtre ne sera peut-être pas aussi simple. Ceci est de l’information générale et non un avis juridique.

MatérielQuestion à poser d’abord
Vos propres photos ou enregistrementsMontrent-ils ou captent-ils d’autres personnes? Ont-elles accepté cet usage?
Le style d’un artiste, à partir de ses œuvresDroit d’auteur sur les images copiées, conditions de licence et simple politesse : demandez
La voix d’une ou d’un collèguePermission écrite, précisant l’usage, la durée et le moyen de la retirer
La voix ou le visage d’une personnalité publiqueRisque d’usurpation d’identité, même sans intention de tromper
Résultats de modèle à l’image d’une vraie personneIndiquez-le. Ne vous en servez pas pour tromper

Une voix ou un visage peut identifier une personne : traitez ces enregistrements comme des renseignements personnels sensibles. Au Québec, les données biométriques ont leurs propres règles, alors vérifiez auprès de la personne responsable de la protection des renseignements personnels avant d’en recueillir. Vérifiez aussi la licence du modèle de base, parce qu’elle suit votre adaptateur. Les extraits générés ici restent sur votre disque et ne sont pas publiés comme jeu de données.

Téléchargez le code de cette série (zip), avec tous les scripts et les résultats enregistrés.

Sources

  1. Denoising Diffusion Probabilistic Models — arXiv (Jonathan Ho, Ajay Jain, Pieter Abbeel; UC Berkeley), 19 juin 2020
  2. Speech Commands: A Dataset for Limited-Vocabulary Speech Recognition — arXiv, 9 avril 2018
  3. Robust Speech Recognition via Large-Scale Weak Supervision — OpenAI, 21 septembre 2022

Tiré du Guide de l’intelligence artificielle, par Robert Scales, publié par Holistic Hybrid inc. Partage et adaptation permis selon la licence CC BY-NC-SA 4.0 : citez le guide, mettez un lien vers https://guidetoartificialintelligence.com/fr/apprendre/entrainer-style-image-reconnaissance-parole/, pas d’usage commercial sans permission, et gardez la même licence.

Recevez gratuitement le Guide de l’intelligence artificielle

Abonnez-vous à l’infolettre et recevez le guide gratuit : ce qui a changé en IA, une leçon, un prompt à essayer. Désabonnement en un clic.

Ce que nous faisons de votre adresse

Retour en haut

Affichage

Vos choix sont enregistrés dans ce navigateur seulement. Aucune donnée n’est transmise.

Taille du texte
100 %
Couleurs
Lecture
Autres réglages
Déclaration d’accessibilité

Obtenir l’appli

Ajoutez le guide à votre écran d’accueil. Il s’ouvre comme une application, et les pages déjà lues restent disponibles hors ligne.

Lire sans connexion : télécharger les articles

iPhone et iPad (Safari, Chrome, Edge)

  1. Touchez le bouton Partager (le carré avec une flèche). Dans Chrome et Edge, il est dans la barre d’adresse ou le menu.
  2. Choisissez « Sur l’écran d’accueil ».
  3. Touchez « Ajouter ».

Android (Chrome, Edge, Samsung Internet, Firefox)

  1. Ouvrez le menu du navigateur (⋮ ou ☰).
  2. Choisissez « Installer l’application » ou « Ajouter à l’écran d’accueil ».
  3. Confirmez avec « Installer ».

Ordinateur (Chrome, Edge)

  1. Cliquez sur l’icône d’installation au bout de la barre d’adresse, ou ouvrez le menu du navigateur (⋮ ou …).
  2. Dans Chrome, choisissez « Caster, enregistrer et partager », puis « Installer la page en tant qu’application ». Dans Edge, choisissez « Applications », puis « Installer ce site en tant qu’application ».
  3. Cliquez sur « Installer ».

Mac (Safari)

  1. Ouvrez le menu Fichier.
  2. Choisissez « Ajouter au Dock ».
  3. Cliquez sur « Ajouter ».

Firefox sur ordinateur ne peut pas installer un site comme application. Utilisez plutôt Chrome, Edge ou Safari.