Nhận dạng cử chỉ với Mô hình Markov ẩn


8

Tôi hiện đang làm việc trên một hệ thống nhận dạng cử chỉ (đối với Ứng dụng Android). Tôi nghĩ rằng tôi đã hoàn thành giai đoạn xử lý hình ảnh, nơi tôi có thể trích xuất đường viền của bàn tay (hiện tôi đang đeo găng tay để tránh trừ nền).

Tôi cũng đang nhận được hình elip / hình chữ nhật giới hạn, trọng tâm là hình dạng 'quan trọng' của bàn tay.

Vấn đề của tôi là không có nhiều tài liệu chỉ ra giai đoạn tiếp theo là gì trước khi phân loại hình ảnh thông qua mô hình markov ẩn. Tôi thấy giai đoạn 'Trích xuất tính năng' này rất mơ hồ.

Hiện tại tôi đang nhận được một danh sách các góc của đường viền (gần đúng để có được số lượng góc giới hạn)

Vấn đề là tôi không biết phải làm gì tiếp theo. Khi tôi tìm kiếm tài liệu dưới dạng 'Phân loại hình dạng bằng HMM', tôi vẫn thấy khó khăn để làm gì tiếp theo.

Là một công cụ cho HMM, tôi dự định sử dụng JaHMM. Nhưng tôi không biết làm thế nào để thử nghiệm công cụ ở giai đoạn này vì tôi không biết điều gì sẽ là đầu vào cho giai đoạn phân loại này!

Điều này cho thấy thông tin tôi có thể có được từ tay của tôi

Tôi đã gặp một danh sách các chức năng tôi tìm thấy trong một số tài liệu, chẳng hạn như Mô tả nhanh Fourier, Mô tả cong, B Spline; Tuy nhiên, tôi không biết cách áp dụng các chức năng này cho dữ liệu hiện tại của mình (ví dụ: danh sách các góc, ví dụ: -63, 154, 3, 23, 54, ....)


CẬP NHẬT 1:

Cảm ơn vì thông tin của bạn. @Peter K

Về tư thế: Tôi sẽ chọn một bộ từ trong Ngôn ngữ ký hiệu của Mỹ được viết bằng ngón tay, ví dụ: 'dog' -> 'd' 'o' 'g' (3 tiểu bang); nhưng khoảnh khắc tôi chưa quyết định sẽ đi đâu.

Tôi hiện đang đọc thêm một số giấy tờ để xem loại thông tin nào tôi nên trích xuất, chẳng hạn như:

  • trung tâm của bàn tay
  • góc chuyển động
  • khoảng cách từ một điểm cụ thể đến các điểm khác nhau của đường viền tay (vv ..)

Bây giờ tôi đã gặp một bài báo dường như cho thấy những gì tôi muốn làm, tôi không chắc chắn:

http: //espace.l Library.uq.edu.au/eserv.php?pid=UQ:10700&dsID=n0273.pdf

