LoginSignup
10
9

More than 5 years have passed since last update.

YouTube動画を静止画に変換して機械学習のマエショリスト

Last updated at Posted at 2016-02-13

機械学習の元データに大量の静止画が欲しい

機械学習の元データに大量の静止画が欲しいってケースがあるのですが、画像検索だとそんなに量がないんですね。なので、動画から静止画を切り出すことで静止画を大量に入手する。相手はコンピュータなので、ちょっとでもアングルが変わると、そりゃ新しい画像として学習しなおしてくれるに違いないと。

YouTubeの動画のダウンロード

youtube-dl というツールがあるので、それを使います。

インストール

brew install youtube-dl

Pythonとかffmepegとかが依存モジュールっぽいです。

youtube-dlは、ダンロードする前に、「この動画はどの形式でダウンロードできるかねー」ってことを調べることができます。

$ youtube-dl -F https://www.youtube.com/watch?v=Gwsa09JWoac
[youtube] Gwsa09JWoac: Downloading webpage
[youtube] Gwsa09JWoac: Extracting video information
[info] Available formats for Gwsa09JWoac:
format code extension resolution  note 
249         webm      audio only  DASH audio , opus @ 50k
250         webm      audio only  DASH audio , opus @ 70k
171         webm      audio only  DASH audio , audio@128k
140         m4a       audio only  DASH audio , m4a_dash container, aac  @128k
251         webm      audio only  DASH audio , opus @160k
160         mp4       144p        DASH video , video only
133         mp4       240p        DASH video , video only
134         mp4       360p        DASH video , video only
135         mp4       480p        DASH video , video only
136         mp4       720p        DASH video , video only
137         mp4       1080p       DASH video , video only
264         mp4       1440p       DASH video , video only
266         mp4       2160p       DASH video , h264, video only
17          3gp       176x144     
36          3gp       320x240     
5           flv       400x240     
43          webm      640x360     
18          mp4       640x360     
22          mp4       1280x720    (best)

一番したに「best」ってのがあって、それが一番「おすすめ」ってことです。1280×720の解像度ですね。解像度表記の1080pは縦の解像度が1080なのでもっと解像度が高い。ただし、断りとして「video only」とあるので音声はついてない。ちなみにサンプルは、少女時代とKARAとGirlsDayの動画です。

ここではちょっとだけ気合を入れて、1080pでダウンロードしてみます。

$ youtube-dl -f137 https://www.youtube.com/watch?v=Gwsa09JWoac

-f の後に先ほどのフォーマット一覧に出てきたIDを指定して、YouTubeのファイル名を入れます。

これで、ローカルにダウンロードされますが、8分の動画で518MBなのでかなり大きなデータ。かなりの大きさですね。

動画から静止画を切り出すのはffmepg

$ ffmpeg -i 動画ファイル.mp4  -r 1 -f image2 %06d.jpg

-r は一秒間に切り出す枚数
-f image2 %06d.jpg はjpeg形式で、000001.jpgを連番で書き出しなさいよ

これで、ズラーっと静止画ができあがり。

スクリーンショット 2016-02-13 17.51.51.png

あとは、これを、OpenCVにかけて「ひとが写ってる」などの判定をしながら無駄な写真を排除したりするんだけど、それはまた今度。

10
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9