#下準備
GCP
- 対象プロジェクトのサービスアカウントを作成しておく
- JSONの秘密鍵を生成しておく。
- VisionAPIをOnにする
- bigqueryでデータセットとテーブルを作っておく > スキーマはこちら
- GCSのバケットを作成する
MAGGELAN BLOCKS
- アカウントを作成してログイン
- 新規登録ページ> こちら
- ボードを作成する
マゼランブロックの設定
ボードにGCPアカウント登録
ボード毎にGCPへのサービスアカウントを登録しておくことで、各ブロックから簡単に権限情報を利用できる。
ボード画面上の右上の ボード設定
ボタンを押すことで設定ダイアログが開く
プロジェクト名を入力して、GCPコンソールからDLしたJSONファイルをアップロードする。
ブロックの配置
今回は、GCSに保存してある画像をVisionAPIに渡して結果をBQに投げるフローとなる。
使用するブロックは全部で4つ
フローの開始
特に設定は無い。
今回の処理には関係ないが、Slackのアカウントもボードに登録してあるので、成功時、失敗時それぞれ別メッセージを自分のチームに飛ぶように設定してある。
Vision API(汎用)
BigQuery Insert
これも設定箇所は3箇所。簡単すぎる。
- アカウント
- データセット
- テーブル
フローの完了
特に何も設定しない
以上で、MAGGELAN BLOCKS 設定が完了。
ゆっくりやっても3分、なれれば30秒でイケル。
番外編 ブロックのつなぎ方
MB初めて触る方は、ブロック同士のつなぎ方がわからないと思います。
コツは左右を揃えて、親のブロックの下に子のブロックをそっと置く感じです。
文字でわかりにくいので動画作りました。
MAGELLAN BLOCKSでのブロック同士の繋ぎ方とリンクの切り方 pic.twitter.com/4yf50U7JFX
— a2c (@atusi) 2016年4月6日
実行してみよう
手動実行編
バケットに画像を保存する。
今回使用する画像はこちら > 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に書き換える。
サービスアカウントを登録しているので、画像ファイルの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