物体追跡とは。さらにその中のMulti Object trackingについて解説
初めまして、みずぺーといいます。
このnoteを機に初めて私を知った方のために、箇条書きで自己紹介を記述します。
年齢:28歳
出身:長崎
大学:中堅国立大学
専門:河川、河川計画、河道計画、河川環境
転職回数:1回(建設(2年9か月)→IT系年収100万up(現職3か月))
IT系の資格:R5.4基本情報技術者試験合格💮、R5.5G資格
本日は物体検知の延長線上?にあると私の中では思っている物体追跡についてお話しできればと思います。
物体追跡とは
以下の三つから物体追跡は成り立っています。
画像中から、人を探す
人を探した後に、画像中のどこに移動したかを追跡(カルマンフィルター使用)
逃さずに追いかけた人の属性を推定(ハンガリアンアルゴリズム使用)
この三つです。
また画像中から人を探す処理を「検出」、追いかける処理を「追跡」と呼んでいます。
そこに属性の推定を加えた三つを総称して物体追跡が成り立っています。
また物体追跡タスクの中では画像の中で特定の物体か、複数の物体を追跡するかを定める。
Simple Object Tracking(画像中の1物体)
Multi Object Tracking(画像中の複数物体)
に分かれます。
本記事では画像中に複数物体が含まれているMulti Object Trackingについて解説を行います。
物体追跡のアルゴリズム
物体の検出
Yolo
SSD
Faster RCNN
これらの物体検知モデルを元に対象物に対してbbを作成することです。
それではどうやってbbを作成しているのか。。。
ここはyolo8を例に挙げて、どのようにプログラムを読み取っているのかを記述していきます。
yolo8のアルゴリズム解説(後程noteで公開)
物体検出のアルゴリズムのひとつであるYoloの概要を簡単に説明すると、
画像の畳み込み層で、フィルターをかませ画像特徴量を抽出
プーリング層で畳み込んだ特徴量からより特徴が濃い部分を抽出
全結合層で画像の縦と横のピクセル数次元を一次元(分類が車と人であれば2次元)に変換
この三つを組み合わせることによって分類を行います。
物体の推測
続いて検出した物体の動きの推測を行います。
ここではカルマンフィルタで次時刻のバウンディングボックスを補完する作業です。
どうやって補完するのかというと、
u:水平方向の位置
v:垂直方向の位置
s:対象物体を覆う矩形のバウンディングボックスの大きさ
r:アスペクト比
これらを用いて補完します。
物体が検出されて検出済み物体に割り当てるために、カルマンフィルターによってBboxの状態が更新されます。
もしあるフレームにおいて物体が検出されない場合には線形補完によって対象物体の位置が予測されます。
検出済み物体トラックへの割り当て
ハンガリアンアルゴリズムによって検出した物体を検出済みの物体に割り当てます。
それはどうやって行うかというと
IoUをもって割り当てを行う
具体的にはIoUを最大化するように割り当てを行う
です。
トラックの作成と削除
対象物体がフレーム中に出入りする際にユニークなIDが生成・削除されます。