Tải bản đầy đủ (.pdf) (26 trang)

Nghiên Cứu Xây Dựng Hệ Thống Chuyển Đổi Ngôn Ngữ Cử Chỉ Sang Văn Bản (tt)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (429.65 KB, 26 trang )

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
---------------------------------------

CHÂU QUANG VŨ

NGHIÊN CỨU XÂY DỰNG HỆ THỐNG
CHUYỂN ĐỔI NGÔN NGỮ CỬ CHỈ
SANG VĂN BẢN
Chuyên ngành:
Mã số:

HỆ THỐNG THÔNG TIN

60.48.01.04

TÓM TẮT LUẬN VĂN THẠC SĨ

Tp. HỒ CHÍ MINH - NĂM 2017


Luận văn được hoàn thành tại:
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

Người hướng dẫn khoa học: TS. Nguyễn Phương

Phản biện 1: .........................................................................
Phản biện 2: .........................................................................

Luận văn sẽ được bảo vệ trước Hội đồng chấm luận văn thạc
sĩ tại Học viện Công nghệ Bưu chính Viễn thông
Vào lúc:



....... giờ ....... ngày ....... tháng ......... năm .........

Có thể tìm hiểu luận văn tại:
- Thư viện của Học viện Công nghệ Bưu chính Viễn thông


1

MỞ ĐẦU
Theo số liệu của Tổng cục Thống kê, tại thời điểm năm
2009, tại Việt Nam hiện tại có hơn 2.5 triệu người khiếm thính (điếc
hoặc nghe kém). Việc hòa nhập của những người này vào xã hội còn
gặp nhiều khó khăn do các vấn đề về giao tiếp. Hiện tại, ngoại trừ
các biện pháp hỗ trợ hòa nhập như ngôn ngữ cử chỉ, các người gõ
văn bản (captionist), đọc khẩu hình miệng thì gần như không có biện
pháp nào có thể hỗ trợ được cho người khiếm thính có thể giao tiếp
với xã hội.
Chính vì thế, rất cần thiết có một hệ thống chuyển đổi để một
người khiếm thính có thể giao tiếp với xã hội, tạo cơ hội lớn hơn để
xã hội có thêm cơ hội để có thêm nhiều trường hợp người khuyết tật
có thể hòa nhập vào cuộc sống. Hệ thống chuyển đổi ngôn ngữ cử
chỉ sang văn bản bước đầu sẽ có thể giải quyết một phần vấn đề khi
có thể chuyển đổi từng cử chỉ sang các từ ngữ tương ứng.


2
Chương 1 – TỔNG QUAN
1.1.


Tổng quan về cảm biến Kinect

1.1.1. Giới thiệu
Kinect là một thiết bị cảm biến ngoại vi thu chuyển động phát
triển bởi Microsoft dành cho máy chơi game Xbox 360 và Windows.
Khi kết nối vào Xbox 360, người chơi có thể điều khiển và tương tác
với máy chơi game mà không cần tay cầm điều khiển, thông qua giao
diện người dùng tự nhiên sử dụng cử chỉ và lệnh thoại.
Kinect có cấu tạo gồm có hệ thống cảm biến chiều sâu hoạt
động trên nền tảng chiếu các tia hồng ngoại đến các đối tượng và thu
về dữ liệu phản chiếu, từ đó có thể vẽ lên được bản đồ chiều sâu của
môi trường xung quanh.
Bên cạnh đó, Kinect còn có 1 camera RGB-D, có khả năng
xây dựng lên hình ảnh thực tế của môi trường kết hợp với chiều sâu,
đảm bảo rằng đây vừa là 1 cảm biến vừa là một camera hoàn chỉnh.
Hơn nữa, Kinect còn hỗ trợ thêm mirco và máy đo gia tốc để có thể
hỗ trợ việc theo dõi các chuyển động một cách tốt nhất.
1.1.2. Ứng dụng của camera Kinect
Kinect được sử dụng nhiều trong ngành công nghiệp game, nó
được phát triển chính cho nền tảng Xbox của Microsoft và các game
trên Windows cũng như được phát triển để làm các thiết bị điều
khiển máy tính bằng cử chỉ, xác định khoảng cách giữa các vật thể và
nhiều ứng dụng khác.


3
1.1.3. Các bộ phận theo dõi của Kinect
Kinect có thể theo dõi được cùng lúc 06 cơ thể với 25 bộ phận
khác nhau cho mỗi cơ thể.
1.2.