Tôi hiện đang đọc phần 5 - Lượng tử hóa vectơ (tôi đã nghe về thuật ngữ này trước đây nhưng thực sự không biết nó liên quan gì và trong hình 5 dường như có một thuật toán phức tạp, nếu tôi hiểu đúng, sẽ chuyển đổi tập hợp các giá trị tôi đạt được từ bàn tay (vừa được đề cập) thành 1 chữ số mà tôi có thể sử dụng làm chuỗi Quan sát để huấn luyện HMM cho 1 dấu hiệu cụ thể. Bạn có nghĩ rằng tôi đang đi đúng hướng? (Tôi đang làm việc trên Android, (NDK) , Tôi đã tìm thấy JaHMM như một công cụ HMM và sử dụng OpenCV để xử lý hình ảnh.

@Peter K. Cảm ơn câu trả lời của bạn. Về việc tạo dữ liệu, tôi đã dự định làm theo các bước của bài viết này, sau khi tôi tạo bộ dữ liệu cá nhân của mình: (phần 4 và 5) http://www.i.ci.ritsumei.ac.jp/~shimada/ con / vi02 -tanibata.pdf


CẬP NHẬT 2: Hãy nhớ rằng một cử chỉ được hình thành từ {tư thế a, tư thế b, tư thế c}

Bây giờ tôi đang nghĩ rằng tôi phải sử dụng một số dạng thuật toán phân loại. Đó là, tôi hiện có một bộ vectơ đặc trưng:

Tư thế A: [góc của hình elip bao quanh nó, tỷ lệ chiều cao: chiều rộng]

  • 0,802985 33,909615
  • 0,722824 31.209663
  • 0,734535 30,206722
  • 0,68394 31.838253
  • 0,713706 34.29641
  • 0,688798 30.603661
  • 0,721395 34,880161

Tư thế B: [có cấu trúc giống như tư thế A]

  • 0.474164 16.077467
    • 0,484104 14,526289
    • 0.478904 14.800572
    • 0,483134 14,523611
    • 0,480608 14.41159
    • 0,481552 15,563665
    • 0.497951 15,563585

Vân vân..

và tôi muốn điều đó khi tôi cung cấp một vectơ đặc trưng tôi có được một biểu tượng đơn giản, ví dụ 'A', 'B', v.v.

Điều này có thể không? Tôi cũng đã di chuyển câu hỏi ở đây: /programming/15602963/vector-quantization-alerskyms- used-to-provide-observation-resultences-for-hidden


1
Bạn cần xác định những gì bạn có nghĩa là "cử chỉ". Bạn có nghĩa là tư thế của bàn tay? Hay chuyển động của bàn tay? Hay chuyển động của các ngón tay? Có rất nhiều cách để lột da con mèo này ...
Peter K.

Trong trường hợp này, tôi đang nhắm đến cả chuyển động và tư thế, các ký hiệu cơ bản của ngôn ngữ ký hiệu tiếng Mỹ bắt đầu từ ngón tay đánh vần các chữ cái đến các cử chỉ cơ bản (tại thời điểm: một tay)
kiểm tra

1
Sẽ có một đọc và xem những gì tôi có thể đến với. Có thể mất một lúc để trả lời. Xem không gian này.
Peter K.

Xin chào Tôi đang cố gắng thực hiện nhận dạng cử chỉ tay với Android Open CV, tôi là người mới bắt đầu với cả hai công cụ, bất kỳ trợ giúp nào về các bước và ý tưởng từ kinh nghiệm của bạn. Cảm ơn bạn rất nhiều.
user2253346

Xin chào nếu tôi là bạn, tôi sẽ bắt đầu bằng cách làm theo các hướng dẫn trên trang cv mở android. Trước đó, bước đầu tiên là đảm bảo rằng bạn đã thiết lập sự phát triển riêng của mình một cách khủng khiếp để bạn có thể thực thi mã C trong ứng dụng Android của mình (nếu bạn sẽ sử dụng C thay vì java để có kết quả hiệu quả hơn!)
kiểm tra

Câu trả lời:


5

Tôi đã sử dụng HMM để nhận dạng cử chỉ (không nhận ra tư thế). Những gì tôi đã làm là: theo dõi bàn tay và nhận ra cử chỉ mà bàn tay đang vẽ trên không, bạn có thể hình ảnh nó như một dấu vết.

Bạn có thể sử dụng HMM làm trình nhận dạng chuỗi, vì vậy trước hết bạn cần chuyển đổi hình ảnh của mình thành một chuỗi số rời rạc.

Đối với mỗi cử chỉ bạn muốn nhận ra, bạn cần đào tạo HMM cho điều đó.

Vì vậy, bạn có một từ điển với một số từ được biết đến. Mỗi người là một HMM được đào tạo. Nếu bạn có một từ mới (không rõ sự phản đối), bạn có thể tính xác suất cho mỗi từ trong từ điển có khả năng là từ chưa biết.

Một số mã giả:

##################### training phase

examples = [112233, 11233, 123, 1122223333]
word1 = train(example)

examples = [222333, 22222223333, 2222333333]
word2 = train(example)

examples = [124555, 1122445, 1111111222224444555]
word3 = train(example)

dictionary = [word1, word2, word3]


##################### recognition phase

#let's say you have a new unkown word: 12245, you want to know what word of the dictionary it is more likly

unkown = 12245
probabilities = []
for w in word:
    probabilities.append( calculate_prob(unkown) )

Bây giờ, hãy xem giá trị tối đa trong xác suất là bao nhiêu và bạn sẽ có được từ có khả năng nhất của từ điển!

Xem tại đây:

http://www.ece.ucsb.edu/Facemony/Rabiner/ece259/Reprints/tutorial%20on%20hmm%20and%20appluggest.pdf

http://www.codeproject.com/Articles/69647/Hidden-Markov-Models-in-C

http://www.creativeistraction.com/demos/gesture-recognition-kinect-with-hidden-markov-models-hmms/


Cảm ơn bạn đã phản hồi tuyệt vời như vậy. Tôi đã hiểu tất cả những gì bạn nói. Vấn đề hiện tại của tôi là làm thế nào tôi sẽ có được các quan sát, ví dụ [112223333.222333, v.v ...] tức là Làm cách nào tôi có thể chuyển đổi dữ liệu hiện tại của mình (ví dụ: chiều dài và chiều rộng của bàn tay + chuyển động cùng lúc + góc chuyển động, v.v.) những loại số này? Từ chỉnh sửa của tôi, tôi đã đề cập rằng tôi có thể sẽ xem xét phân cụm và K Means để có được một vectơ 'mã'. Phản hồi của bạn là gì? Cảm ơn bạn rất nhiều một lần nữa!
kiểm tra

1
vâng, đây là một vấn đề. Tôi đã sử dụng kmeans nhưng nó không phù hợp với vấn đề của tôi vì vậy tôi chỉ đơn giản sử dụng centroid và "rời rạc" cử chỉ với khoảng cách eculidean từ centroids .. chắc chắn bạn có thể làm cho quảng cáo thông minh thêm nhiều dữ liệu như vận tốc và kmeans có thể phù hợp nhưng tôi không Tôi không biết xin lỗi .. hãy thực hiện một số thử nghiệm! đôi khi nó xảy ra trong máy móc rằng một số giải pháp thực nghiệm hoạt động tốt hơn đối với một số dữ liệu cụ thể .. hãy thử các giải pháp khác nhau!
nkint

(nếu bạn cần một số ví dụ về cách sử dụng kmeans với opencv chỉ cần hỏi)
nkint 24/03/13

probabilly không phải là một giải pháp tốt nhưng bạn có thể cố gắng "làm cho gầy" Mặt .. en.wikipedia.org/wiki/Morphological_skeleton và ở đây một số mã: felix.abecassis.me/2011/09/opencv-morphological-skeleton
nkint

nếu bạn giải quyết nó chỉ cần cho tôi biết bạn đã quản lý như thế nào, thì đó là một nhiệm vụ tốt :)
nkint 24/03/13

3

Hãy bắt đầu với nhận dạng tư thế. Bài viết này theo dõi ranh giới của bàn tay, và đếm số lần phát hiện đầu ngón tay từ ranh giới đó. Một điều cần lưu ý trong bài báo đó là không có thông tin "trạng thái" cần thiết. Đối với ước tính tư thế / vị trí, HMM có thể không phù hợp.

Thông tin cử chỉ phù hợp hơn với gam HMM để giải quyết vấn đề. Tuy nhiên, tôi cần xem thêm một chút về loại dữ liệu bạn sẽ sử dụng cho cử chỉ. Bạn có thể giải thích thêm một chút về thuật toán tạo ra dữ liệu bạn có không?

Vấn đề là việc chọn cấu trúc đúng của mô hình Markov ẩn có khá nhiều ảnh hưởng đến độ chính xác có thể đạt được ... Cảnh báo: Liên kết PDF!


1
Tôi đã tạo một bản cập nhật cho câu hỏi! Cảm ơn rất nhiều về thông tin của bạn
kiểm tra
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.