Nâng cao các ứng dụng thị giác máy tính bằng trực quan hóa
Tìm hiểu cách chuyể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 package Ultralytics Python để có được insight tốt hơn.

Mỗi phút, một lượng dữ liệu khổng lồ được tạo ra, từ các nhà ga sân bay và ga tàu đến trung tâm mua sắm. Khi AI ngày càng được sử dụng rộng rãi, phần lớn dữ liệu này hiện được phân tích và xử lý. Tuy nhiên, đôi khi kết quả từ các model AI có thể khiến việc nhận diện mẫu hoặc nắm bắt xu hướng ngay lập tức trở nên khó khăn. Đó là lúc trực quan hóa dữ liệu phát huy tác dụng - biến các đầu ra phức tạp thành những insight rõ ràng, dễ tiếp nhận.
Điều này đặc biệt đúng với 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 hình ảnh từ thế giới xung quanh, chẳng hạn như hình ảnh và video. Mặc dù các model AI thị giác, như Ultralytics YOLO11, có thể phân tích dữ liệu hình ảnh để thu thập thông tin, trực quan hóa dữ liệu giúp chuyển thông tin đó thành đị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 sự bằng cách sử dụng các biểu đồ phân tích có ý nghĩa. Trong thế giới vận hành dựa trê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 tác vụ - chúng ta còn cần chúng kể được một câu chuyện.
Nhu cầu kể chuyện đó chính là lý do trực quan hóa dữ liệu ngày càng phát triển, với quy mô thị trường dự kiến đạt $18.36 billion vào năm 2030. Trước đây, chúng ta đã tìm hiểu cách thị giác máy tính có thể cung cấp insight kinh doanh có giá trị. Hôm nay, chúng ta sẽ tiến thêm một bước bằng cách hướng dẫn cách tạo các biểu đồ phân tích rõ ràng, giàu insight cho các ứng dụng thị giác máy tính bằng package Ultralytics. Hãy bắt đầu!

