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

nhận dạng tư thế người với camera kinect và máy học vector hỗ trợ

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 (1.77 MB, 42 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC CẦN THƠ
KHOA CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG

LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC

NGÀNH KỸ THUẬT PHẦN MỀM

Đề tài

NHẬN DẠNG TƯ THẾ NGƯỜI VỚI CAMERA KINECT
VÀ MÁY HỌC VECTOR HỖ TRỢ

Sinh viên: Huỳnh Nhật Minh
Mã số: 1111311
Khóa: K37

Cần Thơ, 14/5/2015


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC CẦN THƠ
KHOA CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
BỘ MÔN CÔNG NGHỆ PHẦN MỀM

LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC

NGÀNH KỸ THUẬT PHẦN MỀM

Đề tài



NHẬN DẠNG TƯ THẾ NGƯỜI VỚI CAMERA KINECT
VÀ MÁY HỌC VECTOR HỖ TRỢ

Người hướng dẫn

Sinh viên thực hiện

TS. Phạm Nguyên Khang

Huỳnh Nhật Minh
Mã số: 1111311
Khóa: K37

Cần Thơ, 14/5/2015


LỜI CẢM ƠN
Khi tôi viết những dòng này cũng là lúc thời gian làm luận văn sắp kết thúc, bài luận
văn này không chỉ đánh dấu một chặng đường mà nó còn buộc tôi nhận ra tôi đã đi
được bao xa và tôi đã thực sự may mắn như thế nào khi gặp được những người mà
từng ngày từng ngày giúp tôi thay đổi bản thân và hoàn thiện như ngày hôm nay.
Cám ơn cha mẹ đã ủng hộ con không chỉ trong thời gian làm luận văn mà từ lúc con
quyết định đi theo con đường này.
Xin cám ơn Cô Nguyễn Cao Hồng Ngọc người đầu tiên đã giúp tôi nhận ra con đường
mà mình muốn đi, cám ơn Cô vì đã luôn tin tưởng và tiếp thêm lửa cho niềm đam mê
lập trình. Cám ơn thầy Phạm Nguyên Khang vì đã dạy tôi nhiều kiến thức và cũng là
người hướng dẫn để tôi có thể hoàn thành bài luận văn này.
Tôi cũng xin cám ơn những người bạn đã dành hàng giờ đồng hồ chỉ để đứng trước
camera Kinect thực hiện các động tác, giúp tôi thu thập đầy đủ dữ liệu. Xin dành lời

cám ơn sâu sắc nhất đến Phạm Nguyễn Hải Âu, Đào Minh Tân, Nguyễn Thanh Quận,
Nguyễn Quốc Nhân, Nguyễn Khánh Hà.
Và cuối cùng xin gửi lời cám ơn đặc biệt nhất đến Nguyễn Thị Ngọc Bích. Vì đã giúp
cuộc sống của tôi sinh động hơn.

i


MỤC LỤC
LỜI CẢM ƠN ............................................................................................................. i
MỤC LỤC .................................................................................................................. ii
DANH MỤC HÌNH .................................................................................................. iv
DANH MỤC BẢNG ...................................................................................................v
TÓM TẮT ................................................................................................................. vi
ABSTRACT .............................................................................................................. vi
PHẦN I - GIỚI THIỆU ...............................................................................................1
1. Đặt vấn đề ............................................................................................................1
2. Lịch sử giải quyết vấn đề .....................................................................................1
3. Mục tiêu đề tài .....................................................................................................2
4. Đối tượng và phạm vi của đề tài ..........................................................................3
5. Nội dung nghiên cứu............................................................................................3
6. Những đóng góp chính của đề tài ........................................................................3
7. Bố cục của quyển luận văn ..................................................................................4
PHẦN II - NỘI DUNG ...............................................................................................5
Chương 1. Mô tả bài toán ........................................................................................5
1.1. Mô tả ..............................................................................................................5
1.2. Các tư thế người cần nhận dạng ....................................................................5
Chương 2. Thiết kế và cài đặt giải pháp ..................................................................9
2.1. Trích đặc trưng ..............................................................................................9
2.1.1 Thiết bị Kinect ........................................................................................9

2.1.1.1 Khả năng và giới hạn ......................................................................9
2.1.1.2 Hệ thống khung xương ..................................................................11
2.1.2 Trích xuất đặc trưng cơ thể người với camera Kinect ..........................12
2.2. Nhận dạng tư thế .........................................................................................13
2.2.1 Máy học vector hỗ trợ (Support Vector Machine – SVM) ...................13
2.2.1.1 Giới thiệu.......................................................................................13
2.2.1.2 Máy học vector hỗ trợ tuyến tính ..................................................13
2.2.1.3 Phân lớp đa lớp..............................................................................15
2.2.2 Nhận dạng tư thế với SVM ...................................................................16
2.3. Hệ thống nhận dạng tư thế với camera Kinect và máy học SVM ...............17
ii


2.4. Cài đặt ..........................................................................................................18
2.4.1 Giao diện chương trình .........................................................................18
2.4.2 Chức năng chương trình ........................................................................21
Chương 3. Kiểm thử và đánh giá ...........................................................................25
3.1. Thu thập dữ liệu...........................................................................................25
3.2. Phương pháp đánh giá .................................................................................26
3.3. Kết quả ........................................................................................................27
3.4. Chương trình tập thể dục .............................................................................29
PHẦN III - KẾT LUẬN ............................................................................................31
1. Kết quả đạt được ................................................................................................31
2. Hướng phát triển ................................................................................................31
Tài liệu tham khảo .....................................................................................................33

iii


DANH MỤC HÌNH

Hình 2.1: Thiết bị Kinect v1 .......................................................................................9
Hình 2.2: Chế độ phạm vi gần ..................................................................................10
Hình 2.3: Chế độ phạm vi mặc định .........................................................................10
Hình 2.4: Góc nhìn của Kinect ..................................................................................10
Hình 2.5: Kinect v1 nhận dạng được 6 người và cung cấp 2 khung xương .............11
Hình 2.6: Chế độ khung xương mặc định (trái) và chế độ khung xương ngồi (phải)
...................................................................................................................................11
Hình 2.7: 20 khớp xương và tên tương ứng ..............................................................11
Hình 2.8: Tọa độ không gian.....................................................................................12
Hình 2.9: Ví dụ về phân lớp nhị phân .......................................................................13
Hình 2.10: Vùng “mờ” của phương pháp 1-tất cả (trái) và phương pháp 1-1 (phải)15
Hình 2.11: Hệ thống nhận dạng tư thế ......................................................................17
Hình 2.12: Giao diện chương trình xử lý dữ liệu và trích xuất đặc trưng.................18
Hình 2.13: Bảng điều khiển của chương trình ..........................................................19
Hình 2.14: Giao diện hiện kết quả nhận đạng ...........................................................20
Hình 2.15: Luồng sự kiện chương trình “Project K” ................................................21
Hình 3.1: 6 vị trí lấy mẫu dữ liệu ..............................................................................25
Hình 3.2: Ảnh hưởng của nhiệt độ môi trường đến quá trình thu mẫu .....................25
Hình 3.3: Nghi thức kiểm định chéo 10-fold ............................................................26
Hình 3.4: Đồ thị biểu diễn độ chính xác của các phương pháp trích xuất đặc trưng 27
Hình 3.5: Giao diện chính của chương trình Demo ..................................................29
Hình 3.6: Giao diện tập thể dục ................................................................................30

iv


DANH MỤC BẢNG
Bảng 1.1: Các tư thế cần nhận dạng ............................................................................8
Bảng 2.1: Các thành phần chính trên giao diện ........................................................19
Bảng 2.2: Các thành phần chính trong bảng điều khiển ...........................................20

Bảng 3.1: Độ chính xác các phương pháp trích xuất đặc trưng theo từng thực nghiệm
...................................................................................................................................28

v


TÓM TẮT
Nhận dạng tư thế người là một đề tài hấp dẫn có nhiều ứng dụng trong cuộc sống như
tập thể dục, nhận dạng tư thế bệnh nhân, phát hiện té ngã, thay đổi tư thế ngồi, v.v…
tuy nhiên đây cũng là lĩnh vực đầy thách thức do ảnh cần nhận dạng bị ảnh hưởng
nhiều bởi các yếu tố môi trường như độ nhiễu, ánh sáng, góc chụp, v.v...
Thiết bị Kinect của Microsoft là một công cụ giá rẻ nhưng lại cho phép chúng ta giải
quyết các vấn đề trên một cách dễ dàng hơn, thông qua các dữ liệu được cung cấp bởi
thiết bị Kinect ta có thể tạo nên bộ dữ liệu huấn luyện nhằm mục đích “dạy” cho máy
tính nhận biết được các tư thế người.
Trong nội dung của luận văn, tôi sẽ trình bày về khả năng nhận dạng 20 tư thế người
với 4 phương pháp trích đặc trưng sử dụng: tọa độ tuyệt đối (1), tọa độ tương đối (2),
góc xoay tuyệt đối (3), góc xoay tương đối (4). Những đặc trưng này sẽ được huấn
luyện máy học SVM tuyến tính để nhận dạng tư thế người.
Kết quả thực nghiệm cho thấy phương pháp (1) đạt kết quả cao nhất với 99.83%, kế
đến là phương pháp (2) đạt kết quả 99.81%, đứng thứ 3 là phương pháp thứ (4) với
99.50% và cuối cùng là phương pháp thứ (3) 98.9%. Tuy nhiên, qua 3 thực nghiệm
được đề xuất trong bài luận văn này cho thấy phương pháp (1) tuy có độ chính xác
cao nhất nhưng chưa thật sự ổn định khi loại bỏ một số vị trí đứng trong bộ huấn
luyện, trong khi phương pháp (2) và (4) vẫn ổn định và đạt độ chính xác cao.

ABSTRACT
Human posture recognition is an attractive topic with many applications in life such
as: sport, recognize patent’s posture, fall detection, change sit posture… However,
this is also a challenging field because the image recognition process is affected by

noise, light, camera angle…
Kinect for Windows of Microsoft is a tool with low price but it can helps and solves
these problems easilier. With the information Kinect provides to us, we can build a
training data to “teach” the computer to recognize human postures.
In this thesis, I will present the ability to recognize 20 human postures with 4 method
of features extracted by using: Absolute Position (1), Relative Position (2), Absolute
Rotation (3) and Hierarchical Rotation (4). These features will be trained with SVM
to recognize human postures.
The results reveal method (1) has the highest accuracy with 99.83%, 2nd highest
accuracy is method (2) 99.81% and the 3rd is method (4) with 99.50% and the lowest
accuracy is method (3) with 98.9%. However, through 3 conducted experiment,
although method (1) has the highest accuracy but it’s unstable when removes some
positions in the training data, while method (2) and (4) still stable and high accuracy.

vi


PHẦN I - GIỚI THIỆU
1. ĐẶT VẤN ĐỀ
Hiện nay, nhận dạng tư thế người (human posture recognition) là một đề tài được
nhiều người quan tâm. Đề tài có thể ứng dụng vào rất nhiều lĩnh vực như:
 Y tế: nhận dạng tư thế có thể giúp cho bệnh nhân tập vật lý trị liệu [1, 2], theo
dõi bệnh nhân từ xa báo cho bác sĩ hay y tá khi bệnh nhân khi bị ngã, cần giúp
đỡ hay thay đổi tư thế nằm nếu bị sai, v.v.
 Giải trí: các trò chơi mang tính tương tác.
 Hướng dẫn tập thể dục hay tập võ: giúp cho người tập có thể biết được khi nào
mình tập sai tư thế, chấm điểm cho mỗi tư thế hay biết được số lượng carlo
tiêu hao khi thực hiện đúng một tư thế.
Chính vì có nhiều ứng dụng vào thực tế như vậy nhận dạng tư thế là một đề tài đáng
để quan tâm, nghiên cứu.

Tuy nhiên, phương pháp giải quyết truyền thống là dựa trên hình ảnh thu được từ
camera thông thường sau đó trích xuất đặc trưng và sử dụng mô hình máy học để
huấn luyện bộ nhận dạng. Việc trích xuất đặc trưng cho các tư thế còn gặp khó khăn
do nhiễu, góc chụp, ánh sáng, ảnh hưởng của môi trường.
Vào ngày 01/02/2012, Microsoft ra mắt thiết bị Kinect dành cho Windows, thiết bị
này ngoài giá thành rẻ, có thể quay phim màu nó còn cung cấp ảnh về độ sâu (depth
image), đặc biệt là khả năng định vị và nhận dạng các khớp xương của người đứng
trước Kinect.
Dựa trên khả năng phát hiện và định vị khớp xương của thiết bị Kinect cùng mong
muốn giảm đi sự khó khăn trong phương pháp giải quyết truyền thống tôi xin đề xuất
đề tài: nhận dạng tư thế người với camera Kinect và máy học vector hỗ trợ.

2. LỊCH SỬ GIẢI QUYẾT VẤN ĐỀ
Hiện nay đã có rất nhiều nghiên cứu về đề tài nhận dạng tư thế người tuy nhiên hầu
hết là sử dụng các thông tin có được từ ảnh màu được chụp bởi camera thường. Trong
đó có một số nghiên cứu tiêu biểu như:
 “Inference of Human Postures by Classification of 3D Human Body Shape”
của Isaac Cohen, Hongxia Li [3]: đề tài nhận dạng 12 tư thế sử dụng máy học
vector hỗ trợ (SVM) với đầu vào là vỏ ngoài của tư thế thể hiện ở dạng 3D
(3D visual hull) được trích xuất từ bóng (silhouette) của một người từ 4 camera
đã được đồng bộ với nhau.
 “Human Behavior Analysis Using Multiple 2D Features and Multicategory
Support Vector Machine” [4] Hao-Cheng Mo, Jin-Jang Leou, và Cheng-Shian
Lin đề xuất một hệ thống phân tích hành vi con người với 3 tư thế là: đi, cúi

1


người và ngồi. Đề tài sử dụng máy học SVM với các đặc trưng là khung xương
hình sao (star skeleton) và vector chuyển động (motion vector).

 “Human Action Recognition Based on Non-linear SVM Decision Tree” [5]
của Haiyong Zhao và Zhijing Liu sử dụng mô hình trọng tâm – bán kính
(centroid – radii) để “mô tả” hình dạng tư thế sau đó kết hợp giữa máy học
SVM và cây quyết định (decision tree) để nhận dạng.
Những đề tài nêu trên việc nhận dạng tư thế đòi hỏi độ phức tạp cao khó thực hiện
truy vấn theo thời gian thực nhưng điểm yếu thực sự của những đề tài này là dễ bị
ảnh hướng bởi các yếu tố bên ngoài, góc chụp, điều kiện ánh sáng hay chất lượng của
hình ảnh thu được từ camera thường.
Các đề tài nhận dạng tư thế người có sử dụng camera Kinect tuy có số lượng ít nhưng
cũng có một số đề tài đáng chú ý như:
 Đề tài “Human posture recognition using human skeleton provided by Kinect”
[6] của TS. Lê Thị Lan thực hiện 7 thực nghiệm với 4 cách trích xuất dữ liệu
từ khung xương được cung cấp bởi thiết bị Kinect. Kết quả của đề tài cho thấy
độ chính xác cao khi nhận dạng 4 tư thế đứng, ngồi, nằm và cúi người.
 “Human gesture recognition using Kinect camera” [7] của Orasa Patsadu,
Chakarida Nukoolkit và Bunthit Watanapa, đề tài này đưa ra sự so sánh giữa
4 phương pháp phân loại là backpropagation neutral network, SVM, cây quyết
định và Bayes thơ ngây.
 “Gesture recognition from Indian classical dance using Kinect” [8] của Sripara
Saha, Shreya Ghosh, Amit Konar, Atulya K. Nagar đề tài này sử dụng tọa độ
của 11 khớp xương ở phần thân trên để nhận dạng 5 cử chỉ bao gồm: giận dữ,
sợ hãi, vui vẻ, buồn, thư giãn.
Những đề tài trên đều đạt được độ chính xác cao khi sử dụng dữ liệu khung xương từ
camera Kinect, tuy nhiên số lượng tư thế của các đề tài này khá ít (3-5 tư thế) và cách
trích xuất dữ liệu cũng yêu cầu nhiều công đoạn và đôi khi gây phức tạp.

3. MỤC TIÊU ĐỀ TÀI
Mục tiêu của đề tài là xây dựng một mô hình nhận dạng các tư thế của người đứng
trước Kinect bằng cách sử dụng các thông tin về vị trí các khớp xương thu nhận được
từ Kinect và mô hình máy học vector hỗ trợ (SVM). Qua đó ứng dụng mô hình nhận

dạng tư thế vào chương trình tập thể dục.

2


4. ĐỐI TƯỢNG VÀ PHẠM VI CỦA ĐỀ TÀI
Trong nội dung của đề tài này, ta sẽ tìm hiểu về khả năng nhận dạng của máy tính
dựa trên dữ liệu khung xương được cung cấp bởi thiết bị Kinect thông qua 4 phương
pháp trích xuất đặc trưng như sau:
1.
2.
3.
4.

Tọa độ tuyệt đối.
Tọa độ tương đối.
Góc xoay tuyệt đối.
Góc xoay tương đối.

Sau khi trích đặc trưng, dữ liệu sẽ được sử dụng để huấn luyện các bộ nhận dạng theo
mô hình máy học véc-tơ hỗ trợ. Trong luận văn, chúng tôi sử dụng thư viện libSVM
[9] để huấn luyện và nhận dạng.

5. NỘI DUNG NGHIÊN CỨU
Dựa vào phạm vi của đề tài, bài luận văn này sẽ thực hiện theo hướng như sau:
 Tìm hiểu camera Kinect và bộ phát triển SDK của thiết bị.
 Thu thập dữ liệu: tạo nhiều tư thế khác nhau và dùng Kinect ghi nhận lại vị trí
các khớp xương của mỗi tư thế. Mỗi tư thế thu nhận nhiều lần với nhiều người
khác nhau. Số lượng mẫu thu được của mỗi tư thế từ 400-500 mẫu.
 Tìm hiểu cách biểu diễn các tư thế từ vị trí các khớp xương. (trích đặc trưng)

 Tìm hiểu mô hình máy học SVM và sử dụng thư viện libSVM để huấn luyện
một mô hình có khả năng nhận dạng/phân loại các tư thế.
 Viết chương trình demo.

6. NHỮNG ĐÓNG GÓP CHÍNH CỦA ĐỀ TÀI
Ứng dụng các hệ thống như thế này rất đa dạng như: theo dõi bệnh nhân từ xa (biết
được các tư thế của bệnh nhân như: đứng, nằm, ngồi), hướng dẫn tập thể dục, tập võ.
Trong trường hợp tập thể dục, tập võ hệ thống người dùng lần lượt tạo các tư thế đúng
với các tư thế của các động tác trong một bài tập thể dục.
Ngoài ra, đề tài còn tạo tiền đề về nhận dạng sử dụng thiết bị Kinect trong Khoa,
chứng minh được dữ liệu được cung cấp bởi Kinect đem lại độ chính xác cao trong
việc nhận dạng.

3


7. BỐ CỤC CỦA QUYỂN LUẬN VĂN
Bài báo cáo luận văn sẽ được trình bày như sau:
Phần Nội dung
1. Mô tả bài toán
Chương này sẽ giới thiệu sơ bộ về bài toán nhận dạng tư thế người với camera
Kinect thêm vào đó là 20 tư thế sẽ được nhận dạng.
2. Thiết kế và cài đặt giải pháp
Chương 2 sẽ tập trung vào 2 phần trọng tâm của bài toán là cách trích đặc
trưng và nhận dạng thư thế, trong đó sẽ giới thiệu về camera Kinect, quy trình
trích đặc trưng, thuật toán SVM, chương trình hỗ trợ trích đặc trưng.
3. Kiểm thử và đánh giá
Cách kiểm thử, đánh giá 4 phương pháp sẽ được nêu trong chương này song
song đó là độ chính xác của 4 phương pháp.
Phần Kết luận

Phần cuối cùng sẽ đưa ra kết luận về 4 phương pháp nhận dạng tư thế người với
camera Kinect, hướng phát triển cho những đề tài kế tiếp.

4


PHẦN II - NỘI DUNG
CHƯƠNG 1. MÔ TẢ BÀI TOÁN
1.1. Mô tả
Nhận dạng tư thế người là phân lớp một tư thế thu được từ camera vào một trong các
tư thế đã được định nghĩa trước đó ví dụ như: đứng, ngồi, nằm.
Người mô tả tư thế sẽ đứng trước camera và hệ thống sẽ nhận dạng tư thế đó là tư thế
gì.
9 1:-0.89025092124939 2:0.109290048480034 3:2.44660329818726 4:0.907142698764801 5:-0.0609617345035076
6:2.46039652824402 7:-0.927468955516815
8:0.190934807062149 9:2.45974612236023
10:-0.883475184440613
11:0.365080535411835
12:2.43516373634338 13:-1.00124740600586
14:0.0765729695558548
15:2.36312484741211 16:0.970858812332153 17:-0.135161846876144
18:2.29005789756775 19:0.836344659328461 20:-0.225355371832848
21:2.20798349380493 22:0.784964561462402 23:-0.233795136213303
24:2.18643283843994 25:0.801401734352112 26:0.0826890766620636
27:2.53135776519775 28:0.764484226703644 29:-0.124335922300816
30:2.53913259506226 31:0.692373692989349 32:-0.194584846496582
33:2.37107276916504 34:0.658672451972961 35:-0.238412603735924

Người mô tả tư thế


Thu nhận tư thế

Nhận dạng
tư thế

Mô tả tư thế

Tư thế được nhận dạng
1.2. Các tư thế người cần nhận dạng
Hệ thống sẽ nhận dạng 20 tư thế được trình bày trong bảng 1.1, tuy chỉ nhận dạng 20
tư thế những khi cần thiết hệ thống có thể bổ sung nhận dạng nhiều tư thế hơn.
TT

Hình ảnh tư thế

Mô tả

1

Tư thế đứng: ứng viên đứng thẳng trên hai chân, hai tay
thả lỏng, mắt nhìn thẳng về phía trước.

2

Tư thế giơ tay trước mặt: ứng viên đứng thẳng trên hai
chân, hai tay giơ về phía trước vuông góc với thân người,
mắt hướng về phía trước.

5



TT

Hình ảnh tư thế

Mô tả

3

Tư thế giơ hai tay sang ngang: ứng viên đứng thẳng trên
hai chân, hai tay giơ sang ngang tạo thành hình chữ T,
mắt hướng về phía trước.

4

Tư thế giơ hai tay lên trời: ứng viên đứng thẳng trên hai
chân, hai tay giơ lên trời, mắt hướng về phía trước.

5

Tư thế giơ tay trái lên trời: ứng viên đứng thẳng trên hai
chân, tay trái giơ lên trời, tay phải thả lỏng, mắt hướng
về phía trước.

6

Tư thế giơ tay phải lên trời: ứng viên đứng thẳng trên hai
chân, tay phải giơ lên trời, tay trái thả lỏng, mắt hướng
về phía trước.


7

Tư thế khoanh tay: ứng viên đứng thẳng trên hai chân,
hai tay khoanh trước ngực, mắt hướng về phía trước.

8

Tư thế cúi người: ứng viên cúi người, hai tay chạm gối,
mắt nhìn xuống đất.

6


TT

Hình ảnh tư thế

Mô tả

9

Tư thế ngồi: ứng viên ngồi trên ghế, hai tay đặt lên đùi,
mắt hướng về phía trước.

10

Tư thế co chân trái: ứng viên đứng trên một chân, chân
trái co lên cẳng chân vuông góc với đùi, chân phải thẳng,
hai tay thả lỏng, mắt hướng về phía trước.


11

Tư thế co chân phải: ứng viên đứng trên một chân, chân
phải co lên cẳng chân vuông góc với đùi, chân trái thẳng,
hai tay thả lỏng, mắt hướng về phía trước.

12

Tư thế giơ tay chữ U: ứng viên đừng thẳng trên 2 chân,
hai tay giơ lên trời khuỷu tay vuông góc, mắt hướng về
phía trước

13

Tư thế giơ tay trái sang ngang: ứng viên đứng thẳng trên
hai chân, tay trái giơ sang ngang, mắt hướng về phía
trước.

14

Tư thế giơ tay phải sang ngang: ứng viên đứng thẳng trên
hai chân, tay trái giơ sang ngang, mắt hướng về phía
trước.

7


TT

Hình ảnh tư thế


Mô tả

15

Tư thế tay lên trời và giơ chân trái: ứng viên đứng trên
một chân, chân phải đứng thẳng, chân trái co lên cẳng
chân vuông góc với đùi, hai tay giơ lên trời hình chữ V,
mắt nhìn thẳng.

16

Tư thế tay lên trời và giơ chân phải: ứng viên đứng trên
một chân, chân trái đứng thẳng, chân phải co lên cẳng
chân vuông góc với đùi, hai tay giơ lên trời hình chữ V,
mắt nhìn thẳng.

17

Tư thế tay bắt chéo: ứng viên đứng thẳng trên hai chân,
hai tay bắt chéo tạo thành hình chữ X trước bụng, mắt
hướng về phía trước

18

Tư thế Jack Feet: ứng viên đứng 2 chân dang rộng, 2 tay
chấp trước ngực, mắt hướng về phía trước

19


Tư thế Jack Feet có sử dụng tay: ứng viên đứng 2 chân
dang rộng, 2 tay chấp vào nhau và giơ lên trời, mắt hướng
về phía trước

20

Tư thế khụy gối và tay giơ trước mặt: ứng viên đứng
khụy gối, hai tay giơ trước mặt vuông góc với thân
người, mắt hướng về phía trước.

Bảng 1.1: Các tư thế cần nhận dạng

8


CHƯƠNG 2. THIẾT KẾ VÀ CÀI ĐẶT GIẢI PHÁP
Hệ thống nhận dạng bao gồm hai phần chính
 Trích đặc trưng
 Nhận dạng tư thế
Trong chương này, chúng tôi trình bày chi tiết về hai giai đoạn trong một quy trình
nhận dạng tư thế với kinect và SVM. Phần cài đặt hệ thống cũng sẽ được trình bày ở
cuối chương.
2.1. Trích đặc trưng
Trích đặc trưng là bước không thể thiếu trong một hệ thống nhận dạng. Mục tiêu của
trích đặc trưng là tìm ra các đặc trưng có tính phân biệt cao nhằm phân biệt đối tượng
này với đối tượng khác. Trong phần này chúng tôi sẽ trình bày bốn phương pháp trích
đặc trưng tư thế người với camera Kinect.
2.1.1 Thiết bị Kinect
Kinect [10, 11] là một thiết bị cảm biến chuyển động của Microsoft được tích hợp
dành cho Xbox 360. Thiết bị cung cấp một giao diện người dùng tự nhiên (Natural

User Interface – NUI) qua đó người dùng có thể tương tác với máy tính mà không
cần sử dụng bất kì thiết bị cầm tay nào.

Hình 2.1: Thiết bị Kinect v1

2.1.1.1 Khả năng và giới hạn
Kinect là một thiết bị linh hoạt và có thể nhìn thấy con người một cách tổng thể thậm
chí là những cử chỉ nhỏ. Cảm biến Kinect có một camera RGB cung cấp hình ảnh
màu, một nguồn phát tia hồng ngoại và camera để đo chiều sâu.
Các cảm biến Kinect cho khả năng tương tác khá rộng lớn, tuy nhiên những thiết bị
cảm biến đều có những giới hạn vật lý và giới hạn thực tế.
 Chế độ phạm vi gần
o Giới hạn vật lý: 0.4m đến 3m
o Nơi tương tác tốt nhất: 0.8m đến 2.5m

9


Giới hạn thực tế
Giới hạn vật lý

Hình 2.2: Chế độ phạm vi gần

 Chế độ phạm vi mặc định
o Giới hạn vật lý: 0.8m đến 4m
o Nơi tương tác tốt nhất: 1.2m đến 3.5m

Giới hạn thực tế
Giới hạn vật lý


Hình 2.3: Chế độ phạm vi mặc định

 Góc nhìn
o Ngang: 57.6
o Dọc: 43.5 + 27 dựa vào góc xoay lên/xuống của Kinect

Hình 2.4: Góc nhìn của Kinect

Ngoài ra Kinect còn cung cấp 2 chế độ theo dõi khung xương của người dùng: chế
độ mặc định (20 khớp trên toàn bộ cơ thể) và chế độ ngồi (10 khớp ở phần trên cơ
thể), có thể nhận dạng tối đa 6 người và cung cấp được 2 khung xương trong đó. Tuy
nhiên, 2 chế độ này không thể sử dụng cùng một lúc.

10


Hình 2.5: Kinect v1 nhận dạng được 6 người và cung cấp 2 khung xương

Hình 2.6: Chế độ khung xương mặc định (trái) và chế độ khung xương ngồi (phải)

2.1.1.2 Hệ thống khung xương
Phiên bản Kinect SDK v1.8 cho phép theo dõi khung xương và các khớp. Với mỗi
khung hình, Kinect thu được 20 khớp tương ứng với 20 tọa độ (x, y, z). Mỗi khớp có
mỗi ID khác nhau và có gốc là Hip Center.

Hình 2.7: 20 khớp xương và tên tương ứng

11



Tọa độ khung xương được tính trên đơn vị mét và các trục x, y ,z được thể hiện theo
hình bên dưới.
Ngoài ra, Kinect còn cung cấp dữ liệu về góc xoay quarternion (x, y, z, w).

Hình 2.8: Tọa độ không gian

 Góc xoay tương đối (Hierachical Rotation): cho phép biết được góc xoay giữa
2 xương dựa trên mối quan hệ cha và con được thể hiện ở hình 1.7.
 Góc xoay tuyệt đối (Absolute Rotation): góc xoay giữa 2 xương dựa trên tọa
độ của camera.
2.1.2 Trích xuất đặc trưng cơ thể người với camera Kinect
Trong luận văn này chúng tôi đề xuất 4 phương pháp trích đặc trưng khác nhau để
trích đặc trưng tư thế người từ dữ liệu thu được từ camera Kinect. Như đã trình bay
ở phần 2.1.1.2 dữ liệu từ camera Kinect bao gồm tọa độ các khớp xương, góc xoay
tương đối, góc xoay tuyệt đối.
 Phương pháp 1: Phương pháp này sẽ sử dụng tọa độ tuyệt đối (Absolute
Position) với 3 giá trị (x, y, z) của 20 khớp xương được cung cấp bởi Kinect.
Kết quả của phương pháp này mỗi vector đặc trưng cho 1 tư thế sẽ có 20 x 3
= 60 chiều.
 Phương pháp 2: sử dụng vị trí tương đối (Relative Position). Phương pháp 2
sử dụng tọa độ tương tự như Phương pháp 1 tuy nhiên tọa độ của 20 khớp
xương được dời lại với góc tọa độ là phần đầu. Như vậy phần đầu sẽ có tọa độ
là (0, 0, 0) nên vector đặc trưng cho một tư thế sẽ có 20 x 3 – 3 = 57 chiều.
 Phương pháp 3: sử dụng 20 vector thể hiện cho góc xoay tuyệt đối (Absolute
Rotation) mỗi góc bao gồm 4 giá trị (x, y, z, w). Kết quả của phương pháp này
mỗi vector đặc trưng cho một tư thế sẽ có 20 x 4 = 80 chiều.
 Phương pháp 4: trong phương pháp này 20 vector thể hiện cho góc xoay tương
đối bao gồm 4 giá trị (x, y, z, w) sẽ được sử dụng như vậy mỗi vector đặc trưng
cho một tư thế sẽ có 20 x 4 = 80 chiều.


12


2.2. Nhận dạng tư thế
Sau khi đã trích đặc trưng, giai đoạn kế tiếp là huấn luyện một mô hình phân lớp có
khả năng nhận dạng đúng tư thế dựa trên các đặc trưng. Phần này sẽ trình bày mô
hình máy học SVM và ứng dụng nó vào giai đoạn nhận dạng.
2.2.1 Máy học vector hỗ trợ (Support Vector Machine – SVM)
2.2.1.1 Giới thiệu
Máy học vector hỗ trợ (SVM) là một giải thuật máy học có giám sát do Vapnik xây
dựng vào năm 1995 [12]. Giải thuật này trong những năm gần đây được sử dụng
nhiều trong lĩnh vực phân loại (classification) và nhận dạng (prediction).
Đã có nhiều nghiên cứu cho thấy SVM có khả năng phân loại khá tốt trong nhiều bài
toán như phân loại văn bản [13], phân loại chữ viết tay, nhận dạng khuôn mặt người,
v.v… Nhận dạng tư thế và cử chỉ cũng nằm trong số đó, có nhiều phương pháp đã
được nghiên cứu về nhận dạng tư thế như Backpropagation Neural Network (BPNN),
máy học SVM, cây quyết định, Bayes thơ ngây. Trong đó thuật toán SVM là một
phương pháp rất hiệu quả và đem lại kết quả có độ chính xác cao [7, 14].
Bài toán phân lớp cơ bản dựa vào những đặc trưng của một lớp và quyết định xem
một mẫu, cá thể nào đó thuộc lớp nào dựa vào những đặc trưng của nó. SVM dựa vào
ý tưởng như vậy tìm một siêu phẳng có lề (margin) cực đại để phân tách 2 lớp có
những đặc trưng khác nhau, đồng thời cực tiểu hóa các mẫu không phân loại được
trong quá trình nhận dạng.
2.2.1.2 Máy học vector hỗ trợ tuyến tính
Để đơn giản ta sẽ xét bài toán phân lớp nhị phân sử dụng mô hình tuyến tính. Sau đó
sẽ mở rộng lên bài toán phân loại nhiều lớp. [15]

Hình 2.9: Ví dụ về phân lớp nhị phân

Xét bài toán như sau, cho bộ dữ liệu huấn luyện 𝒟

𝑛

𝒟 = {(𝑥𝑖 , 𝑦𝑖 )|𝑥𝑖 ∈ ℝ𝑝 , 𝑦𝑖 ∈ {−1, +1}}𝑖=1
Với mỗi vector đầu vào 𝑥𝑖 ∈ ℝ𝑝 ta có một nhãn lớp 𝑦𝑖 ∈ {−1, +1} tương ứng, dựa
vào bộ dữ liệu như trên mục tiêu là tìm một siêu phẳng nhằm phân loại được các mẫu
có nhãn y = 1 và các mẫu có nhãn y = -1 sao cho lề (margin) từ siêu phẳng tới các
mẫu dương và mẫu âm gần siêu phẳng là cực đại.

13


Hàm của mặt siêu phẳng có dạng:
𝑤1 𝑥1 + 𝑤2 𝑥2 + ⋯ + 𝑤𝑛 𝑥𝑛 + 𝑏 = 0
⟺ 𝑤 ∗ 𝑥 + 𝑏 = 0 (Η)
với w là vector trọng số

b là độ dời
∗ biểu thị tích vô hướng
Nếu bộ dữ liệu khả tách tuyến tính, ta có thể chọn 2 siêu phẳng để phân tách 2 lớp
sao cho không có điểm nào nào giữa 2 siêu phẳng này.
Ta có 2 phương trình siêu phẳng như sau:
𝑤 ∗ 𝑥 + 𝑏 = 1 với y = +1 (Η1 )
𝑤 ∗ 𝑥 + 𝑏 = −1 với y = -1 (Η2 )
Vậy các điểm thuộc lớp y = 1 và y = -1 có điều kiện tương ứng là
𝑤 ∗ 𝑥𝑖 + 𝑏 ≥ 1 với 𝑥𝑖 thuộc lớp y = +1
𝑤 ∗ 𝑥𝑖 + 𝑏 ≤ −1 với 𝑥𝑖 thuộc lớp y = -1
Kết hợp 2 điều kiện ta có 𝑦(𝑤 ∗ 𝑥 + 𝑏) ≥ 1.
Khoảng cách giữa siêu phẳng (Η1 ) và (Η2 ) tới (Η) là
𝑑1 = 𝑑2 =


|𝑤 ∗ 𝑥𝑘 + 𝑏 − 1|
1
=
‖𝑤‖
‖𝑤‖

với 𝑥𝑘 là một điểm thuộc (Η1 )
𝑑1 là khoảng cách từ (Η1 ) đến (Η)
𝑑2 là khoảng cách từ (Η2 ) đến (Η)
‖𝑤‖ là độ dài của vector 𝑤
Vậy ta có khoảng cách giữa (Η1 ) và (Η2 ) (lề) là:
𝑑 = 𝑑1 + 𝑑2 =

2
‖𝑤 ‖

Vậy bài toán ban đầu trở thành bài toán tìm min‖𝑤‖ với điều kiện 𝑦(𝑤 ∗ 𝑥 + 𝑏) ≥ 1
𝑤,𝑏

1

hay có thể chuyển sang một bài toán đơn giản hơn là tìm min ‖𝑤‖2 với điều kiện
𝑤,𝑏 2

𝑦(𝑤 ∗ 𝑥 + 𝑏) ≥ 1. Lời giải của bài toán này là cực tiểu hóa hàm Lagrange:
𝐿(𝑤, 𝑏, 𝛼) =

𝑛
1
‖𝑤 ‖2 − ∑ 𝛼𝑖 [𝑦𝑖 (𝑤 ∗ 𝑥𝑖 + 𝑏) − 1]

2
𝑖=1

với α là các hệ số Lagrange, α≥0.
Sau đó người ta chuyển thành bài toán đối ngẫu là cực đại hóa hàm W(α):

14


max 𝑊 (𝛼) = max(min 𝐿(𝑤, 𝑏, 𝛼))
𝛼

𝛼

𝑤,𝑏

Từ đó giải để tìm được các giá trị tối ưu cho w, b và α. Về sau, việc phân loại một
mẫu mới chỉ là việc kiểm tra dấu của hàm 𝑤 ∗ 𝑥 + 𝑏.
Trong trường hợp không khả tách tuyến tính ta có thể sử dụng các hàm nhân (Kernel)
để chuyển từ không gian vector ít chiều sang không gian nhiều chiều.
Một số hàm nhân cơ bản:
 Linear kernel: 𝐾 (𝑥, 𝑦) = 𝑥. 𝑦
 Polynomial kernel: 𝐾(𝑥, 𝑦) = (𝑥. 𝑦 + 1)𝑑
−|𝑥−𝑦|2
2𝜎2

 Gaussian Radial basis function kernel: 𝐾 (𝑥, 𝑦) = 𝑒
 Hyperbolic tangent kernel: 𝐾 (𝑥, 𝑦) = tanh(𝑎. 𝑥. 𝑦 − 𝑏)
2.2.1.3 Phân lớp đa lớp


Ý tưởng của bài toán phân loại nhiều lớp là chuyển bài toán phân loại nhiều lớp (K >
2) thành bài toán phân lớp nhị phân. Các phương pháp phổ biến kể đến như:
 Phương pháp 1 – tất cả
Đây là một trong nhưng phương pháp tiếp cận phổ biến nhất được Vapnik sử
dụng [16]. Cách tiếp cận của phương pháp này là xây dựng K máy học SVM
với máy học thứ k được huấn luyện với bộ dữ liệu của lớp thứ k, được xem là
nhãn dương (y = +1) và nhãn âm (y = -1) được huấn luyện từ K-1 lớp còn lại.
 Phương pháp 1 – 1
𝐾(𝐾−1)
Phương pháp này huấn luyện
cặp máy học SVM từ K lớp sau đó phân
2
loại dữ liệu dựa vào lớp có số “điểm” cao nhất.

?

𝑅1

𝑅1

𝑅1

𝑅3
𝑅

𝑅2

?
𝑅2


𝑅

𝑅

𝑅3
𝑅

𝑅

Hình 2.10: Vùng “mờ” của phương pháp 1-tất cả (trái) và phương pháp 1-1 (phải)

Tuy nhiên, 2 phương pháp tiếp cận này đều dẫn đến 1 vùng “mờ” trong quá trình
phân loại [15].

15


2.2.2 Nhận dạng tư thế với SVM
Đầu vào X là các đặc trưng trích từ 2.1.2. Mỗi lớp tương ứng với một tư thế.
Do sự phức tạp trong quá trình cài đặt nên trong luận văn này sẽ sử dụng thư viện
libSVM với phương pháp phân lớp đa lớp là 1 vs 1 [17].
Để sử dụng được thư viện này các đặc trưng phải được định dạng như sau:
<label1> <index1>:<value1> <index2>:<value2> ...
<label2> <index1>:<value1> <index2>:<value2> ...

Với label là nhãn của lớp tương ứng,
Mỗi cặp <index>:<value> là một chiều của vector đặc trưng với <index> là chiều và
<value> là giá trị của chiều đó.
Nếu <value> = 0 thì có thể loại bỏ chiều đó ra khỏi vector đặc trưng
Ví du:

-1 1:1 6:1 17:1 19:1 39:1 42:1 53:1 64:1 67:1 73:1 74:1 76:1 80:1 83:1
-1 2:1 6:1 18:1 20:1 37:1 42:1 48:1 64:1 71:1 73:1 74:1 76:1 81:1 83:1
+1 5:1 11:1 15:1 32:1 39:1 40:1 52:1 63:1 67:1 73:1 74:1 76:1 78:1 83:1

16


2.3. Hệ thống nhận dạng tư thế với camera Kinect và máy học SVM
Huấn luyện

Nhận dạng

Thu ảnh

Dữ liệu
 Ảnh màu
 Depth Image
 Dữ liệu
khung xương

Thu ảnh

Dữ liệu
 Ảnh màu
 Depth Image
 Dữ liệu
khung xương

Trích đặc trưng


Trích đặc trưng
 Tọa độ tuyệt đối
 Tọa độ tương đôi
 Góc xoay tuyệt đối
 Góc xoay tương đối

Tọa độ tuyệt đối
Tọa độ tương đôi
Góc xoay tuyệt đối
Góc xoay tương đối

Huấn luyện

Mô hình
nhận dạng

Nhận
dạng

Tư thế
Ví dụ: Stand,
Sit, T-Pose, …
Hình 2.11: Hệ thống nhận dạng tư thế

17


×