Giới thiệu về học máy
Học máy, có tài liệu gọi là máy học, (tiếng Anh: machine

learning - ML) là một lĩnh vực của trí tuệ nhân tạo liên quan đến việc
phát triển các kĩ thuật cho phép các máy tính có thể “học”. Cụ thể
hơn, học máy là một phương pháp để tạo ra các chương trình máy
tính bằng việc phân tích các tập dữ liệu. Học máy có liên quan lớn
đến thống kê, vì cả hai lĩnh vực đều nghiên cứu việc phân tích dữ
liệu, nhưng khác với thống kê, học máy tập trung vào sự phức tạp
của các giải thuật trong việc thực thi tính toán, nó phải có khả năng
tổng quát hóa những gì đã học. Một mô hình ML không có khả năng
tổng quát hóa giống như một đứa trẻ học vẹt, chỉ có thể trả lời các
câu hỏi mà nó đã biết trước đáp án.
Học máy có tính ứng dụng rất cao bao gồm máy truy tìm dữ
liệu, chẩn đoán y khoa, phát hiện thẻ tín dụng giả, phân tích thị
trường chứng khoán, phân loại các chuỗi DNA, nhận dạng tiếng nói
và chữ viết, dịch tự động, chơi trò chơi và cử động rô-bốt (robot
locomotion).
1.2.1. Phân loại học máy
Học máy gồm có các dạng sau đây:

- Học có giám sát (supervised learning);
- Học không có giám sát (unsupervised learning);
- Học bán giám sát (semi-supervised learning);


4

- Học tăng cường (reinforcement learning).

1.2.1.1. Học có giám sát
Học có giám sát là học với tập dữ liệu huấn luyện ban đầu
hoàn toàn được gán nhãn từ trước. Học có giám sát là phương pháp
học sử dụng cho lớp bài toán phân lớp, phân loại (Classification). Để
thực hiện phân lớp, trước tiên phải chuẩn bị một tập dữ liệu huấn
luyện (trainning data set - TDs), để có tập dữ liệu huấn luyện phải
thực hiện gán nhãn cho dữ liệu ban đầu, đây được gọi là quá trình thu
thập tập huấn luyện.
1.2.1.2. Học không giám sát
Học không giám sát là học với tập dữ liệu huấn luyện ban đầu
hoàn toàn chưa được gán nhãn. Học không giám sát là phương pháp
học sử dụng cho lớp bài toán gom cụm, phân cụm (Clustering). Để
thực hiện phân cụm, trước tiên cần một tập dữ liệu huấn luyện
(training dataset) – là một tập các ví dụ học (training examples
/instances). Trong đó, mỗi ví dụ học chỉ chứa thông tin biểu diễn (ví
dụ: một vector các giá trị thuộc tính), mà không có bất kỳ thông tin
gì về nhãn lớp hoặc giá trị đầu ra mong muốn (expected output).
Áp dụng một thuật toán học không có giám sát (ví dụ kMeans) để học hàm/mô hình mục tiêu (trong trường hợp này là hàm
phân cụm ứng với thuật toán được chọn).
1.2.1.3. Học bán giám sát
Học bán giám sát là học với tập dữ liệu huấn luyện gồm cả dữ
liệu đã được gán nhãn và dữ liệu chưa được gán nhãn. Tuỳ vào từng
mục đích cụ thể, học bán giám sát có thể được áp dụng cho bài toán


5
phân lớp hoặc phân cụm. Nội dung chính của học bán giám sát là hệ
thống sử dụng một tập học (training set) gồm 2 phần: các ví dụ học
có nhãn, thường với số lượng (rất) ít, và các ví dụ học không có
nhãn, thường với số lượng (rất) nhiều. Thực tế cho thấy khi sử dụng

kết hợp dữ liệu không có nhãn với một lượng nhất định dữ liệu có
nhãn có thể tăng độ chính xác đáng kể.
1.3.

Mạng Nơ ron

1.3.1. Mạng nơ ron sinh học
Bộ não người chứa khoảng 1011 tế bào thần kinh (còn gọi là
neural hay nơ ron) và mỗi kết nối có 104 nơ ron nên con người có
khả năng đưa ra những quyết định phức tạp và nhanh chóng. Mỗi tế
bào thần kinh gồm 3 thành phần chính: soma, dendrites và axon.
1.3.2. Mạng nơ ron nhân tạo
Mạng nơ ron nhân tạo (ANN - Artificial Nơ ron Networks) là
sự mô phỏng lại một cách đơn giản nhất của nơ ron sinh học. Mỗi
một nơ ron nhân tạo được tạo ra sẽ có nhiệm vụ tổng hợp các thông
tin đầu vào và chuyển đổi thành thông tin một tín hiệu ở đầu ra.
Mỗi nơ ron nhân tạo có thể có nhiều đầu vào nhưng chỉ có một
đầu ra. Mỗi đầu vào được gắn liền với một hệ số nhân bất kì nào đó
gọi chung là trọng số (weight). Các trọng số có ý nghĩa hết sức quan
trọng, được ví như mức liên kết tại các khớp nối trong nơ ron sinh
học. Trọng số có thể là các số dương hoặc âm, giống như các khớp
nối kích thích và khớp nối ức chế trong các nơ ron sinh học.
Mỗi nơ ron nhân tạo có một giá trị ngưỡng. Chức năng đầu
vào của mỗi nơ ron là tính tổng các tín hiệu đầu vào với các trọng số


