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 cách sử dụng Ultralytics Python gói để có cái nhìn sâu sắc hơn.
Mỗi phút, một lượng lớn dữ liệu đang được tạo ra, từ nhà ga sân bay và nhà ga xe lửa đế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ể khiến việc phát hiện các mẫu hoặc hiểu các xu hướng ngay từ cái nhìn đầu tiên trở nên khó khăn. Đó chính là lúc trực quan hóa dữ liệu giúp ích - nó biến các đầu ra phức tạp thành những hiểu biết rõ ràng, dễ hiểu.
Đ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 như vậy để thu thập thông tin, thì trực quan hóa dữ liệu giúp đưa thông tin đó vào đị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à hiểu biết thực tế bằng cách sử dụng biểu đồ phân tích có ý nghĩa. Trong thế giới dữ liệu ngày nay, điều này rất quan trọng vì máy móc không chỉ thực hiện nhiệm vụ - chúng ta cần chúng 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 đang gia tăng, với thị trường được thiết lập để đạt 18,36 tỷ đô la vào năm 2030. Trước đây, chúng tôi đã khám phá cách thị giác máy tính có thể cung cấp thông tin chi tiết có giá trị về kinh doanh . Hôm nay, chúng tôi sẽ tiến thêm một bước nữa bằng cách hướng dẫn cách tạo 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 Ultralytics gói. Chúng ta hãy bắt đầu nhé!
Hình ảnh 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 thông tin dễ hiểu. Các hình ảnh này giúp xác định các mẫu 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ì phải xem lại thủ công nhiều 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 giờ cao điểm hoặc thời gian yên tĩnh bất thường.
Sau đâ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:
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 tuyệt để hiển thị số lượng phát hiện thay đổi theo thời gian, chẳng hạn như theo dõi lượng người đi bộ cao điểm trong ngày.
Tương tự như vậy, biểu đồ thanh 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 hiển thị tỷ lệ phần trăm của từng loại đối tượng trong tổng số lần 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.
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 cùng 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 chúng ta thực hiện từng bước, hãy cùng xem xét các công cụ và tùy chọn thiết lập để đào tạo và sử dụng Ultralytics gói và các mô hình như YOLO11 .
Các Ultralytics Python gói giúp bạn dễ dàng đà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ả. Để bắt đầu, bạn sẽ cần một môi trường mã hóa. Sau đây là ba tùy chọn đơn giản:
Những 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 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 tùy chọn, hãy khám phá tài liệu chính thức Ultralytics .
Sau khi bạn đã chọn môi trường ưa thích, bước tiếp theo là thiết lập để 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 mà 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 một 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 vào menu "Thời gian chạy", chọn "Thay đổi loại thời gian chạy" và thiết lập bộ tăng tốc phần cứng thành GPU (tốt nhất là T4).
Để chuẩn bị môi trường của bạn, bạn sẽ 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 sổ ghi chép như Colab hoặc Jupyter, hãy đảm bảo thêm dấu chấm than (!) trước lệnh.
pip install ultralytics
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 lưu trữ miễn phí như Pexels. Hãy đảm bảo chọn một video có chứa các đối tượng 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ên nó có thể nhận dạng các vật thể phổ biến như người, ô tô và xe đạp.
Đối với hướng dẫn này, chúng tôi sẽ sử dụng video về việc xử lý hành lý tại một nhà ga sân bay đông đúc. 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.
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), đây là 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 Ultralytics thư viện, giúp chúng tôi chạy chức năng phát hiện đối tượng và tạo 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 tệp đó. Đả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 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 lại và hiển thị thông báo lỗi: "Lỗi khi đọc tệp video".
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
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 mã này 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ã dưới đây, 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à khung hình trên 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à 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ây giờ, chúng ta sẽ thiết lập Ultralytics Giải pháp phân tích để 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 đồ diện tích hoặc biểu đồ thanh và mô hình YOLO nào để sử dụng. Trong ví dụ này, chúng tôi sẽ sử dụng mô hình "yolo11n.pt" nhẹ và hiển thị kết quả dưới dạng biểu đồ diện tích.
analytics = solutions.Analytics(
show=True,
analytics_type="area",
model="yolo11n.pt",
)
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 đồ theo thời gian thực. Sau đó, biểu đồ được cập nhật sẽ đượ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ẽ được đó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()
Cuối cùng, hãy ghép mọi thứ lại với nhau. 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ị YOLO11 kết quả phát hiện đối tượng với các hộp giới hạn và nhãn, và một kết quả khác hiển thị biểu đồ phân tích thời gian thực.
Để thực hiện điều này, chúng tôi sẽ thiết lập hai phiên bản VideoWriter - một để lưu video dự đoán và một để 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 đồ, do đó bạn có thể xem kết quả phát hiện cùng với thông tin chi tiết trực quan.
Sau đâ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 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ị biểu đồ phân tích thời gian thực dựa trên các phát hiện.
Đây là một khung từ đầu ra phân tích dựa trên các dự đoán. Sử dụng biểu đồ diện tích, chúng ta có thể có được thông tin chi tiết như biến động về số lượng va li theo thời gian, chẳng hạn như một điểm đột biến xung quanh khung 268, cho biết chuyển động hoặc hoạt động của va li trong phần đó của video.
Sau đâ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 có ý nghĩa:
Với Ultralytics gói, bạn có thể dễ dàng chuyển cảnh quay video thành biểu đồ rõ ràng, sâu sắc, cho thấy những gì đang diễn 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 lại thủ công nhiều giờ video, bạn có thể tạo 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 hành động nhanh chóng dễ dà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, các biểu đồ này biến các đầ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? 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ề các cải tiến như AI trong sản xuất và thị giác máy tính trong ngành hậu cần trên các trang giải pháp của chúng tôi.
Bắt đầu hành trình của bạn với tương lai của machine learning