Phân loại video

Phân loại video là nhiệm vụ máy học xác định nội dung video đại diện. Mô hình phân loại video được đào tạo trên tập dữ liệu video có chứa tập hợp các lớp duy nhất, chẳng hạn như các hành động hoặc chuyển động khác nhau. Mô hình nhận các khung hình video làm đầu vào và đầu ra xác suất của từng lớp được biểu diễn trong video.

Các mô hình phân loại video và phân loại hình ảnh đều sử dụng hình ảnh làm đầu vào để dự đoán xác suất của những hình ảnh đó thuộc các lớp được xác định trước. Tuy nhiên, mô hình phân loại video cũng xử lý các mối quan hệ không gian-thời gian giữa các khung hình liền kề để nhận ra các hành động trong video.

Ví dụ: mô hình nhận dạng hành động video có thể được đào tạo để xác định các hành động của con người như chạy, vỗ tay và vẫy tay. Hình ảnh sau đây cho thấy đầu ra của một mô hình phân loại video trên Android.

Ảnh chụp màn hình của ví dụ Android

Bắt đầu

Nếu bạn đang sử dụng nền tảng không phải Android hoặc Raspberry Pi hoặc nếu bạn đã quen thuộc với các API TensorFlow Lite , hãy tải xuống mô hình phân loại video bắt đầu và các tệp hỗ trợ. Bạn cũng có thể xây dựng đường dẫn suy luận tùy chỉnh của riêng mình bằng cách sử dụng Thư viện hỗ trợ TensorFlow Lite .

Tải xuống mô hình khởi động với siêu dữ liệu

Nếu bạn chưa quen với TensorFlow Lite và đang làm việc với Android hoặc Raspberry Pi, hãy khám phá các ứng dụng ví dụ sau để giúp bạn bắt đầu.

Android

Ứng dụng Android sử dụng camera sau của thiết bị để phân loại video liên tục. Suy luận được thực hiện bằng API TensorFlow Lite Java . Ứng dụng demo phân loại khung và hiển thị các phân loại dự đoán trong thời gian thực.

Ví dụ về Android

Raspberry Pi

Ví dụ Raspberry Pi sử dụng TensorFlow Lite với Python để thực hiện phân loại video liên tục. Kết nối Raspberry Pi với một máy ảnh, như Pi Camera, để thực hiện phân loại video theo thời gian thực. Để xem kết quả từ máy ảnh, hãy kết nối màn hình với Raspberry Pi và sử dụng SSH để truy cập vỏ Pi (để tránh kết nối bàn phím với Pi).

Trước khi bắt đầu, hãy thiết lập Raspberry Pi của bạn với Hệ điều hành Raspberry Pi (tốt nhất là cập nhật lên Buster).

Ví dụ về Raspberry Pi

Mô tả về mô hình

Mạng Video Di động ( MoViNets ) là một nhóm các mô hình phân loại video hiệu quả được tối ưu hóa cho các thiết bị di động. MoViNets chứng minh độ chính xác và hiệu quả hiện đại trên một số bộ dữ liệu nhận dạng hành động video quy mô lớn, làm cho chúng rất phù hợp cho các tác vụ nhận dạng hành động video .

Có ba biến thể của mô hình MoviNet cho TensorFlow Lite: MoviNet-A0 , MoviNet-A1MoviNet-A2 . Các biến thể này đã được huấn luyện với bộ dữ liệu Kinetics-600 để nhận ra 600 hành động khác nhau của con người. MoviNet-A0 là nhỏ nhất, nhanh nhất và kém chính xác nhất. MoviNet-A2 là lớn nhất, chậm nhất và chính xác nhất. MoviNet-A1 là sự thỏa hiệp giữa A0 và A2.

Làm thế nào nó hoạt động

Trong quá trình đào tạo, một mô hình phân loại video được cung cấp các video và các nhãn liên quan của chúng. Mỗi nhãn là tên của một khái niệm hoặc lớp riêng biệt mà mô hình sẽ học cách nhận ra. Đối với nhận dạng hành động video , video sẽ là hành động của con người và nhãn sẽ là hành động liên quan.

Mô hình phân loại video có thể học cách dự đoán xem các video mới có thuộc bất kỳ lớp nào được cung cấp trong quá trình đào tạo hay không. Quá trình này được gọi là suy luận . Bạn cũng có thể sử dụng tính năng học chuyển tiếp để xác định các lớp video mới bằng cách sử dụng mô hình có sẵn.