6
liên kết đồng thời kết hợp với giá trị ngưỡng để tạo ra một giá trị
nhất định là tín hiệu đầu vào net input. Sự kết hợp này được thực
hiện bằng một tổng hay theo một số tài liệu gọi là hàm PSP (Post

Synapic Potential function) - hàm thế sau khớp nối.
Mỗi nơ ron nhân tạo cho ra một giá trị ở đầu ra, và giá trị đầu
ra này phụ thuộc vào hàm truyền dẫn (transfer function). Hàm này sẽ
nhận tín hiệu đầu vào net input sau đó tính toán và cho ra kết quả là
đầu ra của nơ ron.
Mạng nơ ron nhân tạo gồm hai thành phần. Phần thứ nhất là
các nút (đơn vị xử lý, nơ ron) và phần thứ hai là các liên kết giữa
chúng được gán một trọng số bất kỳ đặc trưng thể hiên mật độ liên
kết của mạng.
Mạng nơ ron nhân tạo là sự liên kết giữa các nơ ron nhân tạo
với nhau. Mỗi liên kết giữa các nơ ron đi kèm theo một trọng số nào
đó mang một tính đặc trưng là tính kích thích hay ức chế giữa các nơ
ron. Các nơ ron còn được gọi là các nút (node). Các nút này được sắp
xếp theo một thứ tự nhất định trong mạng và được chia thành ba lớp.
Lớp đầu vào (input player), lớp đầu ra (output player) và lớp ẩn
(hiden layer).
Chức năng của mạng được xác định bởi: cấu trúc mạng, quá
trình xử lý bên trong của từng nơ ron, và mức độ liên kết giữa các nơ
ron.
Mức độ liên kết giữa các nơ ron được xác định thông qua quá
trình học của mạng (quá trình huấn luyện mạng). Có thể xem các
trọng số là các phương tiện để lưu trữ thông tin dài hạn trong mạng


7
nơ ron. Nhiệm vụ của quá trình huấn luyện mạng là cập nhật các
trọng số khi có thông tin về các mẫu học.
Một số chức năng của mạng nơ ron nhân tạo:

- Chức năng phân loại mẫu: Phân loại mẫu là sự phân chia các

mẫu ra thành các nhóm khác nhau, các nhóm này sẽ có chung một số
đặc điểm nhất định nào đó. Mạng nơ ron có thể tự phân lại các mẫu
đầu vào và tạo ra các mẫu đầu ra có phân loại. Khi cho một mẫu đầu
vào thì mạng nơ ron sẽ tạo ra được một mẫu đầu ra đúng với phân
loại của chúng. Ta có thể nói nơ ron là một bộ phân loại mẫu. Điểm
khác của mạng nơ ron với các bộ phân loại mẫu khác là khả năng tự
học và tổng quát hóa từ các mẫu đã có.

- Học và tổng quát hóa:
o Học là việc mạng nơ ron thu thập được các thông tin, các
mẫu, các tri thức ở đầu vào và các thông tin, các mẫu, các tri thức
tương ứng ở đầu ra và mạng có thể học để phân loại được chúng cho
thật là chính xác.

o Tổng quát hóa là mạng không chỉ nhận dạng chính xác
được các mẫu của chung đã học, mà từ các mẫu đã học phải rút ra
những đặc tính riêng của từng mẫu và tạo ra một tri thức mới từ đó
mạng có thể tự nhận biết và phân loại được các mẫu mới mà chưa
từng được học.
1.3.2.1. Kiến trúc mạng nơ ron
Kiến trúc mạng nơ ron nhân tạo được xác định bởi:

- Số lượng các tín hiệu đầu vào/ đầu ra;


8

- Số lượng tầng trong mạng;
- Số lượng các nơ ron trong mỗi tầng;
- Số lượng các trọng số (các liên kết) đối với mỗi nơ ron;

- Cách liên kết giữa các nơ ron (trong một tầng hoặc giữ các
tầng) với nhau;

- Những nơ ron nhận các tín hiệu điều chỉnh lỗi.
1.3.2.2. Các tầng của ANN

- Một tầng đầu vào (input layer): tiếp nhận các tín hiệu đầu vào.
- Một tầng đầu ra (output layer): phát tín hiệu ra khi mạng cho
ra kết quả “đáp lại” tín hiệu nhận từ lớp đầu vào.

- Tầng ẩn (hidden layer): đóng vai trò như bộ lọc “thông minh”.
1.3.2.3. Các phương pháp học trong ANN
Mạng nơ ron nhân tạo được mô phỏng theo việc xử lý thông
tin của bộ não người, do vậy đặc trưng cơ bản của mạng là có khả
năng học, khả năng tái tạo các hình ảnh và dữ liệu khi đã học. Trong
trạng thái học thông tin được lan truyền theo hai chiều nhiều lần để
làm thay đổi các trọng số nhiều lần để đạt được trọng số tốt nhất có
thể cho ra các mẫu dữ liệu tương đương đã học. Có 3 kiểu học chính,
mỗi kiểu học tương ứng với một nhiệm vụ học mang tính chất trừu
tượng. Đó là học có giám sát (có mẫu), học không giám sát và học
tăng cường. Thông thường các loại kiến trúc mạng nào cũng có thể
dùng được cho các nhiệm vụ.
1.3.2.4. Lan truyền ngược


