8 công cụ và thuật toán theo dõi đối tượng mã nguồn mở hàng đầu
Khám phá 8 công cụ theo dõi đối tượng mã nguồn mở hàng đầu để phân tích video theo thời gian thực. Tìm hiểu cách từng công cụ hoạt động và cách chọn giải pháp phù hợp cho dự án.
Abirami Vina17 phút đọc
Khi một chiếc ô tô vượt đèn đỏ và vé phạt tự động được gửi cho tài xế, hoặc khi một cầu thủ bóng đá rê bóng trên sân và camera di chuyển mượt mà theo trận đấu, AI đang âm thầm hoạt động ở phía sau. Cụ thể, các hệ thống này dựa vào thị giác máy tính, một nhánh của AI cho phép máy móc nhìn thấy, diễn giải và hiểu thông tin hình ảnh từ thế giới xung quanh.
Trong lĩnh vực thị giác máy tính, một trong những tác vụ then chốt đứng sau các ứng dụng này là theo dõi đối tượng. Tác vụ này được dùng để xác định đối tượng trong từng frame video, sau đó theo dõi đối tượng khi chúng di chuyển, chồng lấn với đối tượng khác hoặc đổi hướng.
Hiện nay có nhiều công cụ theo dõi đối tượng và thuật toán, mỗi loại được thiết kế cho các trường hợp sử dụng, yêu cầu hiệu năng và mức độ phức tạp khác nhau. Một số ưu tiên tốc độ và có thể theo dõi hàng chục đối tượng theo thời gian thực, trong khi những loại khác ưu tiên độ chính xác hoặc tính ổn định lâu dài trong các điều kiện khó khăn như che khuất, chuyển động nhanh hoặc ánh sáng yếu.
Cụ thể, các dự án mã nguồn mở đã đóng vai trò quan trọng trong việc thúc đẩy lĩnh vực này. Vì mã nguồn được công khai, nhà phát triển và nhà nghiên cứu có thể tìm hiểu cách các dự án hoạt động, cải thiện những phương pháp hiện có và điều chỉnh chúng cho các ứng dụng mới. Tính cởi mở này giúp hoạt động theo dõi đối tượng phát triển nhanh chóng và dễ tích hợp hơn vào các hệ thống thực tế.
Trong bài viết này, chúng ta sẽ tìm hiểu tám công cụ và thuật toán theo dõi vật thể mã nguồn mở phổ biến.
Theo dõi đối tượng là gì?#
Hãy hình dung tình huống một nhân viên bảo vệ đang xem camera CCTV của bãi đỗ xe. Anh ấy quyết định để mắt đến một chiếc ô tô màu đỏ. Khi video phát, anh ghi nhớ chiếc xe đó và tiếp tục theo dõi xe đi đâu, ngay cả khi những chiếc xe khác chạy ngang qua hoặc có người đi trước nó.
Theo dõi đối tượng bằng AI cũng tương tự, nhưng hoạt động tự động và ở quy mô lớn. Nói cách khác, theo dõi đối tượng là quá trình theo dõi một đối tượng khi nó di chuyển qua các frame video và duy trì danh tính nhất quán từ frame này sang frame tiếp theo.
Trong nhiều hệ thống, quá trình này bắt đầu bằng phát hiện đối tượng, giúp tìm và gán nhãn các đối tượng như người, phương tiện hoặc biển báo giao thông trong từng frame. Sau đó, khi các đối tượng di chuyển, xuất hiện, biến mất hoặc chồng lấn, hệ thống theo dõi liên kết các kết quả phát hiện giữa các frame để xác định từng đối tượng là gì và di chuyển đến đâu theo thời gian.

