機械学習
記事内に商品プロモーションを含む場合があります

YOLOv8の物体追跡(MOT):BoT-SORTとByteTrackのパラメータを調査

Aru

現在、追跡アルゴリズムとしてBoT-SORTとByteTrackをサポートしているようです。

本記事では、YOLOv8がサポートする物体追跡(MoT, Multiple Object Tracking)アルゴリズムのBoT-SORTとByteTrackについて調査した結果です。YOLOv8では複数の物体を追跡する2つの手法をサポートしています。この記事では2つの手法を調べてみました。

MoTとは

MoTとはMultiple Object Trackingの略で、動画中の複数の物体を追跡する手法のことです。

複数のオブジェクトを追跡する場合、すれ違いやオクルージョン発生時にいかに正しく追跡できるかが重要です。MoTアルゴリズムは、このような場合でもうまく追跡できるように開発された手法となります。

ところで、YOLOv8では、TrackingタスクとしてBoT-SORTとByteTrackの2つをサポートしています(2023.09現在)が、これらの違いがよく分かりません。

この記事では、とりあえず、2つの違いを簡単に調べてみました。

細かなアルゴリズムは、他の解説に譲ります。

ByteTrack

ByteTrackは、2021年10月に発表されたMoTの手法の1つです。

ByteTrackでは、これまでの手法がスコアが閾値より低いオブジェクトの追跡を行っていなかった部分を改良し、低い信頼性の検出結果のオブジェクトも追跡することで性能向上を図っています。

単純に、低い閾値のものも追跡すると処理量がかかるので、Byteという仕組みを利用して信頼度の異なるオブジェクトのバウンディングボックスの処理を行っています(詳しくは、ArXivの論文等を参照のこと)。

これにより、信頼度の低いバウンディングボックスを捨てずに処理しつつ、高速動作を実現しています。信頼度の低いバウンディングボックスも処理しておくことで、追跡時のミスを減らそうというアプローチだと思われます。

下のグラフは他のMoT手法との比較ですが、これを見ると、発表時点では高い性能と高速性を両立していることがわかります。

ByteTrackの性能
出典:https://github.com/ifzhang/ByteTrack

FiarMOTが登場してそんなに立っていないのに、すぐに新しい手法が出てくるのは本当に驚きです。この業界、進歩が早いなーと感じます。

BoT-SORT

BoT-SORTは、2022年6月に発表されたMoTの手法です。ByteTrackより8ヶ月ほど後になります。

BoT-SORTは、ByteTrackをベースに、カルマンフィルター・カメラモーションの補正・マッチング手法に改善を加えたもののようです。カルマンフィルターなどは古典的なアルゴリズムですが、これだけで追跡を行っている手法もあることからわかるように、それなりの精度があります。複数の判断基準を使ってより追跡をうまくやるのがBoT-SORTのようです。

性能評価結果は以下のようになります。公式のベンチマークを見る限り、ByteTrackの改良型なので、ByteTrackを上回る性能を実現しています。

BoT-SORTのベンチマーク
出典:https://github.com/NirAharon/BoT-SORT

論文にも、以下のような記述があり、ByteTrackと比較して性能向上していることが示されています。

ByteTrackと比較した性能評価

YOLOv8でどちらを使うか

BoT-SORTがByteTrackの改良版であると考えると、問題がなければBoT-SORTを利用すれば良い気がします。ただ、ベンチマークの比較では上でも実際に使ってみると、「自分のケースでは他の手法の方が性能が出る」ということもあるので、そこは注意が必要かと思います。

ただ、とりあえず、BoT-SORTを試してみるというスタンスで良いかなと思います。

全然違う方式なら悩みどころですが、改良版ということなので新しい方で良いと考えています。

BoT-SORTのパラメータ(YOLOv8)を調べてみた

以下は、YOLOv8のデフォルトパラメートのbotsort.yamlファイルです。

設定の仕方は以下の記事を参照してください。

あわせて読みたい
YOLOv8で物体追跡を実践|サンプルコードで学ぶ追跡手法
YOLOv8で物体追跡を実践|サンプルコードで学ぶ追跡手法
デフォルトのパラメータ(botsort.yaml
# Ultralytics YOLO 🚀, AGPL-3.0 license
# Default YOLO tracker settings for BoT-SORT tracker https://github.com/NirAharon/BoT-SORT

tracker_type: botsort # tracker type, ['botsort', 'bytetrack']
track_high_thresh: 0.5 # threshold for the first association
track_low_thresh: 0.1 # threshold for the second association
new_track_thresh: 0.6 # threshold for init new track if the detection does not match any tracks
track_buffer: 30 # buffer to calculate the time when to remove tracks
match_thresh: 0.8 # threshold for matching tracks
# min_box_area: 10 # threshold for min box areas(for tracker evaluation, not used for now)
# mot20: False # for tracker evaluation(not used for now)

# BoT-SORT settings
gmc_method: sparseOptFlow # method of global motion compensation
# ReID model related thresh (not supported yet)
proximity_thresh: 0.5
appearance_thresh: 0.25
with_reid: False

パラメータはBoT-SORT, ByteTrack共通部分とBoT-SORTのパラメータに分けることができて、以下のようになります。

BoT-SORT, ByteTrack共通パラメータ
パラメータ名意味
tracker_type‘botsort’, ‘bytetrack’のどちらかを指定
track_high_thresh1つめの閾値
track_low_thresh2つめの閾値
コードをみると、track_low_thresh < score < track_high_threshの範囲が対象となるように書かれている
new_track_thresh追跡中のどれとも一致しない場合に新しい追跡を始める場合の閾値
track_bufferトラックを削除する時間を計算するためのバッファ
match_thresh一致すると判断する閾値

上記のパラメータはソースコードのByteTrackerの部分で参照されています。

以下は、BoT-SORTのパラメータです。残念ながらReID関連の部分がまだサポートされていないようです。また、sparseOptFlow以外も選択できるようですが、基本はこれを使うみたいです。ちなみに、GMCはGolbal Motion Compensationの略で、BoT-SORTの論文に出てきます(以下が該当する部分)。

※ちなみに、siftとかorbは特徴量の記述として有名です

論文の該当部分
BoT-SORTパラメータ
パラメータ名意味
gmc_method‘sparseOptFlow’のみ? コードをみると、orb, sift, eccも使えるように見える。
proximity_threshReID関連は現在サポートしていない
appearance_threshReID関連は現在サポートしていない
with_reidReID関連は現在サポートしていない

パラメータの説明がないので、とりあえずソースコードを見ました。これらのパラメータは現在のところ、トラッカー関連のコードの部分で参照されていました。

それほど長いコードではないので、チューニングに困ったらソースコードを見ていけばいい感じです。

終わりに

とりあえず、ByteTrackとBoT-SORTについて、そしてYOLOv8での実装について調べてみました。YOLOv8の実装は、まだ途上という感じです。ただ、動かしてみた感じでは十分使えそうなので、活用して行きたいと思います。

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT ME
ある/Aru
ある/Aru
IT&機械学習エンジニア/ファイナンシャルプランナー(CFP®)
専門分野は並列処理・画像処理・機械学習・ディープラーニング。プログラミング言語はC, C++, Go, Pythonを中心として色々利用。現在は、Kaggle, 競プロなどをしながら悠々自適に活動中
記事URLをコピーしました