9
Một phương pháp phổ biến để huấn luyện các mạng thần kinh
nhân tạo được sử dụng kết hợp với một phương pháp tối ưu hóa như
gradient descent. Phương pháp này tính toán gradient của hàm tổn
thất với tất cả các trọng số có liên quan trong mạng nơ ron đó.

Gradient này được đưa vào phương pháp tối ưu hóa, sử dụng nó để
cập nhật các trọng số, để cực tiểu hóa hàm tổn thất. Thuật toán học
truyền ngược có thể được chia thành hai giai đoạn: lan truyền, cập
nhật trọng số.

-

Giai đoạn 1: Lan truyền:
Mỗi lan truyền bao gồm các bước sau đây:

o Bước 1: Lan truyền thuận của một đầu vào của mô hình
huấn luyện thông qua mạng nơ-ron để tạo ra các kích hoạt đầu ra của
lan truyền này.

o Bước 2: Truyền ngược của các kích hoạt đầu ra của lan
truyền thông qua mạng lưới nơ-ron sử dụng mục tiêu huấn luyện mô
hình để tạo ra các delta (sai lệch giữa giá trị mục tiêu và giá trị đầu ra
thực tế) và tất cả đầu ra và các nơ-ron ẩn.

-

Giai đoạn 2: Cập nhật trọng số:

Đối với mỗi khớp thần kinh-trọng số thực hiện theo các bước
sau:

o Nhân các delta đầu ra và kích hoạt đầu vào để có được
gradient của trọng số của nó.

o Trừ một tỷ lệ (tỷ lệ phần trăm) từ gradient của trọng số.



10
Tỷ lệ này (tỷ lệ phần trăm) ảnh hưởng đến tốc độ và chất
lượng học; nó được gọi là tốc độ học. Tỷ lệ này càng lớn, thì tốc độ
huấn luyện nơron càng nhanh; tỷ lệ này càng thấp, thì việc huấn
luyện càng chính xác. Dấu của gradient của một trọng số chỉ ra chỗ
mà sai số đang gia tăng, đây là lý do tại sao trọng số phải được cập
nhật theo hướng ngược lại.
Lặp lại giai đoạn 1 và 2 cho đến khi đáp ứng của mạng nơ-ron
chấp nhận được.
Các mạng truyền ngược cần các perceptron nhiều lớp (thường
là với một đầu vào, nhiều lớp ẩn, và một lớp ra). Để cho lớp ẩn phục
vụ cho bất kỳ hàm hữu ích nào, nhiều mạng đa lớp phải có có các
hàm kích hoạt phi tuyến cho các lớp trùng nhau: một mạng đa lớp chỉ
sử dụng các hàm kích hoạt tuyến tính tương đương với một số mạng
tuyến tính, một lớp. Các hàm kích hoạt phi tuyến được sử dụng phổ
biến bao gồm hàm rectifier, hàm Lôgit, hàm softmax (hàm mũ chuẩn
hóa), và hàm Gauss.
1.4.

Ngôn ngữ cử chỉ (ngôn ngữ ký hiệu)
Ngôn ngữ ký hiệu là ngôn ngữ dành cho người điếc và người

khiếm thính. Năm 1755, Charles-Michel de l'Épée (một linh mục
người Pháp) đã gặp và dạy cho 2 cô bé sinh đôi bị điếc. Ông đã hệ
thống lại những dấu hiệu mà người điếc ở Pháp đã dùng và sử dụng
những dấu hiệu này theo ngữ pháp của Tiếng Pháp để dạy cho học
sinh điếc.



11
1.4.1. Đặc điểm của Ngôn ngữ ký hiệu
Cũng như ngôn ngữ nói, ngôn ngữ ký hiệu của từng quốc
gia, thậm chí là từng khu vực trong một quốc gia rất khác nhau. Điều
đó là do mỗi quốc gia, khu vực có lịch sử, văn hóa, tập quán khác
nhau nên ký hiệu để biểu thị sự vật hiện tượng cũng khác nhau.
Chẳng hạn, cùng chỉ tính từ màu hồng thì ở Hà Nội người ta xoa vào
má (má hồng), còn tại Thành phố Hồ Chí Minh lại chỉ vào môi (môi
hồng). Điều tương tự cũng diễn ra khi có sự khác biệt lớn hơn trên
tầm quốc gia, dẫn tới sự khác biệt của hệ thống từ vựng và ngữ pháp
ngôn ngữ ký hiệu giữa các nước.
Tuy nhiên, ký hiệu tất cả mọi nơi trên thế giới đều có những
điểm tương đồng nhất định. Ví dụ: ký hiệu ‘uống nước’ thì nước nào
cũng làm như nhau là giả bộ cầm cốc uống nước, ký hiệu ‘lái ô tô’
thì giả bộ cầm vô lăng ô tô quay quay, v.v. Do ngôn ngữ ký hiệu phát
triển hơn trong cộng đồng người khiếm thính, nên những người
thuộc cộng đồng này của hai nước khác nhau có thể giao tiếp với
nhau tốt hơn hai người bình thường nhưng mà không biết ngoại ngữ.
Hai đặc điểm quan trọng nhất của NNKH là tính giản lược và
có điểm nhấn.
Ví dụ: Tiếng Việt: Anh có khỏe không ạ?
NNKH: "Khỏe không"?
Do tính giản lược và có điểm nhấn nên cấu trúc ngữ pháp
ngôn ngữ ký hiệu nhiều khi không thống nhất, cùng một câu có thể
sắp xếp nhiều cách khác nhau.


