Ánh xạ đối tượng bằng VisionEye với Ultralytics YOLO26#
Ánh xạ đối tượng VisionEye là gì?#
Ultralytics YOLO26 VisionEye cho phép máy tính nhận diện và xác định vị trí đối tượng, mô phỏng độ chính xác của mắt người. Chức năng này giúp máy tính phân biệt và tập trung vào các đối tượng cụ thể, tương tự cách mắt người quan sát chi tiết từ một góc nhìn nhất định.
Ánh xạ đối tượng bằng YOLO26#
VisionEye cố định một điểm quan sát duy nhất trong khung hình và vẽ một tia từ điểm đó đến mọi đối tượng được theo dõi, giúp bạn hình dung cảnh vật từ một góc nhìn. Đặt vision_point thành tọa độ pixel của người quan sát, sau đó chạy solution trên video bằng Python API hoặc CLI.
# Monitor objects position with visioneye
yolo solutions visioneye show=True
# Pass a source video
yolo solutions visioneye source="path/to/video.mp4"
# Monitor the specific classes
yolo solutions visioneye classes="[0, 5]"Các đối số của VisionEye#
Dưới đây là bảng các đối số của VisionEye:
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
model | str | None | Đường dẫn đến tệp model Ultralytics YOLO. |
vision_point | tuple[int, int] | (20, 20) | Điểm mà VisionEye Solution sẽ theo dõi đối tượng và vẽ đường đi. |
line_width | int | 2 | Độ dày đường viền của box, keypoint và số đếm mà giải pháp vẽ. |
verbose | bool | True | Bật nhật ký theo từng frame của giải pháp, gồm shape đầu vào, số lượng class và tốc độ xử lý. Bản thân lệnh gọi tracking luôn không ghi nhật ký. |
Bạn cũng có thể sử dụng nhiều tham số track trong solution VisionEye:
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
tracker | str | 'tracktrack.yaml' | Chỉ định thuật toán theo dõi cần sử dụng. Các tùy chọn tích hợp sẵn: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.25 | Đặt ngưỡng confidence cho các đối tượng được phát hiện; giá trị thấp hơn cho phép theo dõi nhiều đối tượng hơn nhưng có thể bao gồm cả kết quả dương tính giả. |
iou | float | 0.7 | Đặt ngưỡng Intersection over Union (IoU) để lọc các đối tượng phát hiện bị chồng lấn. |
classes | list | None | Lọc kết quả theo chỉ mục class. Ví dụ: classes=[0, 2, 3] chỉ theo dõi các class được chỉ định. |
device | str | None | Chỉ định thiết bị dùng để suy luận (ví dụ: cpu, cuda:0 hoặc 0). Cho phép người dùng chọn CPU, một GPU cụ thể hoặc thiết bị tính toán khác để chạy model. |
imgsz | int or tuple | 640 | Kích thước ảnh suy luận mục tiêu: số nguyên cho ảnh vuông hoặc cặp (height, width). Kích thước sẽ được điều chỉnh theo stride của model. |
max_det | int | 300 | Số lượng đối tượng phát hiện tối đa được giữ lại trong mỗi khung hình trước khi theo dõi, giới hạn số đối tượng mà một giải pháp xử lý trong các cảnh dày đặc. |
quantize | int or str | None | Độ chính xác suy luận: 16 (FP16) hoặc 32/unset (FP32) cho model PyTorch và TorchScript khi chạy ngoài CPU; các định dạng khác sử dụng độ chính xác do artifact và runtime của chúng lựa chọn. Thay thế đối số half đã lỗi thời. |
Ngoài ra, một số tham số trực quan hóa cũng được hỗ trợ, như liệt kê bên dưới:
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
show | bool | False | Nếu True, hiển thị ảnh hoặc video đã được chú thích trong một cửa sổ. Hữu ích để nhận phản hồi trực quan ngay lập tức trong quá trình phát triển hoặc kiểm thử. |
show_conf | bool | True | Hiển thị điểm confidence bên cạnh nhãn của mỗi detection. Cho biết mức độ chắc chắn của model đối với từng detection. |
show_labels | bool | True | Hiển thị nhãn cho mỗi detection trong đầu ra trực quan. Giúp nhận biết ngay các đối tượng được phát hiện. |
Cách VisionEye hoạt động#
VisionEye hoạt động bằng cách thiết lập một điểm nhìn cố định trong khung hình và vẽ các đường từ điểm này đến những đối tượng được phát hiện. Cách này mô phỏng việc thị giác con người tập trung vào nhiều đối tượng từ một góc nhìn duy nhất. Solution sử dụng theo dõi đối tượng để duy trì khả năng nhận diện nhất quán các đối tượng qua nhiều khung hình, tạo ra hình ảnh trực quan về mối quan hệ không gian giữa người quan sát (điểm nhìn) và các đối tượng trong cảnh.
Phương thức process trong lớp VisionEye thực hiện một số thao tác chính:
- Trích xuất các track (bounding box, lớp và ID track) từ ảnh đầu vào
- Tạo annotator để vẽ bounding box và nhãn
- Với mỗi đối tượng được phát hiện, vẽ nhãn hộp và tạo một đường nhìn từ điểm nhìn
- Trả về ảnh đã được chú thích cùng với thống kê theo dõi
Phương pháp này đặc biệt hữu ích cho các ứng dụng đòi hỏi nhận biết không gian và trực quan hóa mối quan hệ giữa các đối tượng, chẳng hạn như hệ thống giám sát, điều hướng tự động và các hệ thống tương tác.
Ứng dụng của VisionEye#
Ánh xạ đối tượng VisionEye có nhiều ứng dụng thực tế trong các ngành khác nhau:
- An ninh và giám sát: Theo dõi nhiều đối tượng đáng chú ý từ một vị trí camera cố định
- Phân tích bán lẻ: Theo dõi kiểu di chuyển của khách hàng so với các quầy trưng bày trong cửa hàng
- Phân tích thể thao: Phân tích vị trí và chuyển động của cầu thủ từ góc nhìn của huấn luyện viên
- Xe tự hành: Trực quan hóa cách phương tiện "nhìn thấy" và ưu tiên các đối tượng trong môi trường xung quanh
- Tương tác người-máy tính: Tạo giao diện trực quan hơn, có khả năng phản hồi các mối quan hệ không gian
Kết hợp VisionEye với các solution khác của Ultralytics như tính khoảng cách hoặc ước tính tốc độ, bạn có thể xây dựng các hệ thống toàn diện không chỉ theo dõi đối tượng mà còn hiểu được mối quan hệ không gian và hành vi của chúng.
Câu hỏi thường gặp#
Để bắt đầu sử dụng tính năng ánh xạ đối tượng VisionEye với Ultralytics YOLO26, trước tiên bạn cần cài đặt package Ultralytics YOLO bằng pip. Sau đó, bạn có thể dùng mã mẫu trong tài liệu để thiết lập phát hiện đối tượng với VisionEye. Sau đây là ví dụ đơn giản để bạn bắt đầu:
import cv2 from ultralytics import solutions cap = cv2.VideoCapture("path/to/video.mp4") assert cap.isOpened(), "Error reading video file" # Bộ ghi video w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS)) video_writer = cv2.VideoWriter("vision-eye-mapping.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h)) # Khởi tạo đối tượng vision eye visioneye = solutions.VisionEye( show=True, # hiển thị đầu ra model="yolo26n.pt", # sử dụng bất kỳ model nào được Ultralytics hỗ trợ, ví dụ: yolo26s.pt classes=[0, 2], # tạo chế độ xem visioneye cho các lớp cụ thể ) # Xử lý video while cap.isOpened(): success, im0 = cap.read() if not success: print("Video frame is empty or video processing has been successfully completed.") break results = visioneye(im0) print(results) # truy cập đầu ra video_writer.write(results.plot_im) # ghi tệp video cap.release() video_writer.release() cv2.destroyAllWindows() # đóng tất cả cửa sổ đang mởUltralytics YOLO26 nổi tiếng về tốc độ, độ chính xác và khả năng tích hợp dễ dàng, nhờ đó trở thành lựa chọn hàng đầu cho việc ánh xạ và theo dõi đối tượng. Các ưu điểm chính gồm:
- Hiệu suất tiên tiến: Mang lại độ chính xác cao trong tác vụ phát hiện đối tượng theo thời gian thực.
- Tính linh hoạt: Hỗ trợ phát hiện, theo dõi và tính khoảng cách trong cùng một pipeline.
- Cộng đồng và hỗ trợ: Tài liệu toàn diện và cộng đồng GitHub năng động giúp xử lý sự cố và cải tiến.
- Dễ sử dụng: API trực quan giúp đơn giản hóa các tác vụ phức tạp, cho phép triển khai và lặp lại nhanh chóng.
Để biết thêm thông tin về ứng dụng và lợi ích, hãy xem tài liệu Ultralytics YOLO26.
Ultralytics YOLO26 có thể tích hợp liền mạch với nhiều công cụ học máy như Comet và ClearML, giúp nâng cao khả năng theo dõi thử nghiệm, cộng tác và tái lập kết quả. Hãy làm theo hướng dẫn chi tiết về tích hợp YOLO26 với Comet và tích hợp YOLO26 với ClearML để bắt đầu.
Để tìm hiểu thêm và xem các ví dụ tích hợp, hãy tham khảo Hướng dẫn tích hợp Ultralytics.