Hình 1. Minh họa về theo dõi đối tượng (Nguồn)
Có hai loại theo dõi phổ biến: theo dõi một vật thể (SOT), tập trung vào một vật thể chính (chẳng hạn chỉ theo dõi quả bóng trong video thể thao), và theo dõi nhiều vật thể (MOT), theo dõi đồng thời nhiều vật thể và gán cho mỗi vật thể một ID riêng (chẳng hạn theo dõi tất cả ô tô tại một giao lộ đông đúc).
Bất kể loại theo dõi nào, hầu hết hệ thống đều dựa trên ba thành phần cốt lõi: bộ phát hiện để tìm đối tượng trong từng frame, model chuyển động để dự đoán khả năng di chuyển của các đối tượng đó và bước đối sánh để liên kết kết quả phát hiện mới với các đối tượng đã được theo dõi trước đó. Những thành phần này chuyển video thô thành thông tin hữu ích về cách các đối tượng di chuyển và tương tác theo thời gian.
Nhu cầu về công cụ theo dõi đối tượng mã nguồn mở#
Trước khi đi sâu vào chi tiết, có thể bạn đang thắc mắc: điều gì khiến các công cụ và thuật toán theo dõi đối tượng mã nguồn mở trở nên đặc biệt?
Các công cụ mã nguồn mở đóng vai trò quan trọng trong việc giúp hoạt động theo dõi đối tượng dễ sử dụng hơn và phổ biến rộng rãi hơn. Vì mã nguồn được công khai, nhà phát triển và nhà nghiên cứu có thể thấy chính xác cách một bộ theo dõi hoạt động, học hỏi từ đó và điều chỉnh cho dự án của riêng mình thay vì xem nó như một hộp đen.
Các công cụ này cũng được hưởng lợi từ cộng đồng vững mạnh. Nhiều công cụ theo dõi mã nguồn mở được những cộng tác viên tích cực duy trì; họ bổ sung tính năng mới, cải thiện tốc độ và độ chính xác, sửa lỗi và đảm bảo công cụ theo kịp các nghiên cứu mới nhất. Sự hợp tác liên tục này giúp các công cụ duy trì độ tin cậy và tính hữu ích trong nhiều ứng dụng khác nhau.
Chi phí là một lý do quan trọng khác khiến các công cụ này có giá trị. Vì các công cụ mã nguồn mở miễn phí, sinh viên, startup và nhóm nhỏ có thể thử nghiệm, tạo nguyên mẫu và xây dựng hệ thống thực tế mà không phải lo về phí bản quyền hoặc chi phí đăng ký.
Top 8 công cụ và thuật toán mã nguồn mở hàng đầu để theo dõi đối tượng#
Hiện nay có rất nhiều lựa chọn mã nguồn mở để xây dựng hệ thống theo dõi. Một số là thuật toán hoặc model theo dõi mà bạn có thể tích hợp trực tiếp vào pipeline, trong khi những lựa chọn khác là thư viện và framework giúp chạy, quản lý và tích hợp các model đó dễ dàng hơn. Kết hợp lại, chúng bao quát mọi thứ, từ logic theo dõi cốt lõi đến các công cụ hỗ trợ cần thiết trong một dự án thực tế.
Tiếp theo, hãy cùng điểm qua tám công cụ và thuật toán mã nguồn mở phổ biến để theo dõi đối tượng.
1. Các model Ultralytics YOLO và package Python Ultralytics#
Một trong những lựa chọn đơn giản và thiết thực nhất để theo dõi vật thể là sử dụng các model Ultralytics YOLO kết hợp với package Python Ultralytics. Các model Ultralytics YOLO như Ultralytics YOLO11 và Ultralytics YOLO26 mới hơn là những model thị giác máy tính hỗ trợ nhiều tác vụ thị giác, bao gồm phát hiện vật thể, phân đoạn instance, ước tính tư thế và theo dõi vật thể.

