The ML.CONVERT_IMAGE_TYPE function
This document describes the ML.CONVERT_IMAGE_TYPE
scalar function, which lets
you convert the data type of pixel values in an image to INT64
with a range
of [0, 255)
. You can use ML.CONVERT_IMAGE_TYPE
with the
ML.PREDICT
function
or chain it with other functions or subqueries.
Syntax
ML.CONVERT_IMAGE_TYPE(image)
Arguments
ML.CONVERT_IMAGE_TYPE
takes the following argument:
image
: aSTRUCT<ARRAY<INT64>, ARRAY<FLOAT64>>
value that represents an image.The first array in the struct must contain the dimensions of the image. It must contain three
INT64
values, which represent the image height (H), width (W), and number of channels (C).The second array in the struct must contain the image data. The length of the array must be equivalent to H x W x C from the preceding array. Each value in the array must be between
[0, 1)
.The struct value must be <= 60 MB.
Output
ML.CONVERT_IMAGE_TYPE
returns a STRUCT<ARRAY<INT64>, ARRAY<INT64>>
value
that represents the image.
The first array in the struct represents the dimensions of the image, and
the second array in the struct contains the image data, similar
to the image
input argument. Each value in the second array is between
[0, 255)
.
Example
The SSD Mobilenet V2 Object detection model
model requires input to be in tf.uint8
. The following example changes the
pixel values for the input images from floating point numbers to integers
so that they work with this model:
CREATE OR REPLACE TABLE mydataset.detections AS ( SELECT uri, detection_scores FROM ML.PREDICT( MODEL `mydataset.mobilenet`, SELECT ML.CONVERT_IMAGE_TYPE(ML.DECODE_IMAGE(data)) AS image, uri FROM `mydataset.images`) );
What's next
- For information about feature preprocessing, see Feature preprocessing overview.
- For information about the supported SQL statements and functions for each model type, see End-to-end user journey for each model.