Atlas Robotics
Computer Vision / AITrung bình

YOLO là gì? Mô hình nhận diện vật thể phổ biến nhất cho robot

Atlasbot · 18/8/2026 · 11 phút đọc

YOLO là gì? Mô hình nhận diện vật thể phổ biến nhất cho robot
YOLO xử lý toàn bộ khung hình 1 lần, trả về nhiều bounding box cùng lúc

Khi robot cần "nhìn thấy và gọi tên" vật thể xung quanh — người, hộp hàng, chướng ngại vật — theo thời gian thực, YOLO (You Only Look Once) gần như là lựa chọn đầu tiên được nhắc tới trong cộng đồng robot/AI. Đây là một họ mô hình object detection nổi tiếng vì tốc độ xử lý nhanh, đủ để chạy thời gian thực ngay cả trên máy tính nhúng.

Khái niệm chính

Các phương pháp object detection đời trước thường phải quét ảnh nhiều lần với nhiều cửa sổ (sliding window) ở nhiều kích thước khác nhau để tìm vật thể — chậm và tốn tài nguyên. YOLO thay đổi cách tiếp cận: xử lý toàn bộ khung hình chỉ trong một lần đi qua mạng neural, trả về đồng thời vị trí (bounding box) và nhãn của tất cả vật thể phát hiện được — đây chính là lý do YOLO nhanh hơn nhiều phương pháp cũ và phù hợp cho ứng dụng thời gian thực như robot.

Nguyên lý hoạt động

Với mỗi vật thể phát hiện được, YOLO trả về bounding box (toạ độ khung chữ nhật bao quanh vật thể), class (tên loại vật thể, tuỳ theo tập dữ liệu mô hình được huấn luyện), và confidence score (độ tin cậy của dự đoán, từ 0 đến 1).

from ultralytics import YOLO

model = YOLO("yolov8n.pt")       # bản "nano" — nhẹ, phù hợp máy tính nhúng
results = model("frame.jpg")

for box in results[0].boxes:
    print(box.cls, box.conf, box.xyxy)   # nhãn, độ tin cậy, toạ độ box

YOLO có nhiều phiên bản (v5, v8, v11...) và mỗi phiên bản lại có nhiều kích thước mô hình (nano, small, medium, large) — mô hình càng lớn càng chính xác nhưng càng chậm.

Kiến thức kỹ thuật

Công thức

Thời gian inference (suy luận) mỗi khung hình quyết định FPS tối đa pipeline có thể đạt được — quan trọng khi tích hợp vào ROS2 chạy song song với các tác vụ khác:

FPS_tối_đa = 1 / Thời_gian_inference_mỗi_khung_hình

VD: yolov8n trên Jetson Orin Nano (GPU), inference ~15ms/khung hình
FPS_tối_đa ≈ 1/0.015 ≈ 66 FPS (dư thừa so với camera 30fps thông thường)

VD: yolov8n trên CPU thuần (Raspberry Pi 4), inference ~200ms/khung hình
FPS_tối_đa ≈ 1/0.2 = 5 FPS (không đủ theo kịp camera 30fps, cần bỏ bớt khung hình)

Thông số

Kích thước mô hìnhTốc độĐộ chính xácPhù hợp
NanoNhanh nhấtThấp nhấtMáy tính nhúng, cần realtime
SmallNhanhTrung bìnhCân bằng tốc độ/chính xác
Medium/LargeChậm hơnCao nhấtMáy có GPU mạnh, không cần realtime tuyệt đối

Ứng dụng thực tế

Với máy tính nhúng như Jetson Orin Nano hay Raspberry Pi, bản nano/small thường là lựa chọn hợp lý để cân bằng giữa độ chính xác và tốc độ xử lý thời gian thực; máy có GPU (như Jetson) tận dụng được CUDA để chạy nhanh hơn đáng kể so với chỉ chạy trên CPU — đúng như tính ở mục Công thức, chênh lệch tốc độ giữa GPU và CPU thuần có thể lên tới hơn 10 lần, quyết định trực tiếp việc chọn SBC nào (đã học ở bài Chọn Computer cho AMR) cho ứng dụng cần AI thị giác thời gian thực.

Ví dụ thực tế

import time
from ultralytics import YOLO

model = YOLO("yolov8n.pt")

start = time.time()
results = model("frame.jpg", verbose=False)
elapsed = time.time() - start

print(f"Thời gian inference: {elapsed*1000:.1f}ms")
print(f"FPS tối đa ước lượng: {1/elapsed:.1f}")

for box in results[0].boxes:
    cls_name = model.names[int(box.cls)]
    print(f"  {cls_name}: {float(box.conf):.2f}")
Output điển hình trên Jetson Orin Nano:
Thời gian inference: 14.2ms
FPS tối đa ước lượng: 70.4
  person: 0.91
  box: 0.87

Đo thời gian inference thực tế trên đúng phần cứng dự định triển khai — thay vì tin vào con số benchmark chung chung — là bước xác nhận quan trọng trước khi thiết kế pipeline ROS2 hoàn chỉnh.

Lỗi thường gặp

  • Chọn mô hình kích thước lớn (medium/large) cho máy tính nhúng CPU thuần — như tính ở mục Công thức, thời gian inference vượt xa khả năng xử lý thời gian thực cần thiết.
  • Không đo thời gian inference thực tế trên đúng phần cứng triển khai — tin vào benchmark chung chung từ nhà phát triển mô hình, có thể không phản ánh đúng hiệu năng trên phần cứng cụ thể đang dùng.
  • Chạy YOLO trên CPU mà không cân nhắc GPU sẵn có — nếu phần cứng có GPU (Jetson) nhưng không cấu hình đúng để tận dụng CUDA, tốc độ chậm hơn nhiều lần không cần thiết.
  • Bỏ qua việc chọn đúng phiên bản model theo yêu cầu tốc độ/độ chính xác — dùng mặc định nano cho ứng dụng cần độ chính xác cao, hoặc ngược lại dùng large cho ứng dụng cần realtime tuyệt đối trên phần cứng yếu.

Kết luận

YOLO là công cụ mạnh để robot nhận diện nhiều vật thể cùng lúc theo thời gian thực — chọn đúng kích thước mô hình theo khả năng phần cứng thực tế (đo bằng thời gian inference, không phải đoán) là quyết định quan trọng nhất khi triển khai. Hai bài tiếp theo trong chuyên mục đi sâu vào khái niệm Object Detection nói chung và cách tích hợp YOLO vào một pipeline ROS2 hoàn chỉnh.

YOLO là gì? Mô hình nhận diện vật thể phổ biến nhất cho robot — Atlasbot