keix1の日記

共有用ブログ

【文献調査】SiamMask: Fast Online Object Tracking and Segmentation: A Unifying Approach

読んだもの

paperswithcode.com

youtu.be

GitHub: foolwood/SiamMask: [CVPR2019] Fast Online Object Tracking and Segmentation: A Unifying Approach

2019年5月公開

概要

  • 任意のオブジェクトのトラッキング (visual object tracking, VOT)+セグメンテーション (video object segmentation, VOS)
  • 自分でbounding boxを設定するとそのオブジェクトを追従してくれる→classのわからない未知のバイナリ画像を追える
    • 青→自分で設定したbounding box
    • 赤→ECOという従来手法
    • 緑→提案するSiamMask

f:id:keix1:20200602223846p:plain
SiamMaskComparison

  • 速い
    • 手元のMacのCPUで1.6fps(リアルタイム)
    • オフライン学習だから速い
      • 事前に学習し未知のデータに対して処理
      • 実行中の更新がないため紛らわしいものは間違える可能性あり
  • ラッキングの精度も執筆時点で最新のものより良い(Conclusionより)

手法の理解

SiamMaskの構成図

f:id:keix1:20200603004628p:plain
SiamMaskMethod

  • 従来と比べhの部分を拡張してmaskを出力

  • Fully-Convolutional Siamese Networksを使っている

    • Siamese Networksで同じ場面を表す大小2枚の画像を学習することでObject Trackingを実現
    • Siamese Networksはアーキテクチャ、中身のモデルはどんなネットワークにも変更可能

f:id:keix1:20200603004736p:plain
Siamese

  • Siameseの学習アルゴリズム
    • クラスが同じ場合は距離を近づけ、違う場合は距離を離すよう損失関数をつくる
      • ばねと同じ原理→フックの法則

f:id:keix1:20200603004836p:plain
Siamese2

  • 今回の手法はおそらく
    • 従来 :オブジェクトの位置をつくれるようSiameseしてる
    • 本手法:セグメンテーションするMaskをつくれるようSiameseしてる

試しにやってみた

実行環境

Demo.py実行時の注意点

  • PYTHONPATHを設定する
    • {yourlocation}/SiamMask/toolsを設定しました
  • スペースを押すと再生開始
  • --cpuをつけてCPUモードで実行できる

顔を選択したとき

youtu.be

文字を選択したとき

youtu.be

うまくいっていないところ

  • 足のトラッキング中、足が重なったりすると判別できずもう片方の足を追従してしまう
  • ラケットのトラッキングは体と重なっているところから開始しているせいか難しかった
    • 体と離れた状態から選択するなら良くなるかもしれない

所感

  • 動画中いつでもユーザーが自分でターゲットを設定できるので、アプリケーションの応用が無限に効きそう
    • 刑事「あの犯人を追え!」→ハッカー「了解」
  • セグメンテーションできるので、オブジェクトの状態を推定するための前処理として使えそう
    • 背景に関わらず物体のうごきや色に注目できる
  • 追従できるので人物の識別に使える?
    • Aさん、Bさん

関連知識

英単語

  • fundamental: 基礎的な
  • survaillance: 監視
  • subsequent: その後に起こる
  • intersection: 交差点
  • arbitrary: 任意の
  • consequence: 結果
  • understandably: 当然だが
  • operablity: 操作性
  • agnostic: 不可知論者
  • schematic: 概要を示した、図式の
  • denote: であることを示す
  • contrasive: 対称的な