Mô hình này là mô hình phát trực tuyến nhận video liên tục và phản hồi trong thời gian thực. Khi mô hình nhận được một luồng video, nó sẽ xác định xem có bất kỳ lớp nào từ tập dữ liệu đào tạo được trình bày trong video hay không. Đối với mỗi khung hình, mô hình trả về các lớp này, cùng với xác suất video đại diện cho lớp đó. Một ví dụ đầu ra tại một thời điểm nhất định có thể trông như sau:

Hoạt động Xác suất
nhảy múa theo hình vuông 0,02
kim chỉ 0,08
ngón tay xoay 0,23
Vẫy tay 0,67

Mỗi hành động trong đầu ra tương ứng với một nhãn trong dữ liệu huấn luyện. Xác suất biểu thị khả năng hành động được hiển thị trong video.

Đầu vào mô hình

Mô hình chấp nhận một luồng khung video RGB làm đầu vào. Kích thước của video đầu vào rất linh hoạt, nhưng lý tưởng là nó phù hợp với độ phân giải và tốc độ khung hình đào tạo mô hình:

  • MoviNet-A0 : 172 x 172 ở 5 khung hình / giây
  • MoviNet-A1 : 172 x 172 ở 5 khung hình / giây
  • MoviNet-A1 : 224 x 224 ở 5 khung hình / giây

Các video đầu vào được mong đợi có các giá trị màu trong phạm vi 0 và 1, tuân theo các quy ước đầu vào hình ảnh phổ biến.

Bên trong, mô hình cũng phân tích bối cảnh của từng khung bằng cách sử dụng thông tin được thu thập trong các khung trước đó. Điều này được thực hiện bằng cách lấy các trạng thái bên trong từ đầu ra của mô hình và đưa nó trở lại mô hình cho các khung hình sắp tới.

Kết quả đầu ra của mô hình

Mô hình trả về một loạt các nhãn và điểm số tương ứng của chúng. Điểm số là các giá trị logit đại diện cho dự đoán cho mỗi lớp. Những điểm số này có thể được chuyển đổi thành xác suất bằng cách sử dụng hàm softmax ( tf.nn.softmax ).

    exp_logits = np.exp(np.squeeze(logits, axis=0))
    probabilities = exp_logits / np.sum(exp_logits)

Bên trong, đầu ra của mô hình cũng bao gồm các trạng thái bên trong từ mô hình và đưa nó trở lại mô hình cho các khung sắp tới.

Điểm chuẩn hiệu suất

Số điểm chuẩn hiệu suất được tạo bằng công cụ đo điểm chuẩn . MoviNets chỉ hỗ trợ CPU.

Hiệu suất của mô hình được đo bằng lượng thời gian cần thiết để một mô hình chạy suy luận trên một phần cứng nhất định. Thời gian thấp hơn có nghĩa là một mô hình nhanh hơn. Độ chính xác được đo bằng tần suất mô hình phân loại chính xác một lớp trong video.

Tên Model Kích thước Sự chính xác * Thiết bị CPU **
MoviNet-A0 (Số nguyên được lượng tử hóa) 3,1 MB 65% Pixel 4 5 mili giây
Pixel 3 11 mili giây
MoviNet-A1 (Số nguyên được lượng tử hóa) 4,5 MB 70% Pixel 4 8 mili giây
Pixel 3 19 mili giây
MoviNet-A2 (Số nguyên được lượng tử hóa) 5,1 MB 72% Pixel 4 15 mili giây
Pixel 3 36 mili giây

* Độ chính xác hàng đầu được đo trên bộ dữ liệu Kinetics-600 .

** Độ trễ được đo khi chạy trên CPU với 1 luồng.

Tùy chỉnh mô hình

Các mô hình được đào tạo trước được đào tạo để nhận ra 600 hành động của con người từ bộ dữ liệu Kinetics-600 . Bạn cũng có thể sử dụng tính năng học chuyển giao để đào tạo lại một mô hình nhằm nhận ra các hành động của con người không có trong tập hợp ban đầu. Để làm được điều này, bạn cần một tập hợp các video đào tạo cho từng hành động mới mà bạn muốn đưa vào mô hình.

Để biết thêm về cách tinh chỉnh các mô hình trên dữ liệu tùy chỉnh, hãy xem kho MoViNetshướng dẫn MoViNets .

Đọc thêm và tài nguyên

Sử dụng các tài nguyên sau để tìm hiểu thêm về các khái niệm được thảo luận trên trang này: