5

Tôi hiện đang làm việc trên ứng dụng Nhận dạng cử chỉ, sử dụng Mô hình Markov ẩn làm giai đoạn phân loại trên MATLAB (sử dụng webcam). Tôi đã hoàn thành phần tiền xử lý bao gồm việc trích xuất vectơ đặc trưng. Tôi đã áp dụng Phân tích thành phần chính (PCA) cho các vectơ này.Nhận dạng cử chỉ sử dụng mô hình markov ẩn

Giờ để tôi sử dụng hộp công cụ HMM của Kevin Murphy, tôi cần chuỗi quan sát của tôi ở dạng số (số nguyên) từ 1 đến M (M = số biểu tượng quan sát). Nếu tôi là đúng thì tôi phải sử dụng khái niệm về một codebook và sử dụng lượng tử vector để có được chuỗi quan sát của tôi.

Câu hỏi của tôi:

  1. Làm thế nào để xây dựng một codebook?
  2. Và làm cách nào để sử dụng sách mã này để nhận các biểu tượng quan sát của video đầu vào?

Lưu ý: Tôi đã sử dụng mô tả Elliptical Fourier cho khai thác tính năng hình dạng và đối với từng cử chỉ các giá trị PCA được lưu trữ trong một ma trận có kích thước [11x220] (Số khung trong đoạn video = 11)

Tôi làm gì tiếp theo? Có cách nào khác để lấy các vectơ đặc trưng thay vì các mô tả Elliptical Fourier không?

Trả lời

2

Một HMM là họ mô hình xác suất cho dữ liệu tuần tự mà bạn cho rằng dữ liệu được tạo từ chuỗi Markov rời rạc của tiểu bang trên không gian trạng thái ẩn ("ẩn"). Nói chung, cái gọi là "phát thải" đến từ cùng một gia đình phân phối cho mỗi tiểu bang, nhưng với các thông số khác nhau.

Tôi không quen với việc triển khai MATLAB, nhưng có vẻ như bạn đang đề cập đến triển khai đang sử dụng phân bố phát xạ đa thức, trong đó dữ liệu quan sát là một chuỗi các ký hiệu từ bảng chữ cái được chỉ định trước. Các tham số không xác định trong mô hình này là các xác suất chuyển tiếp giữa các trạng thái ẩn và trọng số đa thức cho mỗi biểu tượng đầu ra ở mỗi trạng thái. Đây là bản phân phối thích hợp nếu các tính năng của bạn là nhị phân và loại trừ lẫn nhau - nói "cử chỉ đã đi sang trái" so với "cử chỉ đi tới bên phải" hoặc cái gì đó.

Nhưng nếu các tính năng của bạn liên tục, thay vào đó, có thể thích hợp hơn khi sử dụng phân phối khí thải liên tục. Ví dụ, HMM Gaussian khá phổ biến. Ở đây dữ liệu quan sát của bạn là một chuỗi dữ liệu liên tục (có thể đa biến), và giả định là ở mỗi trạng thái ẩn, đầu ra là i.i.d từ gaussian với phương sai trung bình và (co) mà bạn hi vọng tìm hiểu.

Nếu bạn không phản đối python, có một số tài liệu khá tốt đẹp về cả hai HMM đa ngôn ngữ và Gaussian trên trang tìm hiểu về các trang tìm kiếm: http://scikit-learn.org/stable/modules/hmm.html. Từ quan điểm thực tế, nếu bạn bị ràng buộc với việc sử dụng HMM đa thức trên dữ liệu của mình, tôi khuyên bạn nên xây dựng codebook lần đầu tiên chạy cụm từ k-means và sau đó sử dụng nhãn trạng thái làm đầu vào cho HMM. Nhưng sử dụng một HMM Gaussian có thể thích hợp hơn.