12
1.5.


Tổng kết chương
Chương này trình bày tổng quan về camera Kinect của

Microsoft, các điểm mạnh, điểm yếu và ứng dụng của camera
Kinect.
Chương này cũng giới thiệu sơ lược về ML, đặc biệt là Ann,
một kỹ thuật học máy cổ điển nhưng có giá trị sử dụng cao, là nền
tảng của các kỹ thuật Deep learning sau này.
Bên cạnh đó, chương này cũng trình bày khái quát về ngôn
ngữ cử chỉ, sự ra đời của ngôn ngữ cử chỉ và sự liên quan mật thiết
của ngôn ngữ cử chỉ với cuộc sống hàng ngày.


13
Chương 2 - NỘI DUNG NGHIÊN CỨU
2.1.

Trạng thái bàn tay
Ngôn ngữ ký hiệu là sự tập hợp các thao tác giữa các bàn tay

với các bộ phận khác trong cơ thể, mỗi một tập thao tác đại diện cho
1 từ ngữ tương ứng.
Ngôn ngữ ký hiệu có thể chia làm 3 thời điểm chính để có
thể phân biệt được 1 từ: thời điểm bắt đầu, thời điểm giữa và thời
điểm kết thúc của 1 từ.
Trong ngôn ngữ ký hiệu, trạng thái bàn tay đóng 1 vai trò
quan trọng trong việc xác phân biệt các từ ngữ với nhau. Có những
từ chỉ được xác định bởi sự thay đổi hình dạng của bàn tay mà không
cần đến bất kỳ chuyển động nào khác của cơ thể.

2.1.1. Nhận dạng các ngón tay
Để có thể nhận dạng được các ngón tay, luận văn này sẽ đề
xuất một phương thức với các bước sau đây:
Bước 1: Tìm viền xung quanh 2 bàn tay dựa vào các tọa độ
của cổ tay, điểm cao nhất của bàn tay, điểm trái nhất và phải nhất của
bàn tay, tọa độ của ngón cái và các điểm ảnh chiều sâu thuộc về bàn
tay và không thuộc về bàn tay.
Bước 2: Dựa vào các viền, ta tính toán được các điểm giao
nhau và có được tập các điểm tọa độ đỉnh của các ngón tay.
Bước 3: Sắp xếp lại tọa độ các điểm. Các điểm giao nhau
được đưa vào tập với các thứ tự khác nhau, để biết được điểm nào
tương ứng với ngón tay nào, ta phải tiến hành sắp xếp lại các điểm
tọa độ.


14
Bước 4: Tính toán trạng thái dựa trên chiều dài ngón tay

- Nếu 5 ngón tay của 1 bàn tay chưa được tính chiều dài
ban đầu thì tiến hành tính chiều dài ban đầu (điều kiện bàn tay mở),
việc tính toán chiều dài ban đầu chỉ được thực hiện 1 lần vào lúc
khởi chạy chương trình. Xác định chính xác ngón tay đo được là
ngón tay nào trên bàn tay dựa vào bảng sắp xếp tọa độ ở Bước 3,
ngón tay nào gần ngón cái (ngón Kinect theo dõi được) nhất sẽ là
ngón cái và lần lượt ta có các ngón tay còn lại.

- Nếu 5 ngón tay đã được tính chiều dài thì tiến hành so
sánh chiều dài của ngón tay có được với chiều dài của 5 ngón tay đã
được tính toán ban đầu. Nếu chênh lệch ngón tay đo được với ngón
tay ban đầu nằm trong ngưỡng cho phép thì trạng thái ngón tay đó là

thẳng, ngược lại là ngón tay úp vào bàn tay. Riêng trường hợp 2
ngón index và mid cần phải xác định trạng thái ngón tay mở ½. Để
xác định trạng thái mở ½, ta tính toán xem ngón tay đó có thẳng hay
không, nếu thẳng sẽ không mở ½, nếu không thẳng, ta tiến hành so
sánh chiều dài của ngón tay đo với ngón cái, nếu chênh lệch giữa
ngón cái và ngón tay đó nằm trong ngưỡng thì trạng thái sẽ là ½,
ngược lại trạng thái là đóng (0).
2.2.

Hướng di chuyển của các bộ phận
Kinect hỗ trợ việc xác định tọa độ của các bộ phận theo hệ

