Upload
amayaw9
View
382
Download
1
Embed Size (px)
Citation preview
ニコニコの人気動画からダイジェストを編集・作成する
Hadoopアプリケーション
2
背景
学生はとにかく忙しい– 趣味(プログラミング, 麻雀, マンガ...)– アルバイト, インターンシップ– 飲み会– 研究, 授業出席, レポート
● ナニかしら捗らせることはできないだろうか?
3
ナニかしら...
4
目的
大量の動画を解析して高速にダイジェストを編集・作成するアプリケーションの開発
5
つまりは...
6
肌色検出して
7
1クール分のアニメから
8
水着回のみの
9
ダイジェストを生成したい
10
なぜニコニコ動画なのか?– 動画取得APIが公開されている– 大量の動画が投稿されている– 著作権についての問題は無いはず
ニコニコ動画
11
Hadoopを用いる意義は?– ダイジェスト動画を作ろうとすれば大量の動画
ファイルを編集する必要がある– 各動画におけるダイジェスト抽出処理は独立なの
で並列分散可能
Apache Hadoop
12
設計①
実装すべきプログラム● 動画取得スクリプト
– 動画取得APIを叩く● mapper.rb
– 肌色検出・動画切り出し● reducer.rb
– 動画連結・ダイジェスト動画生成
13
設計②
工夫した所– Mapper/Reducer間の入出力は'\t'を区切り文字
にして受け渡す● KEY'¥t'VALUE
– 動画データ(ストリーム)の途中に'¥t'が混入してしまうかも
● HDFSで入出力を迂回– 切り出しを完了した動画ファイル名をKEYで渡す
14
概要図
HDFS HDFS
mapper
mapper
mapper
reducer
mapper
batch
15
HDFS HDFS
mapper
mapper
mapper
reducer
mapper
batch
ニコニコ動画から動画を所得動画をアップロード
16
動画取得スクリプト● 入力:インライン引数から検索キーワード取得
● 処理:ニコニコ動画から人気動画を取得– 検索の上位50~100とか– 動画のエンコードをMP4に揃える
● ImageMagic
● 出力:大量の動画をファイル出力
17
HDFS HDFS
mapper
mapper
mapper
reducer
mapper
動画からサムネ検出動画を切り出す
batch
18
mapper.rb● 入力:担当するファイル番号で取得
● 処理:ダイジェスト動画の生成– 肌色検出(ヒストグラム算出→スコア計算)– 動画分割
● FFmpeg
● 出力:ダイジェスト動画のファイル番号
19
HDFS HDFS
mapper
mapper
mapper
reducer
mapper
動画の連結ダイジェストの生成
batch
20
reducer.rb● 入力:生成されたダイジェストの番号を取得
● 処理:ダイジェスト動画の連結– 動画連結
● MP4Box
● 出力:結果を出力(動画はHDFSへ)
21
予備実験
ファイルの数を増やして掛かる処理時間を計測– timeコマンド(real time)– 同一ファイルについて処理
● MP4ファイル11979374バイト● JPGファイル5405バイト
– 比較対象(逐次処理 vs 16並列処理)
22
実験結果
23
評価
動画数100のとき● 入力データ量
– 入力ファイル1組あたり 11984779バイト– 11984779 × 100 バイト≒ 1.2 ギガバイト
● 処理時間の比較– ypc0600 : Hadoop = 3357.415 : 38.313– 87倍速くなった
24
まとめ
考察
Hadoopによって動画解析でもディスクIOを分散させてCPU資源を活かすことは十分に可能
→ やったぜ!!
今後
“人物検出”と”肌色検出”精度とか改善したい
【https://github.com/amayaw9/MovieExtractor】
25
ご清聴ありがとうございました。