Tăng cường các ứng dụng computer vision bằng trực quan hóa dữ liệu
Tìm hiểu cách chuyển đổi 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 Python của Ultralytics để có thông tin chi tiết tốt hơn.

Mỗi phút, một lượng lớn dữ liệu đang được tạo ra, từ các nhà ga sân bay và nhà ga xe lửa đến các trung tâm mua sắm. Khi AI trở nên phổ biến hơn, phần lớn dữ liệu này hiện đang được phân tích và chia nhỏ. Tuy nhiên, đôi khi kết quả từ các mô hình AI này có thể gây khó khăn trong việc phát hiện các mô hình hoặc hiểu xu hướng ngay lập tức. Đó là lúc hình ảnh trực quan dữ liệu phát huy tác dụng - nó chuyển đổi các kết quả đầu ra phức tạp thành những thông tin chi tiết rõ ràng, dễ nắm bắt.
Điều này đặc biệt đúng đối với các ứng dụng thị giác máy tính. Computer vision 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, như hình ảnh và video. Mặc dù các mô hình vision AI, như Ultralytics YOLO11, có thể giúp phân tích dữ liệu hình ảnh như vậy để thu thập thông tin, hình ảnh trực quan 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, hình ảnh trực quan 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 dựa trên dữ liệu ngày nay, điều này rất quan trọng vì máy móc thực hiện nhiệm vụ thôi là chưa đủ - chúng ta cần chúng kể lại một câu chuyện.
Nhu cầu kể chuyện đó chính là lý do tại sao hình ảnh trực quan dữ liệu đang gia tăng, với thị trường dự kiến đạt mức $18.36 tỷ 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 bằng cách đi qua quy trình cách tạo 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 gói Ultralytics. Hãy bắt đầu nào!

Fig 1. Ví dụ về trực quan hóa dữ liệu dựa trên kết quả đầu ra từ YOLO11.
Link to this sectionTổ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 liên quan đến 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 trực quan này giúp xác định các mô hình và xu hướng, đặc biệt là khi làm việc với khối lượng lớn cảnh quay video.
Ví dụ, thay vì kiểm tra 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 ô 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 tĩnh bất thường.
Dưới đây là một số lý do chính tại sao trực quan hóa dữ liệu lại 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 choáng ngợp, nhưng các hình ảnh trực quan như biểu đồ thanh hoặc biểu đồ hình tròn giúp dễ dàng nhìn thấy bức tranh toàn cảnh hơn, chẳng hạn như đối tượng nào xuất hiện thường xuyên nhất.
-
Tiết lộ các xu hướng: Các biểu đồ đường và thanh giúp xác định các mô hình 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 xét từng khung hình video, các biểu đồ có thể nhanh chóng làm nổi bật các chi tiết quan trọng, như sự gia tăng đột ngột về 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ẻ thông tin chi tiết với đối tượng không chuyên về kỹ thuật dễ dàng hơn, giúp mọi người hiểu kết quả rõ ràng hơn.
Link to this sectionCá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ể chuyển đổi kết quả thị giác máy tính thành các hình ảnh trực quan 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 tuyệt vời để hiển thị cách số lượng phát hiện thay đổi theo thời gian, chẳng hạn như theo dõi các đỉnh điểm lưu lượng người đi bộ trong suốt cả ngày.
Tương tự, biểu đồ thanh 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 liệu có nhiều ô tô, xe đạp hay người đi bộ xuất hiện trong video hay không. Mặt khác, biểu đồ hình tròn hiển thị phần trăm mỗi loại đối tượng chiếm trong tổng số lần phát hiện. Mỗi biểu đồ đều có mục đích riêng và giúp làm cho dữ liệu thị giác máy tính phức tạp trở nên dễ diễn giải và chia sẻ hơn.