Hình 2. Ví dụ sử dụng YOLO11 để phát hiện và theo dõi đối tượng. (Nguồn)
Đáng chú ý, bản thân các model không theo dõi vật thể qua các frame. Thay vào đó, package Python Ultralytics, một thư viện giúp đơn giản hóa việc chạy và triển khai model Ultralytics YOLO, cho phép theo dõi bằng cách kết hợp kết quả phát hiện YOLO theo từng frame với các thuật toán theo dõi nhiều vật thể chuyên dụng như BoT-SORT và ByteTrack.
Với khả năng tracking tích hợp, package Ultralytics và các model Ultralytics YOLO có thể được dùng để phát hiện đối tượng trong từng frame, sau đó gán ID nhất quán để theo dõi đối tượng khi chúng di chuyển, chồng lấp, rời khỏi frame rồi xuất hiện trở lại. Cách tiếp cận này ngày càng được ứng dụng trong các lĩnh vực như sản xuất và bán lẻ, hỗ trợ những ứng dụng như quy trình kiểm tra lỗi, theo dõi luồng hàng tồn kho và theo dõi khách hàng trong cửa hàng.
2. Các bộ theo dõi OpenCV#
OpenCV là một thư viện thị giác máy tính đồ sộ, bao gồm tập hợp các thuật toán theo dõi đối tượng. Thư viện này được cộng đồng OpenCV phát triển và duy trì từ năm 1999.
Thay vì dựa vào deep learning, phần lớn các bộ theo dõi này sử dụng những phương pháp thị giác máy tính truyền thống như bộ lọc tương quan và kỹ thuật dựa trên kernel (theo dõi đối tượng bằng cách đối chiếu đặc điểm hình ảnh như màu sắc và kết cấu từ frame này sang frame tiếp theo, thay vì học đặc trưng bằng mạng neural).
Khi sử dụng các thuật toán này, thông thường trước tiên bạn có thể chọn đối tượng cần theo dõi, sau đó bộ theo dõi liên tục tìm kiếm vùng hình ảnh tương tự nhất trong các frame tiếp theo khi đối tượng di chuyển.

Hình 3. Theo dõi đối tượng bằng OpenCV (Nguồn)
Dù các phương pháp này có thể không mạnh mẽ bằng những hệ thống theo dõi deep learning hiện đại trong các cảnh phức tạp hoặc đông đúc, chúng vẫn được sử dụng rộng rãi vì nhẹ, nhanh và dễ chạy. Ngoài ra, vì các bộ theo dõi này chạy hiệu quả trên CPU và thường không cần GPU, chúng phù hợp với các thử nghiệm nhanh, hoạt động học tập trong lớp và dự án sở thích.
3. ByteTrack#
ByteTrack là một trong những thuật toán mã nguồn mở phổ biến nhất để theo dõi nhiều đối tượng. Thay vì chỉ ghép nối những đối tượng được phát hiện mà model có độ tin cậy cao, thuật toán còn tận dụng các kết quả phát hiện có độ tin cậy thấp hơn mà nhiều hệ thống thường bỏ qua.
Nhờ vậy, thuật toán có thể tiếp tục theo dõi những đối tượng tạm thời khó nhìn thấy, chẳng hạn khi chúng bị che khuất một phần, ở xa hoặc di chuyển nhanh. Nhờ tốc độ nhanh và độ tin cậy cao, ByteTrack thường được dùng trong các ứng dụng như phân tích giao thông, theo dõi người đi bộ và giám sát bán lẻ, nơi hiệu năng thời gian thực và ID nhất quán rất quan trọng.
Như đã đề cập, nếu dùng các model Ultralytics YOLO để phát hiện, bạn có thể dễ dàng bật ByteTrack thông qua package Python Ultralytics. Tuy nhiên, ByteTrack cũng có thể được dùng độc lập trong các pipeline tùy chỉnh, phù hợp với mọi thứ từ nguyên mẫu nghiên cứu đến hệ thống production được viết bằng C++.
4. DeepSORT#
Một thuật toán phổ biến khác để theo dõi nhiều đối tượng là DeepSORT, viết tắt của Deep Simple Online and Real-Time Tracking. Đây là phiên bản nâng cao của SORT, viết tắt của Simple Online and Real-Time Tracking.
Tương tự ByteTrack, SORT sử dụng phương pháp theo dõi dựa trên phát hiện. Tuy nhiên, SORT dựa vào bộ lọc Kalman, một mô hình toán học ước tính vị trí tương lai của đối tượng dựa trên chuyển động trước đó, để dự đoán khả năng mỗi đối tượng sẽ di chuyển đến đâu tiếp theo.
Sau đó, thuật toán ghép nối các đối tượng mới được phát hiện với các track hiện có, chủ yếu dựa trên vị trí và mức độ chồng lấp của bounding box. Điều này giúp SORT nhanh và nhẹ, nhưng thuật toán có thể gặp khó khăn khi các đối tượng chồng lấp, cắt ngang đường đi của nhau hoặc tạm thời biến mất khỏi tầm nhìn.
DeepSORT cải tiến SORT bằng cách bổ sung thông tin ngoại hình vào quy trình theo dõi. Ngoài chuyển động và vị trí, DeepSORT sử dụng model tái nhận dạng (re-ID) dựa trên deep learning để học đặc điểm ngoại hình của vật thể. Nhờ đó, bộ theo dõi có thể nhận ra cùng một vật thể qua nhiều frame, ngay cả khi chỉ dựa vào chuyển động thì không thể phân biệt vật thể đó với các vật thể khác.
Nhờ đặc điểm này, DeepSORT thường được dùng trong các ứng dụng như giám sát và theo dõi đám đông, nơi mọi người thường xuyên chồng lấp hoặc bị che khuất trong thời gian ngắn. Tuy nhiên, hiện nay thuật toán được xem là một baseline kinh điển, và các phương pháp theo dõi mới hơn thường đạt hiệu năng tốt hơn trong những cảnh khó hơn.
5. Norfair#
Norfair là thư viện theo dõi gọn nhẹ, được thiết kế để linh hoạt thay vì buộc bạn sử dụng một pipeline cố định. Thư viện có thể bổ sung tracking cho hầu hết mọi detector, miễn là đầu ra của detector có thể biểu diễn thành một tập hợp điểm, chẳng hạn tâm bounding box, keypoint hoặc dữ liệu tọa độ tùy chỉnh.

