1. Introduction
ML Kit est un SDK pour mobile qui permet d'appliquer l'expertise de Google en machine learning aux applications Android et iOS dans un package à la fois puissant et simple d'utilisation. Que vous débutiez ou que vous ayez de l'expérience en machine learning, vous pouvez facilement implémenter la fonctionnalité dont vous avez besoin en quelques lignes de code. Il n'est pas nécessaire d'avoir une connaissance approfondie des réseaux de neurones ou de l'optimisation de modèles pour vous lancer.
Comment ça marche ?
ML Kit permet d'appliquer facilement des techniques de ML dans vos applications en rassemblant dans un seul SDK les technologies de ML de Google, telles que Mobile Vision et TensorFlow Lite. Que vous ayez besoin de la puissance des fonctionnalités en temps réel des modèles sur l'appareil de Mobile Vision ou de la flexibilité des modèles personnalisés de classification d'images TensorFlow Lite, ML Kit vous permet de le faire avec seulement quelques lignes de code.
Cet atelier de programmation vous explique comment créer votre propre application iOS capable de détecter automatiquement le texte et les caractéristiques faciales d'une image.
Objectif de cet atelier
Dans cet atelier de programmation, vous allez créer une application iOS avec ML Kit. Cette application pourra :
|
Points abordés
- Comment utiliser le SDK ML Kit pour ajouter facilement des fonctionnalités de machine learning avancées telles que la reconnaissance de texte et la détection des fonctionnalités faciales à n'importe quelle application iOS
Prérequis
- Une version récente de Xcode (v12.4+)
- Simulateur iOS ou appareil iOS physique exécutant iOS 10.0 ou une version ultérieure
- ML Kit n'est compatible qu'avec ces deux architectures 64 bits:
x86_64
etarm64
. - L'exemple de code
- Connaissances de base du développement iOS avec Swift
- Connaissances de base sur les modèles de machine learning
Cet atelier de programmation est consacré à ML Kit. Les concepts et les blocs de codes non pertinents ne sont pas abordés, et vous sont fournis afin que vous puissiez simplement les copier et les coller.
2. Configuration
Télécharger le code
Cliquez sur le lien ci-dessous pour télécharger l'ensemble du code de cet atelier de programmation :
Décompressez le fichier ZIP téléchargé. Un dossier racine (mlkit-ios-codelab
) contenant toutes les ressources dont vous aurez besoin sera créé. Pour cet atelier de programmation, vous n'aurez besoin que des ressources du sous-répertoire vision
.
Le sous-répertoire vision
du dépôt mlkit-ios-codelab
contient deux répertoires:
- starter : code de démarrage sur lequel s'appuie cet atelier de programmation.
- final : code final de l'application exemple terminée.
Ajouter les dépendances de ML Kit avec CocoaPods
CocoaPods permet d'ajouter les dépendances de ML Kit à votre application. Si CocoaPods n'est pas installé sur votre machine, vous trouverez ses instructions d'installation sur cette page. Une fois l'installation effectuée, ouvrez Podfile dans l'éditeur de votre choix et ajoutez ML Kit en tant que dépendances:
Fichier de pod
platform :ios, '10.0'
use_frameworks!
pod 'GoogleMLKit/FaceDetection'
pod 'GoogleMLKit/TextRecognition'
target 'MLKit-codelab' do
end
Installer les pods Cocoa ML Kit
Pour vous assurer que toutes les dépendances sont disponibles pour votre application, vous devez utiliser la ligne de commande pour installer les pods Cocoa de ML Kit.
Ligne de commande
# Make sure you are in the root of your app
pod install
xed .
3. Exécuter l'application de démarrage
Vous êtes maintenant prêt à exécuter l'application pour la première fois. Cliquez sur Run (Exécuter) dans Xcode pour compiler l'application et l'exécuter sur le simulateur iOS.
L'application devrait se lancer sur votre simulateur. À ce stade, vous devriez voir une mise en page de base avec un sélecteur qui vous permet de choisir entre deux images. Dans la section suivante, vous allez ajouter la reconnaissance de texte à votre application pour identifier le texte dans les images.
4. Ajouter la reconnaissance de texte sur l'appareil
Au cours de cette étape, nous allons ajouter une fonctionnalité à votre application pour reconnaître le texte dans les images.
Importer le module MLVision
Vérifiez que les importations suivantes dans votre classe ViewController
existent.
ViewController.swift
import MLKit
Créer un VisionTextRecognizer
Ajoutez les propriétés différées suivantes à votre classe ViewController
.
ViewController.swift
private lazy var textRecognizer = TextRecognizer.textRecognizer()
Configurer et exécuter la reconnaissance de texte sur une image sur l'appareil
Ajoutez le code suivant à la méthode runTextRecognition
de la classe ViewController
:
ViewController.swift
func runTextRecognition(with image: UIImage) {
let visionImage = VisionImage(image: image)
textRecognizer.process(visionImage) { features, error in
self.processResult(from: features, error: error)
}
}
Le code ci-dessus configure le détecteur de reconnaissance de texte et appelle la fonction processResult(from:, error:)
avec la réponse.
Traiter la réponse de reconnaissance de texte
Ajoutez le code suivant à processResult
dans la classe ViewController
pour analyser les résultats et les afficher dans votre application.
ViewController.swift
func processResult(from text: Text?, error: Error?) {
removeDetectionAnnotations()
guard error == nil, let text = text else {
let errorString = error?.localizedDescription ?? Constants.detectionNoResultsMessage
print("Text recognizer failed with error: \(errorString)")
return
}
let transform = self.transformMatrix()
// Blocks.
for block in text.blocks {
drawFrame(block.frame, in: .purple, transform: transform)
// Lines.
for line in block.lines {
drawFrame(line.frame, in: .orange, transform: transform)
// Elements.
for element in line.elements {
drawFrame(element.frame, in: .green, transform: transform)
let transformedRect = element.frame.applying(transform)
let label = UILabel(frame: transformedRect)
label.text = element.text
label.adjustsFontSizeToFitWidth = true
self.annotationOverlayView.addSubview(label)
}
}
}
}
Exécuter l'application sur le simulateur
Dans Xcode, cliquez sur Run (Exécuter). Une fois l'application chargée, assurez-vous que Image 1
est sélectionné dans l'outil de sélection, puis cliquez sur le bouton Find Text
.
Votre application devrait maintenant ressembler à l'image ci-dessous, avec les résultats de la reconnaissance de texte et des cadres de délimitation en superposition sur l'image d'origine.
Photo: Kai Schreiber / Wikimedia Commons / CC BY-SA 2.0
Félicitations, vous venez d'ajouter la reconnaissance de texte sur l'appareil à votre application à l'aide de ML Kit. La reconnaissance de texte sur l'appareil est idéale dans de nombreux cas d'utilisation, car elle fonctionne même lorsque votre application n'est pas connectée à Internet. De plus, elle est suffisamment rapide pour être utilisée sur des images fixes et des images vidéo en direct.
5. Ajouter la détection du contour du visage sur l'appareil
Au cours de cette étape, nous allons ajouter à votre application une fonctionnalité permettant de détecter les contours des visages dans des images.
Créer un FaceDetector
Ajoutez les propriétés différées suivantes à votre classe ViewController
.
ViewController.swift
private lazy var faceDetectorOption: FaceDetectorOptions = {
let option = FaceDetectorOptions()
option.contourMode = .all
option.performanceMode = .fast
return option
}()
private lazy var faceDetector = FaceDetector.faceDetector(options: faceDetectorOption)
Configurer et exécuter la détection du contour du visage sur une image
Ajoutez le code suivant à la méthode runFaceContourDetection
de la classe ViewController
:
ViewController.swift
func runFaceContourDetection(with image: UIImage) {
let visionImage = VisionImage(image: image)
faceDetector.process(visionImage) { features, error in
self.processResult(from: features, error: error)
}
}
Le code ci-dessus configure le détecteur de reconnaissance de texte et appelle la fonction processResult(from:, error:)
avec la réponse.
Traiter la réponse du détecteur de visages
Ajoutez le code suivant à processResult
dans la classe ViewController
pour analyser les résultats et les afficher dans votre application.
ViewController.swift
func processResult(from faces: [Face]?, error: Error?) {
removeDetectionAnnotations()
guard let faces = faces else {
return
}
for feature in faces {
let transform = self.transformMatrix()
let transformedRect = feature.frame.applying(transform)
UIUtilities.addRectangle(
transformedRect,
to: self.annotationOverlayView,
color: UIColor.green
)
self.addContours(forFace: feature, transform: transform)
}
}
Enfin, ajoutez la méthode d'assistance addContours
dans la classe ViewController
pour dessiner les points de contour.
ViewController.swift
private func addContours(forFace face: Face, transform: CGAffineTransform) {
// Face
if let faceContour = face.contour(ofType: .face) {
for point in faceContour.points {
drawPoint(point, in: .blue, transform: transform)
}
}
// Eyebrows
if let topLeftEyebrowContour = face.contour(ofType: .leftEyebrowTop) {
for point in topLeftEyebrowContour.points {
drawPoint(point, in: .orange, transform: transform)
}
}
if let bottomLeftEyebrowContour = face.contour(ofType: .leftEyebrowBottom) {
for point in bottomLeftEyebrowContour.points {
drawPoint(point, in: .orange, transform: transform)
}
}
if let topRightEyebrowContour = face.contour(ofType: .rightEyebrowTop) {
for point in topRightEyebrowContour.points {
drawPoint(point, in: .orange, transform: transform)
}
}
if let bottomRightEyebrowContour = face.contour(ofType: .rightEyebrowBottom) {
for point in bottomRightEyebrowContour.points {
drawPoint(point, in: .orange, transform: transform)
}
}
// Eyes
if let leftEyeContour = face.contour(ofType: .leftEye) {
for point in leftEyeContour.points {
drawPoint(point, in: .cyan, transform: transform)
}
}
if let rightEyeContour = face.contour(ofType: .rightEye) {
for point in rightEyeContour.points {
drawPoint(point, in: .cyan, transform: transform)
}
}
// Lips
if let topUpperLipContour = face.contour(ofType: .upperLipTop) {
for point in topUpperLipContour.points {
drawPoint(point, in: .red, transform: transform)
}
}
if let bottomUpperLipContour = face.contour(ofType: .upperLipBottom) {
for point in bottomUpperLipContour.points {
drawPoint(point, in: .red, transform: transform)
}
}
if let topLowerLipContour = face.contour(ofType: .lowerLipTop) {
for point in topLowerLipContour.points {
drawPoint(point, in: .red, transform: transform)
}
}
if let bottomLowerLipContour = face.contour(ofType: .lowerLipBottom) {
for point in bottomLowerLipContour.points {
drawPoint(point, in: .red, transform: transform)
}
}
// Nose
if let noseBridgeContour = face.contour(ofType: .noseBridge) {
for point in noseBridgeContour.points {
drawPoint(point, in: .yellow, transform: transform)
}
}
if let noseBottomContour = face.contour(ofType: .noseBottom) {
for point in noseBottomContour.points {
drawPoint(point, in: .yellow, transform: transform)
}
}
}
Exécuter l'application sur le simulateur
Dans Xcode, cliquez sur Run (Exécuter). Une fois l'application chargée, assurez-vous que Image 2
est sélectionné dans l'outil de sélection, puis cliquez sur le bouton Find Face Contour
. Votre application devrait maintenant ressembler à l'image ci-dessous, montrant les contours du visage de Grace Hopper sous forme de points superposés sur l'image d'origine.
Félicitations ! Vous venez d'ajouter la détection des contours du visage à votre application à l'aide du ML Kit sur l'appareil. La détection des contours du visage sur l'appareil est idéale pour de nombreux cas d'utilisation, car elle fonctionne même lorsque votre application n'est pas connectée à Internet et qu'elle est suffisamment rapide pour être utilisée sur des images fixes et des séquences vidéo en direct.
6. Félicitations !
Vous avez utilisé ML Kit pour ajouter facilement des fonctionnalités de machine learning avancées à votre application.
Points abordés
- Ajouter ML Kit à votre application iOS
- Utiliser la reconnaissance de texte sur l'appareil dans ML Kit pour rechercher du texte dans des images
- Utiliser la reconnaissance faciale sur l'appareil dans ML Kit pour identifier les caractéristiques faciales sur des images
Étapes suivantes
- Utilisez ML Kit dans votre propre application iOS.
En savoir plus
- https://g.co/mlkit