フレクトのクラウドblog re:newal

http://blog.flect.co.jp/cloud/からさらに引っ越しています

AWS / Azure / GCP の動画コンテンツモデレーションサービスの比較

みなさんこんにちは。エンジニアの佐藤です。今回は主要パブリッククラウドのコンテンツモデレーションサービスについて書かせていただきたいと思います。

筆者の気付き

AIサービスのインテグレーション案件を手がけるようになって筆者が気が付いたこととして「現時点で既に、データはいたるところに蓄積されている」という現実があります。今時は日常のビジネス活動のほとんど全てがITインフラ上で行われており、結果として日々莫大なデータが吐き出され、「とりあえず保存」されている。もちろんそれらのほとんどは人知れず溜め込まれているのですが、何かのご縁で目にする機会があると、その量の多さに驚く場合がほとんどです。

それらのデータの中で、最も情報量が多いのは、動画ではないでしょうか。動画は静止画のかたまりです。毎秒数枚から数十枚。数秒間で100枚前後もの静止画情報がひとつのファイルの中に入っています。しかもこの動画、評価のためには再生して視聴するしかありません。 見ている間中、視覚と聴覚が拘束されます。テキストと違ってキーワード検索で要所だけ、というわけにも行きません。

そこで人間以上の速さと正確さで動画を「 代わりに見てくれる 」サービスが期待を集めています。主要パブリッククラウドサービスでも、以下のようなサービスが提供されています。

今回はこれらの「動画コンテンツモデレーション機能」を試し、相互比較してみたいと思います。

コンテンツモデレーションとは

筆者の理解では、コンテンツモデレーションとは、要するに世間通念上まずいコンテンツが公開されてブランドが毀損する事態を回避する活動のことです。今回取り扱うクラウドサービスでは、この活動のうち、まずい動画コンテンツを検出する機能が提供されています。

検出可能なまずいコンテンツとはどういったものでしょうか?それらは各サービスの以下の公式サイトに明記されています。

また同時に、GAとなっているRekognition VideoとCloud Video Intelligenceについては「検出は完全ではない」と免責されています。結局のところ、どの程度使えるかは、事前に試して勘所を掴む必要があるようです。

試してみる

では実際に試してみましょう。以下の2コンテンツを用意しました。

  • gEmgOGUA4_01.mp4
  • test01_06.mp4

詳しくは申し上げられませんが、いずれも60秒間のビデオクリップで、後者はより程度がひどいものとお考えください。

使い方

Rekognition Video / Video Indexer / Cloud Video Intelligenceで使い方のフローはほとんど同じです。

  • 対象となる動画を然るべき場所にアップロードする。
  • アップロード先を指定して解析作業をスタートする。
  • 解析作業の終了を待機して、結果を取得する。

具体的な手順は各サービスの公式サイトをご参照いただきたく、ここでは割愛させていただきます。

Rekognition Videoの結果

Rekognition Videoでは、解析結果は以下のようなJSONで返されます。

