Ultralytics YOLO27:

Ánh xạ đối tượng góc nhìn VisionEye sử dụng Ultralytics YOLO26#

Lập bản đồ đối tượng VisionEye là gì?#

Ultralytics YOLO26 VisionEye cung cấp khả năng giúp máy tính nhận diện và xác định vị trí của các đối tượng, mô phỏng độ chính xác trong quan sát của mắt người. Chức năng này cho phé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 các chi tiết từ một góc nhìn nhất định.

VisionEye object mapping with YOLO tracking

Lập bản đồ đố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 tracking, giúp bạn trực quan hóa diện mạo của cảnh 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.

Lập bản đồ VisionEye bằng Ultralytics YOLO
# 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 argument của VisionEye#

Dưới đây là bảng các tham số của VisionEye:

Đối sốKiểuMặc địnhMô tả
modelstrNoneĐường dẫn đến file model Ultralytics YOLO.
vision_pointtuple[int, int](20, 20)Điểm mà VisionEye Solution sẽ dùng để tracking đối tượng và vẽ path.
line_widthint2Độ dày đường kẻ cho các box, keypoint và số lượng mà solution vẽ.
verboseboolTrueBật log theo từng frame của solution, gồm kích thước input, số lượng class và tốc độ xử lý. Riêng lệnh tracking luôn ở chế độ im lặng.

Bạn cũng có thể sử dụng nhiều tham số track trong solution VisionEye:

Đối sốKiểuMặc địnhMô tả
trackerstr'botsort.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.
conffloat0.25Thiết lập ngưỡng độ tin cậy cho các detection; 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ác false positive.
ioufloat0.7Thiết lập ngưỡng Intersection over Union (IoU) để lọc các detection chồng lấn.
classeslistNoneLọc kết quả theo chỉ số class. Ví dụ, classes=[0, 2, 3] chỉ theo dõi các class được chỉ định.
devicestrNoneChỉ định thiết bị dùng cho inference (ví dụ: cpu, cuda:0 hoặc 0). Cho phép người dùng lựa chọn giữa CPU, một GPU cụ thể hoặc các thiết bị tính toán khác để thực thi model.
imgszint or tuple640Kích thước ảnh inference mục tiêu: một số nguyên cho ảnh vuông hoặc một cặp (height, width). Các hình dạng được điều chỉnh theo stride của model.
max_detint300Số lượng detection tối đa được giữ lại trên mỗi frame trước khi tracking, giới hạn các đối tượng mà một solution xử lý trong các scene đông đúc.
quantizeint or strNoneĐộ chính xác inference: 16 (FP16) hoặc 32/không thiết lập (FP32) đối với các model PyTorch và TorchScript; các định dạng khác tính toán ở độ chính xác mà artifact và runtime của chúng chọn. Thay thế cờ half đã bị loại bỏ.

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ểuMặc địnhMô tả
showboolFalseNếu True, hiển thị image hoặc video đã được annotate 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 development hoặc testing.
show_confboolTrueHiển thị score confidence cho mỗi detection bên cạnh label. Cung cấp thông tin về mức độ chắc chắn của model đối với từng detection.
show_labelsboolTrueHiển thị label cho mỗi detection trong output trực quan. Cung cấp nhận biết tức thì về các object được phát hiện.

VisionEye hoạt động như thế nào#

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 các đối tượng được phát hiện. Cách này mô phỏng cách thị giác của 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 tracking đối tượng để duy trì việc nhận diện nhất quán các đối tượng qua từng khung hình, tạo ra biểu diễn 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.

Method process trong class VisionEye thực hiện một số thao tác chính:

  1. Trích xuất các track (bounding box, class và mask) từ ảnh đầu vào
  2. Tạo annotator để vẽ bounding box và label
  3. Với mỗi đối tượng được phát hiện, vẽ label của box và tạo một đường nhìn từ điểm nhìn
  4. Trả về ảnh đã được chú thích cùng các thống kê tracking

Phương pháp này đặc biệt hữu ích cho các ứng dụng yêu cầu nhận thức 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 installation tương tác.

Các ứng dụng của VisionEye#

Lập bản đồ đối tượng bằng VisionEye có nhiều ứng dụng thực tiễn trong nhiều 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 các mô hình di chuyển của khách hàng trong mối tương quan với khu vực 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
  • Phương tiện tự hành: Trực quan hóa cách một 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 các giao diện trực quan hơn, phản hồi theo các mối quan hệ không gian

Bằng cách 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ỉ tracking đối tượng mà còn hiểu được mối quan hệ không gian và hành vi của chúng.

FAQ#

  • Để bắt đầu sử dụng Lập bản đồ đối tượng VisionEye với Ultralytics YOLO26, trước tiên bạn cần cài đặt package Ultralytics YOLO thông qua pip. Sau đó, bạn có thể sử dụng code mẫu được cung cấp trong tài liệu để thiết lập phát hiện đối tượng với VisionEye. Dưới đây là một ví dụ đơn giản để bắt đầu:

    import cv2
    
    from ultralytics import solutions
    
    cap = cv2.VideoCapture("path/to/video.mp4")
    assert cap.isOpened(), "Error reading video file"
    
    # Video writer
    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))
    
    # Init vision eye object
    visioneye = solutions.VisionEye(
        show=True,  # display the output
        model="yolo26n.pt",  # use any model that Ultralytics supports, e.g., yolo26s.pt
        classes=[0, 2],  # generate visioneye view for specific classes
    )
    
    # Process 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)  # access the output
    
        video_writer.write(results.plot_im)  # write the video file
    
    cap.release()
    video_writer.release()
    cv2.destroyAllWindows()  # destroy all opened windows
  • Ultralytics YOLO26 nổi tiếng nhờ tốc độ, độ chính xác và khả năng tích hợp dễ dàng, trở thành lựa chọn hàng đầu cho việc lập bản đồ và tracking đối tượng. Các ưu điểm chính gồm:

    1. Hiệu năng tiên tiến: Mang lại độ chính xác cao trong phát hiện đối tượng theo thời gian thực.
    2. Tính linh hoạt: Hỗ trợ phát hiện, tracking và tính khoảng cách trong một pipeline duy nhất.
    3. Cộng đồng và hỗ trợ: Tài liệu phong phú cùng cộng đồng GitHub tích cực hỗ trợ khắc phục sự cố và cải tiến.
    4. 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 nhanh chóng.

    Để biết thêm thông tin về các ứ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ụ machine learning như Comet và ClearML, nâng cao khả năng tracking experiment, cộng tác và tái lập kết quả. Hãy làm theo các hướng dẫn chi tiết về cách sử dụng YOLOv5 với Comettí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 xem Hướng dẫn tích hợp Ultralytics.

Bình luận