Hình 4. Theo dõi đối tượng trong thực tế bằng Norfair (Nguồn)
Tính linh hoạt này đặc biệt hữu ích cho các dự án có đầu vào khác thường hoặc kiểu chuyển động biến đổi, trong đó các công cụ theo dõi nhiều đối tượng tiêu chuẩn có thể không đáp ứng được. Thư viện cũng cung cấp các hàm khoảng cách tích hợp để kiểm soát cách ghép nối các đối tượng được phát hiện qua các frame.
Các hàm khoảng cách này đo độ tương đồng giữa hai điểm hoặc đối tượng, giúp người dùng toàn quyền kiểm soát logic theo dõi. Norfair thường được dùng trong robot học, phân tích chuyển động thể thao, điều hướng drone và các ứng dụng phụ thuộc nhiều vào việc theo dõi các landmark tư thế hoặc keypoint.
6. MMTracking#
MMTracking là bộ công cụ theo dõi mã nguồn mở của nhóm OpenMMLab, đơn vị cũng phát triển các thư viện thị giác máy tính được sử dụng rộng rãi như MMDetection. Được xây dựng trên MMDetection, bộ công cụ này cung cấp framework linh hoạt để phát triển và thử nghiệm các hệ thống theo dõi.
Một trong những ưu điểm lớn nhất của MMTracking là thiết kế mô-đun. Thay vì giới hạn bạn trong một pipeline duy nhất, MMTracking cho phép cấu hình và thay thế các thành phần khác nhau như detector, mô-đun theo dõi và trong một số cấu hình là model tái định danh. Nhờ tính linh hoạt này, MMTracking đặc biệt phổ biến trong nghiên cứu và các dự án nâng cao, nơi các nhóm muốn benchmark phương pháp, thử nghiệm ý tưởng mới hoặc tinh chỉnh pipeline theo dõi.
7. FairMOT#
FairMOT là framework theo dõi nhiều đối tượng, được thiết kế để theo dõi nhiều đối tượng cùng lúc. Khác với các pipeline theo dõi dựa trên phát hiện truyền thống, vốn chạy bước phát hiện trước rồi mới liên kết các đối tượng qua các frame trong một bước riêng biệt, FairMOT học đồng thời việc phát hiện và tái định danh trong một mạng duy nhất.

Hình 5. Cách framework FairMOT hoạt động (Nguồn)
Thiết lập kết hợp này giúp duy trì danh tính nhất quán hơn, đặc biệt trong các cảnh đông đúc, nơi mọi người thường chồng lấp hoặc di chuyển nhanh. FairMOT thường được dùng trong các tình huống như theo dõi người đi bộ và giám sát đám đông, đồng thời cũng được ứng dụng trong phân tích bán lẻ và giám sát giao thông, nơi việc theo dõi nhiều mục tiêu theo thời gian thực rất quan trọng.
8. SiamMask#
SiamMask là phương pháp theo dõi một đối tượng, tiến xa hơn nhiều bộ theo dõi khác bằng cách tạo mask phân đoạn cùng với bounding box. Nói đơn giản, phương pháp này không chỉ vẽ hình chữ nhật quanh mục tiêu mà còn phác họa hình dạng đối tượng ở cấp pixel, hữu ích khi mục tiêu thay đổi hình dạng, xoay hoặc bị che khuất một phần.