tọa độ XYZ, chính vì thế việc xác định hướng di chuyển của các bộ
phận cần theo dõi (bàn tay, cổ tay, ngón tay cái, ngón đỉnh) được
thực hiện dựa vào các tọa độ.


15
Xác định hướng di chuyển dựa vào chênh lệch tọa độ giữa 2
thời điểm: thời điểm 1 với (x1, y1, z1) và thời điểm 2 với (x2, y2,
z2). Nếu khoảng cách giữa 2 tọa độ X hoặc Y hoặc Z nằm trong
ngưỡng có nghĩa là bộ phận không di chuyển, ngược lại, bàn tay sẽ
di chuyển sang 1 chiều nếu x1>x2 và di chuyển sang chiều ngược lại
nếu x1(theo y) và ra, vào (theo z).
2.3.

Hướng của cánh tay về các bộ phận
Việc xác định hướng cảnh tay về các bộ phận được thực hiện


dựa vào các bước sau:
Bước 1: lấy tọa độ của các điểm: khuỷu tay, cổ tay và các bộ
phận cố định trên cơ thể (đầu, cổ, vai, hông, ngực…).
Bước 2: tính góc của các cặp vector <khuỷu tay và điểm A>
và <khuỷu tay và cổ tay>.
Bước 3: so sánh giá trị các góc, góc nào nhỏ nhất và nằm
trong một ngưỡng cho phép thì tay hướng về bộ phận tương ứng với
góc đó.
Việc xác định hướng của cánh tay có thể không chính xác vì
một vài trường hợp như cánh tay vuông góc, bàn tay chỉ thẳng lên
trên thì không hướng về 1 bộ phận cụ thể nào cả. Tuy nhiên, với việc
áp dụng học máy, ta có thể xem các trường hợp này là 1 trường hợp
đặc biệt để xử lý.
2.4.

Xử lý khuôn mặt
Mặc dù trong các bộ phận theo dõi của Kinect không có các

bộ phận trên khuôn mặt, tuy nhiên Microsoft có hỗ trợ một thư viện


16
hỗ trợ xử lý các dữ liệu của khuôn mặt, kết hợp với thư viện
LightBuzz.Vitruvius, ta có thể xác định được vị trí của mắt, mũi,
miệng, trán, má trái, má phải.
2.5.

Bắt đầu và kết thúc thao tác
Việc xác định thời điểm bắt đầu và kết thúc của 1 thao tác rất


quan trọng để có thể có được trạng thái của các bộ phận một cách
chính xác.
Cứ mỗi 02 giây là bắt đầu 1 thao tác mới, ở mỗi thao tác, hệ
thống sẽ hiện lên màn hình dấu hiệu “sẵn sàng” để người thực hiện
biết được là đã sẵn sàng ghi nhận thao tác. Sau đó 0.5 giây, hệ thống
bắt đầu ghi nhận (0.5 giây đệm để người thực hiện sẵn sàng) bằng
cách hiện lên dấu hiệu “đang ghi nhận thao tác”. Với thao tác kết
thúc, người thực hiện ngừng thao tác trong 100ms (3 khung hình), hệ
thống sẽ nhận diện dựa vào phương thức kiểm tra sự di chuyển theo
3 chiều của hệ tọa độ XYZ kiểm tra sự di chuyển của ngón đỉnh của
bàn tay, bàn tay và cổ tay để kết thúc thao tác.
2.6.

Nhiễu tín hiệu
Kinect là một sản phẩm được sản xuất như là phụ kiện của

một hệ thống máy chơi game, chính vì thế có những tín năng chưa
được hoàn thiện, một trong số đó chính là xác định tọa độ thật sự
chính xác, các tọa độ ghi nhận từ Kinect luôn có 1 biên độ dao động.
Bên cạnh đó, khi 2 bộ phận chạm vào nhau hoặc gần chạm vào nhau,
Kinect cho 1 kết quả hoàn toàn không chính xác.


17
Với các trường hợp xác định vị trí có sự dao động, ta áp
dụng một ngưỡng nhỏ để xác định xem bộ phận đó có đang dao động
trong ngưỡng hay không, nếu có thì xác định bộ phận đó không di
chuyển và ngược lại.
Vì khả năng của phần cứng có hạn, không thể xử lý nếu như
không có sự cải tiến của nhà sản xuất, luận văn này sẽ đề xuất ở các

trường hợp tín hiệu bị nhiễu, ta đưa tất cả các trạng thái của bàn tay
và ngón tay ở thời điểm đó về giá trị 0, nghĩa là xác định thời điểm
đó không ghi nhận các giá trị này vào xử lý mà chỉ xử lý các trạng
thái khác.
2.7.

Kết luận chương
Ở chương này, luận văn trình bày chi tiết về việc xử lý trạng

