Đón xem YOLO Vision 2025!
25 tháng 9, 2025
10:00 — 18:00 BST
Sự kiện kết hợp
Yolo Vision 2024

Nâng cao các ứng dụng Computer Vision bằng hình ảnh trực quan

Nuvola Ladi

4 phút đọc

12 tháng 5, 2025

Tìm hiểu cách biến dữ liệu từ các ứng dụng thị giác máy tính thành các biểu đồ dễ hiểu bằng cách sử dụng gói Ultralytics Python để có được thông tin chi tiết tốt hơn.

Mỗi phút, một lượng lớn dữ liệu được tạo ra, từ các nhà ga sân bay và ga tàu đến các trung tâm mua sắm. Khi AI được sử dụng rộng rãi hơn, rất nhiều dữ liệu này hiện được phân tích và chia nhỏ. Nhưng đôi khi kết quả từ các mô hình AI này có thể gây khó khăn cho việc phát hiện các mẫu hoặc hiểu các xu hướng một cách nhanh chóng. Đó là lý do tại sao trực quan hóa dữ liệu lại hữu ích - nó biến các đầu ra phức tạp thành những hiểu biết rõ ràng, dễ tiếp thu.

Điều này đặc biệt đúng khi nói đến các ứng dụng thị giác máy tính. Thị giác máy tính là một nhánh của trí tuệ nhân tạo (AI) giúp máy móc diễn giải và hiểu thông tin trực quan từ thế giới xung quanh, chẳng hạn như hình ảnh và video. Trong khi các mô hình Vision AI, như Ultralytics YOLO11, có thể giúp phân tích dữ liệu trực quan đó để thu thập thông tin, thì trực quan hóa dữ liệu giúp đưa thông tin đó vào một định dạng dễ hiểu.

Nói một cách đơn giản, trực quan hóa dữ liệu thu hẹp khoảng cách giữa dữ liệu thô và sự hiểu biết thực tế bằng cách sử dụng các biểu đồ phân tích có ý nghĩa. Trong thế giới hướng đến dữ liệu ngày nay, điều này rất quan trọng vì máy móc không chỉ cần thực hiện các tác vụ mà còn cần kể một câu chuyện.

Nhu cầu kể chuyện đó chính xác là lý do tại sao trực quan hóa dữ liệu ngày càng phát triển, với thị trường dự kiến đạt 18,36 tỷ đô la vào năm 2030. Trước đây, chúng ta đã khám phá cách thị giác máy tính có thể mang lại thông tin chi tiết về kinh doanh có giá trị. Hôm nay, chúng ta sẽ tiến thêm một bước nữa bằng cách hướng dẫn cách tạo ra các biểu đồ phân tích rõ ràng, sâu sắc cho các ứng dụng thị giác máy tính bằng cách sử dụng gói Ultralytics. Hãy bắt đầu nào!

Hình 1. Một ví dụ về việc trực quan hóa dữ liệu dựa trên đầu ra từ YOLO11.

Tổng quan về trực quan hóa dữ liệu trong các ứng dụng thị giác máy tính

Trực quan hóa dữ liệu trong các ứng dụng thị giác máy tính bao gồm việc chuyển đổi kết quả của các tác vụ thị giác máy tính, chẳng hạn như phát hiện và theo dõi đối tượng, thành các biểu đồ hoặc bảng điều khiển dễ hiểu. Những hình ảnh này giúp xác định các mô hình và xu hướng, đặc biệt khi làm việc với khối lượng lớn cảnh quay video. 

Ví dụ: Thay vì xem xét thủ công hàng giờ video giám sát, một biểu đồ đường đơn giản hiển thị số lượng xe hơi hoặc người được phát hiện theo thời gian có thể nhanh chóng làm nổi bật giờ cao điểm hoặc thời gian yên tĩnh bất thường.

