Ce tutoriel décrit l'utilisation de Cloud Functions, de l'API Google Cloud Vision et de l'outil ImageMagick pour détecter et flouter les images choquantes importées dans un bucket Cloud Storage.
Objectifs
- Déployer une fonction Cloud Function d'arrière-plan déclenchée par le stockage
- Utiliser l'API Cloud Vision pour détecter les contenus violents ou réservés aux adultes
- Utiliser ImageMagick pour flouter les images choquantes
- Tester la fonction en important une image d'un zombie mangeur de chair
Coûts
Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :
- Cloud Functions
- Cloud Storage
- Cloud Vision
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Avant de commencer
- Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Vérifiez que la facturation est activée pour votre projet Google Cloud.
-
Activer les API Cloud Functions, Cloud Build, Cloud Storage, and Cloud Vision.
- Installez Google Cloud CLI.
-
Pour initialiser gcloudCLI, exécutez la commande suivante :
gcloud init
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Vérifiez que la facturation est activée pour votre projet Google Cloud.
-
Activer les API Cloud Functions, Cloud Build, Cloud Storage, and Cloud Vision.
- Installez Google Cloud CLI.
-
Pour initialiser gcloudCLI, exécutez la commande suivante :
gcloud init
- Préparez votre environnement de développement.
Node.js
Python
Go
Java
C#
Ruby
PHP
Si la gcloud CLI est déjà installée, mettez-le à jour en exécutant la commande suivante :
gcloud components update
Visualiser le flux de données
Le flux de données dans l'application du tutoriel ImageMagick comprend plusieurs étapes :
- Une image est importée dans un bucket Cloud Storage.
- Cloud Function analyse l'image à l'aide de l'API Cloud Vision.
- Si un contenu violent ou réservé aux adultes est détecté, la fonction Cloud utilise ImageMagick pour flouter l'image.
- L'image floue est importée dans un autre bucket Cloud Storage pour être utilisée.
Préparer l'application
Créez un bucket Cloud Storage pour importer des images, où
YOUR_INPUT_BUCKET_NAME
est un nom de bucket unique :gsutil mb gs://YOUR_INPUT_BUCKET_NAME
Créez un bucket Cloud Storage destiné à recevoir des images floues, où
YOUR_OUTPUT_BUCKET_NAME
est un nom de bucket unique :gsutil mb gs://YOUR_OUTPUT_BUCKET_NAME
Clonez le dépôt de l'exemple d'application sur votre machine locale :
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
C#
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
Ruby
git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
PHP
git clone https://github.com/GoogleCloudPlatform/php-docs-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
Accédez au répertoire qui contient l'exemple de code de Cloud Functions :
Node.js
cd nodejs-docs-samples/functions/imagemagick/
Python
cd python-docs-samples/functions/imagemagick/
Go
cd golang-samples/functions/imagemagick/
Java
cd java-docs-samples/functions/imagemagick/
C#
cd dotnet-docs-samples/functions/imagemagick/
Ruby
cd ruby-docs-samples/functions/imagemagick/
PHP
cd php-docs-samples/functions/imagemagick/
Comprendre le code
Importer des dépendances
L'application doit importer plusieurs dépendances afin d'interagir avec les services Google Cloud Platform, ImageMagick et le système de fichiers :
Node.js
Python
Go
Java
C#
Ruby
PHP
Analyser les images
La fonction suivante est appelée lorsqu'une image est importée dans le bucket Cloud Storage que vous avez créé pour stocker des images. La fonction utilise l'API Cloud Vision pour détecter le contenu violent ou réservé aux adultes dans les images importées.
Node.js
Python
Go
Java
C#
Ruby
PHP
Flouter des images
La fonction suivante est appelée lorsqu'un contenu violent ou réservé aux adultes est détecté dans une image importée. La fonction télécharge l'image choquante, utilise ImageMagick pour flouter l'image, puis importe l'image floutée sur l'image d'origine.
Node.js
Python
Go
Java
C#
Ruby
PHP
Déployer la fonction
Pour déployer votre fonction Cloud avec un déclencheur Cloud Storage, exécutez la commande suivante dans le répertoire contenant l'exemple de code (ou, dans le cas de Java, le fichier pom.xml
) :
Node.js
gcloud functions deploy blurOffensiveImages \ --runtime=RUNTIME \ --trigger-bucket=YOUR_INPUT_BUCKET_NAME \ --set-env-vars=BLURRED_BUCKET_NAME=YOUR_OUTPUT_BUCKET_NAME
Python
gcloud functions deploy blur_offensive_images \ --runtime=RUNTIME \ --trigger-bucket=YOUR_INPUT_BUCKET_NAME \ --set-env-vars=BLURRED_BUCKET_NAME=YOUR_OUTPUT_BUCKET_NAME
Go
gcloud functions deploy BlurOffensiveImages \ --runtime=RUNTIME \ --trigger-bucket=YOUR_INPUT_BUCKET_NAME \ --set-env-vars=BLURRED_BUCKET_NAME=YOUR_OUTPUT_BUCKET_NAME
Java
gcloud functions deploy java-blur-function \ --entry-point=functions.ImageMagick \ --runtime=RUNTIME \ --memory 512MB \ --trigger-bucket=YOUR_INPUT_BUCKET_NAME \ --set-env-vars=BLURRED_BUCKET_NAME=YOUR_OUTPUT_BUCKET_NAME
C#
gcloud functions deploy csharp-blur-function \ --entry-point=ImageMagick.Function \ --runtime=RUNTIME \ --trigger-bucket=YOUR_INPUT_BUCKET_NAME \ --set-env-vars=BLURRED_BUCKET_NAME=YOUR_OUTPUT_BUCKET_NAME
Ruby
gcloud functions deploy blur_offensive_images \ --runtime=RUNTIME \ --trigger-bucket=YOUR_INPUT_BUCKET_NAME \ --set-env-vars=BLURRED_BUCKET_NAME=YOUR_OUTPUT_BUCKET_NAME
PHP
gcloud functions deploy blurOffensiveImages \ --runtime=RUNTIME \ --trigger-bucket=YOUR_INPUT_BUCKET_NAME \ --set-env-vars=BLURRED_BUCKET_NAME=YOUR_OUTPUT_BUCKET_NAME
Remplacez les éléments suivants :
RUNTIME
: un environnement d'exécution basé sur Ubuntu 18.04 (les environnements d'exécution ultérieurs ne sont pas compatibles avec ImageMagick).YOUR_INPUT_BUCKET_NAME
: nom du bucket Cloud Storage pour l'importation d'images.YOUR_OUTPUT_BUCKET_NAME
: nom du bucket dans lequel les images floutées doivent être enregistrées.
Pour cet exemple, n'incluez pas gs://
dans les noms de bucket de la commande deploy
.
Importer une image
Importez une image choquante, telle que cette image d'un zombie mangeur de chair :
gsutil cp zombie.jpg gs://YOUR_INPUT_BUCKET_NAME
où
YOUR_INPUT_BUCKET_NAME
est le bucket Cloud Storage que vous avez créé précédemment pour importer des images.Consultez les journaux pour vous assurer que les exécutions sont terminées :
gcloud functions logs read --limit 100
Vous pouvez afficher les images floues dans le bucket Cloud Storage
YOUR_OUTPUT_BUCKET_NAME
que vous avez créé précédemment.
Nettoyer
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet mais supprimez les ressources individuelles.
Supprimer le projet
Le moyen le plus simple d'empêcher la facturation est de supprimer le projet que vous avez créé pour ce tutoriel.
Pour supprimer le projet :
- Dans la console Google Cloud, accédez à la page Gérer les ressources.
- Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
- Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.
Supprimer une fonction Cloud Functions
La suppression de fonctions Cloud Functions ne supprime pas les ressources stockées dans Cloud Storage.
Pour supprimer la fonction cloud que vous avez déployée dans ce tutoriel, exécutez la commande suivante :
Node.js
gcloud functions delete blurOffensiveImages
Python
gcloud functions delete blur_offensive_images
Go
gcloud functions delete BlurOffensiveImages
Java
gcloud functions delete java-blur-function
C#
gcloud functions delete csharp-blur-function
Ruby
gcloud functions delete blur_offensive_images
PHP
gcloud functions delete blurOffensiveImages
Vous pouvez également supprimer des fonctions Cloud Functions à partir de Google Cloud Console.