thái của bàn tay, các kỹ thuật xử lý trạng thái ngón tay, hướng di
chuyển của các bộ phận trong hệ tọa độ XYZ, hướng của cánh tay về
các bộ phận của cơ thể, xử lý khuôn mặt cũng như kỹ thuật để bắt
đầu và kết thúc 1 thao tác.
Chương này cũng trình bày về kỹ thuật lấy hướng của bàn
tay, tuy nhiên không thể nào được bao quát toàn bộ các khả năng bởi
biên độ sai số của Kinect.
Bên cạnh đó, chương này trình bày yếu điểm của Kinect khi
bị nhiễu với các bộ phận chạm hoặc gần chạm vào nhau và đề xuất
phương án giải quyết khi trường hợp này xảy ra.


18
Chương 3 - XÂY DỰNG HỆ THỐNG
3.1.

Xác định các vector
Khi bắt đầu thực hiện thao tác, hệ thống ghi nhận một mảng

các giá trị thu nhận từ cơ thể tại mỗi khung hình thu được, mỗi lần
ghi nhận bộ đếm tăng thêm 1 giá trị. Sau khi kết thúc thao tác, ta dễ

dàng xác định thời điểm bắt đầu thao tác, thời điểm kết thúc thao tác
và thời điểm giữa thao tác (giá trị của mảng với index = bộ đếm/2).
Vector cử chỉ gồm 640 chiều, tương ứng như sau:

- Vector index từ 0 đến 29 ta xác định trạng thái các ngón tay.
Từ index 30 đến 39 dùng để tăng cường tín hiệu ngón tay ở giai đoạn
cuối của thao tác.

- Từ index 40 đến 64 dùng để xác định ngón tay đỉnh của bàn
tay trái có chạm vào 1 bộ phận nào của khuôn mặt hay không ở 3
giai đoạn.

- Các giá trị tiếp theo từ 48 đến 55 thuộc giai đoạn 2 của thao
tác tương ứng với sự tiếp xúc với các vị trí của bảng …. và từ 56 đến
63 là ở giai đoạn 3.

- Từ thứ tự 64 đến 71 là các chiều vector tăng cường cho giai
đoạn 3.

- Từ 72 đến 104 là các chiều vector tương ứng với bàn tay trái.
- Từ 105 đến 109 là các chiều vector tương ứng với trạng thái
bàn tay trái ở giai đoạn 1.

- Do trạng việc xác định trạng thái của ngón tay có độ chính xác
kém tin cậy hơn so với xác định trạng thái bàn tay, cho nên nếu trạng


19
thái bàn tay là đóng hoặc không theo dõi thì trạng thái ngón tay của
bàn tay tương ứng ở giai đoạn đó sẽ bị đưa về giá trị 0.


- Từ 110 đến 119 để xác định trạng thái ở giai đoạn 2 và 3 của
bàn tay trái, từ 120 đến 124 là các chiều tăng cường cho giai đoạn 3.

- Từ 125 đến 144 để xác định cho trạng thái của bàn tay phải.
- Từ 145 đến 149 dùng đề xác định hướng của cánh tay về các
bộ phận của cơ thể, xác định theo bảng sau:

- Tương tự cho các chiều từ 149 đến 172 tương ứng với bàn tay
trái và phải ở các giai đoạn.

- Từ 173 đến 179 để dự trữ.
- Từ 180 đến 182 để xác định vị trí tương đối giữa 2 ngón tay,
xác định trường hợp 2 ngón index của 2 bàn tay chạm nhau và 2
ngón cái chạm nhau hoặc 2 ngón index chạm nhau và 2 ngón cái
không chạm nhau và 2 ngón index không chạm nhau và ngón cái
chạm nhau hoặc cả 4 ngón không chạm nhau cho 3 giai đoạn.

- Từ 183 đến 185 để xác hướng chi chuyển của cổ tay trái theo
X, Y và Z từ giai đoạn 1 đến giai đoạn 2.

- Từ 186 đến 188 để xác định hướng di chuyển của ngón cái tay
trái theo X, Y, Z từ giai đoạn 1 đến giai đoạn 2.

- Tương tự từ 189 đến 235 để xác định hướng di chuyển của
đỉnh ngón tay, ngón cái, cổ tay ở 3 giai đoạn, bao gồm cả các chiều
tăng cường.


20


- Từ 236 đến 253: vị trí ngừng của bàn tay trái ở giai đoạn 1.
Các vị trí tương ứng thực hiện theo bảng sau với giá trị ghi nhận là 0
hoặc 1 (ngừng tại đó hoặc không).

- Từ 254 đến 380 là các chiều vector cho tay trái, tay phải ở các
giai đoạn còn lại và các vector tăng cường.

- Từ 381 đến 640 để tăng cường vị trí dừng của bàn tay và ngón
tay.
3.2.
3.2.1.

Tăng cường giá trị vector
Tăng cường số chiều

Ở mỗi giai đoạn sẽ có một mức độ quan trọng khác
nhau, không thể đánh giá ngang thời điểm bắt đầu có nhiều sai
số do chuyển thao tác hoặc bắt đầu trễ với thời điểm kết thúc
gần như cố định cho mỗi thao tác, chính vì thế luận văn này đề
xuất nhân 5 lần giá trị tại thời điểm kết thúc thao tác.
3.2.2.

