Vision d'ordinateur avec un Deep Learning et OpenCV : Apprenez à détecter les sourires | Yacine Rouizi | Skillshare

Vitesse de lecture


1.0x


  • 0.5x
  • 0.75x
  • 1 x (normale)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Vision d'ordinateur avec un Deep Learning et OpenCV : Apprenez à détecter les sourires

teacher avatar Yacine Rouizi

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Leçons de ce cours

    • 1.

      Introduction

      1:53

    • 2.

      Installation

      1:33

    • 3.

      Chargement des données

      17:15

    • 4.

      Formation du détecteur de sourire

      14:41

    • 5.

      L'application de notre détecteur de sourire sur des images

      12:58

    • 6.

      L'application de notre détecteur de sourire sur des vidéos

      4:56

    • 7.

      Conclusion

      1:37

  • --
  • Niveau débutant
  • Niveau intermédiaire
  • Niveau avancé
  • Tous niveaux

Généré par la communauté

Le niveau est déterminé par l'opinion majoritaire des apprenants qui ont évalué ce cours. La recommandation de l'enseignant est affichée jusqu'à ce qu'au moins 5 réponses d'apprenants soient collectées.

89

apprenants

--

projet

À propos de ce cours

Dans ce cours, nous allons créer une application de bout en bout qui peut détecter les sourires dans des images et des vidéos.

Pour cela, nous allons utiliser l'apprentissage en profondeur et commencer par former un réseau de neurones convolutionnels sur l'ensemble de données SMILES qui contient des visages de personnes souriantes et ne souriant pas. Une fois le réseau formé, nous passerons par les étapes suivantes pour détecter les sourires dans les images et les vidéos :

  1. Nous allons utiliser des cascades Haar pour détecter un visage dans une image.
  2. Nous allons ensuite extraire la région du visage de l'image.
  3. Ensuite, nous allons passer la région de visage au réseau pour être classifié.
  4. Enfin, nous allons annoter l'image avec l'étiquette "souriant" ou "ne pas sourire" en fonction de la sortie du réseau.

Ce cours a été conçu pour les programmeurs Python intermédiaires qui connaissent une certaine connaissance avec l'apprentissage en profondeur et la vision informatique.

À la fin de ce cours, vous aurez une application de détection de sourire entièrement fonctionnelle que vous pouvez utiliser dans vos propres projets.

Rencontrez votre enseignant·e

Teacher Profile Image

Yacine Rouizi

Enseignant·e

Hi! My name is Yacine Rouizi. I have a Master's level in physics of materials and components and I am a passionate self-taught programmer. I've been programming since 2019 and I teach on my blog about programming, machine learning, and computer vision.

My goal is to make learning accessible to everyone and simplify complex topics, such as computer vision and deep learning, by following a hands-on approach.

Voir le profil complet

Level: Intermediate

Notes attribuées au cours

Les attentes sont-elles satisfaites ?
    Dépassées !
  • 0%
  • Oui
  • 0%
  • En partie
  • 0%
  • Pas vraiment
  • 0%

Pourquoi s'inscrire à Skillshare ?

Suivez des cours Skillshare Original primés

Chaque cours comprend de courtes leçons et des travaux pratiques

Votre abonnement soutient les enseignants Skillshare

Apprenez, où que vous soyez

Suivez des cours où que vous soyez avec l'application Skillshare. Suivez-les en streaming ou téléchargez-les pour les regarder dans l'avion, dans le métro ou tout autre endroit où vous aimez apprendre.

Transcription