Hình 1. Ví dụ về trực quan hóa dữ liệu dựa trên các đầu ra của 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à tracking đối tượng, thành các biểu đồ hoặc dashboard dễ hiểu. Những hình ảnh trực quan này giúp xác định các mẫu và xu hướng, đặc biệt khi làm việc với khối lượng lớn video.
Ví dụ, thay vì xem thủ công hàng giờ video giám sát, một biểu đồ đường đơn giản thể hiện số lượng ô tô hoặc người được phát hiện theo thời gian có thể nhanh chóng làm nổi bật các giờ cao điểm hoặc những khoảng thời gian yên ắng 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 nghìn lượt phát hiện đối tượng có thể gây quá tải, nhưng các hình thức trực quan hóa như biểu đồ cột hoặc biểu đồ tròn giúp dễ dàng nắm bắt bức tranh tổng thể, chẳng hạn như đối tượng nào xuất hiện thường xuyên nhất.
-
Làm nổi bật xu hướng: Biểu đồ đường và biểu đồ 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 người đi bộ có xu hướng tăng.
-
Tiết kiệm thời gian: Thay vì xem từng frame 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 vọt đột ngột trong hoạt động của phương tiện 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 trực quan giúp chia sẻ insight với những đối tượng không chuyên về kỹ thuật dễ dàng hơn, qua đó 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 trực quan rõ ràng, dễ hiểu. Giả sử bạn đang phát triể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 video giám sát. Trong trường hợp này, biểu đồ đường rất phù hợp để thể hiện số lượt phát hiện thay đổi theo thời gian, chẳng hạn như theo dõi các đỉnh lưu lượng người đi bộ trong ngày.
Tương tự, biểu đồ cộ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 trong video có nhiều ô tô, xe đạp hay người đi bộ hơn. Trong khi đó, biểu đồ tròn cho biết mỗi loại đối tượng chiếm bao nhiêu phần trăm tổng số lượt phát hiện. Mỗi biểu đồ có công 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 biểu đồ phân tích.
Tạo biểu đồ phân tích để thu thập insight từ thị giác máy tính#
Sau khi đã tìm hiểu 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 cùng xem xét kỹ hơn cách sử dụng giải pháp Analytics của Ultralytics để trực quan hóa kết quả dự đoán từ model thị giác máy tính của bạn. Trước khi hướng dẫn từng bước, hãy cùng xem qua các công cụ và tùy chọn thiết lập để training và sử dụng package Ultralytics cùng các model như YOLO11.
Package Python của Ultralytics giúp dễ dàng training model, 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 lập trình. 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ỉ sử dụng văn bản, trong đó bạn có thể nhập lệnh để chạy code. Công cụ này không có giao diện trực quan; bạn tương tác với nó bằng cách nhập hướng dẫn vào terminal hoặc command prompt.
-
Jupyter Notebooks: Đây là một môi trường lập trình tương tác, nơi bạn có thể viết, chạy và kiểm thử từng đoạn code nhỏ (gọi là "cell") lần lượt. Kết quả được hiển thị ngay bên dưới mỗi cell, giúp dễ dàng hiểu những gì đang diễn ra theo từng bước. Công cụ này đặc biệt hữu ích cho việc học tập và thử nghiệm.
-
Google Colab: Đây là phiên bản Jupyter Notebooks miễn phí trên cloud, chạy trong trình duyệt web. Công cụ này không yêu cầu thiết lập trên máy tính và cung cấp quyền truy cập vào GPU miễn phí để xử lý nhanh hơn.
Những 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 (IDEs) như Visual Studio Code (VS Code) hoặc vào các pipeline production. Để biết thêm tùy chọn, hãy tham khảo tài liệu Ultralytics chính thức.
Bước 1: Thiết lập môi trường#
Sau khi chọn môi trường phù hợp, bước tiếp theo là thiết lập môi trường để 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 theo môi trường bạn cảm thấy thoải mái nhất.
Nếu làm việc trong Google Colab, hãy lưu ý rằng Colab mặc định sử dụng CPU, điều này có thể làm giảm hiệu năng. Để tăng tốc, hãy chuyển sang GPU bằng cách mở menu "Runtime", chọn "Change runtime type" và đặt hardware accelerator thành GPU (lý tưởng nhất là T4).
Để chuẩn bị môi trường, bạn cần cài đặt package Python Ultralytics 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 thêm dấu chấm than (!) trước lệnh.
pip install ultralyticsBước 2: Tải xuống file video#
Tiếp theo, chúng ta cần một video để làm việc. Bạn có thể dễ dàng tải xuống video từ các website cung cấp stock miễn phí như Pexels. Hãy chọn video có các đối tượng mà Ultralytics YOLO11 có thể phát hiện. Vì model được pretrained trên dataset COCO, model có thể nhận diện các đối tượng phổ biến như người, ô tô và xe đạp.
Trong tutorial này, chúng ta sẽ sử dụng một video về xử lý hành lý trong một nhà ga sân bay đông đúc. Bạn có thể sử dụng cùng video đó hoặc chọn một video khác phù hợp với dự án của mình.

