LoginSignup
6
6

More than 5 years have passed since last update.

MAGELLAN BLOCKS VisionAPIの結果をBQ 複数ファイルが有る場合 後編

Last updated at Posted at 2016-04-06

前編では、最終的に単品ファイルの画像解析を行った。
後編では、複数ファイルがある場合のサンプルを紹介する。

MAGGELAN BLOCKS

MBの各ブロックは、原則としてハードコードされたURLに対してアクセスするように設計されている。単品で実行する場合には条件分岐や、ワイルドカードが使えない。(2016/04/06現在)

動的に挙動を変えたい場合には、外部からボードのAPIを叩くことで任意の変数を渡すことで、特定ブロック内のフィールドに任意の文字列を渡すことができる。

${hoge} という記述が、ブロック内で利用可能となっており。
APIでPOSTする際に、 hogeに対して値を渡すと、ブロック内で展開される。

今回のフローでは、1フローにつき1画像の解析とBQへの1インサートとなっている。100枚の画像解析を行いたい場合には、100リクエストする必要がある。

ボードのAPIの叩き方

各ボードはユニークなURLが割り当てられている。このURLに対して、トークン付きのPOSTを行うことでAPIを叩くことができる。

トークンの作成方法

ボード設定内の下部にトークン生成ボタンが有ります。
API_token.png

API_token2.png

トークンコピーしておいてください。

ブロックに変数を埋め込んでおく

今回、GCSのフルパスを外部から指定したいので、VisionAPIのブロック内の設定に変数を埋め込みます。

VisionAPI_option.png

2)の項目に
${gcs_url}
の文字列を書いておきます。

忘れずにボードを保存します。

単発叩いてみましょう。

bash
wget --post-data="" https://<YOUR-BORAD-URL>/admin/schedules/2.json?api_token="<YOUR-API-TOKEN>"&gcs_url=gs://<YOUR-BUCKET>/<SOMEWHERE>/<FILE-NAME>

横で、ボードのWebUI開いておくと勝手にフローがキックされるのがワカリマス。

画像一杯叩くには?

地味にめんどくさいです。

手順

1) GCSに複数ファイルをアップ
2) ファイルリストを用意する
3) ひたすらキックする。

ファイルをアップロードする

今回は、善意の提供者より頂いた3枚の画像をアップロードしてみる

bash
➜  sample ls
saisyu1.jpg saisyu2.jpg saisyu3.jpg
➜  sample gsutil cp ./*.jpg gs://<YOUR-BUCKET>/mb_img_src/
Copying file://./saisyu1.jpg [Content-Type=image/jpeg]...
Uploading   gs://<YOUR-BUCKET>/mb_img_src/saisyu1.jpg:       53.88 KiB/53.88 KiB
Copying file://./saisyu2.jpg [Content-Type=image/jpeg]...
Uploading   gs://<YOUR-BUCKET>/mb_img_src/saisyu2.jpg:       57.71 KiB/57.71 KiB
Copying file://./saisyu3.jpg [Content-Type=image/jpeg]...
Uploading   gs://<YOUR-BUCKET>/mb_img_src/saisyu3.jpg:       70.21 KiB/70.21 KiB

ファイル名を列挙したファイルを作る

bash
$ ls -1 > filelist.txt
$ cat filelist.txt
saisyu1.jpg
saisyu2.jpg
saisyu3.jpg

リストに従ってキックshell

ファイルリストからファイル名抜いてきて、適当にwgetしちゃいましょう。

sh
#!/bin/sh

MYTOKEN="<YOUR-TOKEN>"
SRCFILE=./filelist.txt
BASEURL="https://<YOUR-BOARD-URL>/admin/schedules/2.json?"
QUERY="api_token="$MYTOKEN"&gcs_url=gs://<YOUR-BUCKET>/<SOMEWHERE-PATH>/"

echo $BASEURL

while read line; do
  wget --post-data="" $BASEURL$QUERY$line
done < $SRCFILE
shell
➜  sample ./go_visionAPI.sh

result.png

こんな感じで、WebUI操作せずにフローが勝手に走っていきます。ちょいちょい失敗しますね。

結果発表

ラベル抜いてみました。

その1

eyewear
sunglasses
hair
vision care
glasses

上記ラベルが付いた画像は↓
saisyu2.jpg

その2

lingerie
clothing
photo shoot
dress

上記ラベルが付いた画像は↓
saisyu3.jpg

まとめ

ランジェリーだそうです。www

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6