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.
.webp)
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!
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:
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.
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:
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.
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
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.
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"
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â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",
)
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()
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.
Đâ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 đó.
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ể:
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ấ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.