Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

3

Slide 4

Slide 4 text

4

Slide 5

Slide 5 text

5

Slide 6

Slide 6 text

  コンテンツ開発チーム 6

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

  まとめ 20

Slide 21

Slide 21 text

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