Kiểm tra màu xanh lá cây
Liên kết được sao chép vào khay nhớ tạm

Nâng cao các ứng dụng thị giác máy tính bằng hình ảnh trực quan

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 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

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:

  • Đơn giản hóa dữ liệu phức tạp: Hàng nghìn lần phát hiện đối tượng có thể rất khó khăn, nhưng các hình ảnh trực quan như biểu đồ hình thanh hoặc hình tròn giúp bạn dễ dàng thấy được bức tranh toàn cảnh hơn, ví dụ như đối tượng nào xuất hiện thường xuyên nhất.
  • Hiển thị xu hướng : Biểu đồ đường và biểu đồ 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 đi bộ có xu hướng tăng.
  • Tiết kiệm thời gian: Thay vì phải xem lại từng 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ư hoạt động đột ngột của phương tiện hoặc sự xuất hiện của vật thể bất thường trong 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 dễ dàng hơn với đối tượng không chuyên môn, giúp mọi người hiểu rõ hơn về kết quả.

Các loại hình ảnh 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 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.

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

Tạo biểu đồ phân tích để có đượ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 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:

  • Giao diện dòng lệnh ( CLI ) : Đây là công cụ cơ bản, chỉ có văn bản, nơi bạn có thể nhập 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 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 mã hóa tương tác, nơi bạn có thể viết, chạy và kiểm tra từng đoạn mã nhỏ (gọi là "cell") một lần. Nó hiển thị kết quả ngay bên dưới mỗi cell, giúp bạn dễ dàng hiểu được những gì đang diễn 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 miễn phí, dựa trên đám mây chạy trên 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.

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 .

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

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

Bướ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ừ 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.

Hình 3. Khung hình từ video đầu vào cho thấy quá trình xử lý hành lý tại nhà ga sân bay.

Bước 3: Nhập 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), đâ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"

Bước 4: Chuẩn bị người viết 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 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ước 5: Thiết lập Ultralytics Giải pháp phân tích

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",   
)

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 đồ 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() 

Bước 7: Tổng hợp tất cả lại

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.

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

Đâ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.

Hình 5. YOLO11 dự đoán được hình dung dưới dạng biểu đồ diện tích.

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

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:

  • Chăm sóc sức khỏe : Hệ thống thị giác máy tính có thể theo dõi 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 trực quan, khi được hình dung, có thể tiết lộ các mẫu - chẳng hạn như thời gian bệnh nhân cao điểm hoặc độ trễ 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 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. Phân tích trực quan như biểu đồ thanh 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 các 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ị mô hình thị giác máy tính có thể theo dõi các 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ị. Hình ảnh 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ì phòng ngừa.

Những điểm chính

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ấtthị 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.

Biểu tượng LinkedInBiểu trưng TwitterLogo FacebookBiểu tượng sao chép liên kết

Đọc thêm trong danh mục này

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

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

OSZAR »