Hình 3. Một frame từ video đầu vào cho thấy hoạt động xử lý hành lý trong nhà ga sân bay.
Bước 3: Import các package#
Tiếp theo, chúng ta có thể import các thư viện cần thiết và load video đầu vào.
Chúng ta sẽ bắt đầu bằng việc import 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 thị giác máy tính. Chúng ta cũng sẽ import thư viện Ultralytics, giúp chạy tác vụ phát hiện đối tượng và tạo analytics từ video.
Sau đó, chúng ta sẽ thử mở file video bằng cách chỉ định path của file. Hãy nhớ thay thế "path/to/video.mp4" bằng vị trí thực tế của file video đã tải xuống.
Ngoài ra, đoạn code bên dưới có một bước kiểm tra đơn giản để đảm bảo video được load chính xác. Nếu path không đúng hoặc file bị hỏng, chương trình sẽ dừng và hiển thị thông báo lỗi: "Error reading video file."
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ị video writer#
Tiếp theo, chúng ta sẽ thiết lập video writer để lưu output. Khi chạy analytics, phần code này sẽ tạo một file video mới, ghi lại các biểu đồ được cập nhật và tạo từ từng frame 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ố frame mỗi giây (fps). Các giá trị này được lấy trực tiếp từ video và chuyển đổi thành số nguyên để đảm bảo đúng định dạng khi ghi output.
Tiếp theo, chúng ta sử dụng hàm cv2.VideoWriter để tạo một file video mới có tên "analytics_output.avi" (bạn có thể đổi tên nếu cần). Video được lưu bằng định dạng MJPG, một phương thức nén video phổ biến. Độ phân giải output được đặt là 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 Analytics của Ultralytics#
Bây giờ, chúng ta sẽ thiết lập giải pháp Analytics của Ultralytics để 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, biểu đồ tròn, biểu đồ vùng hoặc biểu đồ cột, cũng như model YOLO sẽ sử dụng. Trong ví dụ này, chúng ta sẽ sử dụng model nhẹ "yolo11n.pt" 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ủa code chạy một vòng lặp để xử lý video từng frame một. Mỗi frame được truyền vào công cụ analytics, công cụ này cập nhật biểu đồ theo thời gian thực. Sau đó, biểu đồ đã cập nhật được ghi vào video output. Nếu không thể đọc một frame, vòng lặp sẽ dừng. Sau khi xử lý tất cả frame, video được lưu và mọi cửa sổ đang mở sẽ được đó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ả thành một quy trình#
Cuối cùng, hãy kết hợp mọi thứ. Chỉ với một vài dòng code bổ sung, chúng ta có thể tạo hai video output: một video hiển thị kết quả phát hiện đối tượng của Ultralytics YOLO11 với các bounding box và label, và một video khác hiển thị các biểu đồ analytics theo thời gian thực.
Để thực hiện việc này, chúng ta sẽ thiết lập hai instance VideoWriter - một instance để lưu video dự đoán và instance còn lại cho analytics. Phiên bản code này bao gồm cả tracking đối tượng và tạo biểu đồ, vì vậy bạn có thể xem kết quả phát hiện cùng với các insight trực quan.
Dưới đây là code đầy đủ cùng với các ví dụ về output dự đoán và output analytics.
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 code trên chạy thành công, nó sẽ tạo ra hai video output. File “output_predictions.avi” sẽ hiển thị kết quả phát hiện đối tượng với bounding box và label, trong khi “output_analytics.avi” sẽ hiển thị các biểu đồ analytics theo thời gian thực dựa trên các lượt phát hiện.

Hình 4. Một frame từ file “output_predictions.avi”.
Dưới đây là một frame từ output analytics dựa trên các dự đoán. Bằng cách sử dụng biểu đồ vùng, chúng ta có thể thu được các insight như biến động về số lượng vali theo thời gian, chẳng hạn như mức tăng đột biến quanh frame 268, cho thấy sự di chuyển hoặc hoạt động của vali tại phần đó của video.

Hình 5. Các dự đoán của Ultralytics YOLO11 được trực quan hóa dưới dạng biểu đồ vùng.
Sử dụng biểu đồ 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ế mà trực quan hóa dữ liệu tạo ra tác động đáng kể:
-
Chăm sóc sức khỏe: Các hệ thống thị giác máy tính có thể giám sát hoạt động của bệnh nhân, chuyển động của nhân viên và việc sử dụng thiết bị theo thời gian thực. Điều này tạo ra lượng lớn dữ liệu hình ảnh mà khi được trực quan hóa có thể làm lộ ra các mẫu, chẳng hạn như thời điểm số lượng bệnh nhân đạt đỉnh hoặc sự chậm trễ trong phản hồi.
-
Bán lẻ và thương mại điện tử: AI thị giác 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 với sản phẩm. Các hình thức phân tích trực quan như biểu đồ cột hoặc biểu đồ 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 tỷ lệ chuyển đổi.
-
Sản xuất: Các camera được trang bị model thị giác máy tính có thể giám sát dây chuyền lắp ráp để phát hiện 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ể cho thấy xu hướng của các loại lỗi phổ biến nhất hoặc làm nổi bật những khoảng thời gian có tỷ lệ lỗi cao nhất, cho phép ra quyết định nhanh hơn và thực hiện bảo trì phòng ngừa.
Những điểm chính#
Với package Ultralytics, bạn có thể dễ dàng biến video thành các biểu đồ rõ ràng, giàu insight, làm nổi bật những gì đang diễn ra, chẳng hạn như theo dõi số lượng người hoặc đối tượng xuất hiện theo thời gian. Thay vì xem 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 những mẫu và xu hướng chính, giúp hành động nhanh chóng hơn. Dù được sử dụng trong bệnh viện, cửa hàng bán lẻ hay cơ sở sản xuất, các biểu đồ này biến những đầu ra AI phức tạp thành insight 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? Hãy khám phá repository 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 để bắt đầu dự án thị giác máy tính của bạn. Tìm hiểu thêm về các đổi mới như AI trong sản xuất và thị 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.









