$30 off During Our Annual Pro Sale. View Details »

みてねのレコメンドを支える技術 / Building 1s Movie of Mitene

_sobataro
September 05, 2018

みてねのレコメンドを支える技術 / Building 1s Movie of Mitene

_sobataro

September 05, 2018
Tweet

More Decks by _sobataro

Other Decks in Technology

Transcript

  1.   みてねのレコメンドを
    支える技術
    2018-09-05 みてねの Meetup #2 for サーバーサイド/SRE
    みてね事業部 開発グループ コンテンツ開発チーム
    松石浩輔 (@_sobataro )

    View Slide

  2. 自己紹介
    ● 松石浩輔 (@_sobataro)
    ● 2016年新卒
    ○ 1年目: みてねエンジニア (アプリ、サーバ、インフラ)
    ○ 2年目〜: みてねコンテンツ開発エンジニア (サーバ、インフラ)
    ● 趣味: 旅行、写真など
    2

    View Slide

  3. 3

    View Slide

  4. 4

    View Slide

  5. 5

    View Slide

  6.   コンテンツ開発チーム
    6

    View Slide

  7. コンテンツ開発チームとは
    ● 機械学習技術をもちいた
    自動生成系コンテンツを
    研究開発・運用するチーム
    ● エンジニア3人
    ○ 研究寄り 1名
    ○ 開発寄り 2名
    7

    View Slide

  8. コンテンツ開発チームの提供する機能
    1秒動画
    ● 画像・動画を
    1秒ずつ繋いだ
    ダイジェスト動画
    自動提案フォトブック
    ● 1ヶ月分の画像から
    22枚を選んで提案
    DVD「1枚にまとめる」
    ● 1年分の動画から
    ディスク1枚 (50分)
    ぶんを提案
    8

    View Slide

  9. コンテンツ開発チームの仕事
    1. 企画・研究
    ● 機械学習技術により
    新しい価値を提供できないか?
    ● 最新の研究成果を
    サービスに活用できないか?
    2. 要件定義
    ● プロダクトオーナ、デザイナ
    などと要件を調整する
    ● 実現可能性とのバランス
    3. 設計
    ● アーキテクチャを検討
    ● チーム内外でレビュー
    4. 実装
    ● Ruby, Python で実装
    ● チーム内外でレビュー
    5. 運用
    ● 監視、リファクタなど
    9

    View Slide

  10.  コンテンツ自動生成のしくみ
    10
    〜1秒動画のケース〜

    View Slide

  11. コンテンツ自動生成のしくみ
    そもそも1秒動画とは
    ● 画像・動画を1秒ずつ繋いだダイジェストムービー
    ● 3ヶ月に1本を自動生成して配信
    ● サンプル動画
    1秒動画の生成・配信処理
    1. 生成対象家族の抽出
    2. 素材となる画像・動画の選択
    3. 動画ファイルの生成
    4. 配信
    11

    View Slide

  12. 1秒動画の生成・配信処理
    1. 生成対象家族の抽出
    2. 素材となる画像・動画の選択
    3. 動画ファイルの生成
    4. 配信
    12

    View Slide

  13. 1秒動画の生成・配信処理 〜 1. 生成対象家族の抽出
    ● 今日はどの家族に1秒動画を生成するか抽出
    ● アプリサーバの DB を BigQuery に転送しておき SQL クエリ一発で抽出
    ○ クオリティの高い動画が生成できる家族を優先的に抽出
    ○ アプリの対応バージョンを持っていない家族は除外
    ○ などの細かい条件あり
    ○ 数万家族を1分以内で抽出
    13

    View Slide

  14. 1秒動画の生成・配信処理
    1. 生成対象家族の抽出
    2. 素材となる画像・動画の選択
    3. 動画ファイルの生成
    4. 配信
    14

    View Slide

  15. 1秒動画の生成・配信処理 〜 2. 素材となる画像・動画の選択
    ● みてねにアップロードされる画像・動画全件 (6,900万件/月) を事前に解析
    ○ 顔検出、人物検出、BGM 検出、壊れ動画検出、……
    ● 解析結果に基づく独自のレコメンドロジック
    ○ 顔がよく写っている、コメントが盛り上がっている、などなど
    ○ プロダクトオーナと点数付けをチューニング
    15
    顔検出: 0件
    人物検出: 0件
    コメント: 0件
     ➔ △点
    顔検出: 2件
    人物検出: 2件
    コメント: 3件
     ➔ ◯点
    顔検出: 1件
    人物検出: 1件
    コメント: 0件
     ➔ ◻点

    View Slide

  16. 画像・動画解析基盤 (現行構成)
    ● 画像・動画解析部分を microsevice として切り出している
    16

    View Slide

  17. 画像・動画解析基盤 (構築中)
    ● RDB, Redis などインフラを分離してスケーリングを容易に
    ● SageMaker の導入
    17

    View Slide

  18. 1秒動画の生成・配信処理
    1. 生成対象家族の抽出
    2. 素材となる画像・動画の選択
    3. 動画ファイルの生成
    4. 配信
    18

    View Slide

  19. 1秒動画の生成・配信処理
    3. 動画ファイルの生成
    ● ffmpeg でひたすら編集 (切り出し、結合、エフェクトなどなど)
    ● transcoder: 動画編集用 microservice
    ○ Amazon Elastic Transcoder みたいなやつ
    ○ DVD の生産にも利用
    4. 配信
    ● 現地時間のよき時間にプッシュ通知を飛ばして配信
    19

    View Slide

  20.   まとめ
    20

    View Slide

  21. まとめ
    ● コンテンツ開発チーム =
    機械学習技術をもちいた自動生成系コンテンツを研究開発・運用するチーム
    ● みてねではコンテンツ自動生成・自動提案のため ML 技術を活用
    ○ ありふれたもの: 顔検出、人物検出など
    ○ 独自の解析項目: BGM 検出、壊れ動画検出など
    ● 大規模 (6,900万件/月) な画像・動画解析のため、
    自前の解析基盤を構築・運用
    ○ メインのアプリサーバから基盤を分離中
    21

    View Slide