Framework MediaPipe sur iOS

Suivez les instructions ci-dessous pour créer des exemples d'applications iOS avec le framework MediaPipe. Pour en savoir plus sur ces exemples d'applications, commencez par Hello World sur iOS.

Créer des exemples d'applications iOS

Conditions préalables

  1. Installez le framework Mediapipe en suivant ces instructions.

  2. Installez Xcode, puis installez les outils de ligne de commande à l'aide de:

    xcode-select --install
    
  3. Installez Bazelisk.

    Nous vous recommandons d'utiliser Homebrew pour obtenir les dernières versions.

    brew install bazelisk
    
  4. Installez la bibliothèque Python "six". Cela est nécessaire pour TensorFlow.

    pip3 install --user six
    
  5. Clonez le dépôt MediaPipe.

    git clone https://github.com/google/mediapipe.git
    

Configurer un préfixe d'ID de bundle

Toutes les applications iOS doivent disposer d'un ID de bundle, et vous devez disposer d'un profil de provisionnement qui vous permet d'installer une application avec cet ID sur votre téléphone. Pour éviter les conflits entre les différents utilisateurs de MediaPipe, vous devez configurer un préfixe unique pour les ID de bundle de nos applications de démonstration iOS.

Si vous disposez d'un profil de provisionnement personnalisé, consultez la section Provisionnement personnalisé ci-dessous.

Sinon, exécutez cette commande pour générer un préfixe unique:

python3 mediapipe/examples/ios/link_local_profiles.py

Créer un projet Xcode

Vous pouvez ainsi modifier et déboguer l'une des applications exemples dans Xcode. Il vous permet également d'utiliser le provisionnement automatique (voir la section suivante).

  1. Nous allons utiliser un outil appelé Tulsi pour générer des projets Xcode à partir de configurations de compilation Bazel.

    # cd out of the mediapipe directory, then:
    git clone https://github.com/bazelbuild/tulsi.git
    cd tulsi
    # remove Xcode version from Tulsi's .bazelrc (see http://github.com/bazelbuild/tulsi#building-and-installing):
    sed -i .orig '/xcode_version/d' .bazelrc
    # build and run Tulsi:
    sh build_and_run.sh
    

    Tulsi.app sera alors installé dans le répertoire Applications de votre répertoire d'accueil.

  2. Ouvrez mediapipe/Mediapipe.tulsiproj à l'aide de l'application Tulsi.

  3. Sélectionnez la configuration MediaPipe dans l'onglet "Configs", puis appuyez sur le bouton "Generate" (Générer) ci-dessous. Vous êtes invité à indiquer un emplacement où enregistrer le projet Xcode. Une fois le projet généré, il s'ouvre dans Xcode.

    Si une erreur s'affiche concernant les ID de bundle, consultez la section précédente.

Configurer le provisionnement

Pour installer des applications sur un appareil iOS, vous avez besoin d'un profil de provisionnement. Deux options s'offrent à vous:

  1. Provisionnement automatique Vous pouvez ainsi créer et installer une application sur votre appareil personnel. Le profil de provisionnement est géré par Xcode et doit être mis à jour fréquemment (il est valide pendant environ une semaine).

  2. Provisionnement personnalisé Il utilise un profil de provisionnement associé à un compte de développeur Apple. Ces profils ont une période de validité plus longue et peuvent cibler plusieurs appareils, mais vous devez disposer d'un compte de développeur payant chez Apple pour en obtenir un.

Provisionnement automatique

  1. Créez un projet Xcode pour MediaPipe, comme indiqué ci-dessus.

  2. Dans le navigateur de projet de la barre latérale de gauche, sélectionnez le projet "Mediapipe".

  3. Sélectionnez l'une des cibles d'application, par exemple HandTrackingGpuApp.

  4. Sélectionnez l'onglet "Signature et fonctionnalités".

  5. Cochez "Gérer automatiquement la signature", puis confirmez la boîte de dialogue.

  6. Sélectionnez Votre nom (équipe personnelle) dans le menu de la boîte de dialogue "Équipe".

  7. Cette configuration doit être effectuée une fois pour chaque application que vous souhaitez installer. Répétez les étapes 3 à 6 si nécessaire.

Des profils de provisionnement sont alors générés pour chaque application que vous avez sélectionnée. Vous devez maintenant indiquer à Bazel de les utiliser. Pour vous faciliter la tâche, nous vous avons fourni un script.

  1. Dans le terminal, accédez au répertoire mediapipe dans lequel vous avez cloné le dépôt.

  2. Exécutez cette commande :

    python3 mediapipe/examples/ios/link_local_profiles.py
    

Le profil de provisionnement de toutes les applications pour lesquelles vous avez activé le provisionnement automatique dans Xcode est alors recherché et associé.

Provisionnement personnalisé

  1. Obtenez un profil de provisionnement auprès d'Apple.
  1. Créez un lien symbolique ou copiez votre profil de provisionnement dans mediapipe/mediapipe/provisioning_profile.mobileprovision.

    cd mediapipe
    ln -s ~/Downloads/MyProvisioningProfile.mobileprovision mediapipe/provisioning_profile.mobileprovision
    
  1. Ouvrez mediapipe/examples/ios/bundle_id.bzl et remplacez BUNDLE_ID_PREFIX par un préfixe associé à votre profil de provisionnement.

Créer et exécuter une application avec Xcode

  1. Créez le projet Xcode et assurez-vous d'avoir configuré le provisionnement automatique ou personnalisé.

  2. Vous pouvez désormais sélectionner n'importe quelle démonstration du framework Mediapipe dans le menu de la cible, puis les compiler et les exécuter comme d'habitude.

Créer une application à l'aide de la ligne de commande

  1. Assurez-vous d'avoir configuré le provisionnement automatique ou personnalisé.

  2. Par exemple, avec MediaPipe Hands, exécutez la commande suivante:

    bazel build -c opt --config=ios_arm64 mediapipe/examples/ios/handtrackinggpu:HandTrackingGpuApp
    

    Une demande d'autorisation de la part de codesign peut s'afficher pour signer l'application.

  3. Dans Xcode, ouvrez la fenêtre Devices and Simulators (⌘+Maj+2).

  4. Assurez-vous que votre appareil est connecté. La liste des applications installées s'affiche. Appuyez sur le bouton + sous la liste, puis sélectionnez le fichier .ipa créé par Bazel.

  5. Vous pouvez maintenant exécuter l'application sur votre appareil.