このソリューションでは、スケーラブルなシステムのデプロイに使われる Google Cloud Platform(GCP)サービスについて説明します。このサービスは Cloud Video Intelligence と Cloud Vision API を利用して画像と動画の送信をフィルタリングします。
ソーシャル マーケティング キャンペーンでは、消費者が作成した画像や動画の提出を求めることがよくあります。ほとんどの場合、このようなキャンペーンでは、募集した動画や画像を一般公開されたキャンペーン ウェブサイトのコンテストへの投稿、商品の評価、またはユーザー作成コンテンツとして使用します。これらの大量の提出物を処理するには、かなりのリソースが必要となります。Cloud Video Intelligence と Cloud Vision API は、インテリジェントな画像と動画のフィルタリングを実装するスケーラブルかつサーバーレスな方法を提供し、提出物の処理をスピードアップさせます。Vision API ソリューションのセーフサーチ機能と Video Intelligence API の「不適切なコンテンツの検出」機能を使用すると、処理を続行する前に、安全でない、望ましくないコンテンツとして識別される画像や動画を除外できます。
このソリューションの実装方法を学習するために、以下のチュートリアルを実行してコードをデプロイすることができます。
コンセプト
ユーザーが作成した画像や動画を処理するアプリケーションの構築には、いくつかの特有の課題があります。
スケーラビリティ
キャンペーンの開始時に提出件数は急速に増加しますが、キャンペーンの終わりに近づくと提出件数はほぼゼロになります。このプロセスをサービスに組み込む場合は、ユーザーのアクティビティに応じてプロセスを増減する必要があります。
パフォーマンス
それぞれの画像や動画を処理する、効率的でインテリジェントなフローが必要です。アプリケーションは提出された大量の各動画や画像を効率よく保存し、処理する必要があります。
インテリジェンス
処理を行う前に、評価または審査を必要とする画像や動画の数を減らすと、効率が大幅にアップします。アプリケーションは各提出物を分類し、不適切と判断されたすべての提出物の処理を直ちに停止する必要があります。
アーキテクチャ
GCP を使用したスケーラブルかつインテリジェントな処理
GCP では、簡単な API 呼び出しを使用するトレーニング済みの機械学習(ML)モデルのメリットを活かした、スケーラブルなプラットフォームが提供されています。次の図は、画像や動画をインテリジェントに分類し、不適切な結果をフィルタで除外するシステムのアーキテクチャを示しています。
Cloud Storage
このアーキテクチャでは、すべてのコンテンツが Cloud Storage に保存されるため、耐久性の高いスケーラブルなオブジェクト ストレージが提供されます。Cloud Storage の便利な機能の 1 つは、Cloud Storage バケット内のイベントに基づいて通知メッセージを生成する機能です。この機能では、アップロードされたファイルごとにアクションを指定できます。アプリケーションがファイルを Cloud Storage にアップロードすると、通知メッセージにより処理がトリガーされます。
次の図は、Cloud Storage 通知メッセージの JSON ペイロードを示しています。
Cloud Pub/Sub
Cloud Pub/Sub は、スケーラブルで信頼性の高いメッセージング サービスを提供します。このアーキテクチャではコンテンツが Cloud Storage バケットにアップロードされると、システムで Cloud Pub/Sub 通知メッセージが生成され、構成された Cloud Pub/Sub トピックに送信されます。次に、Cloud Pub/Sub から Cloud Storage 通知メッセージが配信されます。アップロード機能を処理機能から切り離すことにより、Cloud Pub/Sub は実質的にアプリケーションをマイクロサービスベースのバックエンド アーキテクチャに分けています。
Cloud Functions
Cloud Functions は、Cloud Vision や Video Intelligence API などの高度な API と統合された、軽量のサーバーレス アプリケーション環境を提供します。さらに、Cloud Functions には BigQuery、Cloud Storage、Cloud Spanner、Cloud Datastore などのストレージ サービスも統合されているため、オンデマンド イベントの処理に便利です。
次の図は、intelligentcontentfileupload
トピックに送信された各メッセージに対して GCStoPubSub
Cloud Functions の関数をトリガーする Cloud Pub/Sub トピックを示しています。
バックエンド
Cloud Pub/Sub トピックをリッスンする一連の Cloud Functions により、バックエンド処理が提供されます。
- ファイルが Cloud Storage バケットにアップロードされるたびに、Cloud Pub/Sub トピックでメッセージが受信されます。
- バックエンド アプリケーションは各通知メッセージからクラウド ストレージの場所を解析し、コンテンツが画像か動画かを判断します。
- バックエンド アプリケーションは、ファイルが画像か動画かに応じて、Cloud Vision または Cloud Video Intelligence API を呼び出す Cloud Functions のペアに Cloud Pub/Sub メッセージを送信します。
- バックエンド アプリケーションは、API 呼び出し結果を使用して、ロゴ、ラベル、テキスト、セーフサーチの結果に基づいてコンテンツを分類します。
次の図は、各 Cloud ファンクションで実行される処理手順を示しています。この例では結果は BigQuery に保存されますが、任意の GCP データ ストレージ サービスに結果を保存できます。
フロントエンド
このアーキテクチャでは、画像と動画の処理結果は BigQuery に保存されます。GCP のスケーラブルな分析エンジンとして、BigQuery は、ペタバイト サイズのデータベースへのシンプルな SQL ベースのアクセスを提供します。BigQuery により、アプリケーションは、提出されたコンテンツのラベルを簡単かつスケーラブルな方法で分析できます。
データポータルには視覚的なダッシュボードがあり、機械学習 API で生成されたタグを使って送信されたコンテンツをフィルタリングできます。このタグを使用すると、データポータルのダッシュボード セット内のコンテンツを動的にフィルタリングすることが簡単にできます。
次の図は、BigQuery のリアルタイム データを使用したシンプルなデータポータルのダッシュボードを示しています。
追加のコンテンツが処理されて BigQuery に保存されると、ダッシュボードに変更が反映されます。コンテンツ、ラベル、または不適切なコンテンツの数でダッシュボードをフィルタリングできます。
次のステップ
- Cloud Functions を使ってみてください。
- Cloud Video Intelligence API を使ってみてください。
- Cloud Vision API を使ってみてください。
- GCP でウェブアプリを実行する方法についてのページをご覧ください。
- Google Cloud のその他の機能を試す。チュートリアルをご覧ください。