機械学習の元データに大量の静止画が欲しい
機械学習の元データに大量の静止画が欲しいってケースがあるのですが、画像検索だとそんなに量がないんですね。なので、動画から静止画を切り出すことで静止画を大量に入手する。相手はコンピュータなので、ちょっとでもアングルが変わると、そりゃ新しい画像として学習しなおしてくれるに違いないと。
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を連番で書き出しなさいよ
これで、ズラーっと静止画ができあがり。
あとは、これを、OpenCVにかけて「ひとが写ってる」などの判定をしながら無駄な写真を排除したりするんだけど、それはまた今度。