Sử dụng RNN (LSTM) cho Hệ thống nhận dạng cử chỉ


10

Tôi đang cố gắng xây dựng một hệ thống nhận dạng cử chỉ để phân loại các cử chỉ ASL (Ngôn ngữ ký hiệu của Mỹ) , do đó, đầu vào của tôi được cho là một chuỗi các khung hình từ máy ảnh hoặc tệp video sau đó phát hiện chuỗi và ánh xạ nó tới tương ứng lớp học (ngủ, giúp, ăn, chạy, v.v.)

Vấn đề là tôi đã xây dựng một hệ thống tương tự nhưng đối với hình ảnh tĩnh (không bao gồm chuyển động), nó chỉ hữu ích cho việc dịch bảng chữ cái trong đó xây dựng CNN là một nhiệm vụ thẳng, vì tay không di chuyển quá nhiều và dữ liệu thiết lập cấu trúc cũng là quản lý như tôi đã sử dụng keras và có lẽ vẫn còn có ý định làm như vậy (mỗi thư mục chứa một tập hợp các hình ảnh cho một dấu hiệu nói riêng và tên của thư mục là tên lớp của dấu hiệu này ví dụ: A, B, C , ..)

Câu hỏi của tôi ở đây, làm cách nào tôi có thể sắp xếp tập dữ liệu của mình để có thể nhập dữ liệu vào RNN trong máy ảnh và tôi nên sử dụng chức năng nào để đào tạo hiệu quả mô hình của mình và bất kỳ tham số cần thiết nào, một số người đề xuất sử dụng lớp TimeDistribution nhưng tôi không có một ý tưởng rõ ràng về cách sử dụng nó cho mục đích của tôi và tính đến hình dạng đầu vào của mỗi lớp trong mạng.

thậm chí còn nghĩ rằng bộ dữ liệu của tôi sẽ bao gồm các hình ảnh, tôi có lẽ sẽ cần một lớp xoắn, làm thế nào nó sẽ là khả thi để kết hợp các conv lớp vào LSTM một (Tôi có nghĩa là về code).

Ví dụ, tôi tưởng tượng dữ liệu của mình được đặt giống như thế này

cấu trúc tập dữ liệu

Thư mục có tên 'Run' chứa 3 thư mục 1, 2 và 3, mỗi thư mục tương ứng với khung của nó trong chuỗi

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

Vì vậy, Run_1 sẽ chứa một số bộ ảnh cho khung đầu tiên, Run_2 cho khung thứ hai và Run_3 cho khung thứ ba, mục tiêu của mô hình của tôi là được đào tạo với chuỗi này để xuất ra từ Run .


Bạn đang sử dụng tập dữ liệu nào cho ASL?
Sam Johnson

Xin lỗi nhưng chúng tôi đã ghi lại tập dữ liệu của riêng mình và không quản lý để phát hành công khai, đó không phải là nhiều và không mang lại độ chính xác như mong đợi.
Anasovich

Điều đó chắc chắn có thể thực hiện được và không giống như quá nhiều mã hóa từ bài viết được đề cập dưới đây, nhưng tôi không nói về kinh nghiệm vì nó không phải là một kiến ​​trúc tôi đã sử dụng trước đây. Hy vọng bài viết này sẽ chỉ cho bạn đi đúng hướng: machinelearningmastery.com/cnn-long-short-term-memory-networks
Ollie Graham

Câu trả lời:


2

Dựa trên sự hiểu biết của tôi, điều này dường như giải quyết vấn đề phân loại nhiều lớp (mỗi bộ / chuỗi cử chỉ tay cuối cùng tương ứng với một từ / ký hiệu). Một kiến ​​trúc RNN / LSTM / GRU là một nơi tuyệt vời để bắt đầu, nhưng sẽ tốn kém về mặt tính toán và khá chậm để đào tạo. Tuy nhiên, việc bạn hoàn toàn cần một hay nhiều trong số này tùy thuộc vào cách dữ liệu của bạn được cấu trúc và liệu bạn có thể thoát khỏi việc xử lý hình ảnh của mình như một tập hợp, thay vì theo trình tự.

Dưới đây là một số ý tưởng tiềm năng:

  1. Bắt đầu bằng cách thiết lập một lớp CNN cho mỗi thư mục "RUN_ *", cùng với dropoutvà / hoặc flatteninggiữa mỗi lớp.

  2. Bắt đầu bằng cách thiết lập một vectơ dài duy nhất biểu thị tất cả các giai đoạn của chuỗi, sau đó thêm một vài lớp CNN, cũng với dropoutvà / hoặc flattening.

Điều này sẽ thực hiện một số thăm dò và điều chỉnh cuối cùng của bạn để xem cái gì hoạt động tốt nhất và bạn sẽ cần chọn với số liệu đánh giá bạn muốn tối ưu hóa (ví dụ: độ chính xác / thu hồi)

Lý do tôi đề xuất CNN là vì, trong một số trường hợp nhất định, CNN có thể cung cấp hiệu suất tương tự cho một mô hình định kỳ, nhưng với chi phí thấp. Thật không may, thật khó để nói với rất ít thông tin về dữ liệu của bạn.

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.