GCP の機械学習 API には TensorFlow と組み合わせて独自で機械学習モデルを構築する「Cloud Machine Learning Engine」や、すでに Google の機械学習モデルによって学習済みの「Cloud Speech API (音声認識)」、「Cloud Vision API (画像認識)」、「Cloud Video Intelligence API (動画認識)」などがあります。
学習済み API は Machine Learning Engine と違って使う側が学習させる必要がないため、機械学習のノウハウを持っていない人でも簡単に使うことができます。また認識精度は非常に高く、今後も精度は向上していくことでしょう。
しかしながら、Vision API や Video Intelligence API に関しては、認識結果 (ラベル) が英語で出力されるため、日本での利用には障壁となってしまう可能性があります。
この問題の解決策として最適だと思うのが 学習済み API の一つで翻訳に特化した Translation API です。これを使えば言語による障壁問題は解決するでしょう。
そこで今回は日本で利用するための一例として Video Intelligence API と Translation API を組み合わせて日本語化をしてみました!!
また、Translation API の料金を少しでも抑えるための工夫についても紹介したいと思います!
Cloud Video Intelligence API とは?
Google の学習済みの機械学習モデルを用いて、動画内のメタデータ(映っているもの)抽出を行ってくれる API です。解析対象の動画は Google Cloud Storage (GCS) に保存されている必要があります。特徴としては、「犬」、「花」、「車」などのラベルと確度を検出してくれる「ラベル検出」、動画内でシーン変更があった場合に検出してくれる「ショット検出」、不適切なオブジェクトを検出してくれる「セーフサーチ検出」があります。
Video Intelligence APIの概要ページ
料金体系は、それぞれ最初の1000分間までは無料で、それ以上の処理を行う場合は下記の課金が発生します。
機能 | 1001分 ~ 100,000分 |
---|---|
ラベル検出 | $ 0.10/min |
ショット検出 | $ 0.05/min (ラベル検出を利用している場合は無料) |
セーフサーチ検出 | $ 0.10/min |
Quota については、「ビデオサイズは 10GB まで」、「1リクエストにつき1動画まで」、「100 秒間に 100リクエストまで」、「バックエンドタイムは 100 秒あたり 300 秒のビデオまで」となります。
クォート制限
当サイトの過去記事には Video Intelligence API を扱った記事がありますので、ぜひご覧ください!
Cloud Translation API とは?
こちらも Google の機械学習技術を基にして提供されている翻訳のための API です。ここ最近、Google 翻訳の精度が高くなったという話をよく聞きますが、それは機械学習によるものです。特徴としては、原文を高速かつ動的に翻訳できる「応答性の高さ」、原文の言語が不明な場合に「言語を検出する機能」があります。
Translation APIの概要ページ
料金としては、文字数あたりの課金となります。
1ヶ月あたり10億文字まで(スペース含む)を上限とし、100万文字あたり $20 なので、50万文字の翻訳で $10、5万文字の翻訳で $1 の課金が発生するといった具合です。
料金ページ
Quotaについて、翻訳は「2,000,000文字/1day」、「100,000文字/100min」となっており、言語の検出については「1,000リクエスト/100min」となっています。
クォート制限
日本語化のための構成
下図がビデオの解析結果を日本語として取得するための構成となります。
処理の流れとしては、
[1] GCS にアップロードされている動画の URL を Video Intelligence API に投げる
[2] Cloud Video Intelligence API が動画を解析し、ラベル(英語)を取得、Translation API で翻訳する
実際に犬のフリー動画で試してみました。
可愛い子犬の動画ですが、猫派の私には犬種がわかりません…ゴールデンレトリバーかな…?
これを上記構成で日本語化した Video Intelligence API に投げてみると、以下の結果を得られました。(※1)
メタ情報(ラベル) | 確度 [%] |
---|---|
レトリーバー | 100.0 |
犬 | 99.7 |
動物 | 98.2 |
ゴールデンレトリバー | 97.3 |
ペット | 93.8 |
ラブラドール・レトリーバー | 79.4 |
子犬 | 74.3 |
「犬」より「レトリーバー」の確度が高いなど、ツッコミどころはありますが、注目すべきは犬種の判別が出来ていること!「ゴールデンレトリバー」が 97.3%、「ラブラドール・レトリバー」が 79.4% となっており、犬種の判別ができているのはすごいですね!!
(実際に動画を配布していたサイトにはゴールデンレトリバーとの記述がありました。)
「ゴールデンレトリバー」と「ラブラドール・レトリバー」での中黒(・)の有無が気になったので、日本語化する前のラベルを見てみました。(JSON の一部を抜粋)
「ゴールデンレトリバー」→「golden retriever」
「ラブラドール・レトリバー」→「labrador retriever」
どうやらこれは Translation API の問題みたいですね。
何はともあれ、Video Intelligence API での精度の高さと、Tanslation API での日本語化の実用性については確認することが出来ました!!
※1 … 確度に関して API では 0 ~ 1 の範囲の小数で取得されます。今回は見やすいように整形しています。
Datastoreで単語のキャッシュ!
Translation API は 100万文字あたり $20 の課金が発生します。例えば動画を 1日に 1000本解析するとして、解析結果が 1動画あたり 30個で平均文字数が 5文字とします。それを毎日行った場合、翻訳する文字数は月に450万文字となります。450万文字を翻訳する場合の料金は $90 (約1万円)程度です。これを、下図のように Datastore を活用することで、月々の使用料金をかなり安くすることができます!
処理の流れとしては、
[1] GCS にアップロードされている動画の URL を Video Intelligence API に投げる
[2] Video Intelligence API が動画を解析し、取得したラベル(英語)をキーとして Datastore 内を検索する
[3] Datastore 内になかったラベルを Translation API で翻訳する
[4] 翻訳前のラベルをキー、翻訳後のラベルをプロパティとして Datastore に書き込む
下図のグラフはDatastore でキャッシュを行った場合の月額料金比較になります。(※2)
このグラフを見てみると、ヒット率が 0% の時点ではキャッシュ有り、キャッシュ無しではほぼおなじ料金(実際にはキャッシュ有りのほうが Datastore の料金分、$0.18 ほど高い)ですが、ヒット率が高くなるにつれて料金が比例して安くなっていき、ヒット率 100% の時点ではほぼ料金がかからないことがわかります(※2)。また、動画から取得されるラベルは基本的には名詞なので、キャッシュした単語に引っかかりやすいと考えられるので、ヒット率は高くなり料金は低くなるでしょう。
※2 … Datastore の無料枠は無視した料金を算出しています。実際には Datastore には無料枠があるので、検出されるラベル数によっては $0/月 ということも十分考えられます。
まとめ
Video Intelligence API を始め、Vision API や Speech API などの学習済み API の認識精度は非常に高く、今後も精度はどんどんよくなっていくことは間違いないと思います。しかし、ラベルの日本語化には対応していないため、活用するための障壁になっていた方や、Translation API と組み合わせて利用していた方も多かったのではないでしょうか?
今回の例では 15000文字/月 の料金で計算してみましたが、一日の動画解析数やラベルの平均文字数が増加すれば、Translation API の利用料金も増加してしまいます。
ですが、今回紹介した Datastore と組み合わせた構成にすることで、最初こそ Datastore に登録されているラベル数が少ないため、Translation API の料金がかかってしまうかもしれませんが、Datastore の中身が充実すればするほど料金を抑えることが出来ます!!
ぜひみなさんも今回のような構成で GCP の学習済み API を活用してみてください!!
※ 弊社ではクラウドエース(Cloud Ace)というGCPの導入・運用支援サービスを提供しておりますので、ご興味のある方はこちらまでお問い合わせください。GAEに限らず、あらゆるGCPサービスのサポートが可能です。