1. Introduction: Bienvenue dans le cours de détection des risques avec le deep learning, où nous créerons une application de bout en bout capable détecter les mines dans les images et les vidéos. Je m'appelle l'arsine et je serai votre instructeur dans ce cours. Je fais de la programmation depuis 2019. Et je suis l'auteur du blog, don't repeat yourself.org, où j'ai plus de 5 000 développeurs chaque mois pour en savoir plus sur Python, l'apprentissage automatique et la vision par ordinateur. La classification des images est une tâche très courante en vision artificielle. Il s'agit d'une tâche où vous avez un ensemble d'images et l'unité pour les classer dans un ensemble de catégories. Dans ce cours, plus précisément, nous allons classer les images en deux catégories. Sourire et hocher la tête, sourire. Que nous utiliserons le deep learning et commencerons par entraîner un réseau neuronal convolutif sur ce jeu de données moins, qui contient des visages de personnes souriantes et non souriantes. Une fois le réseau sec, nous allons suivre les étapes suivantes pour détecter les sourires dans les images et les vidéos. Nous utiliserons les cascades dures pour détecter un visage, une image. Nous allons ensuite extraire la région du visage de l'image. Ensuite, nous passerons la région de taille au réseau pour classification. Enfin, nous allons annoter l'image avec l' étiquette sourire ou ne pas sourire, en fonction de la sortie du réseau. Si cela semble excitant, entrons en classe et commençons à créer notre application de détection des odeurs. 2. Installation: Dans cette première vidéo, nous allons voir comment installer les packages requis pour ce projet. Vous pouvez prendre le fichier requirements.txt à partir du code source et installer ce qu'il contient. Ou si vous me suivez, vous pouvez créer un nouveau fichier dans le répertoire du projet. Nous allons l'appeler dxdy de requirement et y insérer les bibliothèques nécessaires pour ce projet. Nous avons donc besoin de num pi. Nous avons étudié comment les cyclistes apprennent OpenCV. Nous avons également besoin de caillots de boue. Ensuite, nous avons besoin, maintenant nous enregistrons le fichier. Et la terminologie que nous avons apprise part du texte ponctuel sur les exigences en matière d'alimentation. Dans mon cas, les packages sont déjà installés. Nous pouvons donc voir ici que les exigences satisfont déjà à toutes ces bibliothèques. Mais dans votre cas, vous verrez que les packages sont en cours d'installation. Et cela peut prendre un certain temps pour les installer tous. 3. Charger les données: Dans cette vidéo, nous allons charger ces souris. Le jeu de données souris contient plus de 13 000 images en niveaux de gris de 64 x 64 pixels en crise. sourient, mais ils ne sourient pas. Pour les visages non souriants, nous avons plus de 9 000 images. Et pour les visages souriants, nous avons 3 690 images. Le doctype set est donc déséquilibré, ce qui signifie qu'il y a une distribution uniforme des images. Une technique courante pour traiter un ensemble de données déséquilibré consiste à appliquer une attente de classe. Nous verrons comment procéder lorsque nous construirons notre modèle. Nous allons donc d'abord télécharger le jeu de données. Vous pouvez accéder à cette URL pour la télécharger. Nous allons donc cliquer sur le bouton Enregistrer et nous le téléchargerons au format zip. Une fois le fichier téléchargé, nous le décompressons. Nous supprimons ce fichier. Et notre ensemble de données est contenu dans ce dossier Formula You Smiles. Nous avons donc ici deux sous-dossiers, positifs et négatifs. Celui-ci contient des images de visages souriants, comme vous pouvez le voir ici. Et le contenu du dossier des négatifs, des images de non-sourire. Comme vous pouvez le voir, les images sont en gris et font un peu plus de 64 par 64. Normalement, nous pouvons entraîner notre modèle avec un problème de conduit. Cela ne devrait pas consommer beaucoup de ressources. N'oubliez pas de copier le dossier dans le répertoire du projet. Nous sommes maintenant prêts à charger notre jeu de données à partir de ce fichier. Commençons donc par importer les packages nécessaires. Nous allons d'abord créer un nouveau fichier Python, training point p-y. Nous allons commencer par importer la fonction de division de test de train de scikit-learn got wandering selection. Aujourd'hui, avec cette division, nous allons l'utiliser pour diviser notre ensemble de données en jeu d'entraînement, jeu de validation et jeu de test. Ensuite, nous avons la fonction de tableau d'images. Donc, aucune impulsion dans mon image ou image à matrice. Et puis nous avons à partir de TensorFlow keras dot load in range, que nous utiliserons pour charger une image à partir de cela. Ensuite, nous avons le modèle séquentiel. Donc, à partir de servir Flow Keras, Sequential. Ensuite, nous avons besoin d'avocats. Nous aurons donc TensorFlow. Keras, les couches viennent à l"année. Ensuite, nous avons la piscine des moines, puis nous avons la couche aplatie, et enfin la couche dense. Nous avons également besoin du module pyplot, numpy et du package OS. Importons-les également. Nous sommes maintenant prêts à charger notre jeu de données. Créons donc une fonction appelée parties d'image, qui amènera le bot au jeu de données en tant qu'argument. Elle renverra la liste des chemins d'accès aux images du jeu de données. Nous pouvons donc d'abord créer une liste d'extensions valides. Nous allons donc dire que les formats valides sont égaux à. Gpg inclura P et G. Nous allons donc utiliser cette liste pour vérifier si l'extension de fichier est une image. Ensuite, créons une liste vide appelée parties d'image. Est égal à une liste vide, qui contiendra, contiendra les parties des images dans le jeu de données. Ensuite, nous allons regarder l'arborescence du répertoire racine. Disons que les noms de vos modules apparaissent sur le mur. Et ici, le chemin est le chemin d'accès au répertoire courant dans l'arborescence. Et leurs noms sont ceux des sous-répertoires du répertoire courant dans les trois, et les cinq noms sont les fichiers du répertoire courant. Commençons donc par l'impression. Voici mon Harris et nous verrons ce que je vais dire ici. Vous avez beaucoup de plantes. Nous partons tout droit de cet axone léger. Nous allons lancer notre script. La sortie ici est donc tous les sous-répertoires du répertoire smiles. Comme vous pouvez le voir, nous avons les négatifs, les positifs, qui sont ici, puis les négatifs sept, positifs, sept, qui sont ici. Et voilà. Nous allons maintenant faire une boucle sur l'iris final. Nous allons donc écrire pour le nom dans les noms. Imprimons également le tube et la dernière partie pour voir ce qui se passe. Nous pouvons donc écrire que vous êtes sur votre propre script couleur. Donc, comme vous pouvez le voir, nous avons ce pot répertoire puis ce grain fin. Et puis cette couche a acheté ce nom de fichier, qui est une image, et ainsi de suite. Ce que nous pouvons faire maintenant est d'extraire l'extension du fichier, qui est soit This, this, et de la comparer à notre, à cette liste pour vérifier si le nom du fichier est une image. Nous allons donc écrire ici extension. Vous voulez scinder du texte. Nous fournissons un beau nom. Noé. Ensuite, nous écrirons que notre extension est dans la liste des formats valides. Nous allons construire le chemin complet vers notre image. Nous allons donc dire que la partie de l'image est égale à la jointure point, point, point du système d'exploitation. Et ici, nous allons rejoindre la partie annuaire, qui est celle-ci. Nous définissons ici le nom de la partie. Avec le financement de cette image particulière. Le nom complet de l' image sera celui-ci. Et nous devons également ajouter notre image deux, notre liste. Nous en avons terminé avec cette fonction. Juste des parties d'image écrites. Maintenant, avec cette fonction, nous avons le chemin complet de chaque image du jeu de données stocké dans une liste. L'étape suivante consiste donc à utiliser ces parties d'image et à charger le jeu de données le plus intelligent. Nous pouvons donc dire que nous allons créer une nouvelle fonction. Nommez-le cellule de pesée. Et ici, nous allons fournir deux arguments. Le premier correspond aux parties de l'image et le second à la taille cible des images. Nous allons le définir ici. Supposons que la taille de l'image soit égale à 3232. Chemins d'image corporelle de l'image Nous pouvons maintenant créer deux listes vides. Tout d'abord, nous la nommerons la ville, qui contiendra les images. Ensuite, nous l'avons lu. Il en va de même pour les étiquettes nommées, qui contiendra l'étiquette pour chaque image souriante ou non souriante. Ensuite, nous allons commencer par récupérer les images. Nous pouvons donc faire une boucle sur les parties de l'image. Nous dirons pour les modules de partie image. Ici nous allons écrire image is equal to, nous allons charger notre image en utilisant la fonction load image. Ici, le premier argument est le chemin qui mène à notre image. Et puis nous avons le mode couleur, qui est en niveaux de gris. Et puis le dernier argument est la taille cible, que nous pouvons utiliser notre taille cible. Ensuite, nous devons convertir notre image en tableau NumPy. Nous allons simplement écrire l'image deux. Enfin, nous ajoutons notre image aux données. Nous en avons donc terminé avec les images. Nous pouvons maintenant obtenir les étiquettes. Maintenant, pour obtenir l'étiquette, nous pouvons l' extraire de l'image. Mais par exemple, nous allons imprimer ici les parties de l'image. Et nous dirons : « Voyez ce que nous obtenons. Les données. Fournissez une boîte d'image. Comme vous pouvez le voir, nous avons le bot de chaque image de notre jeu de données. Par exemple, voici le chemin complet vers cette image en particulier. Donc, si nous prenons la partie complète, nous pouvons extraire l' étiquette de cette partie, qui est ici positive. Donc pour cette image en particulier, la personne sourit. Nous avons un visage souriant sur cette image. Donc pour obtenir le label, nous trouverons ici cette ligne. Et nous allons écrire label est égal à image bond et former l'image, mais nous allons la diviser en fonction du séparateur de répertoire, qui est ce séparateur ici. Et nous allons prendre le troisième à partir de la fin. C'est donc le premier, moins un, moins deux et moins trois. Donc, ici, nous allons obtenir l'étiquette est égale à deux points positifs. Maintenant, nous allons dire que si notre étiquette est égale à deux positifs, nous allons l'encoder comme un seul. Nous allons donc en écrire un. Si num est égal à positif, sinon nous encoderons qu'il a 0. Enfin, nous ajoutons notre étiquette à notre liste. La dernière étape consiste simplement à renvoyer les données, la liste et la liste. Nous nous assurons de les convertir en tableau NumPy. Nous allons dire return num pi point, réécrire les étiquettes top et non pi dot. Nous entendons également la nécessité de mettre à l'échelle les données à l'échelle de 0,1 en les divisant par 255. Ici, nous pouvons obtenir nos tableaux de données à l'aide de notre fonction. 4. Former le détecteur de sourire: Dans cette partie, nous allons construire notre modèle et commencer la formation. Le modèle que nous allons construire consiste en un relâchement vers la courbe vers le signe plus qui apparaît à travers les blogs, suivi d'une couche entièrement connectée. Comme vous pouvez le voir sur cette image, nous aurons cette couche mince que la mise en commun maximale de la couche. Et puis la même chose ici, les couches de regroupement C plus max. Et puis nous aurons le bloc entièrement connecté, qui consiste en une couche aplatie, puis une couche dense et autre couche qui attendra vers l'extérieur comme. Créons donc une fonction. Nous allons lui donner le nom de modèle. Et cela prendra la bonne forme d'un argument, qui sera égal à la science moyenne. Gloss one pour une dimension de canal. Mais nous n'aurions pas besoin de changer. Dans cette rubrique. Nous utiliserons ces modèles d' équations pour pouvoir écrire marmonner, vouloir séquentiel. Nous aurons tous les filtres qui prendront le sale boulot. Le gouverneur signe. Voyons voir, taille trois par trois. Pour l'activation de la fonction d'observation. Ou les croisades. Même forme. Nous utiliserons l'alarme, mise en commun maximale des vacances, que nous utiliserons concis pour mon travail. Et puis la même chose ici de la couche de perte de fluide des filtres. Nous allons doubler le nombre de filtres. Et puis la couche aplatie. Avec 256. Tu es honnête. Et pour l'activation de la couche de sortie. Nous l'avons fait. Puisque nous avons affaire à un problème de classification binaire, nous utiliserons la fonction d'activation sigmoïde et vous enverrons tous. Vous êtes donc du genre à recevoir le signal d'activation. Compilons également notre modèle. Nous allons donc modéliser point compiler la fonction de perte. Bien entendu, nous allons prendre la croix binaire sur copie. L'optimum est 0. Disons que l' optimiseur ou les métriques. Prends vraiment le Parker Awesome. Ensuite, nous devons calculer les poids des classes. Comme je l'ai déjà dit, notre ensemble de données est déséquilibré. Nous devons donc donner plus de poids au verre sous-représenté. Sourire plus, dans ce cas, pour que le modèle accorde plus d'attention à ce verre. Nous pouvons commencer par contenir le numéro de chaque étiquette en utilisant la fonction numpy point unique. Nous dirons donc, j'ai oublié de retourner le modèle. Donc, en retour, le modèle, et nous dirons que le nombre d'étiquettes est l'appel à non pi. Ce qui se passe sur la tête, nous serons avec nos étiquettes et nous dirons « retournez, c'est vrai ». Les colonnes de retour sont égales à afficher, pour renvoyer le numéro de chaque étiquette. Imprimons-les. Nous dirons que nous n'aurons pas problème avec les produits. Nous l'avons fait. Allez ici, puisque nous n'avons pas à étiqueter, toutes les étiquettes sont définies sur 0. Maintenant, nous en sommes à notre script. Ici. Comme vous pouvez le voir, nous avons formé un 01 étiqueté, qui sourit ou ne sourit pas. Et pour la variable count, nous avons 9 475. Dépliez cette couche de doublure. Nous en avons 3 690. Nous devons donc maintenant calculer les poids des classes. Pour ça. Nous pouvons utiliser une opération plus simple. Nous pouvons donc écrire ici compte. Les nouveaux comptes seront égaux au nombre maximum, qui est ici, et nous le divisons par les comptes précédents. Déplaçons à nouveau ces deux variables. Donc ici, comme vous pouvez le voir, le plus un est MyInt plus aura les poids à 0,56 supérieurs au plus 0. Créons un dictionnaire qui associera chaque classe à son poids. Nous pouvons donc écrire plus le poids est égal. Nous allons utiliser la fonction zip. Donc le dictionnaire. Nous devons maintenant créer un ensemble d'entraînement, un jeu de validation et un ensemble de tests. Nous prélèverons 20 % des données pour prier cet ensemble. Et sur les 80 % restants, nous prélèverons 20 % pour créer le jeu de validation. Commençons donc par le jeu de test. nous utiliserons la fonction de répartition des essais de train. Donc nous, nous avons aimé essayer de essayer de fournir notre journée. Et puis suivi de cette taille prendra 20 pour cent. Dites, commencez la chute. Ils suivent leur propre démonstration. Ou à faire. Même chose pour le jeu de validation. Nous avons juste copié-collé. Souche. Égoutter lentement. Nous fournissons. Bon. Nous sommes maintenant prêts à entraîner nos modèles. Nous allons donc d'abord construire le modèle en écrivant. Le modèle est égal au module. Et nous allons entraîner le modèle pour la 20e boîte. La boîte est donc égale à un. L'historien de l'art est le quantile dirait que c'est la merveille pourquoi aujourd'hui. Le jeu de validation des données de validation. Et nous devons utiliser le poids plus pour la taille du lot. Dis 64. Dépliez la boîte, une boîte. Nous allons également enregistrer le modèle pour plus tard. Donc, nous pouvons simplement écrire un ne dit pas et nous le nommerons, nuira à un gloss. Attend et attend le fichier de départ. Nous utilisons celui d'aujourd'hui. Alors bienvenue. entraînement ne devrait pas prendre trop de temps. Vous pouvez donc attendre la fin de l' entraînement. Donc, comme vous pouvez voir ce que nos gymnases et hors d'environ 90 pour cent. Mais tracons les courbes d'apprentissage pour visualiser nos résultats. Je vais donc simplement copier le code à partir d'ici. n'y a rien de spécial. Ici. Nous ne faisons que tracer la précision de l'entraînement, la précision de la validation. Ensuite, nous avons la perte d'entraînement et la validation. Réexécutons donc le script. Nous avons donc ici la perte d'entraînement, et ici nous avons la précision de validation de l'entraînement d'environ 1, 2 %. Ce que vous pouvez remarquer que la précision de la formation et de la validation approximativement ici, puis commencent à diverger. C'est donc un signe de sur-équipement. Nous pouvons améliorer la précision de notre modèle en utilisant l'augmentation des données. Mais je ne parlerai pas de cela dans ce cours. Nous allons donc évaluer notre modèle dans le jeu de tests. Et nous pouvons appliquer notre modèle à un résumé ou à quelles images. Donc, cette perte de précision. Il existe un diagramme quantile impliquant l'utilisation de l'ensemble de tests. Ici, nous avons récemment lors de l' opérateur de perte , Awesome. Donc, nous avons une herbe, c'est approximativement une personne. 5. Appliquer notre détecteur de sourire aux images: Maintenant que notre modèle est formé, nous allons l'appliquer à certaines images du monde réel. Créons donc un nouveau fichier Python. Nous l'appellerons sourire, image du détecteur, PY. Et nous pouvons commencer à écrire du code. Nous allons donc importer souvent disons v. Ensuite, nous avons de ces modèles. Fonction de charge. Besoin également. Ensuite, définissons quelques variables. Nous créditons donc que la largeur est égale à 800. Supposons que la hauteur soit égale à 600. Nous créons également la couleur bleue, elle est donc égale à 5500. Maintenant, nous pouvons charger notre image. Voici donc un dossier avec quelques images. Je vais juste le copier à partir d'ici. J'ai dix images. Nous allons prendre le premier, nos modèles. Nous allons donc aimer que l'image soit égale à CV trop haut un marin. Des images. Nous prenons le premier pressentiment. Vous devez également le redimensionner. Nous allons donc aimer l'outil TV, redimensionner l'image et utiliser la largeur et la hauteur. Et enfin, nous avons converti en très stupide pour ne pas convertir le CV des cheveux pour lire que vous devez gris. Ensuite, nous pouvons commencer à détecter les visages à l'aide du classificateur en cascade Haar. J'ai donc défini ici notre XML par défaut en cascade, face frontale. Je vais donc simplement le mettre ici, le répertoire du projet, et nous pouvons le charger en utilisant la fonction CV pour adopter le classificateur en cascade. Nous allons donc écrire que notre détecteur de visage est égal à CV vers classificateur en cascade. Et ici, nous fournissons le nom de nous devons également charger notre modèle. Nous allons donc dire plus que ce qui est égal au modèle. Nous avons ici le nom de notre modèle qui est plus que. Nous pouvons maintenant détecter des visages à l'aide de la fonction de détection multi-échelle. Comme ces rectangles sont égaux à notre détecteur de visage. Pour le premier argument, nous fournissons notre image en niveaux de gris, puis nous avons la fausse voiture à l'échelle. Nous allons le mettre en tant que 1.1. Ensuite, nous devons définir les voisins minimaux, que nous pouvons définir comme tels. Ces paramètres fonctionnent. Eh bien, dans mon cas, mais tu peux les changer si tu veux. Ici, la variable des rectangles de face contiendra les cadres de délimitation des faces. L'étape suivante consiste donc à faire une boucle sur les cadres de délimitation des faces et à extraire la région de la face. Nous allons dire pour x, y, largeur et hauteur. Dans notre cas. Ici, nous allons d'abord faire un rectangle autour du visage. Nous aimons donc TV2.com. Ici. Nous connaissons notre image. Et nous allons donner aux comptes MSDN, qui sont x et y. Ensuite, nous avons deux fissures diagonales différentes , qui seraient x plus y plus. Et puis nous avons la couleur bleue et deux pour l'épaisseur. Et la semaine suivante, commencez la région du visage à partir de l'image en niveaux de gris. Nous avons les coordonnées du visage ici. Nous allons donc écrire à notre héros pourquoi ? L'appel à Ray. Et nous utiliserons simplement le tranchage. Nous allons donc passer de y à y plus x. X plus la largeur. Nous devons également redimensionner la région du visage et la mettre à l'échelle à 01 branche avant de l'alimenter dans notre modèle. Nous allons donc mentir ou y est égal à CV pour ancrer la taille. Ici, nous allons apprendre à le dimensionner à 32 par 32 car c'est ce que nous utilisons pour entraîner notre modèle. Ici, pour la taille de l'image, nous avons 32 par 32. Ensuite, on le met à l'échelle à 01, branche 2, 55. Nous devons également ajouter l'image à un lot. Nous le ferons, car ici la forme de l'image de Trente-deux. Trente-deux. Notre modèle a été formé sur des lots d'images. La nouvelle forme sera donc égale à T2, T2 par T2. Nous allons donc écrire y est égal à y. Et nous utiliserons la fonction point non-piped, nouvel accès à ce nouvel axe, l'axe y. Et nous garderons tout pareil ici. Vous pouvez imprimer ici l'avant et après votre accès pour voir ce qui a changé ici. La forme. C'est la même chose ici. Ici, nous avons une erreur d' attribut ou deux. Aux États-Unis, c'est une lettre majuscule. Ici. Comme vous pouvez le voir, avant d'ajouter le nouvel axe est 32 par 32. Et après avoir ajouté l'axe u ici, Econ132 par 32. Donc maintenant, la dernière étape consiste à passer la région du visage pour ne pas fonctionner. Pour le classement. Nous ne les supprimons jamais. Nous allons écrire quelle prédiction est égale à la flèche de prédiction et imprimons le dictionnaire. Donc, normalement, la prédiction aura une valeur comprise entre 01. Ici. Vous pouvez voir ici la valeur de la prédiction pour cette image particulière. La prévision est de 0,6. Donc, ce que nous pouvons faire en ce moment, c'est que notre étiquette est égale à, disons, si la prédiction est supérieure ou égale à 0,5, nous allons créer l'étiquette sur, nous allons définir l'étiquette sur sourire. Sinon, nous le réglerons pour ne pas sourire. Nous allons donc étiqueter est égal à sourire. Si la prédiction est supérieure ou égale à 0,5, sinon, ne pas sourire. C'est mis dans la nuit. Pour vérifier ce cas, l'étiquette devrait passer votre temps à sourire pour la journée. Mais la dernière chose à faire est écrire le texte et l' image et d'afficher l'image. Comme un CV. Pour mettre le x. Ici, nous allons mettre du texte dessus. Et nous aimerions faire l' étiquetage et l'image. Pour le texte des coordonnées, nous utiliserons les coordonnées du visage. Nous allons donc dire x plus x et y. Et pour la police, vous pouvez choisir ceci est, disons celui-ci. Et pour l'échelle de police, disons 0,75, couleur bleue. Façons de voir et CB2. Je suis sûr que nous conservons notre chronique. La personne ne sourit pas, mais notre modèle l'a détecté lors de l'exploitation minière. Bien entendu, notre modèle n' est pas précis à 100 %, il s'agit donc d'une prédiction positive. Essayons avec une autre image. Disons celui-ci. Cette fois-ci. Je suis Armando qui a prédit avec succès la glissade. Nous pouvons essayer la personne telle qu'elle est, sans sourire. Nous ne prendrions donc celui-ci qui peut également tester avec les autres images. Et ça, c'est avec l'image. La personne ne sourit pas. Et notre modèle a été détecté avec succès. 6. Appliquer notre détecteur de sourire à des vidéos: Maintenant que vous savez comment détecter les images de sourire, disons comment appliquer deux vidéos de notre détecteur de sourire Deep Learning. Créons donc un nouveau fichier Python. Appelez-le détecteur de sourire, PY. Et importons les bibliothèques pour que le code ne change pas grand-chose. Je vais simplement copier cette amende pour la coller ici. Ensuite, nous avons la largeur et la hauteur. Quand la couleur bleue. Ici, il suffit d'initialiser les objets de capture vidéo. Nous voudrions donc renouveler votre tasse. Bien sûr, c'est égal à la capture de CV en vidéo. Nous indiquons ici le nom de notre vidéo. J'ai ici une vidéo pré-enregistrée de moi dans laquelle j'ai fait quelques tests. Je vais donc l'utiliser pour cette partie de la vidéo ici. J'ai fait quelques tests et j'ai souri et beaucoup d'argent. Nous allons donc mettre ici le nom de la vidéo mp4. Et puis nous avons la même chose. À partir de cette partie. Nous aurons besoin d'un détecteur de visage, notre merveille pré-entraînée, et nous allons détecter des visages, perdant la fonction de détection multi-échelle. Nous allons donc simplement copier ces trois lignes ici. Voici donc notre dictionnaire. Nous lisons les cadres dans le navigateur afin de pouvoir commencer à traiter nos cadres. On peut dire pourquoi c'est vrai. Ensuite, nous allons récupérer l'image suivante de la vidéo. Donc quand on dit frame en fonction de la capture vidéo. Ensuite, nous allons le convertir en différentes courbes, CV en CV, CV en BGR. Et ici, nous pouvons utiliser la fonction multi-échelle The digs et nous la passons le long du cadre en niveaux de gris. Nous pouvons maintenant faire une boucle sur les boîtes de délimitation des faces. Je vais donc simplement copier le code d' ici parce que tout reste le même ici. Il suffit de changer ici l'image, le cadre. Trouve une nouvelle façon. Vous écrivez le texte de la même façon, et nous affichons notre cadre. Il suffit donc de copier le code à partir d'ici. Comment regarder le CV ici dans l'en-tête, nous ne dirions pas que votre CV regarde, attendez, attendez une minute. Le courant est donc égal à q. D'accord ? On s'évade. Enfin, nous avons sorti la capture vidéo et les fenêtres. Voyons le résultat final. Nous allons dire Python, trois, lecture du détecteur de sourire. Donc, ici, vous pouvez voir que l' algorithme n'a aucun problème détecter les sourires et les sourires de la vidéo. La détection est assez stable. 7. Conclusion: Dans ce cours, vous apprendrez comment entraîner un réseau neuronal convolutif pour détecter le sourire dans les images et les vidéos. La première chose que nous devons faire est de charger notre jeu de données à partir du disque et de le préparer pour notre réseau. Ensuite, nous avons créé notre réseau de neurones. Ici, nous avons calculé le poids de la classe pour tenir compte du déséquilibre de classe dans l'ensemble de données. Et obligent ainsi le modèle à accorder plus d'attention à la classe sous-représentée. Dans cette partie, nous avons scindé un jeu de données en un ensemble de formation, jeu de validation et un ensemble de tests, puis nous procédons à l' entraînement de notre réseau. Nous avons constaté que nous avions atteint une précision de 90 % sur l'ensemble de test. La dernière étape a été de tester notre modèle en images et en vidéos. Pour cela, nous utilisons un classificateur en cascade Haar ici dans cette partie pour détecter le visage dans l'image. Ensuite, nous avons extrait dans cette partie région du visage de l'image et nous avons lié la région du visage pour la prédiction à notre modèle. Enfin, nous avons étiqueté l'image comme souriant ou ne souriant pas.