Upgrade to Pro — share decks privately, control downloads, hide ads and more …

動き検出勉強会資料

 動き検出勉強会資料

過去の動き検出勉強会の資料をリメイクしました。

Avatar for Minoru Natsutani

Minoru Natsutani

June 06, 2025
Tweet

More Decks by Minoru Natsutani

Other Decks in Technology

Transcript

  1. 5 ソフトウェアとFPGAの比較 メリット デメリット 速い ・システムが高価 ・消費電力 ・物理的な大きさ ・開発に時間がかかる ・デバッグがやりにくい

    ・データの移動が面倒 ・開発環境が有料 ・正しく使わないと壊れる ・壊れたときのリカバリが高価
  2. 12 動き検出の評価関数 評価関数としてSAD、SSDが使われる。どちらも0なら画像は完全に一致している。 画像の一部を重ねた状態で、画素の差分を取る。 SAD(Sum of Absolute Difference):各画素の差分の絶対値の和。 SSD(Sum of

    Squared Difference):各画素の差分の二乗和 動き検出という点ではあまり精度に差がないこと、計算量が少ないことよりSADが使われるこ とが多い。統計学的にはSSDの方が最小二乗和を求めているのでSSDが好まれるときもある。 E 𝑤 = 1 2 ෍ 𝑑𝑛 − 𝑦(𝑥) 2 Deep learning の誤差関数 と同じ
  3. 22 荒い検索 ・縮小画像での動き検出 Coarse-to-fine search、画像ピラミッド ・前回の動き検出の結果を使う ・周辺の信頼できる動きベクトルを使う 動き検出できる 動き検出できない 動き検出できる

    荒い検索を使っておおまかな動きベクトルを先に計算しておく ・SW実装(勾配法)の場合は、その値が初期値の候補になる ・HW実装(全探索)の場合はそのまま検索範囲の原点とする実装が多い →HW実装の場合、特定の領域を取り出すのが面倒
  4. 23 画像ピラミッド ¼にした画像で動 き検出を行う その結果を初期値にし て1/2にした画像で動 き検出を行う 最後に元の解像度で動 き検出を行う https://ja.wikipedia.org/wiki/%E3%83%94%E3%83%A9%E3%83%9F%E3%83%83%E3%83%89

    画像を積んだ状態がピラミッドに見 えるから画像ピラミッド。 動き検出は上から下へ処理してい くが、Deep Learningは下から上に 処理していく。Conv→Maxpool
  5. 31 OpenCVで動き検出を早くするオプション cv2.optflow.createOptFlow_DualTVL1 // パラメータ調整(速度優先) optical_flow->setTau(0.25); optical_flow->setLambda(0.10); optical_flow->setTheta(0.2); optical_flow->setScalesNumber(3); //

    デフォルトは5 optical_flow->setWarpingsNumber(1); // デフォルトは5 optical_flow->setIterations(10); // デフォルトは30 optical_flow->setEpsilon(0.03); // デフォルトは0.01 optical_flow->setScaleStep(0.5); ScalesNumberが初期値を決 めるためのピラミッドの段数。 小さい方が計算量少ない Iterations 勾配法の反復の最大数 小さいとワーストが減る Epsilon ループの終了条件。大きい方 が早く終わる。
  6. 32 OpenCVで動き検出を早くするオプション cv2.optflow.createOptFlow_DualTVL1 WarpingsNumber https://www.ipol.im/pub/art/2013/26/ 上手くwarpし た時 上手く行って ないwarp 一般的なWarp(アフィン変換)では

    なく、画素を物体の正しい位置に 寄せるような動きをする。数を増や せば上手くいくが、計算コストが発 生する。 とりあえず小さくしておけば早い。 ここはChatGPTに聞いたので、 興味ある人は自分でしっかり調 べてください。