Edited at

MAGELLAN BLOCKS VisionAPIの結果をBQに突っ込む 3分で! 前編

More than 1 year has passed since last update.

複数ファイル処理の後編もあります


下準備


GCP


  • 対象プロジェクトのサービスアカウントを作成しておく


    • JSONの秘密鍵を生成しておく。



  • VisionAPIをOnにする

  • bigqueryでデータセットとテーブルを作っておく > スキーマはこちら

  • GCSのバケットを作成する


MAGGELAN BLOCKS


  • アカウントを作成してログイン



  • ボードを作成する


マゼランブロックの設定


ボードにGCPアカウント登録

ボード毎にGCPへのサービスアカウントを登録しておくことで、各ブロックから簡単に権限情報を利用できる。

ボード画面上の右上の ボード設定 ボタンを押すことで設定ダイアログが開く

ボードsetting.png

プロジェクト名を入力して、GCPコンソールからDLしたJSONファイルをアップロードする。

GCP_serv_Acnt.png


ブロックの配置

今回は、GCSに保存してある画像をVisionAPIに渡して結果をBQに投げるフローとなる。

使用するブロックは全部で4つ

Blocks.png


フローの開始

特に設定は無い。

今回の処理には関係ないが、Slackのアカウントもボードに登録してあるので、成功時、失敗時それぞれ別メッセージを自分のチームに飛ぶように設定してある。


Vision API(汎用)

設定場所は3箇所

VisionAPI_option.png


BigQuery Insert

これも設定箇所は3箇所。簡単すぎる。


  • アカウント

  • データセット

  • テーブル

e0e9317b-f993-d2cd-5f45-8a24112a0416.png


フローの完了

特に何も設定しない

Finish_option.png

以上で、MAGGELAN BLOCKS 設定が完了。

ゆっくりやっても3分、なれれば30秒でイケル。


番外編 ブロックのつなぎ方

MB初めて触る方は、ブロック同士のつなぎ方がわからないと思います。

コツは左右を揃えて、親のブロックの下に子のブロックをそっと置く感じです。

文字でわかりにくいので動画作りました。


実行してみよう


手動実行編


バケットに画像を保存する。

今回使用する画像はこちら > RG_saisyu.jpg

RG_saisyu.jpg

#gcloud cmdに プロジェクトをセットする

$ gcloud config set project <YOUR PROJECT>
$ gsutil cp ./RG_saisyu.jpg gs://<YOUR_BUCKET>/mb_img_src/RG_saisyu.jpg
Copying file://./RG_saisyu.jpg [Content-Type=image/jpeg]...
Uploading gs://<YOUR_BUCKET>/mb_img_src/RG_saisyu.jpg: 45.12 KiB/45.12 KiB


Vision APIブロックを一時的にこのファイルを読み込むように変更する。

画像のGCS上のURLのパラーメータをアップロードしたファイルにPathに書き換える。

VisionAPI_option2.png

サービスアカウントを登録しているので、画像ファイルのACLをAllUserに変更する必要はない。


実行するぞ!

フローの開始ブロックで再生ボタンをポチッとすると、1回実行になります。

ポチットな

動作画面はこんな感じです。最初1回失敗していますが、再度実行して2回めは成功しています。

ちょいちょい失敗することがあります。

単発動作画面


結果はBQにて

Query

SELECT gcs_url  , safeSearchAnnotation.adult, safeSearchAnnotation.violence

FROM [データセット.テーブル名]
WHERE gcs_url like "gs://hoge-bucket/mb_img_src/RG_saisyu.jpg"
limit 1

Result

Row gcs_url safeSearchAnnotation_adult  safeSearchAnnotation_violence    

1 gs://hoge-bucket/mb_img_src/RG_saisyu.jpg UNLIKELY VERY_UNLIKELY

アダルトと、バイオレンスの判定結果を抜いてみましたが、白でしたwww