Ce tutoriel explique comment utiliser Cloud Run Functions, l'API Cloud Vision et ImageMagick pour détecter et flouter les images choquantes importées dans un bucket Cloud Storage.
Objectifs
- Déployer une fonction Cloud Run Function d'arrière-plan déclenchée par le stockage
- Utiliser l'API 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 Run 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
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Build, Cloud Storage, and Cloud Vision APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Build, Cloud Storage, and Cloud Vision APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
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.
- La fonction analyse l'image à l'aide de l'API Vision.
- Si un contenu violent ou réservé aux adultes est détecté, la fonction 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 :gcloud storage buckets create 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 :gcloud storage buckets create 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 contenant l'exemple de code Cloud Run 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, 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 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 avec un déclencheur de type stockage, 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 \ --no-gen2 \ --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 \ --no-gen2 \ --runtime=RUNTIME \ --trigger-bucket=YOUR_INPUT_BUCKET_NAME \ --set-env-vars=BLURRED_BUCKET_NAME=YOUR_OUTPUT_BUCKET_NAME
Go
gcloud functions deploy BlurOffensiveImages \ --no-gen2 \ --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 \ --no-gen2 \ --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 \ --no-gen2 \ --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 \ --no-gen2 \ --runtime=RUNTIME \ --trigger-bucket=YOUR_INPUT_BUCKET_NAME \ --set-env-vars=BLURRED_BUCKET_NAME=YOUR_OUTPUT_BUCKET_NAME
PHP
gcloud functions deploy blurOffensiveImages \ --no-gen2 \ --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 :
gcloud storage 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 :
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Supprimer la fonction
La suppression de fonctions Cloud Run ne supprime pas les ressources stockées dans Cloud Storage.
Pour supprimer la fonction 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 Run à partir de la console Google Cloud.