Dưới đây là một số lý do chính khiến trực quan hóa dữ liệu hữu ích:

  • Đơn giản hóa dữ liệu phức tạp: Hàng ngàn phát hiện đối tượng có thể gây choáng ngợp, nhưng các hình ảnh trực quan như biểu đồ thanh hoặc tròn giúp bạn dễ dàng nhìn thấy bức tranh toàn cảnh hơn, ví dụ: những đối tượng nào xuất hiện thường xuyên nhất.
  • Tiết lộ xu hướng: Đồ thị đường và cột giúp xác định các mẫu theo thời gian, chẳng hạn như thời điểm và địa điểm lưu lượng truy cập tăng lên.
  • Tiết kiệm thời gian: Thay vì xem xét mọi khung hình video, biểu đồ có thể nhanh chóng làm nổi bật các chi tiết quan trọng, như sự tăng đột biến trong hoạt động của xe hoặc sự xuất hiện bất thường của đối tượng trong các khu vực hạn chế.
  • Cải thiện giao tiếp: Hình ảnh giúp chia sẻ thông tin chi tiết với khán giả không chuyên môn dễ dàng hơn, giúp mọi người hiểu kết quả rõ ràng hơn.

Các loại trực quan hóa dữ liệu khác nhau

Các loại biểu đồ phân tích khác nhau có thể biến kết quả thị giác máy tính thành hình ảnh rõ ràng, dễ hiểu. Giả sử bạn đang làm việc trên một ứng dụng thị giác máy tính phát hiện người và phương tiện trong cảnh quay giám sát. Trong trường hợp này, biểu đồ đường rất phù hợp để hiển thị số lượng phát hiện thay đổi theo thời gian, chẳng hạn như theo dõi số lượng người qua lại trong suốt cả ngày.

Tương tự, biểu đồ cột rất hữu ích khi bạn muốn so sánh số lượng các loại đối tượng khác nhau được phát hiện, chẳng hạn như xem có nhiều ô tô, xe đạp hoặc người đi bộ xuất hiện trong video hay không. Mặt khác, biểu đồ hình tròn cho biết tỷ lệ phần trăm của từng loại đối tượng chiếm tổng số phát hiện. Mỗi biểu đồ có mục đích sử dụng riêng và giúp dữ liệu thị giác máy tính phức tạp dễ diễn giải và chia sẻ hơn.

Hình 2. Ví dụ về các đồ thị phân tích.

Tạo đồ thị phân tích để có được thông tin chi tiết về thị giác máy tính

Sau khi khám phá trực quan hóa dữ liệu là gì và tại sao các loại biểu đồ phân tích khác nhau lại quan trọng, hãy xem xét kỹ hơn cách sử dụng giải pháp Ultralytics Analytics để trực quan hóa kết quả dự đoán mô hình thị giác máy tính của bạn. Trước khi đi sâu vào quy trình từng bước, hãy xem xét các công cụ và tùy chọn thiết lập để huấn luyện và sử dụng gói Ultralytics và các mô hình như YOLO11. 

Gói Ultralytics Python giúp bạn dễ dàng huấn luyện mô hình, phát hiện đối tượng, chạy dự đoán và trực quan hóa kết quả. Để bắt đầu, bạn sẽ cần một môi trường viết code. Dưới đây là ba tùy chọn đơn giản:

  • Giao diện dòng lệnh (CLI): Đây là một công cụ cơ bản, chỉ có văn bản, nơi bạn có thể nhập lệnh để chạy code của mình. Nó không có giao diện trực quan và bạn tương tác với nó bằng cách nhập hướng dẫn vào terminal hoặc dấu nhắc lệnh.
  • Jupyter Notebooks: Đây là một môi trường viết mã tương tác, nơi bạn có thể viết, chạy và kiểm tra các đoạn mã nhỏ (gọi là "ô") từng cái một. Nó hiển thị kết quả trực tiếp bên dưới mỗi ô, giúp bạn dễ dàng hiểu những gì đang xảy ra từng bước. Nó đặc biệt hữu ích cho việc học tập và thử nghiệm.
  • Google Colab: Đây là một phiên bản dựa trên đám mây miễn phí của Jupyter Notebooks, chạy trong trình duyệt web của bạn. Nó không yêu cầu bất kỳ thiết lập nào trên máy tính của bạn và cho phép bạn truy cập vào GPU miễn phí để xử lý nhanh hơn.