{
    "VideoMetadata": {
        "FrameHeight": 720,
        "FrameRate": 29.970029830932617,
        "Codec": "h264",
        "FrameWidth": 1280,
        "Format": "QuickTime / MOV",
        "DurationMillis": 60027
    },
    "ModerationLabels": [
        {
            "ModerationLabel": {
                "Name": "Suggestive",
                "Confidence": 67.57727813720703,
                "ParentName": ""
            },
            "Timestamp": 14381
        },
        {
            "ModerationLabel": {
                "Name": "Female Swimwear Or Underwear",
                "Confidence": 75.81449127197266,
                "ParentName": "Suggestive"
            },
            "Timestamp": 14581
        },
        ...

シグナルの内容と、検出された時点が延々と続いています。1枚のフレームで複数のシグナルが検出されることも多く、Pretty JSONで表示した場合の行数は数千行にもなります。

Video Indexerの結果

Video Indexerは現時点では無料プレビューとなっており、今後仕様が変わる可能性があります。現時点の解析結果のうち、コンテンツモデレーションに関連するのは以下の部分です。

{
    ...
    "breakdowns": [{
        ...
        "insights": {
            "contentModeration": {
                "adultClassifierValue": 0.90809,
                "racyClassifierValue": 0.9975,
                "bannedWordsCount": 0,
                "bannedWordsRatio": 0.0,
                "reviewRecommended": false,
                "isAdult": false
            }
        },
        ...
    }],
    ...
}

こちらはビデオクリップ全体の総合評価で、シグナル検出がいつだったのかという情報は書かれていません。

Cloud Video Intelligenceの結果

{
  "name": "asia-east1....",
  ...
  "response": {
    "@type": "type.googleapis.com/google.cloud.videointelligence.v1.AnnotateVideoResponse",
    "annotationResults": [
      {
        "inputUri": "/a_bucket/gEmgOGUA4_01.mp4",
        "explicitAnnotation": {
          "frames": [
            {
              "timeOffset": "0.746915s",
              "pornographyLikelihood": "UNLIKELY"
            },
            {
              "timeOffset": "1.646874s",
              "pornographyLikelihood": "UNLIKELY"
            },
            ...

こちらはRekognition Videoのように時系列順の評価ですが、シグナルは1種類だけです。また、シグナルの程度はLikelihoodとして5段階にまとめられています。それでもPretty JSONで表示した場合の行数は300行程度になりました。

コンテンツ別に結果を比較してみる

ご覧の通り、 いずれのサービスも結果はかなりの大きさのJSONです。 特にRekognition Videoは複数種類のシグナルそれぞれについてConfidenceが出力されるので、JSONを眺めているだけでは全体像を評価することはできません。そこで以下ではRekognition VideoとCloud Video Intelligenceについては、時系列で出力された結果をグラフにプロットして検討します。

gEmgOGUA4_01.mp4

Rekognition Videoの結果をグラフにプロットすると以下のようになりました。

f:id:masashi-sato-flect:20180504212755p:plain

Cloud Video Intelligenceは以下のようになりました。

f:id:masashi-sato-flect:20180504212840p:plain

比較してみると、t = 18s, 30s, 43sのピークが共通していますが、t = 50sについては意見が分かれているようです。Cloud Video Intelligenceで鋭いピークが報告されている一方、Rekognition Videoでは各種シグナルが入り乱れ、はっきりしません。どちらがよりコンテンツの内容を反映していると言えるのでしょうか?主観的判断ですが、筆者はCloud Video Intelligenceの方が正しい判断を下していると思います。ここでRekognition Videoが指摘したシグナルのいくつかは、コンテンツの内容を誤認しており、残念なところです。

とはいえ全体的には、 どちらもコンテンツ映像の時系列変化を正しく捉えており、評価は信頼できると筆者は感じました。

最後にVideo Indexerですが、以下のような結果となっています。

contentModeration
    .adultClassifierValue: 0.90809
    .racyClassifierValue:  0.9975

つまり2つの評価指標両方で、「ほぼ確実に該当」というわけです。これもまぁ、時系列変化のピーク値を基準に判断したのなら、妥当だと言えます。

test01_06.mp4

今度はより「程度がひどい」方の動画の解析結果です。

Rekognition Videoの結果をグラフにプロットすると以下のようになりました。

f:id:masashi-sato-flect:20180504212908p:plain

Cloud Video Intelligenceは以下のようになりました。

f:id:masashi-sato-flect:20180504212923p:plain

一見してわかりますが、Cloud Video Intelligenceのメーターが振り切れ、最高値に張り付いています。 Rekognition Videoの方はどうでしょうか。先ほどの gEmgOGUA4_01.mp4 とはシグナル構成が大幅に変わり、また60秒のビデオクリップ全体で多数検出されています。この test01_06.mp4 は gEmgOGUA4_01.mp4 より程度がひどい、という実状をそのまま反映する結果です。 Rekognition Videoの結果を詳細に見ていくと、前半30秒かけて徐々に高いConfidenceに進展している緑のシグナルと、t = 20sに大きなピーク、t = 43s, t = 55sに中程度のピークがある黄色のシグナルがあります。これらはコンテンツの内容をかなり具体的に反映しており、Rekognition Videoの高い認識性能を示していると思います。

では、Video Indexerはどうだったのでしょうか。なんとこちらは、エラーになってしまいました。以下のような内容です。

f:id:masashi-sato-flect:20180504213704p:plain

残念ながら、未だPREVIEWなので、その目的に準拠しないということで拒否されてしまったようです。程度がよりひどいということを認めてくれたということではあるのですが、残念です。

まとめると、どうか

結論として、現在GAリリースされている Rekognition Video と Cloud Video Intelligence は、公式サイトに記載されているコンテンツモデレーション機能ついては十分な完成度があると筆者は思います。クロかシロかだけが知りたければ Cloud Video Intelligence を、より詳細な内容が知りたければ Rekognition Video を利用すれば良いのではないでしょうか。

モデレーション以外の機能にも期待

動画を「代わりに見てくれる」サービスのこれらの機能は、モデレーションだけではありません。また、現在も鋭意開発されていることは間違いありませんから、今後多数の機能が追加されていくのではないでしょうか。私もできるだけ多くの機能を常日頃からウォッチし、インテグレーションの機会を探し続けたいと思います。

最後までお読みいただき、ありがとうございました。