Mục tiêu và nhiệm vụ nghiên cứu 2.1 Mục tiêu nghiên cứu Đề xuất giải pháp nhận dạng cử chỉ tay và động tác của người trước Kinect để điều khiển với dữ liệu thu được từ camera Kinect để
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA
Trang 2TRƯỜNG ĐẠI HỌC BÁCH KHOA
Người hướng dẫn khoa học: TS HUỲNH HỮU HƯNG
Phản biện 1: TS Phạm Minh Tuấn
Phản biện 2: TS Lê Xuân Vinh
Luận văn đã được bảo vệ trước Hội đồng chấm Luận văn tốt nghiệp thạc sĩ Khoa học máy tính tại Trường Đại học Bách Khoa – Đại Học
Đà Nẵng vào ngày 16 tháng 06 năm 2018
Có thể tìm hiểu luận văn tại:
− Trung tâm Học liệu, Đại học Đà Nẵng tại Trường Đại học Bách khoa
− Thư viện Khoa Công nghệ thông tin, Trường Đại học Bách khoa –
ĐHĐN
Trang 3chọn đề tài luận văn cao học: “Xây dựng game tương tác cho trẻ em
sử dụng Kinect”
2 Mục tiêu và nhiệm vụ nghiên cứu
2.1 Mục tiêu nghiên cứu
Đề xuất giải pháp nhận dạng cử chỉ tay và động tác của người trước Kinect để điều khiển với dữ liệu thu được từ camera Kinect để xây dựng chương trình cho phép người dùng chọn và tương tác bằng
Trang 4cử chỉ tay và động tác của người trước Kinect để điều khiển ứng dụng hỗ trợ chơi game tương tác cho trẻ em
2.2 Nhiệm vụ nghiên cứu
- Nghiên cứu các kỹ thuật xử lý ảnh
- Tìm hiểu các phương pháp nhận dạng, phân tích hành vi của
người trước Kinect nhằm phục vụ tương tác người – máy
- Xây dựng chương trình demo để kiểm tra tính hiệu quả của
giải pháp
3 Đối tượng và phạm vi nghiên cứu
3.1 Đối tượng nghiên cứu
- Các cử chỉ tay của bàn tay
- Các phương pháp, giải thuật về nhận dạng cử chỉ, động tác
của người trước Kinect để điều khiển của người chơi
- Các kỹ thuật xử lý nhận dạng để phục vụ bài toán nhận
dạng cử chỉ, động tác của người trước Kinect để điều khiển của người chơi
3.2 Phạm vi nghiên cứu
- Nghiên cứu kỹ thuật xử lý ảnh và nhận dạng đối tượng
- Nghiên cứu các phương pháp phát hiện chuyển động đối
tượng bàn tay, khớp tay và nhận dạng cử chỉ tay để tương tác người chơi– máy
4 Phương pháp nghiên cứu
4.1 Phương pháp nghiên cứu lý thuyết
- Cơ sở lý thuyết về các kỹ thuật xử lý ảnh
- Cơ sở lý thuyết về các phương pháp nhận dạng cử chỉ tay và
động tác trước Kinect để điều khiển
4.2 Phương pháp nghiên cứu thực nghiệm
- Nghiên cứu và khai thác công cụ Kinect của Microsoft
Trang 5- Xây dựng chương trình demo dựa trên giải pháp đề xuất
- Thực nghiệm trên dữ liệu đầu vào là các hình ảnh thu thập
dễ dàng
5.2 Ý nghĩa thực tiễn
Góp phần hỗ trợ cho việc điều khiển máy tính làm việc bằng cử chỉ tay và động tác của người trước Kinect để điều khiển một cách hiệu quả, nâng cao tương tác giữa người và máy, ứng dụng hỗ trợ tích cực cho các nhà sản xuất game trong thời đại ngày nay
Trang 6CHƯƠNG 1 -TỔNG QUAN VỀ XÂY DỰNG GAME TƯƠNG
TÁC CHO TRẺ EM SỬ DỤNG KINECT
1.1 Các vấn đề liên quan đến thiết bị camera Kinect
1.1.1 Giới thiệu về thiết bị camera Kinect
Kinect sử dụng webcam, thiết bị thu phát sóng hồng ngoại và thiết bị thu nhận âm thanh để ghi nhận tín hiệu chuyển động của game thủ và nhận dạng các lệnh điều khiển thông qua giọng nói, giúp cho các game thủ tương tác với Xbox 360 mà không cần chạm vào bất kì thiết bị điều khiển nào Trong đó, game thủ có thể thao tác như thật
1.1.2 Những thành phần chính của Kinect
1.1.3 Thư viện hỗ trợ Kinect
- Thư viện Libfreenect
- Thư viện Code Laboratories Kinect
- Thư viện OpenNI
- Thư viện Kinect SDK
1.1.4 Một số ứng dụng của Kinect
1.2 Giới thiệu nhận dạng cử chỉ tay trong giao tiếp người-máy
1.2.1 Tiến trình nhận dạng cử chỉ tay
a Sơ đồ khối của hệ thống nhận dạng cử chỉ tay
Tiến trình nhận dạng cử chỉ tay cơ bản có dạng như sau:
Hình 1.7 - Sơ đồ khối của hệ thống nhận dạng cử chỉ tay
b Dữ liệu vào
Dữ liệu vào có thể là một hình ảnh, hoặc một chuỗi các hình ảnh (video) được chụp bởi một máy ảnh duy nhất hướng về phía bàn tay
Trang 7người thực hiện các cử chỉ
c.Tiền xử lý
Mục đích cơ bản của giai đoạn này là tối ưu hình ảnh thu được
từ giai đoạn trước để chuẩn bị trích xuất các đặc trưng trong giai đoạn tiếp theo Chất lượng hình ảnh thu được phụ thuộc vào điều kiện sáng
và chất lượng của thiết bị ghi hình Từ hình ảnh thu nhận được ở dữ liệu vào ta có thể thực hiện xử lý ảnh cơ bản như: căn chỉnh ảnh, chuẩn hóa ánh sáng, loại bỏ nhiễu, phân đoạn ảnh, lọc màu da,
d Trích chọn đặc trưng
Trong giai đoạn trích chọn đặc trưng, mỗi đối tượng được đại diện bởi một véc tơ đặc trưng Mục tiêu chủ yếu của trích chọn đặc trưng là trích xuất một tập hợp các đặc trưng, trong đó có thể tối đa hóa tỷ lệ nhận dạng với sự nhầm lẫn nhỏ nhất Các đặc điểm của đối tượng được trích chọn tuỳ theo mục đích nhận dạng trong quá trình xử
lý ảnh
e.Nhận dạng
Có nhiều kỹ thuật nhận dạng khác nhau như: đối sánh mẫu, máy
hỗ trợ véc tơ (SVM), mạng nơ-ron nhân tạo (ANN), mô hình Makov
ẩn (HMM),…
1.2.2 Một số ứng dụng dựa trên nhận dạng cử chỉ tay
a Ứng dụng trong thực tế ảo
b Ứng dụng trong điều khiển robot
c Điều khiển máy tính
Trang 81.3.2 Tổng quan về engine Unity
Giao diện Unity giống như nhiều môi trường làm việc khác layout có thể tùy chỉnh Layout của Unity bao gồm nhiều tab khác nhau và có thể bật tắt Chúng ta hãy xem xét một cách bố trí giao diện
Unity điển hình:
Hình 1.21 - Giao diện Editor của Unity
1.3.3 Tính năng của engine Unity
1.3.4 Tổng quan kiến trúc engine Unity
1.4 Giới thiệu về game tương tác cho trẻ em
Game chém hoa quả là tên tiếng Việt của game Fruit Ninja, đúng như tên gọi của nó người chơi sẽ chém những loại quả hết sức quen thuộc trong cuộc sống hàng ngày như: dứa, dâu, dưa hấu, táo, dừa theo cách mãnh liệt nhất như một Ninja thực thụ
Những đặc điểm nổi bật của game:
- Game có yếu tố giải trí cao
- Game có đồ họa đẹp
- Âm thanh sống động hút hồn
- Nhiều màn chơi, chế độ chơi
- Rủi ro trong game
KẾT CHƯƠNG
Chương này giới thiệu tổng quan về thiết bị camera Kinect để nhận dạng cử chỉ tay trong giao tiếp người – máy, giới thiệu nhận dạng cử chỉ tay, giới thiệu về lập trình game unity và game tương tác
Trang 9cho trẻ em sử dụng camera Kinect
Trang 10CHƯƠNG 2 - MỘT SỐ KỸ THUẬT TRÍCH CHỌN ĐẶC
TRƯNG VÀ NHẬN DẠNG CỬ CHỈ TAY
2.1 Một số kỹ thuật trích chọn đặc trưng cử chỉ tay
2.1.1 Đặc trưng chuyển động của bàn tay
Kênh khung xương dữ liệu thu được từ camera Kinect cho phép
ta trích được vị trí bàn tay theo thời gian Như thế ta có được quỹ đạo chuyển động của bàn tay như một danh sách các điểm trong không gian 3 chiều Vì số lượng khung ảnh của mỗi cử chỉ tay không giống nhau nên ta không thể sử dụng trực tiếp danh sách điểm này như đặc trưng của quỹ đạo Ta cần phải trích các đặc trưng sao cho nó độc lập với số lượng khung ảnh của một cử chỉ Nhóm tác giả [4] tiến hành nghiên cứu các đặc trưng có tính chất này theo 4 hướng: canh lề và nội suy theo quỹ đạo, tổng hợp thông tin theo thời gian kết hợp cả hai hướng trên và dựa trên tinh thần đặc trưng cục bộ SIFT Từ đó, đề xuất
4 phương pháp mới cho việc trích xuất đặc trưng quỹ đạo chuyển động
2.1.2 Đặc trưng các thành phần chính PCA
Thuật toán PCA được xây dựng theo các bước:
- Bước 1: Tiền xử lí
- Bước 2: Xây dựng không gian mới
- Bước 3: Chuyển dữ liệu từ không gian ban đầu sang không gian mới
2.1.3 Đặc trưng HOG
Các bước trích đặc trưng HOG trên ảnh:
Bước 1: Tính cường độ và hướng biến thiên tại mỗi pixel Bước 2: Chia ảnh đầu ra ở bước trên thành nhiều khối (block),
mỗi khối có số ô bằng nhau, mỗi ô có số pixels bằng nhau
Bước 3: Tính vectơ đặc trưng cho từng khối và tính vectơ đặc
Trang 11trưng từng ô trong khối
Bước 4: Tính vectơ đặc trưng cho ảnh
Áp dụng các bước trích đặc trưng HOG trên vùng ảnh ứng viên
2.1.4 Đặc trưng cục bộ bất biến - SIFT
a Giới thiệu
b Thuật toán SIFT
- Bước 1: Phát hiện các điểm cực trị trong không gian tỉ lệ
- Bước 2: Định vị các điểm hấp dẫn
- Bước 3: Xác định hướng cho các điểm hấp dẫn
- Bước 4: Mô tả các điểm hấp dẫn
Hình 2.7 – Hướng phân bố trên ảnh và mô tả điểm hấp dẫn
2.1.5 Đặc trưng Haar-Like
a Giới thiệu
Đặc trưng Haar-Like là một loại đặc trưng thường được dùng cho bài toán nhận dạng trên ảnh Đặc trưng Haar-Like dựa trên ý tưởng tính độ chênh lệch giữa các giá trị mức xám của các điểm ảnh trong các vùng kề nhau trong ảnh xám, mỗi đặc trưng là sự kết hợp của hai hay ba hình chữ nhật “trắng” hay “đen” theo một trật tự, kích thước nào đó Hình 2.9 mô tả 4 đặc trưng Haak-Like như sau:
Trang 12a Giới thiệu và ý tưởng
b Tính toán đặc trưng GIST
Đặc trưng GIST được tiến hành theo các bước như sau:
- Ảnh đầu vào sau khi được tiền xử lý sẽ tách ra thành 3 kênh màu Red, Green và Blue riêng biệt
- Áp dụng phép biến đổi Fourier trên mỗi kênh màu
- Ứng với mỗi ảnh Fourier áp dụng lần lượt 20 bộ lọc Gabor lên ảnh Bộ lọc Gabor được tạo ra ở 3 scale và 8 hướng Trong đó, scale 1 và scale 2 sử dụng 8 bộ lọc, scale 3 sử dụng 4 bộ lọc
- Cuối cùng, kết quả của mỗi bộ lọc được đưa qua phép biến đổi Fourier ngược, sau đó chia thành 16 vùng bằng nhau và trích đặc trưng Kết quả của mỗi vùng là một đặc trưng
2.1.7 Đặc trưng xương ảnh của bàn tay (Skeleton of the Hand)
a Giới thiệu và ý tưởng
b Phương pháp tìm xương ảnh
Các kỹ thuật tìm xương luôn là chủ đề nghiên cứu trong xử lý ảnh Do tính phức tạp của nó nên mặc dù có những nỗ lực cho việc
Trang 13phát triển các thuật toán tìm xương nhưng các phương pháp đưa ra đều
bị mất mát thông tin Có thể chia thành hai loại cho thuật toán tìm xương cơ bản: Các thuật toán tìm xương dựa trên làm mảnh và các thuật toán tìm xương không dựa trên làm mảnh
2.2 Một số kỹ thuật nhận dạng cử chỉ tay
2.2.1 Kỹ thuật sử dụng máy vector hỗ trợ - SVM
Máy vectơ hỗ trợ (SVM - viết tắt tên tiếng Anh support vector machine) là một khái niệm trong thống kê và khoa học máy
tính cho một tập hợp các phương pháp học có giám sát liên quan đến nhau để phân loại và phân tích hồi quy SVM dạng chuẩn nhận dữ liệu vào và phân loại chúng vào hai lớp khác nhau Do đó SVM là một thuật toán phân loại nhị phân
Nhiều thử nghiệm các ứng dụng khác nhau cho thấy SVM là một trong những phương pháp phân loại có độ chính xác cao và tương đối tổng quát cho bài toán nhận dạng
Hình 2.16 - Minh họa mô hình SVM
Xét một bài toán nhị phân có giám sát Nếu dữ liệu được biểu diễn bởi, {xi,yi}, i=1, 2, …, N và yi ∈ {−1, +1}, với N là số mẫu huấn luyện, yi=+1 mẫu huấn luyện lớp dương của lớp 𝜔1và yi= -1 mẫu huấn luyện lớp âm của lớp 𝜔2[14],[25],[28] Giả sử 2 lớp là có thể phân tách tuyến tính (linearly separable), có nghĩa là có thể tìm thấy ít nhất một siêu phẳng được xác định bởi một vecto w với sai lệch w0, như thế sẽ tối thiểu hóa giới hạn lỗi (phân lớp) mắc phải: 𝑓(𝑥) = 𝑤 𝑥 + 𝑤0= 0 (2.35)
Trang 14Để tìm một siêu phẳng, w và w0 cần được tính như sau:
𝑦𝑖(𝑤 𝑥𝑖+ 𝑤0) ≥ +1, 𝑦𝑖 = +1 ( lớp𝜔1)
𝑦𝑖(𝑤 𝑥𝑖+ 𝑤0) ≤ −1, 𝑦𝑖 = −1 (lớp 𝜔2)
Hai phương trình này có thể kết hợp để có được:
𝑦𝑖(𝑤 𝑥𝑖+ 𝑤0) − 1 ≥ 0 Chúng ta cần chọn w và w0 để cho mặt phẳng siêu phẳng phân tách có biên (margin) lớn nhất Các siêu mặt phẳng ấy được xác định như sau:
𝑤 𝑥𝑖+ 𝑤0 = ±1
Hình 2.17 - Minh họa khoảng cách các biên
Với dữ liệu có thể được chia tách một cách tuyến tính, thì ta có thể chọn hai siêu phẳng của biên sao cho không có điểm nào ở giữa chúng và sau đó tăng khoảng cách giữa chúng đến tối đa có thể Bằng hình học, ta tìm được khoảng cách giữa hai siêu phẳng là ‖𝑤‖2 Vì vậy
ta cần cực tiểu hóa giá trị ‖𝑤‖
Để đảm bảo không có điểm dữ liệu nào trong biên ta thêm vào các điều kiện sau, với mỗi i ta có:
Trang 15∑ λ𝑖𝑦𝑖 = 0 𝑣à λ𝑖≥ 0, 𝑖 = 1, 2, … , 𝑁
𝑁 𝑖=1
Với λ𝑖là hệ số nhân Lagrange Theo công thức này, các hàm phân lớp siêu phẳng tối ưu trở thành:
Hình 2.19 - Xử lý trường hợp chứa nhiễu
Cần phải tích hợp lỗi trong hàm tối ưu mục tiêu bằng cách gán giá trị chi phí (cost) cho các lỗi và tích hợp chi phí này trong hàm mục tiêu mới:
Cực tiểu hóa:
𝐽(𝑤, 𝑤0, ξ ) =12‖𝑤‖ 2+ 𝐶 ∑𝑁𝑖=1ξ 𝑖 (2.37)
Với điều kiện:
𝑖(𝑤 𝑥 + 𝑤0) ≥ 1 − ξ 𝑖Trong trường hợp không thể phân chia tuyến tính, cách tiếp cận sử dụng SVM là ánh xạ các vectơ trong không gian gốc sang một không gian mới, thường là có số chiều lớn hơn Vấn đề là việc tính toán các ánh xạ này có thể có độ phức tạp tính toán lớn Để tránh việc
Trang 16tính toán các ánh xạ, một kỹ thuật được sử dụng là dùng các hàm nhân Hàm nhân cho phép tính tích vô hướng giữa hai vectơ trong không gian mới mà không cần biết ánh xạ thực của các véctơ trong không gian đó
Φ(x) Φ(z)=K(x,z)
Hình 2.20 - Áp dụng Kernel phân loại trên không gian đặc trưng
Trong đó K(x,z) là một hàm nhân, hàm này có thể được sử dụng trực tiếp mà không cần tìm hàm ánh xạ Φ
Đối với bài toán tối ưu kép được tạo ra như sau:
Cực đại hóa:
∑ 𝜆𝑖−1
𝑖,𝑗=1 𝑁
Với điều kiện:
∑ 𝜆𝑖𝑦𝑖 = 0
𝑁 𝑖=1
2.2.2 Kỹ thuật sử dụng mạng nơ-ron nhân tạo - ANN
2.2.3 Kỹ thuật K-láng giềng gần nhất
2.2.4 Kỹ thuật sử dụng mô hình Markov ẩn – HMM
Trang 172.3 Mô tả game chém trái cây sử dụng Kinect
Hình 2.26 - Sơ đồ mô tả game chém trái cây sử dụng Kinect
KẾT CHƯƠNG
Trong chương này luận văn đã giới thiệu một số kỹ thuật trích chọn đặc trưng và nhận dạng cử chỉ tay thường được sử dụng phổ biến, mỗi phương pháp đều có các ưu điểm và hạn chế riêng, việc áp dụng phương pháp nào tùy thuộc vào từng bài toán cụ thể Trong một
số bài toán, người ta có thể sử dụng kết hợp một số phương pháp với nhau như SVM/HMM, ANN/HVM,… để có được kết quả nhận dạng được tốt hơn
Trang 18CHƯƠNG 3 - XÂY DỰNG HỆ THỐNG NHẬN DẠNG CỬ CHỈ TAY ỨNG DỤNG CHƠI GAME CHÉM TRÁI CÂY
SỬ DỤNG KINECT 3.1 Mô tả bài toán
Hình 3.1 - Sơ đồ khối của bài toán
3.2 Giải pháp đề xuất của hệ thống
3.2.1 Sơ đồ hoạt động của hệ thống
Hình 3.2 - Sơ đồ khối hệ thống nhận dạng cử chỉ tay ứng dụng chơi
game chém trái cây
Trang 193.2.2 Phát hiện bàn tay
Hình 3.3 - Sơ đồ vị trí giữa người thực hiện cử chỉ và camera Kinect
Khi biểu diễn cử chỉ, người thực hiện đưa tay vào trong miền
[0.8, 0.8 + α] và ảnh độ sâu thu được sẽ chỉ chứa vùng bàn tay Ràng
buộc này không gây ra sự bất tiện đáng kể nào, bởi người sử dụng thường luôn có xu hướng đứng tại vị trí cách camera một khoảng cố định
3.2.3 Tiền xử lý
3.2.4 Trích chọn đặc trưng
3.2.5 Nhận dạng cử chỉ tay
Thuật toán SVM:
Xét bài toán phân lớp đơn giản nhất – phân lớp hai lớp với tập
dữ liệu mẫu {(x i , y i ), i = 1, 2,…, N, x i ∈Rm}, trong đó tập mẫu là các vector đối tượng được gán nhãn thành các mẫu dương và mẫu âm như sau :
- Mẫu dương là các mẫu xi thuộc lớp được quan tâm và được gán nhãn y i = 1
- Mẫu âm là các mẫu xi không thuộc lớp cần quan tâm và được gán y i = - 1
Phương pháp này thực chất là lời giải cho một bài toán tối ưu,
trong đó mục tiêu là tìm ra một không gian H và siêu mặt phẳng
quyết định h trên H sao cho sai số phân lớp là thấp nhất Trong
Trang 20trường hợp này, tập phân lớp SVM là mặt siêu phẳng phân tách các
mẫu dương khỏi các mẫu âm với độ chênh lệch cực đại, trong đó độ
chênh lệch – còn gọi là lề - được xác định bằng khoảng cách giữa
các mẫu dương và các mẫu âm gần siêu phẳng nhất Siêu phẳng này
được gọi là siêu phẳng lề tối ưu
Hình 3.6 - Minh họa bài toán phân lớp bằng phương pháp SVM
Các siêu phẳng trong không gian đặc trưng n chiều có phương
trình tổng quát:
C + w1x1+ w2x2+ … + wn x n = 0 (3.1)
Phương trình này tương đương với C + Σw i x i = 0 (với i =
1,…,n), trong đó bộ giá trị w = (w1, w2, …, w n) là bộ hệ số siêu phẳng
hay là vector trọng số, C là độ dịch chuyển, khi thay đổi w và C thì
hướng và khoảng cách từ gốc toạ độ đến siêu phẳng thay đổi
Bộ phân lớp SVM được định nghĩa như sau:
f(x) = sign(C + Σw i x i) (3.2)
Trong đó:
sign(z) = +1 nếu z ≥ 0, (3.3)
sign(z) = -1 nếu z < 0
Nếu f(x) = +1 thì x thuộc về lớp dương (miền quan tâm)
Ngược lại, nếu f(x) = -1 thì x thuộc về lớp âm (miền khác)
Mô hình học máy SVM tạo ra một siêu phẳng phụ thuộc vào
tham số vector trọng số w và độ dịch chuyển C Mục tiêu của phương
pháp SVM là ước lượng w và C để cực đại hóa lề giữa các lớp dữ liệu