20
映映映映映映映映映映映 ffmpeg, dense trajectories @jellied_unagi

映像処理タスクのためのffmpeg, dense trajectories

Embed Size (px)

Citation preview

Page 1: 映像処理タスクのためのffmpeg, dense trajectories

映像処理タスクのためのffmpeg, dense

trajectories@jellied_unagi

Page 2: 映像処理タスクのためのffmpeg, dense trajectories

FFmpeg (https://www.ffmpeg.org/)• 映像処理のためのソフトウェア• 映像処理系のタスク( action recognition とか…)でよく使う• 映像→画像の切り出し

• 映像に字幕をつけたりも…• 今回は割愛

Page 3: 映像処理タスクのためのffmpeg, dense trajectories

映像→画像

# ffmpeg -i [入力映像 ] 出力フォーマットffmpeg -i sample1.mp4 imgs/%05d.ppm

Page 4: 映像処理タスクのためのffmpeg, dense trajectories

便利機能 : キーフレーム切り出し• どんな映像なのかざっと見たいときに便利

# -vf: フィルタ# -vsync vfr フレームの timestampが重複しないようにするffmpeg -i sample1.mp4 \-vf "select=eq(pict_type\,I)" -vsync vfr \kfs/%05d.ppm

Page 5: 映像処理タスクのためのffmpeg, dense trajectories

便利機能 : キーフレーム切り出し• どんな映像なのかざっと見たいときに便利

# montageは imagemagickについてきますmontage kfs/*.ppm kfs.jpg

Page 6: 映像処理タスクのためのffmpeg, dense trajectories

画像→映像

# - c:v –映像コーデックの指定 pix_fmtも必ず指定ffmpeg -i ’kfs/%05d.ppm' -c:v libx264 \-pix_fmt yuv420p kfs.mp4

Page 7: 映像処理タスクのためのffmpeg, dense trajectories

便利機能 : 正規表現入力

ffmpeg -pattern_type glob -i 'imgs/*[0,5].ppm' \-c:v libx264 -pix_fmt yuv420p sample_05.mp4

Page 8: 映像処理タスクのためのffmpeg, dense trajectories

映像のダウンサイズ

ffmpeg –i sample2.mov –s 320x180 imgs2/%05d.ppm

Page 9: 映像処理タスクのためのffmpeg, dense trajectories

Image quality の罠• ダウンサイズの際には, q:v 1 をつけるか非圧縮に

# high quality jpegffmpeg -i sample2.mov –s 320x180 –q:v 1 \hq/%05d.jpg

Page 10: 映像処理タスクのためのffmpeg, dense trajectories

Framerate の罠• Framerate は入力指定の前に指定

# 1ffmpeg -framerate 15 -i 'numbers/%02d.jpg' \-c:v libx264 -pix_fmt yuv420p numbers.mp4

# 2ffmpeg -i 'numbers/%02d.jpg' -framerate 15 \-c:v libx264 -pix_fmt yuv420p numbers.mp4

Page 11: 映像処理タスクのためのffmpeg, dense trajectories

Framerate の罠

入力指定の前に指定 入力指定の後に指定

Page 12: 映像処理タスクのためのffmpeg, dense trajectories

Framerate の罠• 元データと異なる framerate で画像を切り出すと…

15fps -> 10fps 15fps -> 30fps

Page 13: 映像処理タスクのためのffmpeg, dense trajectories

Dense Trajectories [Wang+, ICCV2013]• Action recognition で標準的に使われる特徴量• 短い軌跡を大量生成,軌跡上で

HOG, HOF などを計算

Page 14: 映像処理タスクのためのffmpeg, dense trajectories

Dense Trajectories [Wang+, ICCV2013]• https://lear.inrialpes.fr/people/wang/improved_trajectories• DenseTrackStab.h に #include <libgen.h> を追加

# dense trajectory descriptors を抽出./improved_trajectory_release/release/DenseTrackStab \sample/imgs_jpg_high/%05d.jpg > dtfeat.dat

Page 15: 映像処理タスクのためのffmpeg, dense trajectories

Dense Trajectories [Wang+, ICCV2013]• よくあるパイプライン

Dense trajectories を抽出( N x 435 次元) (Incremental) PCA で圧縮( k=64 )Fisher vector の GMMを学習( k= 128 or

256 )

Page 16: 映像処理タスクのためのffmpeg, dense trajectories

データの読み出し〜 PCA の学習• Python だと pandas + scikit-learn あたりでいける 1 番目はフレーム番号(いらない)最終番目は nan(いらない)

Page 17: 映像処理タスクのためのffmpeg, dense trajectories

Fisher vector のための GMM 学習• INRIA の YAEL ライブラリが使いやすい• https://gforge.inria.fr/projects/yael/

• Mac で python interface を使う際は注意• pythoncflags=-I/Users/ なまえ /anaconda/include/python2.7• useopenmp=no

./configure.sh --enable-numpymake

Page 18: 映像処理タスクのためのffmpeg, dense trajectories

Fisher vector のための GMM 学習• ynumpy をインポートして使う

Page 19: 映像処理タスクのためのffmpeg, dense trajectories

Fisher vector の計算• データ→ PCA で圧縮→ ynumpy.fisher で計算できる

Page 20: 映像処理タスクのためのffmpeg, dense trajectories

まとめ• 映像 -> 画像は ffmpeg• Action recognition を手っ取り早くやるには dense trajectories (*1• Fisher vector 使うなら INRIA yael (*2

• (*1 最近は two-stream CNN もアツい• けど official には pretrained model が公開されていない

• http://wanglimin.github.io/tdd/index.html ここにある• (*2 代替案としては VLFeat とか