Hình 6. Theo dõi và phân đoạn đối tượng bằng SiamMask (Nguồn)
Phương pháp này sử dụng thiết kế theo dõi Siamese, trong đó trước tiên bộ theo dõi lấy một hình ảnh tham chiếu nhỏ của mục tiêu từ frame đầu tiên, thường được gọi là template. Sau đó, trong mỗi frame mới, bộ theo dõi tìm kiếm một vùng rộng hơn và xác định vị trí có độ tương đồng cao nhất với template đó.
SiamMask phát triển dựa trên ý tưởng ghép nối này. Phương pháp còn dự đoán mask ở cấp pixel cho mục tiêu, nhờ đó bạn có được cả vị trí đối tượng lẫn đường viền chính xác hơn khi video phát.
Các yếu tố chính khi chọn công cụ theo dõi đối tượng#
Hiện nay có nhiều công cụ mã nguồn mở để theo dõi đối tượng trong lĩnh vực AI, nên lựa chọn phù hợp nhất cho dự án thị giác máy tính của bạn sẽ tùy thuộc vào yêu cầu của trường hợp sử dụng cụ thể. Dưới đây là một số yếu tố cần cân nhắc:
- Độ chính xác: Yếu tố này quan trọng nhất trong các cảnh đông đúc hoặc phức tạp về hình ảnh, nơi hệ thống thị giác cần duy trì ID ổn định ngay cả khi đối tượng chồng lấp, bị che khuất hoặc chuyển động nhanh.
- Tốc độ: Với các ứng dụng thời gian thực như robot học, giám sát giao thông và phân tích thể thao, khả năng phản hồi nhanh có thể quan trọng hơn độ chính xác tuyệt đối.
- Mức độ dễ tích hợp: Một số công cụ theo dõi đối tượng dễ dàng tích hợp và chỉ cần vài dòng code, trong khi những công cụ khác cần thiết lập, cấu hình hoặc tùy chỉnh pipeline nhiều hơn.
- Ràng buộc triển khai: Môi trường đích, chẳng hạn máy chủ GPU, thiết bị edge hoặc phần cứng di động, có thể quyết định phương pháp theo dõi nào phù hợp để sử dụng.
- Khả năng mở rộng: Nếu hệ thống cần theo dõi nhiều đối tượng cùng lúc hoặc xử lý nhiều luồng video, bộ theo dõi cần mở rộng hiệu quả mà không làm giảm hiệu năng đáng kể.
Mỗi công cụ hoặc thuật toán theo dõi đối tượng phục vụ một mục đích khác nhau. Cuối cùng, lựa chọn phù hợp phụ thuộc vào các yêu cầu cụ thể, ràng buộc runtime, chỉ số hiệu năng và mức độ tùy chỉnh cần thiết cho phương pháp theo dõi trong dự án của bạn.
Điểm chính cần ghi nhớ#
Theo dõi đối tượng đã phát triển từ các kỹ thuật thủ công ban đầu đến những hệ thống deep learning tiên tiến nhất hiện nay, có thể diễn giải chuyển động, danh tính và hành vi với độ chính xác ấn tượng. Các công cụ mã nguồn mở là động lực quan trọng thúc đẩy tiến bộ này. Chúng phổ cập quyền tiếp cận các thuật toán mạnh mẽ, khuyến khích thử nghiệm và giúp nhà nghiên cứu xây dựng pipeline theo dõi tinh vi mà không bị hạn chế bởi giấy phép hoặc yêu cầu cơ sở hạ tầng nặng nề.
Truy cập cộng đồng và repository GitHub của chúng tôi để tìm hiểu thêm về AI. Khám phá các trang giải pháp về AI trong nông nghiệp và thị giác máy tính trong sản xuất. Tìm hiểu các tùy chọn cấp phép và bắt đầu xây dựng model thị giác của riêng bạn.
Được viết bởi
Bình luận
Đặt câu hỏi, chia sẻ kết quả hoặc giúp đỡ người khác.










