物体検出結果をもとに物体の移動を追跡するライブラリです。
プラットフォームを選び、YOLOX-S 検出と ByteTrack の組合せで動画中の物体を追跡してみましょう。
YOLOX-S 検出モデルをダウンロードしてバイナリと同じフォルダに配置し、サンプルをビルドして実行します。
# Download model files into the binary folder
curl -O https://storage.googleapis.com/ailia-models/yolox/yolox_s.opt.onnx
curl -O https://storage.googleapis.com/ailia-models/yolox/yolox_s.opt.onnx.prototxt
# Build (macOS)
clang++ -o ailia_tracker_sample ailia_tracker_sample.cpp \
libailia.dylib libailia_audio.dylib \
libailia_tokenizer.dylib libailia_tracker.dylib \
-Wl,-rpath,./ -std=c++17
./ailia_tracker_sample input.mp4
C++ セットアップガイド
ailia Tracker はデスクトップとモバイルで動作します。物体検出部分は Windows / Linux で GPU 推論に対応しています。
C / C# / JNI API で利用できる物体追跡機能。
既存の検出器に ByteTrack の追跡処理を組み合わせる最小サンプル。
#include "ailia_tracker.h"
struct AILIATracker *tracker = nullptr;
AILIATrackerSettings settings = {0.1f, 0.7f, 0.5f, 30, 0.8f};
ailiaTrackerCreate(&tracker, AILIA_TRACKER_ALGORITHM_BYTE_TRACK, &settings);
for (auto &d : detections) {
ailiaTrackerAddTarget(tracker, d.category, d.prob, d.x, d.y, d.w, d.h);
}
ailiaTrackerCompute(tracker);
unsigned int n; ailiaTrackerGetObjectCount(tracker, &n);
ailiaTrackerDestroy(tracker);
ailia Tracker についてのよくある質問。
フレームごとの物体検出を 80 の COCO カテゴリで行うのが YOLOX-S、フレーム間で検出結果を安定した追跡 ID に対応付けるのが ByteTrack です。
YOLOX-S の重みと prototxt:
yolox_s.opt.onnx
yolox_s.opt.onnx.prototxt
両方のファイルをサンプルバイナリと同じフォルダに配置してください。
各 AILIATrackerObject には COCO ラベルに対応する整数の category 属性があります。アプリ側でフィルタしてください — たとえば人物だけ追跡するなら category == 0 のみ残す、必要なラベルだけのルックアップを作るなど。
各追跡オブジェクトに対して、フレーム間で一貫した id、category、検出 prob、および正規化バウンディングボックス (x, y, w, h) が得られます。0 が左 / 上端、1 が右 / 下端です。
はい。C++ サンプルでは -w <index> を渡すとファイルの代わりに Web カメラ入力になります。Unity バインディングも ailia-tracker-unity パッケージで同じカメラ入力モードを提供します。
macOS / iOS では Metal が自動的に使用されます。Windows / Linux では CUDA Toolkit と cuDNN をインストールし、cuDNN を PATH に追加してください。GPU 加速は物体検出処理に適用され、ByteTrack の対応付けは CPU 上で動作します。
C++ バインディングは評価版パッケージの ailia.lic をランタイムライブラリと同じ場所に配置する必要があります:
Windows: ailia.dll と同じフォルダ。
macOS: ~/Library/SHALO/
Linux: ~/.shalo/
Unity と JNI バインディングは初回実行時に評価ライセンスを自動ダウンロードします。商用配布には製品ライセンスを申請してください。詳細は ailia ライセンス規約 を参照してください。