Các công cụ này rất phù hợp để bắt đầu nhanh chóng, nhưng người dùng cũng có thể tích hợp Ultralytics vào các Môi trường phát triển tích hợp (IDE) như Visual Studio Code (VS Code) hoặc vào các quy trình sản xuất. Để có thêm các tùy chọn, hãy khám phá tài liệu Ultralytics chính thức.

Bước 1: Thiết lập môi trường

Sau khi bạn đã chọn môi trường ưa thích của mình, bước tiếp theo là thiết lập nó để chạy dự đoán và trực quan hóa kết quả. Bạn có thể sử dụng bất kỳ môi trường nào được đề cập ở trên, tùy thuộc vào môi trường nào bạn cảm thấy thoải mái nhất.

Nếu bạn đang làm việc trong Google Colab, hãy nhớ rằng nó sử dụng CPU theo mặc định, điều này có thể làm chậm hiệu suất. Để tăng tốc, hãy chuyển sang GPU bằng cách vào menu "Runtime", chọn "Change runtime type" và đặt bộ tăng tốc phần cứng thành GPU (lý tưởng nhất là T4).

Để chuẩn bị môi trường của bạn, bạn cần cài đặt gói Ultralytics Python bằng lệnh được đề cập bên dưới. Trong các công cụ dựa trên notebook như Colab hoặc Jupyter, hãy nhớ thêm dấu chấm than (!) trước lệnh.

pip install ultralytics

Bước 2: Tải xuống một tệp video

Tiếp theo, chúng ta sẽ cần một video để làm việc. Bạn có thể dễ dàng tải xuống một video từ một trang web cung cấp video miễn phí như Pexels. Hãy chắc chắn chọn một video có các đối tượng mà YOLO11 có thể phát hiện. Vì mô hình được huấn luyện trước trên tập dữ liệu COCO, nên nó có thể nhận ra các đối tượng phổ biến như người, ô tô và xe đạp. 

Trong hướng dẫn này, chúng ta sẽ sử dụng video về xử lý hành lý tại một nhà ga sân bay bận rộn. Bạn có thể sử dụng cùng một video hoặc chọn một video khác phù hợp với dự án của bạn.

Hình 3. Một khung hình từ video đầu vào cho thấy hoạt động xử lý hành lý tại một nhà ga sân bay.

Bước 3: Nhập các gói thư viện

Tiếp theo, chúng ta có thể nhập các thư viện cần thiết và tải video đầu vào.

Chúng ta sẽ bắt đầu bằng cách nhập OpenCV (cv2), một thư viện được sử dụng rộng rãi để làm việc với hình ảnh và video trong computer vision. Chúng ta cũng sẽ nhập thư viện Ultralytics, thư viện này giúp chúng ta chạy object detection (phát hiện đối tượng) và tạo ra các phân tích từ video.

Sau đó, chúng ta sẽ thử mở tệp video bằng cách chỉ định đường dẫn của nó. Đảm bảo thay thế "path/to/video.mp4" bằng vị trí thực tế của tệp video bạn đã tải xuống. 

Ngoài ra, đoạn mã dưới đây bao gồm một kiểm tra đơn giản để đảm bảo video được tải chính xác. Nếu đường dẫn sai hoặc tệp bị hỏng, chương trình sẽ dừng và hiển thị thông báo lỗi: "Error reading video file." (Lỗi đọc tệp video).

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

Bước 4: Chuẩn bị trình ghi video

Sau đó, chúng ta sẽ thiết lập một trình ghi video để lưu đầu ra. Khi chúng ta chạy phân tích, phần này của mã sẽ tạo một tệp video mới ghi lại các biểu đồ được cập nhật được tạo từ mỗi khung hình của video gốc.

Trong đoạn code bên dưới, trước tiên chúng ta trích xuất các thuộc tính chính từ video đầu vào - chiều rộng, chiều cao và số khung hình trên giây (fps). Các giá trị này được lấy trực tiếp từ video và được chuyển đổi thành số nguyên để đảm bảo chúng ở đúng định dạng để ghi đầu ra.

