2023年8月18日 【Google Cloud】BigQuery MLの推論エンジン使ってみた!(Vision API,OCR,画像分析) BigQuery 検索する Popular tags 生成AI(Generative AI) Looker Studio BigQuery AlloyDB Google Workspace 事例紹介 Cloud SQL Category Google Cloud Author Google Cloud研究開発チーム SHARE 目次 事前準備 推論の実行 まとめ Content みなさま、こんにちは。Google Cloud研究開発チームのY.Yです。 今回は2023年3月にGoogle Cloud(GCP)で公開された、BigQuery ML 推論エンジンという新機能を検証します。 このエンジンを使うと、下記のことがBigQueryで実行できるようになります。 1. ONNX、XGBoost、TensorFlow等の BigQuery外部でトレーニングされたカスタムモデルをインポートして推論を実行する 2. Vertex AI エンドポイントでホストされたモデルを使用して推論を実行する 3. 最先端の事前トレーニング済み Cloud AI モデル(Vision、NLP、Translate)を用いて推論を実行する 本記事では上記3番を実際に使い、Cloud Storageに格納した画像ファイルへの推論を実行します。 (テキストの抽出、ラベル付け、オブジェクト検出) BigQuery上でのSQLを使った画像分析処理について興味のある方は是非ご覧ください! 事前準備 オブジェクトテーブルの作成 まずはオブジェクトテーブルを作成します。 オブジェクトテーブルとは、Cloud Storageに格納したオブジェクトのメタデータを参照できる外部テーブルです。 オブジェクトテーブルを作成することで、Cloud Storage内のオブジェクト(今回は画像ファイル)に対して、BigQueryで分析できるようになります。 ◆外部接続の作成 オブジェクトテーブルを作成するには外部接続(Cloud Storageへの接続)を作成する必要があります。 ①BigQuery API & BigQuery Connection API が有効になっていない場合は、有効にします。 gcloud services enable bigquery.googleapis.com --project="プロジェクトID"gcloud services enable bigqueryconnection.googleapis.com --project="プロジェクトID" ②コンソールからBigQueryのページを開き、エクスプローラから「+追加」を押下します。 ③「外部データソースへの接続」を押下します。 ④接続タイプを「Biglakeとリモート関数(クラウド リソース)」にし、接続を作成します。 作成すると、プロジェクト配下に追加されます。 ◆テーブル作成 『外部接続の作成』で作成した外部接続を用いて、Cloud Storage内のオブジェクトを参照するテーブルを作成します。 ①外部接続の接続情報を開き、接続に使用するサービスアカウントIDを確認します。 ② ① のサービスアカウントにCloud Storageのオブジェクトに対する閲覧権限を付与します。 gcloud projects add-iam-policy-binding プロジェクトID \--member='serviceAccount:サービスアカウントID' \--role='roles/storage.objectViewer' ③オブジェクトテーブル作成に必要なリソースを準備します。(詳細は省略) ・Cloud Storageでバケットを作成し、推論に使うオブジェクトを格納する ・BigQueryでデータセットを作成する ④CREATE文でテーブルを作成します。 CREATE EXTERNAL TABLE dataset_id.table_idWITH CONNECTION `接続を作成したリージョン.接続ID`OPTIONS( object_metadata = 'SIMPLE', uris = ["gs://バケット名/オブジェクトパス"] ); (※「gs://バケット名/*.jpg」のように複数ファイルを指定することもできます) モデル作成 次に、Vision APIを使用するモデルを作成します。 ①Vision APIがまだ有効になっていない場合は有効にします。 gcloud services enable vision.googleapis.com --project="プロジェクトID" ②『外部接続の作成』で作成した外部接続用のサービスアカウントに必要なロールを付与します。 gcloud projects add-iam-policy-binding 'プロジェクトNo' --member='serviceAccount:接続サービスアカウントID' --role='roles/serviceusage.serviceUsageConsumer' --condition=Nonegcloud projects add-iam-policy-binding 'プロジェクトNo' --member='serviceAccount:接続サービスアカウントID' --role='roles/bigquery.connectionUser' --condition=None ③CREATE MODEL文でモデルを作成します。 CREATE MODEL `(プロジェクトID.)データセットID.モデルID`REMOTE WITH CONNECTION `(プロジェクトID.)接続リージョン.接続名`OPTIONS(REMOTE_SERVICE_TYPE = 'CLOUD_AI_VISION_V1'); 推論の実行 Vision APIで推論を実行するには、ML.ANNOTATE_IMAGEテーブル値関数(TVF)を使用します。 この関数で以下のVision API機能のどれを使用するかを指定します。 • FACE_DETECTION(顔検出) • LANDMARK_DETECTION(ランドマーク検出) • LOGO_DETECTION(ロゴ検出) • LABEL_DETECTION(ラベル検出) • TEXT_DETECTION(画像からのテキスト検出) • DOCUMENT_TEXT_DETECTION(PDF/TIFファイルからのテキスト検出) • IMAGE_PROPERTIES(画像プロパティ検出) • OBJECT_LOCALIZATION(オブジェクト検出) テキスト検出 まずは、JPG画像ファイルからテキストを検出してみます。 下の画像をデータソースとするオブジェクトテーブルにクエリを実行します。 (今回の検証では「パブリックドメインOCR学習用データセット(令和3年度OCRテキスト化事業分)」という国立国会図書館のデータを利用しています。) SELECT ml_annotate_image_result, ml_annotate_image_statusFROM ML.ANNOTATE_IMAGE( MODEL `vision_research.vision_model`, TABLE `vision_research.ocr_testdata`, STRUCT(['TEXT_DETECTION'] AS vision_features)); ※ml_annotate_image_result:Vision APIからの応答(JSON) ml_annotate_image_status:APIからの応答ステータス(成功時は空) vision_research:データセットID ocr_testdata:オブジェクトテーブル名 vision_model:モデル名 画像からテキストを取得するため、使用する機能はTEXT_DETECTIONを指定しています。 SELECT句を*(アスタリスク)にすると、上記の2フィールドとオブジェクトテーブルの全フィールドを取得できます。 ml_annotate_image_resultフィールドから読み取ったテキスト部分のみを取得してみます。 先程のSQLのSELECT句を SELECT JSON_VALUE(ml_annotate_image_result.full_text_annotation.text) AS FULL_TEXT に置き換えます。 【読み取り結果】 梗 一、神勅 大御言葉としては天照大神が仰せられました。然し天照大神の 御徳のあらはれとしての大御言葉であります。 のみならず、いざなぎ、 いざなみ二神の御徳のあらはれであります。 のみならず、代々の神様の御徳のあらはれであります。 のみならず、神話の最初の神様の御徳のあらはれであります。 のみならず、日本語の發生と同時に神奉戴の精神が活躍してゐます。 のみならず、代々の天皇の御徳のあらはれであります。(十九頁) 一、敵前上陸 排戰 地物利用 攻敵情偵察必勝の信念、陛下の軍 人といふ信念等みな~神武天皇様に始まつてゐます。 ラベル・オブジェクト検出 続いて、下記の画像に対してラベル検出とオブジェクト検出をしてみます。 以下のクエリを実行します。 今回はオブジェクトとラベルを検出するため、’OBJECT_LOCALIZATION’と’LABEL_DETECTION’を指定します。 SELECT ml_annotate_image_resultFROM ML.ANNOTATE_IMAGE( MODEL `vision_research.vision_model`, TABLE `vision_research.ocr_testdata`, STRUCT(['OBJECT_LOCALIZATION','LABEL_DETECTION'] AS vision_features)); ラベルはPenguin、オブジェクトはFootballと返ってきました。 一方、Vision APIの試してみましょうページで検出したときは、下のような検出結果を得られました。 上のクエリではスコアが一番高いものがクエリ結果として返されたようです。 【オブジェクト】 【ラベル】 まとめ 本記事では、BigQuery MLの推論エンジンでVision APIのトレーニング済みモデルを使い、画像ファイルへの推論を検証いたしました。 Vision APIによる画像分析を簡単なSQLを書くだけでできるのでとても便利ですね。 推論エンジンにより、高度なプログラミング知識がなくても、Googleの様々なML技術を簡単に使用することができます。 みなさまも是非お試しください。 ※本検証時点では、ML.ANNOTATE_IMAGE関数はプレビュー段階の機能であり、利用するには登録フォームから申請が必要でした。利用を検討されている方は公式ドキュメントをご確認ください。 また、オブジェクトテーブル用の BigQuery ML は、予約による定額料金を使用している場合にのみサポートされていました。こちらも公式ドキュメントをご確認ください。 当社、システムサポートは、Google Cloudの導入・移行・運営支援を行っています。 本記事で行ったような画像認識などのGoogleのAI・ML技術の導入もご支援いたします。 お問い合わせは以下よりお願い致します。 Google Cloud導入についてのお問い合わせはこちら 関連コンテンツ 【Google Cloud】Vision APIで画像に写っているモノを検出してみよう! by みやてつon 2023年5月16日 【Google Cloud】BigQueryで図書画像のデータを分析してみた! by Google Cloud研究開発チームon 2023年8月18日 【Google Cloud】Looker Studio × Looker Studio Pro × Looker を徹底比較!機能・選び方を解説 by Google Cloud研究開発チームon 2023年9月5日 【Google Cloud】DataplexのAutoDQを使ってみた by Y.Yon 2023年5月15日 頂きましたご意見につきましては、今後のより良い商品開発・サービス改善に活かしていきたいと考えております。 よく分かった もっと知りたい 使ってみたい もう使っているよ よく分からなかった Author Google Cloud研究開発チーム 株式会社システムサポート(STS)のGoogle Cloud研究開発チームです。 実際に技術検証した事例を中心に記事発信していきます。 BigQuery 2023年8月18日 【Google Cloud】BigQuery MLの推論エンジン使ってみた!(Vision API,OCR,画像分析) Category Google Cloud 前の記事を読む 【4コマ漫画】SEひつじは定時退社の夢を見る ~添付ファイル~ 次の記事を読む 【Google Cloud】BigQueryで図書画像のデータを分析してみた! Recommendation オススメ記事 2023年9月5日 Google Cloud 【Google Cloud】Looker Studio × Looker Studio Pro × Looker を徹底比較!機能・選び方を解説 2023年8月24日 Google Cloud 【Google Cloud】Migrate for Anthos and GKEでVMを移行してみた(1:概要編) 2022年10月10日 Google Cloud 【Google Cloud】AlloyDB と Cloud SQL を徹底比較してみた!!(第1回:AlloyDB の概要、性能検証編) BigQuery ML ワークショップ開催のお知らせ 生成AI導入支援パッケージ Discovery AI導入支援パッケージ Google Cloud ホワイトペーパー 新着記事 2024年9月30日 Google Cloud 【Google Cloud】サーバレスでマネージドなサービス「Cloud Run」でアプリケーションを走らせよう! 2024年9月27日 技術開発 モブレビューを導入して分かったメリットとデメリットについて 2024年9月26日 Google Cloud 自然言語でデータを可視化できるLookerのExplore Assistantを試してみた HOME Google Cloud 【Google Cloud】BigQuery MLの推論エンジン使ってみた!(Vision API,OCR,画像分析) ご意見・ご相談・料金のお見積もりなど、お気軽にお問い合わせください。 お問い合わせはこちら HOME Categories お知らせ イベント・セミナー Google Cloud Google Workspace モバイル インフラ 技術開発 ブログ 4koma Tags 生成AI(Generative AI) Looker Studio BigQuery AlloyDB Google Workspace 事例紹介 Cloud SQL STSエンジニアリングマガジン 「サイタル」