This tutorial shows you how to use the Python SDK to blur faces in video. The
example blurs video files from a Cloud Storage bucket and generates blurred
video outputs. These output videos are stored to the same Cloud Storage
bucket as the source videos.

## Objectives

This tutorial shows you how to do the following:

- Create a Cloud Storage bucket.
- Upload a local video file to the bucket.
- Send a request using the Python SDK.
- View blurred output videos.

## Costs


In this document, you use the following billable components of Google Cloud:


- [Gemini Enterprise Agent Platform Vision](https://docs.cloud.google.com/vision-ai/pricing) (Models - Person / face blur)
- [Cloud Storage](https://docs.cloud.google.com/storage/pricing)


To generate a cost estimate based on your projected usage,
use the [pricing calculator](https://docs.cloud.google.com/products/calculator).
New Google Cloud users might be eligible for a [free trial](https://docs.cloud.google.com/free).

<br />

When you finish the tasks that are described in this document, you can avoid
continued billing by deleting the resources that you created. For more information, see
[Clean up](https://docs.cloud.google.com/vision-ai/docs/face-blur-python.md.txt#clean-up).

## Before you begin

1. Get the Gemini Enterprise Agent Platform Vision SDK source code:

   ```
   git clone https://github.com/google/visionai.git
   ```

   The Python examples are located in the
   `visionai/python/example/` directory.
2. Get the Python SDK:

   ```
   wget https://github.com/google/visionai/releases/download/v0.0.5/visionai-0.0.5-py3-none-any.whl
   ```

## Add input files to Cloud Storage

Before you can send a request using the Python SDK, create a Cloud Storage bucket and upload a local video to use as input.

1. Create a Cloud Storage bucket:

   ```bash
   gcloud storage buckets create gs://BUCKET_NAME
   ```
2. Upload a local video file to the new bucket:

   ```python
   gcloud storage cp LOCAL_FILE gs://BUCKET_NAME
   ```

## Install dependencies and send the request

After you create your Cloud Storage bucket for input and output videos and
add a local video, install the necessary dependencies and send your request.

1. Optional. Set up your virtual environment:

   1. If not installed, install `virtualenv`:

      ```bash
      sudo apt-get install python3-venv
      ```
   2. Create a new virtual environment:

      ```bash
      python3 -m venv vaivenv
      ```
   3. Activate your virtual environment:

      ```bash
      source vaivenv/bin/activate
      ```
2. Install dependencies:

   ```bash
   pip3 install visionai-0.0.5-py3-none-any.whl
   pip3 install google-cloud-storage
   ```
3. Send your request with the Python SDK.

   Make the following variable substitutions:
   - <var translate="no">PROJECT_ID</var>: Your Google Cloud project ID.
   - <var translate="no">LOCATION_ID</var>: Your location ID. For example, `us-central1`. [More information](https://docs.cloud.google.com/about/locations). [Supported regions](https://docs.cloud.google.com/vision-ai/docs/warehouse-supported-regions.md.txt).
   - <var translate="no">BUCKET_NAME</var>: The Cloud Storage bucket you created.

   ```bash
   python3 visionai/python/example/blur_gcs_video.py \
   --project_id=PROJECT_ID --cluster_id=application-cluster-0 \
   --location_id=LOCATION_ID --bucket_name=BUCKET_NAME
   ```

   You should see output similar to the following:

   ````python
    Listing mp4 files...
    test1.mp4
    test2.mp4
    Creating deid processes...
    process vnluvxgl is created
    process rvrdoucx is created
    Waiting for processes to finish...
    process vnluvxgl state is COMPLETED
    process rvrdoucx state is COMPLETED
    All processes have finished, please check the GCS bucket!
    ```
   ````

## Examine output

After your video has finished processing you can examine the output in your
Cloud Storage bucket. The generated blurred video files will be in the same
Cloud Storage bucket as the source video.

1. List all objects in your bucket with the [`gcloud storage ls`](https://docs.cloud.google.com/sdk/gcloud/reference/storage/ls) command:

   ```python
   gcloud storage ls gs://bucket
   ```

   You should see the source files and output files similar to the following:

   ```python
   test1.mp4
   test2.mp4
   test1_deid_output.mp4
   test2_deid_output.mp4
   ```
2. Optional. Download the output files locally with the [`gcloud storage cp`](https://docs.cloud.google.com/sdk/gcloud/reference/storage/cp)
   command and view the blurred videos:

   ```python
   gcloud storage cp gs://BUCKET_NAME/FILE_NAME .
   ```

## Clean up


To avoid incurring charges to your Google Cloud account for the resources used in this
tutorial, either delete the project that contains the resources, or keep the project and
delete the individual resources.

## What's next

- Read more about the [Person blur model](https://docs.cloud.google.com/vision-ai/docs/person-blur-model.md.txt).
- Explore reference architectures, diagrams, and best practices about Google Cloud. Take a look at our [Cloud Architecture Center](https://docs.cloud.google.com/architecture).