Upload
jellied-unagi
View
1.387
Download
3
Embed Size (px)
Citation preview
映像処理タスクのためのffmpeg, dense
trajectories@jellied_unagi
FFmpeg (https://www.ffmpeg.org/)• 映像処理のためのソフトウェア• 映像処理系のタスク( action recognition とか…)でよく使う• 映像→画像の切り出し
• 映像に字幕をつけたりも…• 今回は割愛
映像→画像
# ffmpeg -i [入力映像 ] 出力フォーマットffmpeg -i sample1.mp4 imgs/%05d.ppm
便利機能 : キーフレーム切り出し• どんな映像なのかざっと見たいときに便利
# -vf: フィルタ# -vsync vfr フレームの timestampが重複しないようにするffmpeg -i sample1.mp4 \-vf "select=eq(pict_type\,I)" -vsync vfr \kfs/%05d.ppm
便利機能 : キーフレーム切り出し• どんな映像なのかざっと見たいときに便利
# montageは imagemagickについてきますmontage kfs/*.ppm kfs.jpg
画像→映像
# - c:v –映像コーデックの指定 pix_fmtも必ず指定ffmpeg -i ’kfs/%05d.ppm' -c:v libx264 \-pix_fmt yuv420p kfs.mp4
便利機能 : 正規表現入力
ffmpeg -pattern_type glob -i 'imgs/*[0,5].ppm' \-c:v libx264 -pix_fmt yuv420p sample_05.mp4
映像のダウンサイズ
ffmpeg –i sample2.mov –s 320x180 imgs2/%05d.ppm
Image quality の罠• ダウンサイズの際には, q:v 1 をつけるか非圧縮に
# high quality jpegffmpeg -i sample2.mov –s 320x180 –q:v 1 \hq/%05d.jpg
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
Framerate の罠
入力指定の前に指定 入力指定の後に指定
Framerate の罠• 元データと異なる framerate で画像を切り出すと…
15fps -> 10fps 15fps -> 30fps
Dense Trajectories [Wang+, ICCV2013]• Action recognition で標準的に使われる特徴量• 短い軌跡を大量生成,軌跡上で
HOG, HOF などを計算
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
Dense Trajectories [Wang+, ICCV2013]• よくあるパイプライン
Dense trajectories を抽出( N x 435 次元) (Incremental) PCA で圧縮( k=64 )Fisher vector の GMMを学習( k= 128 or
256 )
データの読み出し〜 PCA の学習• Python だと pandas + scikit-learn あたりでいける 1 番目はフレーム番号(いらない)最終番目は nan(いらない)
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
Fisher vector のための GMM 学習• ynumpy をインポートして使う
Fisher vector の計算• データ→ PCA で圧縮→ ynumpy.fisher で計算できる
まとめ• 映像 -> 画像は 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 とか