Object Re-identification (Re-ID)
Tái nhận dạng đối tượng (Re-ID) nhận diện lại cùng một người hoặc phương tiện qua nhiều camera, khoảng thời gian gián đoạn và hiện tượng che khuất bằng cách so sánh embedding ngoại hình.
Tái nhận dạng đối tượng (Re-ID) là tác vụ thị giác máy tính nhận diện lại cùng một đối tượng khi đối tượng xuất hiện trở lại ở camera khác, vào thời điểm sau đó hoặc sau khi bị che khuất. Trong khi phát hiện đối tượng cho biết ảnh có một người, Re-ID xác định liệu người đó có phải người đã đi qua camera ở lối vào mười phút trước hay không. Re-ID thực hiện việc này bằng cách so sánh diện mạo, chẳng hạn màu quần áo, vóc dáng, túi xách mang theo hoặc màu xe và các chi tiết trên nóc xe; nhờ đó, Re-ID là công cụ chính để liên kết các lần xuất hiện trong mạng lưới camera không có vùng quan sát chồng lấn. Re-ID người và Re-ID phương tiện là hai dạng được nghiên cứu nhiều nhất.
Cách thức hoạt động của Re-ID#
Hệ thống Re-ID chuyển mỗi đối tượng được phát hiện thành một descriptor diện mạo gọn rồi so sánh các descriptor đó:
- Phát hiện và cắt ảnh: Detector tìm từng người hoặc phương tiện, sau đó cắt và đổi kích thước vùng ảnh bên trong bounding box.
- Mã hóa thành embedding: Mạng neural tích chập hoặc vision transformer ánh xạ ảnh đã cắt thành vector gồm vài trăm đến vài nghìn giá trị, tóm tắt diện mạo của đối tượng.
- Đối sánh bằng độ tương đồng cosine: Embedding truy vấn được chấm điểm với tập hợp embedding đã lưu; các embedding được xếp hạng từ tương đồng nhất đến ít tương đồng nhất. Một số hệ thống dùng khoảng cách Euclid.
Ngưỡng áp dụng cho điểm số cao nhất sẽ quyết định truy vấn có thuộc về một danh tính đã biết hay một danh tính mới:
Encoder được huấn luyện bằng metric learning để embedding của cùng một danh tính tụ lại gần nhau, còn embedding của các danh tính khác nhau tách xa nhau. Một công thức phổ biến kết hợp loss phân loại danh tính với triplet loss, kéo ảnh anchor về phía một ảnh khác cùng danh tính và đẩy ảnh đó ra xa ảnh thuộc danh tính khác; khai thác mẫu âm khó giúp tập trung vào những đối tượng có diện mạo giống nhau. Thách thức lớn là tính bất biến: cùng một người phải ánh xạ đến các embedding gần nhau bất kể góc nhìn, ánh sáng, độ phân giải và mức độ che khuất một phần.
Re-ID so với theo dõi và nhận dạng khuôn mặt#
Re-ID thường bị nhầm lẫn với hai tác vụ liên quan:
- Theo dõi đối tượng: Theo dõi đối tượng trong một video bằng cách dự đoán chuyển động, thường dùng bộ lọc Kalman, và đối sánh các hộp dựa trên mức chồng lấn giữa các khung hình. Phương pháp này dựa vào tính liên tục theo thời gian, vốn bị gián đoạn khi đối tượng bị che khuất lâu hoặc ra khỏi khung hình; Re-ID khôi phục danh tính chính xác trong những khoảng gián đoạn đó.
- Nhận dạng khuôn mặt: Nhận diện một người qua các đặc điểm khuôn mặt ổn định trong nhiều năm và cần khuôn mặt nhìn thấy được. Re-ID người hoạt động khi nhìn từ phía sau và ở độ phân giải thấp; vì chủ yếu dựa vào quần áo, Re-ID thường chỉ có hiệu lực trong vài giờ hoặc một ngày.
Re-ID bên trong bộ theo dõi nhiều đối tượng#
Kể từ khi DeepSORT ra đời vào năm 2017, nhiều tracker cho bài toán theo dõi đa đối tượng (MOT) đã kết hợp các embedding Re-ID với tín hiệu chuyển động, nhờ đó hai người đi ngang qua nhau vẫn giữ ID riêng, còn người khuất sau một cây cột được gán lại ID cũ. Trong chế độ theo dõi của Ultralytics YOLO, các tracker BoT-SORT, Deep OC-SORT và TrackTrack chấp nhận with_reid: True và có thể nạp các encoder Re-ID của YOLO26, từ yolo26n-reid.onnx đến yolo26x-reid.onnx, được tải xuống khi sử dụng lần đầu:
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)}")Mỗi ID mà bộ theo dõi khôi phục sau khi đối tượng bị che khuất giúp số lượng được in ra gần với số người thực tế trong video hơn.
Ứng dụng thực tế#
- Phân tích bán lẻ: Liên kết các lần xuất hiện của một khách hàng qua camera ở các lối đi tạo ra lộ trình ẩn danh trên toàn cửa hàng, thời gian lưu lại và phễu chuyển đổi.
- Quản lý giao thông: Re-ID phương tiện kết nối các lần nhìn thấy cùng một xe tại những giao lộ khác nhau để đo thời gian di chuyển và luồng đi-đến, kể cả khi không đọc được biển số.
- Thể thao: Re-ID cầu thủ duy trì danh tính nhất quán khi cầu thủ rời khỏi khung hình phát sóng hoặc tụ lại trong tình huống tranh chấp.
- Nghiên cứu động vật hoang dã: Re-ID động vật nhận diện từng cá thể ngựa vằn, cá voi hoặc mèo lớn qua hoa văn trên lông và dấu vây trong ảnh từ bẫy ảnh và drone.
Benchmark và metric#
Re-ID được đánh giá như một bài toán truy hồi. Độ chính xác Rank-1 là tỷ lệ truy vấn có ảnh xếp hạng đầu tiên trong gallery mang đúng danh tính; mean average precision (mAP) đánh giá thứ hạng của tất cả kết quả khớp chính xác trên toàn bộ gallery. Market-1501, benchmark kinh điển về Re-ID người, chứa 32.668 bounding box của 1.501 người được ghi hình bằng sáu camera trong khuôn viên một trường đại học.