Lan truyền
Kinect đôi khi ghi nhận tín hiệu không chính xác, nhất là các

vị trí gần nhau. Các tín hiệu về khuôn mặt là một trong các vị trí dễ
có sai số về giá trị ghi nhận. Luận văn đề xuất phương án lan truyền
giá trị phụ đến các vị trí ghi nhận được đến các vị trí gần đó có thể
gây nhầm lẫn. Một vị trí được ghi nhận sẽ có giá trị là 1 và vị trí gần

đó sẽ có giá trị là 0,5. Việc lan truyền này sẽ làm tăng trọng số của
các vị trí ở khu vực đó và cũng sẽ giúp hệ thống hiểu rằng các vị trí ở
gần cũng sẽ có xác suất có thể có giá trị thay vì không được ghi
nhận.


21
3.2.3.

Xây dựng Mạng Nơ ron nhân tạo
Do việc xác định các thành phần của vector là không tuyệt

đối chính xác. Cần phải có 1 hệ thống học máy để có được 1 mô hình
tổng quát cho các trường hợp. Mạng nơ ron nhân tạo là 1 phương án
khả dĩ có thể được lựa chọn.
Hệ thống sử dụng thư viện neuro của Accord.Net, một nền
tảng cải tiến của aforge.Net.
3.2.4.

Underfitting
Hệ thống sử dụng bộ từ điển tự định nghĩa, tất cả các thao tác

đều phải thực hiện trước máy ít nhất 10 lần đề hệ thông ghi nhận,
chính vì thế không thể bao quát được toàn bộ số tình huống có thể
xảy ra của 1 từ, các trường hợp khởi điểm của chương trình không
giống nhau cũng như số lượng từ học có giới hạn so với hơn 65
nghìn từ, tình trạng underfitting là luôn luôn xảy ra mà không thể
giải quyết được.



22
Chương 4 - THỰC NGHIỆM HỆ THỐNG
Với hệ thống đang phát triển, quá trình thực nghiệm ược
triển khai trên 05 thao tác khác nhau với 40 lần thực hiện cho mỗi
thao tác, bộ dữ liệu huấn luyện là 35 thao tác mỗi từ (87.5%) và bộ
dữ liệu kiểm tra là 5 thao tác cho mỗi từ. Kết quả thực hiện chính xác
đạt được là 88%.

Hình 1.1: Kiểm tra trên bộ dữ liệu test
4.1.

So sánh với các công trình khác
So với 2 công trình đã nghiên cứu của các tác giả khác với

độ chính xác của 2 chương trình đạt ở mức 90% với số lượng từ có
giới hạn, luận văn với các phương thức đề xuất cũng đạt được độ
chính xác tương tự.
Luận văn này cũng đề xuất thêm các phương pháp về lan
truyền các tín hiệu đối với các vị trí dễ gây nhầm lẫn trên khuôn mặt,
phương pháp tăng cường tín hiệu đối với giai đoạn quan trọng của
ngôn ngữ cử chỉ. Ngoài ra, luận văn còn nêu ra các vấn đề còn tồn tại
của phần cứng, biện pháp tạm thời để xử lý các vấn đề đó.


23
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Những đóng góp của luận văn


Luận văn đã đề xuất các phương pháp xử lý các tín hiệu ghi


nhận được từ Kinect và xử lý các vector để chuyển đổi tín hiệu ghi
nhận được sang văn bản.


Với độ chính xác đạt được là trên 85%, hệ thống này có thể

là tiền đề cho các công trình nghiên cứu tiếp theo.
Những vấn đề chưa khắc phục được


Trạng thái của các ngón tay và hướng bàn tay chưa thể xử lý

một cách hoàn hảo, các trường hợp ngón tay chồng lấn với nhau hay
phân biệt giữa các trạng thái vẫn chưa thể xử lý tốt do hạn chế về
phần cứng.


Bộ dữ liệu đầu vào không có sẵn nên phải tự xây dựng, với

một hệ thống hơn 65.000 từ của ngôn ngữ cử chỉ, việc học tất cả vào
một model sẽ tốn rất nhiều thời gian và công sức. Hệ thống hiện tại
học trên một bộ dữ liệu khiêm tốn, sẽ gây ra tình trạng underfitting,
không bao quát được hết các trường hợp có thể xảy ra của một từ.


Kinect hiện đã bị ngưng phát triển bởi Microsoft, cộng đồng

hỗ trợ cho việc phát triển sản phẩm sẽ dần không còn nữa cũng như
việc cải tiến các vấn đề hiện tại về phần cứng cũng không còn nữa,

đưa đến việc tiếp tục phát triển hệ thống trở nên khó khăn hơn.
Hướng phát triển trong tương lai


Leap motion là một cảm biến tương tự với Kinect, nhỏ hơn

nhưng lại có có độ chính xác cao hơn. Hiện tại, Leap-motion chỉ có


×