Fig 2. Ví dụ về các biểu đồ phân tích.
Link to this sectionTạo biểu đồ phân tích để có thông tin chi tiết về thị giác máy tính#
Bây giờ chúng ta đã 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 của mô hình thị giác máy tính của bạn. Trước khi chúng ta đi qua quy trình từng bước, hãy xem qua các công cụ và tùy chọn thiết lập để đào tạo và sử dụng gói Ultralytics và các mô hình như YOLO11.
Gói Python Ultralytics giúp việc đào tạo mô hình, phát hiện đối tượng, chạy dự đoán và trực quan hóa kết quả trở nên dễ dàng. Để bắt đầu với nó, bạn sẽ cần một môi trường mã hóa. Dưới đây là ba tùy chọn đơn giản:
-
Command-Line Interface (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 các lệnh để chạy mã 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 các hướng dẫn vào terminal hoặc command prompt.
-
Jupyter Notebooks: Đây là một môi trường mã hóa tương tác, nơi bạn có thể viết, chạy và kiểm tra các đoạn mã nhỏ (được gọi là "cells") từng cái một. Nó hiển thị kết quả ngay bên dưới mỗi ô, giúp 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: Tùy chọn này là phiên bản Jupyter Notebooks dựa trên đám mây miễn phí 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à cung cấp cho bạn quyền truy cập vào GPU miễn phí để xử lý nhanh hơn.
Các công cụ này rất tuyệt vời để 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 đường ống sản xuất. Để biết thêm các tùy chọn, hãy khám phá tài liệu chính thức của Ultralytics.
Link to this sectionBước 1: Thiết lập môi trường#
Sau khi đã chọn môi trường ưa thích, 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ập ở trên, tùy thuộc vào môi trường 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 mọi thứ, hãy chuyển sang GPU bằng cách đi tới 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, bạn sẽ cần cài đặt gói 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 đảm bảo thêm dấu chấm than (!) trước lệnh.
pip install ultralyticsLink to this sectionBước 2: Tải xuống 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ừ trang stock miễn phí như Pexels. Hãy đảm bảo chọn video bao gồm các đối tượng mà YOLO11 có thể phát hiện. Vì mô hình được đào tạo trước trên tập dữ liệu COCO, nó có thể nhận dạng các đối tượng phổ biến như người, ô tô và xe đạp.
Đối với hướng dẫn này, chúng ta sẽ sử dụng video về việc 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 mình.

Fig 3. Một khung hình từ video đầu vào hiển thị việc xử lý hành lý tại nhà ga sân bay.
Link to this sectionBước 3: Nhập các gói#
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 thị giác máy tính. Chúng ta cũng sẽ nhập thư viện Ultralytics, giúp chúng ta chạy phát hiện đối tượng và tạo 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ó. Hãy đảm bảo thay thế "path/to/video.mp4" bằng vị trí thực tế của tệp video đã tải xuống của bạn.
Ngoài ra, đoạn mã bên dưới bao gồm một kiểm tra đơn giản để đảm bảo video tải đúng cách. 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."
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"Link to this sectionBướ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 kết quả đầu ra. Khi chúng ta chạy các 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ập nhật được tạo từ mỗi khung hình của video gốc.
Trong đoạn mã 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 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 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 của 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),
)Link to this sectionBướ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 dữ liệu được hiển thị, chẳng hạn như biểu đồ đường, hình tròn, vùng hoặc thanh và mô hình YOLO nào để sử dụng. Trong ví dụ này, chúng ta sẽ sử dụng mô hình 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",
)Link to this sectionBước 6: Xử lý video đầu vào#
Phần cuối 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 cập nhật biểu đồ trong thời gian thực. Sau đó, biểu đồ cập nhật được ghi vào video đầu ra. Nếu không thể đọc được một 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ẽ đóng lại.
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()Link to this sectionBước 7: Tập hợp tất cả lại#
Cuối cùng, hãy tập hợp mọi thứ lại với nhau. Chỉ với 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 khung giới hạn và nhãn, và một video hiển thị các biểu đồ phân tích 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 để lưu 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 các thông tin chi tiết trực quan.
Dưới đây là mã toàn diện cùng với các ví dụ về cả kết quả đầ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 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 khung giới hạn và nhãn, trong khi “output_analytics.avi” sẽ hiển thị các biểu đồ phân tích thời gian thực dựa trên các lượt phát hiện.

Fig 4. Một khung hình từ tệp “output_predictions.avi”.
Đây là một khung hình từ kết quả đầu ra 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 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 quanh khung hình 268, cho thấy sự di chuyển hoặc hoạt động của vali trong phần đó của video.

Fig 5. Dự đoán YOLO11 được trực quan hóa dưới dạng biểu đồ vùng.
Link to this sectionSử dụng các 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 có 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, 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 hình ảnh mà khi được trực quan hóa, có thể tiết lộ các mô hình - chẳng hạn như thời điểm bệnh nhân chiếm dụng cao điểm hoặc sự chậm trễ trong phản hồi.
-
Bán lẻ và thương mại điện tử: Vision AI có thể được sử dụng để theo dõi sự di chuyển 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 phân tích trực quan như biểu đồ thanh hoặc hình tròn có thể làm nổi bật các khu vực cửa hàng hoặc mặt hàng nhận được nhiều sự chú ý nhất, giúp các 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ị mô hình thị giác máy tính có thể giám sát các 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ể hiển thị xu hướng trong 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 ra quyết định nhanh hơn và bảo trì dự phòng.
Link to this sectionCác điểm chính cần lưu ý#
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 bao nhiêu người hoặc đối tượng xuất hiện theo thời gian. Thay vì kiểm tra 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ô hình và xu hướng chính, giúp dễ dàng 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 chuyển đổi các kết quả đầu ra AI phức tạp thành thông tin chi tiết 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á 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à kiểm tra các tùy chọn cấp phép của chúng tôi để bắt đầu 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ấ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.






