Object Re-identification (Re-ID)
物体再識別(Re-ID)は、外観の埋め込みを比較し、カメラ間、時間の経過、オクルージョンを経ても同じ人物や車両を再認識します。
物体再識別(Re-ID)は、別のカメラに映ったとき、時間が経過した後、または隠れた後に、同じ物体を再び認識するコンピュータービジョンタスクです。物体検出が画像内に人がいることを報告するのに対し、Re-IDは、その人が10分前に入口のカメラの前を通った人と同一かどうかを判定します。衣服の色、体形、持ち物、車両の色やルーフの特徴など、外観を比較して判定します。そのため、映像が重ならないカメラネットワーク内で目撃情報を関連付けるための主要な手段となります。人物Re-IDと車両Re-IDが、最もよく研究されている形式です。
再識別の仕組み#
Re-IDシステムは、検出された各物体をコンパクトな外観特徴量に変換し、それらを比較します。
- 検出と切り出し: 検出器が各人物または車両を見つけ、そのバウンディングボックス内の画像を切り出してリサイズします。
- 埋め込みへの変換: 畳み込みニューラルネットワークまたはビジョントランスフォーマーが切り出した画像を、物体の外観を要約する数百から数千個の数値からなるベクトルに変換します。
- コサイン類似度による照合: クエリの埋め込みを保存済み埋め込みのギャラリーと照合し、類似度の高い順に並べます。システムによってはユークリッド距離を使用します。
最も高いスコアに対するしきい値によって、クエリが既知のIDか新しいIDかを判定します。
エンコーダーはメトリック学習で学習させ、同じIDの埋め込みを近くに集め、異なるIDの埋め込みを遠ざけます。一般的な手法では、ID分類損失とトリプレット損失を組み合わせます。後者は、アンカー画像を同じIDの別画像に近づけ、異なるIDの画像から遠ざけるもので、ハードネガティブマイニングによって見た目が似た例に重点を置きます。難しいのは不変性です。同じ人物が視点、照明、解像度、部分的な遮蔽にかかわらず、近い埋め込みにマッピングされる必要があります。
Re-IDと追跡・顔認識の違い#
Re-IDは、関連する次の2つのタスクと混同されることがよくあります。
- 物体追跡: 通常はカルマンフィルターで物体の動きを予測し、フレーム間のボックスの重なりを基に照合して、1つの動画内で物体を追跡します。時間的な連続性に依存するため、物体が長時間隠れたり画面外に出たりすると追跡が途切れます。Re-IDは、まさにそのような状況でIDを復元します。
- 顔認識: 数年間安定している顔の特徴から人物を識別するため、顔が見えている必要があります。人物Re-IDは後ろ姿や低解像度でも機能します。また、主に衣服に依存するため、一般に有効なのは数時間から1日程度です。
マルチオブジェクトトラッカーにおけるRe-ID#
2017年のDeepSORT以降、多くのマルチオブジェクト追跡(MOT)トラッカーはRe-IDの埋め込みと動きの手掛かりを組み合わせています。そのため、すれ違う2人にはそれぞれのIDが維持され、柱の後ろに消えた人物にも以前のIDが再び割り当てられます。Ultralytics YOLOのtrackモードでは、BoT-SORT、Deep OC-SORT、TrackTrackの各トラッカーがwith_reid: Trueを受け付け、yolo26n-reid.onnxからyolo26x-reid.onnxまでのYOLO26 Re-IDエンコーダーを読み込めます。これらは初回使用時にダウンロードされます。
from ultralytics import YOLO
from ultralytics.utils import YAML
from ultralytics.utils.checks import check_yaml
# Copy the default TrackTrack settings and enable Re-ID with a YOLO26 appearance encoder
cfg = YAML.load(check_yaml("tracktrack.yaml"))
cfg.update(with_reid=True, model="yolo26n-reid.onnx")
YAML.save("tracktrack_reid.yaml", cfg)
# Track people (class 0); appearance embeddings help restore IDs after occlusions
model = YOLO("yolo26n.pt")
source = "https://github.com/ultralytics/assets/releases/download/v0.0.0/decelera_portrait_min.mov"
identities = set()
for result in model.track(source, tracker="tracktrack_reid.yaml", classes=[0], stream=True):
if result.boxes.is_track:
identities.update(result.boxes.id.int().tolist())
print(f"Person identities assigned: {len(identities)}")オクルージョン後にトラッカーが復元するIDはすべて、出力されるカウントを動画内の実際の人数に近づけます。
実際のアプリケーション#
- 小売分析: 通路ごとのカメラで買い物客の目撃情報を関連付けると、匿名の店舗全体の移動経路、滞在時間、コンバージョンファネルを把握できます。
- 交通管理: 車両Re-IDは、異なる交差点で同じ車を捉えた情報を結び付け、ナンバープレートが読み取れない場合も含めて、移動時間や起終点間の交通量を測定します。
- スポーツ: 選手Re-IDは、選手が中継映像のフレームから外れたり、密集した状況になったりしても、IDの一貫性を保ちます。
- 野生生物の研究: 動物Re-IDは、トラップカメラやドローンの画像から、縞模様やヒレの模様を基に個々のシマウマ、クジラ、大型ネコ科動物を識別します。
ベンチマークと指標#
Re-IDは検索問題として評価されます。Rank-1精度は、ギャラリー画像の順位が最も高いものが正しいIDを示すクエリの割合です。平均適合率(mAP)は、ギャラリー全体で正しい一致がどの程度上位にランクされるかを評価します。人物Re-IDの古典的なベンチマークであるMarket-1501には、大学キャンパス内の6台のカメラで撮影された1,501人分のバウンディングボックスが32,668個含まれています。