Tiếp theo, chúng ta sử dụng hàm cv2.VideoWriter để tạo một tệp video mới, có tên là "analytics_output.avi" (bạn có thể đổi tên nếu cần). Video được lưu bằng định dạng MJPG, đây là một phương pháp nén video phổ biến. Độ phân giải đầu ra được đặt thành 1280×720 pixel, bất kể kích thước video gốc.

w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
out = cv2.VideoWriter(
    "analytics_output.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720), 
)

Bước 5: Thiết lập giải pháp Ultralytics Analytics

Bây giờ, chúng ta sẽ thiết lập giải pháp Ultralytics Analytics để tạo biểu đồ từ video. Bạn có thể chọn cách hiển thị dữ liệu, chẳng hạn như biểu đồ đường, tròn, vùng hoặc cột và chọn mô hình YOLO để sử dụng. Trong ví dụ này, chúng ta sẽ sử dụng mô hình "yolo11n.pt" gọn nhẹ và hiển thị kết quả dưới dạng biểu đồ vùng.

analytics = solutions.Analytics(
    show=True, 
    analytics_type="area", 
    model="yolo11n.pt",   
)

Bước 6: Xử lý video đầu vào

Phần cuối cùng của mã chạy một vòng lặp xử lý video từng khung hình một. Mỗi khung hình được chuyển đến công cụ phân tích, công cụ này sẽ cập nhật biểu đồ trong thời gian thực. Biểu đồ được cập nhật sau đó được ghi vào video đầu ra. Nếu không thể đọc được khung hình, vòng lặp sẽ dừng lại. Sau khi tất cả các khung hình được xử lý, video sẽ được lưu và mọi cửa sổ đang mở sẽ bị đóng.

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count) 

        out.write(results.plot_im) 
    else:
        break
cap.release()
out.release()
cv2.destroyAllWindows()

Bước 7: Kết hợp tất cả lại với nhau

Cuối cùng, hãy cùng nhau tổng hợp mọi thứ. Chỉ với một vài dòng mã bổ sung, chúng ta có thể tạo ra hai video đầu ra: một video hiển thị kết quả phát hiện đối tượng YOLO11 với các hộp giới hạn và nhãn, và một video khác hiển thị đồ thị phân tích theo thời gian thực.

Để thực hiện việc này, chúng ta sẽ thiết lập hai phiên bản VideoWriter - một để lưu video dự đoán và một cho phân tích. Phiên bản mã này bao gồm cả theo dõi đối tượng và tạo biểu đồ, vì vậy bạn có thể thấy kết quả phát hiện cùng với thông tin chi tiết trực quan.

Đây là mã toàn diện cùng với các ví dụ về cả đầu ra dự đoán và phân tích.

import cv2
from ultralytics import YOLO, solutions

# Load model and video
model = YOLO('yolo11n.pt')
cap = cv2.VideoCapture('path/to/video.mp4')
assert cap.isOpened(), "Error opening video"

# Get properties
w, h = int(cap.get(3)), int(cap.get(4))
fps = cap.get(5)
analytics_res = (1280, 720)

# Writers for prediction and analytics videos
out_pred = cv2.VideoWriter('output_predictions.avi', cv2.VideoWriter_fourcc(*'MJPG'), fps, (w, h))
out_ana = cv2.VideoWriter('output_analytics.avi', cv2.VideoWriter_fourcc(*'MJPG'), fps, analytics_res)

# Analytics setup
analytics = solutions.Analytics(show=True, analytics_type="area", model='yolo11n.pt')

# Process frames
frame_count = 0
while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break

    frame_count += 1
    pred_frame = model.track(frame, persist=True)[0].plot()
    out_pred.write(pred_frame)

    resized = cv2.resize(pred_frame, analytics_res)
    out_ana.write(analytics(resized, frame_count).plot_im)

cap.release(), out_pred.release(), out_ana.release(), cv2.destroyAllWindows()

