From acaaa709b9a98938b83ba579b5e4f097e36d625d Mon Sep 17 00:00:00 2001 From: Elias Kassell Date: Wed, 13 Mar 2024 17:07:48 +0000 Subject: [PATCH] Add image annotate example --- .../definitions/all_imagesets.sqlx | 10 +++++++ .../definitions/annotated_imagesets.sqlx | 25 ++++++++++++++++++ .../annotated_imagesets_errors.sqlx | 10 +++++++ .../definitions/object_table.sqlx | 10 +++++++ .../definitions/unannotated_imagesets.sqlx | 19 +++++++++++++ .../definitions/vision_model.sqlx | 9 +++++++ .../image_annotate/image-annotation-dag.png | Bin 0 -> 67264 bytes examples/image_annotate/includes/constants.js | 6 +++++ examples/image_annotate/readme.md | 9 +++++++ .../image_annotate/workflow_settings.yaml | 4 +++ 10 files changed, 102 insertions(+) create mode 100644 examples/image_annotate/definitions/all_imagesets.sqlx create mode 100644 examples/image_annotate/definitions/annotated_imagesets.sqlx create mode 100644 examples/image_annotate/definitions/annotated_imagesets_errors.sqlx create mode 100644 examples/image_annotate/definitions/object_table.sqlx create mode 100644 examples/image_annotate/definitions/unannotated_imagesets.sqlx create mode 100644 examples/image_annotate/definitions/vision_model.sqlx create mode 100644 examples/image_annotate/image-annotation-dag.png create mode 100644 examples/image_annotate/includes/constants.js create mode 100644 examples/image_annotate/readme.md create mode 100644 examples/image_annotate/workflow_settings.yaml diff --git a/examples/image_annotate/definitions/all_imagesets.sqlx b/examples/image_annotate/definitions/all_imagesets.sqlx new file mode 100644 index 000000000..398a3996f --- /dev/null +++ b/examples/image_annotate/definitions/all_imagesets.sqlx @@ -0,0 +1,10 @@ +config { + type: "operations", + hasOutput: true +} + + -- Create the object table for the images +CREATE EXTERNAL TABLE IF NOT EXISTS + ${self()} +WITH CONNECTION `us.gcs` OPTIONS( object_metadata = 'SIMPLE', + uris = ['${constants.IMAGE_BUCKET}'] ); diff --git a/examples/image_annotate/definitions/annotated_imagesets.sqlx b/examples/image_annotate/definitions/annotated_imagesets.sqlx new file mode 100644 index 000000000..a808d0551 --- /dev/null +++ b/examples/image_annotate/definitions/annotated_imagesets.sqlx @@ -0,0 +1,25 @@ +config { + type: "incremental" +} + +SELECT + * +FROM + ${ref("object_table")} +WHERE + ml_annotate_image_status NOT LIKE "${constants.RETRYABLE_ERROR}" + ${ + when(incremental(), `AND + ${constants.MERGE_COLUMN} NOT IN ( + SELECT + ${constants.MERGE_COLUMN} + FROM + ${self()}) + OR updated > ( + SELECT + MAX(updated) + FROM + ${self()})`) + } +LIMIT + ${constants.BATCH_SIZE} diff --git a/examples/image_annotate/definitions/annotated_imagesets_errors.sqlx b/examples/image_annotate/definitions/annotated_imagesets_errors.sqlx new file mode 100644 index 000000000..fbda6909d --- /dev/null +++ b/examples/image_annotate/definitions/annotated_imagesets_errors.sqlx @@ -0,0 +1,10 @@ +config { + type: "assertion" +} + +SELECT + * +FROM + ${ref("object_table")} +WHERE + ml_annotate_image_status LIKE "${constants.RETRYABLE_ERROR}" diff --git a/examples/image_annotate/definitions/object_table.sqlx b/examples/image_annotate/definitions/object_table.sqlx new file mode 100644 index 000000000..b9b2c9b67 --- /dev/null +++ b/examples/image_annotate/definitions/object_table.sqlx @@ -0,0 +1,10 @@ +config { + type: "table", +} + +SELECT + * +FROM + ML.ANNOTATE_IMAGE( MODEL ${ref("vision_model")}, + TABLE ${ref("unannotated_imagesets")}, + STRUCT(['LABEL_DETECTION'] AS vision_features)) diff --git a/examples/image_annotate/definitions/unannotated_imagesets.sqlx b/examples/image_annotate/definitions/unannotated_imagesets.sqlx new file mode 100644 index 000000000..fd9d35c65 --- /dev/null +++ b/examples/image_annotate/definitions/unannotated_imagesets.sqlx @@ -0,0 +1,19 @@ +config { + type: "view" +} + +js { + // Ref is avoided here to avoid the circular dependency chain. + const ANNOTATED_IMAGESETS = `${ctx.schema()}` + ".annotated_imagesets" +} + +SELECT + * +FROM + ${ref("all_imagesets")} +LEFT JOIN + `${ANNOTATED_IMAGESETS}` +ON + ${ref("all_imagesets")}.uri = `${ANNOTATED_IMAGESETS}`.uri +WHERE + `${ANNOTATED_IMAGESETS}`.uri IS NULL diff --git a/examples/image_annotate/definitions/vision_model.sqlx b/examples/image_annotate/definitions/vision_model.sqlx new file mode 100644 index 000000000..b3c28f3bc --- /dev/null +++ b/examples/image_annotate/definitions/vision_model.sqlx @@ -0,0 +1,9 @@ +config { + type: "operations", + hasOutput: true +} + + -- Model for connecting to the Vision API +CREATE MODEL IF NOT EXISTS + ${self()} REMOTE +WITH CONNECTION `us.gcs` OPTIONS (remote_service_type = 'cloud_ai_vision_v1'); diff --git a/examples/image_annotate/image-annotation-dag.png b/examples/image_annotate/image-annotation-dag.png new file mode 100644 index 0000000000000000000000000000000000000000..0df6719dd4013d86f4a0ac4fffc3231df226a839 GIT binary patch literal 67264 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 BqWS;; literal 0 HcmV?d00001 diff --git a/examples/image_annotate/includes/constants.js b/examples/image_annotate/includes/constants.js new file mode 100644 index 000000000..dc63d9f70 --- /dev/null +++ b/examples/image_annotate/includes/constants.js @@ -0,0 +1,6 @@ +module.exports = { + BATCH_SIZE: 100, + MERGE_COLUMN: "uri", + RETRYABLE_ERROR: "A retryable error occurred:", + IMAGE_BUCKET: "gs://example-bucket/imagesets/*" +}; diff --git a/examples/image_annotate/readme.md b/examples/image_annotate/readme.md new file mode 100644 index 000000000..119dc2b75 --- /dev/null +++ b/examples/image_annotate/readme.md @@ -0,0 +1,9 @@ +# Image Annotate + +Use BigQuery ML to annotate images from a GCS bucket. + +Images where annotation failed are filtered out, and retried in subsequent runs. + +![Image Annotation DAG](./image-annotation-dag.png?raw=true "Image Annotation DAG") + + diff --git a/examples/image_annotate/workflow_settings.yaml b/examples/image_annotate/workflow_settings.yaml new file mode 100644 index 000000000..f80dc4117 --- /dev/null +++ b/examples/image_annotate/workflow_settings.yaml @@ -0,0 +1,4 @@ +defaultProject: dataform-demos +defaultLocation: US +defaultDataset: sample +defaultAssertionDataset: sample_assertions