Khi đoạn mã trên chạy thành công, nó sẽ tạo ra hai video đầu ra. Tệp “output_predictions.avi” sẽ hiển thị kết quả phát hiện đối tượng với các hộp giới hạn và nhãn, trong khi “output_analytics.avi” sẽ hiển thị các biểu đồ phân tích theo thời gian thực dựa trên các kết quả phát hiện.

Hình 4. Một khung hình từ tệp “output_predictions.avi”.

Đây là một khung hình từ kết quả phân tích dựa trên các dự đoán. Sử dụng biểu đồ vùng, chúng ta có thể thu được những thông tin chi tiết như sự biến động về số lượng vali theo thời gian, chẳng hạn như một đỉnh điểm vào khoảng khung hình 268, cho thấy sự di chuyển hoặc hoạt động của vali trong phần video đó.

Hình 5. Dự đoán của YOLO11 được trực quan hóa dưới dạng đồ thị vùng.

Sử dụng đồ thị trong các ứng dụng thị giác máy tính thực tế

Dưới đây là một số ứng dụng thị giác máy tính thực tế, nơi trực quan hóa dữ liệu có tác động đáng kể:

  • Chăm sóc sức khỏe (Healthcare): Các hệ thống thị giác máy tính có thể theo dõi hoạt động của bệnh nhân, sự di chuyển của nhân viên và việc sử dụng thiết bị trong thời gian thực. Điều này tạo ra một lượng lớn dữ liệu trực quan mà khi được trực quan hóa, có thể tiết lộ các mẫu - chẳng hạn như thời gian bệnh nhân chiếm dụng cao điểm hoặc sự chậm trễ phản hồi.
  • Bán lẻ và thương mại điện tử: Thị giác AI có thể được sử dụng để theo dõi chuyển động của khách hàng, thời gian dừng trước kệ hàng và tương tác sản phẩm. Phân tích trực quan như biểu đồ thanh hoặc tròn có thể làm nổi bật khu vực cửa hàng hoặc mặt hàng nào nhận được nhiều sự chú ý nhất, giúp nhà bán lẻ tối ưu hóa vị trí sản phẩm và cải thiện chuyển đổi.
  • Sản xuất: Camera được trang bị các mô hình computer vision có thể theo dõi dây chuyền lắp ráp để tìm lỗi, vi phạm an toàn hoặc trạng thái thiết bị. Trực quan hóa dữ liệu có thể hiển thị xu hướng về các loại lỗi phổ biến nhất hoặc làm nổi bật các khoảng thời gian có tỷ lệ lỗi cao nhất, cho phép đưa ra quyết định nhanh hơn và bảo trì phòng ngừa.

Những điều cần nhớ

Với gói Ultralytics, bạn có thể dễ dàng biến cảnh quay video thành các biểu đồ rõ ràng, sâu sắc, tiết lộ những gì đang xảy ra, chẳng hạn như theo dõi số lượng người hoặc vật thể xuất hiện theo thời gian. Thay vì xem xét thủ công hàng giờ video, bạn có thể tạo các bản tóm tắt trực quan làm nổi bật các mẫu và xu hướng chính, giúp bạn hành động nhanh chóng hơn. Cho dù đó là trong bệnh viện, cửa hàng bán lẻ hay cơ sở sản xuất, những biểu đồ này biến các kết quả AI phức tạp thành những hiểu biết sâu sắc mà bất kỳ ai cũng có thể hiểu và sử dụng.

Bạn muốn tìm hiểu thêm về AI? Khám phá kho lưu trữ GitHub của chúng tôi, kết nối với cộng đồng của chúng tôi và xem các tùy chọn cấp phép của chúng tôi để khởi động dự án thị giác máy tính của bạn. Tìm hiểu thêm về những đổi mới như AI trong sản xuấtthị giác máy tính trong ngành logistics trên các trang giải pháp của chúng tôi.

Hãy cùng nhau xây dựng tương lai
của AI!

Bắt đầu hành trình của bạn với tương lai của học máy

Bắt đầu miễn phí
Đã sao chép liên kết vào clipboard