Nhận diện cử chỉ dựa trên thông tin cảm biến gia tốc
Trang 1TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM
TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN 1
NHẬN DIỆN CỬ CHỈ DỰA TRÊN
Trang 2TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM
TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN 1
NHẬN DIỆN CỬ CHỈ DỰA TRÊN
Người hướng dẫn: TS NGUYỄN MINH TUẤN Người thực hiện: TRẦN NGỌC QUỐC PHONG - 51303365
Lớp : 13050303
Khoá : 17
THÀNH PHỐ HỒ CHÍ MINH, NĂM 2016
Trang 3LỜI CẢM ƠN
Em xin gửi lời cảm ơn chân thành đến TS Nguyễn Minh Tuấn, trưởng bộ môn
Khoa học máy tính – trường Đại học Tôn Đức Thắng, người đã tận tình hướng dẫn, chỉ bảo em trong suốt quá trình làm đồ án
Em cũng xin chân thành cảm ơn các thầy cô giáo trong trường Đại học Tôn Đức Thắng nói chung, các thầy cô trong Bộ môn Khoa học máy tính nói riêng đã dạy dỗ cho em kiến thức về các môn đại cương cũng như các môn chuyên ngành, giúp em có được cơ sở lý thuyết vững vàng và tạo điều kiện giúp đỡ em trong suốt quá trình học tập
Cuối cùng, em xin chân thành cảm ơn gia đình và bạn bè, đã luôn tạo điều kiện, quan tâm, giúp đỡ, động viên em trong suốt quá trình học tập và hoàn thành bài tập
Thành phố Hồ Chí Minh, ngày 23 tháng 05 năm 2016
Sinh Viên Thực Hiện
Trần Ngọc Quốc Phong
Trang 4ĐỒ ÁN ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG
Tôi xin cam đoan đây là sản phẩm đồ án của riêng tôi / chúng tôi và được sự hướng dẫn của TS Nguyễn Minh Tuấn; Các nội dung nghiên cứu, kết quả trong đề tài này là trung thực và chưa công bố dưới bất kỳ hình thức nào trước đây Những số liệu trong các bảng biểu phục vụ cho việc phân tích, nhận xét, đánh giá được chính tác giả thu thập từ các nguồn khác nhau có ghi rõ trong phần tài liệu tham khảo
Ngoài ra, trong đồ án còn sử dụng một số nhận xét, đánh giá cũng như số liệu của các tác giả khác, cơ quan tổ chức khác đều có trích dẫn và chú thích nguồn gốc
Nếu phát hiện có bất kỳ sự gian lận nào tôi xin hoàn toàn chịu trách nhiệm
về nội dung đồ án của mình Trường đại học Tôn Đức Thắng không liên quan đến những vi phạm tác quyền, bản quyền do tôi gây ra trong quá trình thực hiện (nếu có)
TP Hồ Chí Minh, ngày 23 tháng 05 năm 2016
Tác giả (ký tên và ghi rõ họ tên)
Trần Ngọc Quốc Phong
Trang 5PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN
Phần xác nhận của GV hướng dẫn
_ _ _ _ _ _ _
Tp Hồ Chí Minh, ngày tháng năm
(kí và ghi họ tên)
Phần đánh giá của GV chấm bài
_ _ _ _ _ _ _
Tp Hồ Chí Minh, ngày tháng năm
(kí và ghi họ tên)
Trang 6TÓM TẮT
Trước đây, khi tiếp cận với bài toán nhận dạng cử chỉ trực tuyến (Online Gesture Recognition) ta thường sử dụng phương pháp Xoắn Thời Gian Động (Dynamic Time Warping – DTW) để tìm kiếm so khớp mẫu có sẵn từ thông tin các cảm biến đặt trên cơ thể Tuy nhiên, DTW bộc lộ những điểm yếu khi có sự xuất hiện nhiều dữ liệu nhiễu trong chuỗi thời gian Trong quá trình đọc cảm biến, việc xác định đúng cử chỉ cho từng loại thông tin (gán nhãn dữ liệu) một cách chính xác là cực kì khó vì chúng thường bị trùng lắp với nhau (intertwined) Hơn nữa, cử chỉ hằng ngày của từng người không giống nhau, và tại các thời điểm khác nhau cũng không giống nhau Vì thế, trong phần này sẽ giới thiệu một phương pháp so khớp mẫu mới đó là Chuỗi Tuần Tự Con Dài Nhất (Longest Common Subsequence – LCS), một phương pháp có thể xử lý tốt dữ liệu nhiễu
để có thể nhận dạng cử chỉ trực tuyến một cách tốt hơn
Trong bài này, sử dụng phương pháp phân cụm dữ liệu với giải thuật k-means để rút trích đặc trưng của cử chỉ, chuyển thông tin chuỗi thời gian ban đầu về dạng chuỗi kí
tự (tương tự mã hóa SAX) để có thể áp dụng thuật toán LCS, tìm ra mẫu khớp nhất
Trong phạm vi đồ án cũng đề ra phương pháp cải tiến nhận dạng cử chỉ một cách tốt hơn nhờ quá trình khử nhiễu, tính toán lại độ tương quan hai chuỗi, từ đó nâng khả năng nhận diện chính xác từ 31% lên 43%
Trang 7MỤC LỤC
LỜI CẢM ƠN i
ĐỒ ÁN ĐƯỢC HOÀN THÀNH ii
TẠI TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG ii
PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN iii
TÓM TẮT iv
MỤC LỤC 1
DANH MỤC KÍ HIỆU VÀ CHỮ VIẾT TẮT 3
DANH MỤC CÁC BẢNG BIỂU, HÌNH VẼ, ĐỒ THỊ 4
CHƯƠNG 1 – GIỚI THIỆU 6
1.1 Nhận dạng cử chỉ để làm gì? 6
1.2 Cảm biến trên thiết bị di động 7
1.2.1 Tổng quan về MEMS 7
1.2.2 Các cảm biến trên thiết bị di dộng 8
1.2.2.1 Cảm biến gia tốc (Gia tốc kế) - Accelerometer 9
1.2.2.2 Con quay hồi chuyển – Gyroscope 10
1.2.2.3 Cảm biến tiệm cận - Proximity 11
CHƯƠNG 2 – CỞ SỞ LÝ THUYẾT 13
2.1 Bài toán nhận dạng 13
2.2 Nhận dạng chuỗi thời gian 14
2.3 Đo độ tương quan giữa 2 chuỗi 16
2.3.1 Độ đo Euclid 16
2.3.2 Độ xoắn thời gian động (DTW) 17
2.3.3 Chuỗi con chung tuần tự dài nhất (LCS) 18
2.3.3.1 Tổng quan 18
2.3.3.2 Phân tích thuật toán 18
2.3.3.3 Giải pháp cho hai chuỗi 19
Trang 82.3.3.3 Các tiền tố (Prefix) 19
2.3.3.4 Định nghĩa công thức LCS 21
2.3.3.5 Ví dụ bài toán LCS 22
2.3.3.6 Thuật toán LCS 24
2.4 Rút trích đặc trưng (rời rạc hóa – quantized) 25
2.4.1 Quá trình rút trích đặt trưng (rời rạc hóa – quantized) 25
2.4.2 Phân cụm dữ liệu bằng thuật toán K-means 26
2.4.2.1 Giới thiệu 26
2.4.2.2 Ý tưởng thuật toán 27
2.4.2.3 Giải thích thuật toán 28
2.4.2.4 Ví dụ thuật toán k – means 29
2.4.2.5 Đánh giá thuật toán 36
CHƯƠNG 3 – KẾT QUẢ THỬ NGHIỆM 37
3.1 Mô tả cơ sở dữ liệu 37
3.2 Quá trình hiện thực bài toán 43
3.3 Kết quả 45
Trang 9DANH MỤC KÍ HIỆU VÀ CHỮ VIẾT TẮT
LCS Longest Common Subsequence
MEMS Micro-Electro-Mechanical Systems
Trang 10DANH MỤC CÁC BẢNG BIỂU, HÌNH VẼ, ĐỒ THỊ
DANH MỤC HÌNH
Hình 1.1 Thông tin các cảm biến trên điện thoại 9
Hình 1.2 Một cảm biến gia tốc thường được sử dụng trong thiết bị di động của hãng STMicroelectronics 10
Hình 1.3 Vị trí cảm biến gia tốc trên điện thoại 11
Hình 2.1 Sơ đồ của một hệ thống nhận dạng 14
Hình 2.2 So sánh độ tương quan hai chuỗi thời gian 15
Hình 2.3 Đo độ tương quan 2 chuỗi thời gian bằng công thứ Euclid 17
Hình 2.4 Ví dụ về chuỗi thời gian được rời rạc hóa theo từng khoảng 25
Hình 2.5 Dữ liệu thô ban đầu (raw data) 26
Hình 2.6 Tọa độ các điểm sẽ được đánh dấu bằng tên các cụm đại diện 26
Hình 2.7 Dữ liệu được phân thành 3 cụm 27
Hình 2.8 Flowchart thuật toán k-means 28
Hình 2.9 Biểu diễn tập dữ liệu trên trục tọa độ 30
Hình 2.10 Biểu diễn chọn tâm cho hai cụm ban đầu 31
Hình 2.11 Biểu diễn tâm hai cụm vừa được cập nhật lại (1) 32
Hình 2.12 Biểu diễn hai cụm trung tâm vừa được cập nhật lại (2) 34
Hình 3.1 Các cử chỉ có trong tập dữ liệu 37
Hình 3.2 Một tệp dữ liệu mẫu 38
Hình 3.3 Đại diện nhóm cử chỉ thứ nhất 39
Hình 3.4 Đại diện nhóm cử chỉ thứ 2, hình tròn 40
Hình 3.5 Đại diện nhóm cử chỉ thứ 2, chuyển động hình vuông 40
Hình 3.6 Đại diện cho nhóm cử chỉ thứ ba 41
Hình 3.7 Đại diện nhóm cử chỉ thứ tư 42
Hình 3.8 Đại diện nhóm cử chỉ thứ năm 42
Hình 3.9 Biểu diễn dữ liệu các điểm 43
Trang 11Hình 3.10 Kết quả sau khi phân cụm dữ liệu 44
Hình 3.11 Biểu đồ biểu thị tỉ lệ nhận dạng cử chỉ đúng 47
Hình 3.12 Một ví dụ để biểu thị dữ liệu nhiễu 49
Hình 3.13 Biểu đồ biểu thị xác suất nhận dạng đúng với k từ 2 tới 24 52
sau khi khử nhiễu 52
DANH MỤC BẢNG Bảng 2.1 Tập dữ liệu ví dụ k-means 29
Bảng 2.2 Kết quả gom cụm k-means (k=2) 36
Bảng 3.1 Giải thích các thông số trong dataset 38
Bảng 3.2 Bảng quy đổi từ số cụm sang kí tự Alphabet 44
Bảng 3.3 Kết quả nhận dạng với k = 20 46
Bảng 3.4 Thống kê nhận tỉ lệ nhận dạng đúng với 𝑘 = 2 … 24 47
Bảng 3.5 Tập cử chỉ mẫu được chọn 48
Bảng 3.6 Kết quả nhận dạng với k = 20 sau khi đã khử nhiễu 51
Bảng 3.7 Xác suất nhận dạng chính xác sau khi khử nhiễu 51
Trang 12CHƯƠNG 1 – GIỚI THIỆU
1.1 Nhận dạng cử chỉ để làm gì?
Nhận dạng cử chỉ là một chủ đề của ngành Khoa học máy tính và Công nghệ ngôn ngữ với mục tiêu là để máy tính có thể hiểu được các cử chỉ của con người nhờ vào các thuật toán
Cử chỉ có thể được bắt đầu từ bất cứ vị trí nào trên cơ thể mà nó chuyển động hoặc tĩnh, ví dụ như cảm xúc khuôn mặt hay chuyển động của cánh tay[1] Bởi điều đó, trong bài toán nhận dạng cử chỉ bao gồm luôn cả nhận dạng cảm xúc và cử chỉ cánh tay
Có nhiều cách tiếp cận đã từng được sử dụng như máy ghi hình (camera) sử dụng thuật toán thị giác máy tính (computer vision algorithm) để thông dịch (interpret) ngôn ngữ kí hiệu (sign languge), sử dụng cảm biến gia tốc để chuyển nhạc bằng cách lắc máy (shake) hoặc đếm số bước đi của người Phát hiện và nhận dạng được tư thế, dáng đi và hành vi con người cũng là những vấn đề của kĩ thuật nhận dạng cử chỉ
Có thể xem việc nhận dạng cử chỉ như là một cách để máy tính hiểu được cử chỉ hình thể của con người, vì vậy, việc xây dựng càng nhiều cầu nối giữa máy tính và con người thì càng tiếp cận gần hơn với việc chế tạo một cỗ máy giống con người
Nhận dạng cử chỉ cho phép con người có thể giao tiếp với máy móc (HMI)[2] và
có thể tương tác một cách tự nhiên mà không cần phải có bất kì máy móc thiết bị nào khác Sử dụng khái niệm nhận dạng cử chỉ, chúng ta có thể trỏ ngón tay lên màn hình máy tính mà con trỏ chuột sẽ tự di chuyển theo Ứng dụng nhận dạng chuyển động ta có thể tạo ra các thiết bị đầu vào khác biệt hơn, mở rộng hơn ứng dụng của chuột và bàn phím máy tính, ví dụ: máy chơi game Nintendo Wii sử dụng cảm biến gia tốc để điều khiển nhân vật game, chuột bay (air mouse) sử dụng trong các Smart TV dùng cảm biến gia tốc để điều khiển nhập liệu
Nhận dạng cử chỉ và nhập liệu thông minh (Pen computing): là một ngành nghiên cứu để tạo ra các cách nhập liệu tiện dụng hơn bình thường, ví dụ như khi sử dụng iPad
ta kéo các ngón tay vào giữa để có thể thoát ra ứng dụng, vuốt xuống để tìm kiếm, bên
Trang 13trong ColorOS khi vẽ vòng tròn sẽ mở ứng dụng Camera, sử dụng điện thoại Samsung Galaxy S series khi bật tính năm Gravity Screen lên khi đút vào túi sẽ tự động tắt màn hình, khi chuông reo lật úp điện thoại sẽ lập tức tắt chuông Đó chỉ là ứng dụng Vật Lý một cách thông minh vào công nghệ để tạo ra các trải nghiệm tuyệt vời hơn cho người dùng
Vì vậy, việc nghiên cứu nhận diện cử chỉ kết hợp cùng với các ngành khác như sinh học, tâm lý học sẽ tạo ra các trải nghiệm công nghệ tuyệt vời hơn cho người dùng, giúp cho việc sử dụng các thiết bị trong học tập, làm việc hiệu quả hơn Ngoài ra cũng tạo ra các ứng dụng để tiếp cận gần hơn với công nghệ thực tế ảo (Virtual Reality), ngành chế tạo Robot ngày càng giống con người
1.2 Cảm biến trên thiết bị di động
1.2.1 Tổng quan về MEMS
Vào thế kỷ XX, các thiết bị điện tử được tích hợp với số lượng ngày càng lớn, kích thước ngày càng nhỏ và chức năng ngày càng được nâng cao Điều này đã mang lại
sự biến đổi sâu sắc cả về mặt công nghệ lẫn xã hội Vào cuối những năm 50 của thế kỷ
XX, một cuộc cách mạng hoá về công nghệ micro đã diễn ra và hứa hẹn một tương lai cho tất cả các ngành công nghiệp Hệ thống vi cơ điện tử (Micro-Electro-Mechanical Systems) viết tắt là MEMS[3] cũng đã được ra đời và phát triển trong giai đoạn này Công nghệ vi cơ đã và đang tiến xa hơn nhiều so với nguồn gốc của nó là công nghiệp bán dẫn MEMS bao gồm những cấu trúc vi cơ, vi sensor, vi chấp hành và vi điện tử cùng được tích hợp trên cùng một chip (on chip) Các linh kiện MEMS thường được cấu tạo từ silic Một thiết bị MEMS thông thường là một hệ thống vi cơ tích hợp trên một chip mà có thể kết hợp những phần cơ chuyển động với những yếu tố sinh học, hoá học, quang hoặc điện Kết quả là các linh kiện MEMS có thể đáp ứng với nhiều loại lối vào: hoá, ánh sáng, áp suất, rung động vận tốc và gia tốc… Với ưu thế có thể tạo ra những cấu trúc cơ học nhỏ bé tinh tế và nhạy cảm đặc thù, công nghệ vi cơ hiện nay đã cho phép tạo ra những bộ cảm biến (sensor), những bộ chấp hành (actuator) được ứng dụng
Trang 14rộng rãi trong cuộc sống Các bộ cảm biến siêu nhỏ và rất tiện ích này đã thay thế cho các thiết bị đo cũ kỹ, cồng kềnh trước đây Song công nghệ MEMS[4] mới đang ở giai đoạn đầu của nó và cần rất nhiều những nghiên cứu cơ bản hơn, sâu hơn
MEMS[5] là một công nghệ ở dạng chung nhất của nó có thể được định nghĩa như là yếu tố thu nhỏ cơ khí và cơ điện (ví dụ: các thiết bị và kết cấu) được thực hiện bằng cách sử dụng kỹ thuật vi chế Các kích thước vật lý quan trọng của các thiết bị MEMS có thể thay đổi từ dưới một micro Tương tự như vậy, các loại thiết bị MEMS có thể khác nhau từ cấu trúc tương đối đơn giản không có yếu tố di chuyển, hệ thống điện đến vô cùng phức tạp với nhiều yếu tố chuyển động dưới sự kiểm soát của vi điện tử tích hợp
Trong nhiều thập kỷ qua các nhà nghiên cứu và các nhà phát triển về MEMS đã chứng minh một số lượng rất lớn các vi cảm biến cho hầu hết các thể phương thức cảm biến nhiệt độ, áp suất, lực quán tính, các loài hóa chất, từ trường, phóng xạ, v.v Không chỉ là hiệu suất của các thiết bị MEMS đặc biệt[6], nhưng phương pháp sản xuất thúc đẩy các kỹ thuật chế tạo hàng loạt cùng được sử dụng trong ngành công nghiệp vi mạch
- mà có thể giảm chi phí sản xuất cho mỗi thiết bị thấp, cũng như nhiều lợi ích khác Do
đó, nó có thể không chỉ đạt được hiệu suất thiết bị sao, nhưng để làm được như vậy ở một mức chi phí tương đối thấp Không ngạc nhiên, silicon dựa trên vi cảm rời rạc đã nhanh chóng khai thác thương mại và thị trường cho các thiết bị này tiếp tục tăng trưởng với tốc độ nhanh chóng
1.2.2 Các cảm biến trên thiết bị di dộng
Hầu hết các thiết bị di động hiện nay (smartphone, smartwatch) đều có trang bị một số cảm biến MEMS để có thể hỗ trợ phần mềm trên thiết bị thực hiện các tác vụ như: tự động xoay màn hình thiết bị cho phù hợp với hướng cầm thiết bị (cảm biến gia tốc), tự động tắt chuông khi lật úp điện thoại (cảm biến gia tốc, cảm biến tiệm cận), chuyển động hình nền theo hướng nghiêng của thiết bị (cảm biến gia tốc, con quay hồi chuyển), tự động tắt màn hình khi nghe điện thoại (cảm biến tiệm cận), điều chỉnh độ
Trang 15sáng cho phù hợp với môi trường bên ngoài (cảm biến ánh sáng), ghi hình (cảm biến ảnh), màn hình cảm ứng (cảm biến điện dung) v.v…
Hình 1.1 Thông tin các cảm biến trên điện thoại Trong hình trên, biểu thị điện thoại hỗ trợ các loại cảm biến ánh sáng, cảm biến
từ, cảm biến tiệm cận và cảm biến tốc Hình trên được lấy từ phần mềm chẩn đoán (Diagnostic Tool) của hãng Samsung
1.2.2.1 Cảm biến gia tốc (Gia tốc kế) - Accelerometer
Cảm biến gia tốc là một thành phần phổ biến nhất bên trong thiết bị di động, ngay
cả những sản phẩm giá rẻ cũng tích hợp nó Cảm biến gia tốc dùng để ghi nhận chuyển động của thiết bị cũng như góc nghiên so với phương ngang Cảm biến gia tốc hoạt động liên tục trong thiết bị, ghi nhận liên tục thông tin về chuyển động của thiết bị, bên trong
hệ điều hành thiết bị di động có các hàm API (Application Programming Interface) để
Trang 16lập trình viên có thể lấy thông tin này tính toán và giải quyết các bài toán của họ để xây dựng ứng dụng Như trong đồ án này sử dụng thông tin cảm biến gia tốc và áp dụng các giải thuật học máy để nhận diện cử chỉ (Gesture Recognition) Chức năng của cảm biến gia tốc có được là nhờ một con chip MEMS (như hình bên dưới) đảm nhận
Hình 1.2 Một cảm biến gia tốc thường được sử dụng trong thiết bị di động của hãng
STMicroelectronics
(Nguồn: Phys.org)
Về bản chất, cảm biến gia tốc sẽ nhận diện sự thay đổi trong góc độ của smartphone bằng cách nhận biết các thay đổi về hướng trên cả 3 chiều của không gian trong trường hợp (giả sử) smartphone rơi tự do[7] Một trong những ví dụ về ứng dụng của cảm biến gia tốc của điện thoại là các trò chơi đua xe: người chơi có thể "bẻ lái" bằng cách quay điện thoại/tablet theo hướng mong muốn
1.2.2.2 Con quay hồi chuyển – Gyroscope
Theo định nghĩa vật lí, con quay hồi chuyển là một thiết bị dùng để đo đạc hoặc duy trì phương hướng, dựa trên các nguyên tắc bảo toàn mô men động lượng Thực chất, con quay cơ học là một bánh xe hay đĩa quay với các trục quay tự do theo mọi hướng Phương hướng này thay đổi nhiều hay ít tùy thuộc vào mô men xoắn bên ngoài[8] hơn
là liên quan đến con quay có vận tốc cao mà không cần mô men động lượng lớn Vì mô men xoắn được tối thiểu hóa bởi việc gắn kết thiết bị trong các khớp vạn năng (gimbal),
Trang 17hướng của nó duy trì gần như cố định bất kể so với bất kỳ chuyển động nào của vật thể
mà nó tựa lên
Nói ngắn gọn hơn, con quay hồi chuyển dường như chuyển động theo cách chống lại trọng lực, và đây chính là đặc tính nổi bật nhất của nó Con quay hồi chuyển được dùng kết hợp với gia tốc kế trong các thiết bị di động hiện đại ngày nay để hỗ trợ việc tính toán gia tốc tuyến tính tương đối so với khung tham chiếu – hệ qui chiếu (frame of reference), từ đó đưa ra kết quả chính xác hơn Con quay hồi chuyển có khá nhiều ứng dụng trong lĩnh vực game di động và nó sẽ bổ sung khả năng nhận biết chuyển động xoay theo phương dọc, thứ mà gia tốc kế không làm được
Cảm biến gia tốc thường không phổ biến như cảm biến gia tốc và chỉ được tích hợp trên các thiết bị di động cao cấp
1.2.2.3 Cảm biến tiệm cận - Proximity
Tính năng chính của cảm biến này là nhận diện xem khoảng cách giữa smartphone
và cơ thể bạn là bao nhiêu Khi bạn gọi điện, cảm biến gần sẽ nhận diện xem vị trí giữa màn hình và tai là bao nhiêu để tắt đèn màn hình và tiết kiệm pin Cảm biến gần cũng sẽ giúp ngăn ngừa các cử chỉ chạm được thực hiện một cách không cố ý trên màn hình điện thoại trong khi gọi điện
Hình 1.3 Vị trí cảm biến gia tốc trên điện thoại
Nguồn (Samsung.com)
Cảm biến này cũng sẽ tính toán độ mạnh yếu của tín hiệu, các nguồn gây nhiễu
và tăng cường tín hiệu hoặc lọc các nguồn gây nhiễu nhờ sử dụng Kỹ thuật Tạo Luồng (Beam Forming Technique) [9]
Nói một cách ngắn gọn, cảm biến khoảng cách sẽ đo được vị trí của cơ thể, ví dụ như khuôn mặt hoặc tai và ngừng các tác vụ như lướt web, chơi nhạc hoặc video trong
Trang 18khi nhận/thực hiện cuộc gọi nhằm tiết kiệm pin Sau khi hội thoại kết thúc, cảm biến khoảng cách sẽ tiếp tục các tác vụ đang thực hiện dở
Trang 19CHƯƠNG 2 – CỞ SỞ LÝ THUYẾT
Tổng quan: khi tiếp cận với bài toán nhận dạng cử chỉ trực tuyến (Online Gesture
Recognition) [10] ta thường sử dụng phương pháp Xoắn Thời Gian Động (DTW) để tìm kiếm so khớp mẫu có sẵn từ thông tin các cảm biến đặt trên cơ thể Tuy nhiên, DTW bộc
lộ những điểm yếu khi có sự xuất hiện nhiều dữ liệu nhiễu trong chuỗi thời gian Trong quá trình đọc cảm biến, việc xác định đúng cử chỉ cho từng loại thông tin (gán nhãn dữ liệu) một cách chính xác là cực kì khó vì chúng thường bị trùng lắp với nhau (intertwined) Hơn nữa, cử chỉ hằng ngày của từng người không giống nhau, và tại các thời điểm khác nhau cũng không giống nhau Vì thế, trong phần này sẽ giới thiệu một phương pháp so khớp mẫu mới đó là Chuỗi Tuần Tự Con Dài Nhất (LCS), một phương pháp có thể xử lý tốt dữ liệu nhiễu để có thể nhận dạng cử chỉ trực tuyến một cách tốt hơn
2.1 Bài toán nhận dạng
Nhận dạng là quá trình phân loại các đối tượng được biểu diễn theo một mô hình nào đó và gán cho chúng vào một lớp (gán cho đối tượng một tên gọi) dựa theo những quy luật và các mẫu chuẩn Quá trình nhận dạng dựa vào những mẫu học biết trước gọi
là nhận dạng có thày hay còn gọi là quá trình học có giám sát (supervised learning), trong trường hợp ngược lại gọi là học không giám sát (unsupervised learning)
Nhận dạng mẫu (pattern recognition) là một ngành thuộc lĩnh vực học máy (machine learning) [11] Nói cách khác, nó có thể được xem là việc "cần tác động vào
dữ liệu thô mà tác độgn cụ thể là gì sẽ tùy vào loại của dữ liệu đó" Như vậy nó là một tập các phương pháp học có giám sát
Nhận dạng mẫu nhằm một đích phân loại dữ liệu dựa trên: kiến thức tiên nghiệm (a priori) hoặc dựa vào thông tin thống kê được rút trích từ các mẫu có sẵn Các mẫu cần phân loại thường được biểu diễn thành các nhóm của các dữ liệu đo đạt hay quan sát được, mỗi nhóm là một điểm ở trong không gian đa chiều phù hợp Đó là không gian của các đặc trưng
Trang 20Một hệ thống nhận diện mẫu hoàn thiện bao gồm một thiết bị cảm nhận (sensor)
[12] để thu thập các dữ liệu quan sát cần cho việc phân loại hay đặc tả, một cơ chế rút
trích đặc trưng (feature extraction) để tính toán các thông tin dưới dạng số hay dạng đặc
trưng (symbolic) từ các dữ liệu thu thập được, và một bộ phân loại (classifier) để phân
loại lớp dữ liệu nhờ vào các đặc trưng đã rút trích ra được
Hình 2.1 Sơ đồ của một hệ thống nhận dạng Quá trình nhận dạng gồm 3 bước:
Lựa chọn mô hình biểu diễn đối tượng
Lựa chọn luật ra quyết định (phương pháp nhận dạng) và suy diễn quá trình
học
Học nhận dạng
Khi mô hình biểu diễn đối tượng đã được xác định, có thể là định lượng (mô hình
tham số) hay định tính (mô hình cấu trúc), quá trình nhận dạng chuyển sang giai đoạn
học[13] Học là giai đoạn rất quan trọng Thao tác học nhằm cải thiện, điều chỉnh việc
phân hoạch tập đối tượng thành các lớp
Việc nhận dạng chính là tìm ra quy luật và các thuật toán để có thể gán đối tượng
vào một lớp hay nói một cách khác gán cho đối tượng một tên
2.2 Nhận dạng chuỗi thời gian
Cũng giống như các bài toán nhận dạng khác, bài toán nhận dạng trên chuỗi thời
gian cũng là một bài toán nhận dạng Trong phạm vi đồ án này, bài toán nhận dạng được
đề cập tới chính là tìm kiếm tương tự (similarity search) [14]
Bài toán tìm kiếm tương tự giúp giải quyết các vấn đề cao cấp hơn trong việc khai
phá dữ liệu chuỗi thời gian như gom cụm, phân lớp, tìm mô típ, phát hiện mẫu bất
thường, khám phá luật kết hợp và trực quan hóa dữ liệu
Trang 21Đối với bài toán nhận dạng trên dữ liệu chuỗi thời gian thì dữ liệu được biểu diễn thành những dãy số thực, thí dụ 𝑇 = 𝑡1, ⋯ , 𝑡𝑛 Cho chuỗi thời gian 𝑋 = 𝑥1, 𝑥2, ⋯ , 𝑥𝑛là chuỗi cần được nhận dạng và một tập các chuỗi mẫu đã được gán nhãn dữ liệu: 𝐸 ={𝐴, 𝐵, 𝐶, … , 𝑁} Việc chúng ta cần làm là xác định chuỗi thời gian 𝑋 thuộc lớp dữ liệu nào trong 𝐸 Muốn như thế, ta cần đi tính độ tương quan giữa 𝑋 so với tất cả các chuỗi trong 𝐸 Và khi đó, ta chọn 𝑋 cùng lớp với chuỗi mà có độ tương tự với 𝑋 lớn nhất trong
𝐸
Hình 2.2 So sánh độ tương quan hai chuỗi thời gian Bài toán nhận dạng trên dữ liệu chuỗi thời gian có khác một chút so với các bài toán nhận dạng khác Dữ liệu trên chuỗi thời gian là liên tục với nhau nên khi so sánh tại một điểm nào đó cần so sánh luôn cả thông tin trước và sau điểm đó mới so khớp được chuỗi Ngoài ra, dữ liệu chuỗi thời gian là dữ liệu liên tục trên tập số thực nên cần
có những phương pháp rút trích đặc trưng (feature extraction) để có thể rời rạc hóa dữ liệu dễ dàng cho việc tính toán
Trang 222.3 Đo độ tương quan giữa 2 chuỗi
Đã có nhiều phép đo độ tương quan giữa 2 chuỗi thời gian được sử dụng Việc chọn một phép đô tương quan là tùy thuộc rất nhiều vào ứng dụng của bài toán và trong nhiều trường hợp thì một độ đo thuộc chuẩn 𝐿𝑝 đơn giản như độ đo Euclid là đủ tốt để dùng Tuy nhiên trong nhiều trường hợp thì độ đo Euclid tỏ ra quá cứng nhắc vì không thể thích nghi được với những phép biến đổi như tịnh tiến (shifting), co giản biên độ (scaling) hay xoắn trục thời gian (time warping) Nhiều phương pháp đo độ tương quan mới hơn dựa vào những độ đo tương tự mềm dẻo (flexible) và vững chắc hơn như độ đo xoắn thời gian động, chuỗi con chung dài nhất, chuỗi con chung tuần tự dài nhất
𝐷(𝑄, 𝐶) là độ tương quan (khoảng cách) giữa hai chuỗi thời gian 𝑄 và 𝐶
𝑞𝑖 là tọa độ của điểm thông tin thứ 𝑖 trên chuỗi thời gian 𝑄
𝑐𝑖 là tọa độ của điểm thông tin thứ 𝑖 trên chuỗi thời gian 𝐶
Trang 23Hình 2.3 Đo độ tương quan 2 chuỗi thời gian bằng công thứ Euclid
Độ đo khoảng cách Euclid có ưu điểm là dễ hiểu, dễ tính toán, dễ mở rộng cho nhiều bài toán khai phá dữ liệu chuỗi thời gian khác như gom cụm, phân lớp, nhận dạng
mô típ, v.v… Nhưng độ đo khoảng cách này có nhược điểm là nhạy cảm với nhiễu, và không thích hợp khi dữ liệu có đường căn bản khác nhau hay có biên độ dao động khác nhau
2.3.2 Độ xoắn thời gian động (DTW)
Việc so trùng 2 đường biểu diễn dữ liệu bằng cách tính khoảng cách từng cặp điểm 1-1 (điểm thứ 𝑖 của thường thứ nhất so với điểm thứ 𝑖 của đường thứ hai) là không phù hợp trong trường hợp hai đường này không hoàn toàn giống nhau nhưng hình dạng biến đổi rất giống nhau Như trong hình 2.2, hai đường biểu diễn rất giống nhau về hình dạng nhưng lệch nhau về thời gian Trong trường hợp này, nếu tính độ tương quan bằng cách ánh xạ 1-1 giữa 2 đường (công thức 2.1) thì kết quả rất khác nhau và có thể dẫn đến kết quả cuối cùng không mong muốn
Vì vậy để khắc phục nhược điểm này, thì một điểm có thể ánh xạ với nhiều điểm
và ánh xạ này không thẳng hàng Phương pháp này gọi là xoắn thời gian động (Dynamic Time Warrping – DTW) được đề xuất bởi Bernt và Clifford, 1994
Trang 24Phương pháp DTW có ưu điểm là cho kết quả chính xác hơn so với độ đo Euclid
và cho phép nhận dạng mẫu có hình dạng giống nhau nhưng chiều dài hình dạng về thời gian có thể khác nhau Phương pháp này có nhược điểm là thời gian chạy lâu, tuy nhiên gần đây đã có những công trình tăng tốc độ đo đô tương tự với DTW
2.3.3 Chuỗi con chung tuần tự dài nhất (LCS)
Phương pháp tìm chuỗi con chung tuần tự dài nhất (longest common
subsequence) được đề xuất bởi Vlachos và các cộng sự năm 2004 Điểm nổi bật của phương pháp này là nó cho phép bỏ qua những điểm bất thường khi so sánh Tư tưởng chính của phương pháp này là tìm những chuỗi con chung Hai chuỗi có chuỗi con chung càng dài thì càng giống nhau
2.3.3.1 Tổng quan
LCS là bài toán tìm kiếm chuỗi con tuần tự dài nhất trong tập hợp kí tự của hai chuỗi Khác với bài toán tìm kiếm xâu kí tự con dài nhất giống nhau (longest common substring) [15]: các chuỗi con không nhất thiết phải có vị trí liền kề nhau trong chuỗi ban đầu Bài toán về chuỗi con chung tuần tự dài nhất (chuỗi con chung dài nhất) là một bài toán cổ điển của Khoa học máy tính, là nền tảng của các chương trình so sánh dữ liệu
như diff utility, và được ứng dụng trong lĩnh vực tin sinh học Nó cũng được sử dụng
rộng rãi trong các hệ thống quản lý phiên bản (version control) như Git trong việc giải quyết các tập tin có nhiều người thay đổi Trong đồ án này sử dụng phép đo tương quan hai chuỗi LCS nên chúng ta sẽ cùng đi sâu phân tích thuật toán này
2.3.3.2 Phân tích thuật toán
Đối với các trường hợp tổng quát của bất kì một chuỗi đầu vào nào thì vấn đề đều thuộc lớp NP-Hard[16] Khi số lượng các chuỗi nhập vào là cố định, bài toán có thể giải trong thời gian đa thức bởi kỹ thuật quy hoạch động Giả sử ta có N chuỗi có các độ dài
𝑛1, … , 𝑛𝑁 , cách tìm kiếm đơn giản sẽ là kiểm tra 2𝑛1 chuỗi con của chuỗi ban đầ để xác định chúng có là chuỗi con của các chuỗi còn lại Mỗi chuỗi sẽ được thử trong thời giân tuyến tính trong độ dài còn lại của chuỗi, vậy giải thuật là:
Trang 252.3.3.3 Giải pháp cho hai chuỗi
Bài toán tìm kiếm LCS có thể tối ưu: có thể chia vấn đề ban đầu thanh những vấn
đề nhỏ và đơn giản hơn, và có thể tiếp tục chia nhỏ ra cho đến khi việc tìm kiếm lời có thể giải quyết bằng những cách thông thường Bài toán cũng có những vấn đề trùng lặp: Giải pháp của những vấn đề lớn sử dụng lại kết quả cũng những vấn đề nhỏ hơn Với hai tính chất này ta có thể giải quyết bằng kỹ thuật quy hoạch động Kết quả của các bài toán con được lưu lại thay vì tính toán lại nhiều lần Quy trình này cần các kết quả của các bài toán con ở một mức độ nào nhất định lưu vào chung một bảng, để các kết quả này có thể được sử dụng ngay cho các vấn đề con tiếp theo
2.3.3.3 Các tiền tố (Prefix)
Các vấn đề con sẽ đơn giản hơn vì các chuỗi LCS con ngắn hơn Các chuỗi ngắn hơn được gọi là prefix – tiền tố Tiền tố của một chuỗi là chuỗi mà phần đầu bị cắt đi Gọi 𝑆 là một chuỗi ("𝐴𝐺𝐶𝐴") Chuỗi "𝐴𝐺" là tiền tố của 𝑆 Các tiền tố được kí hiện với
Trang 26tên của chuỗi kèm theo đó độ dài của chuỗi Tiền tố "AG" được kí hiệu là 𝑆2, bởi nó chứa
2 phần tử của S Các tiền tố có thể có của 𝑆 là:
Ví dụ ta có hai chuỗi có cùng phần tử cuối là "BANANA" và "𝐴𝑇𝐴𝑁𝐴"
Sau khi loại bỏ phần tử cuối giống nhau, lặp lại việc đó cho tới khi phần tử cuối không còn giống nhau nữa thì LCS lúc này là "𝐴𝑁𝐴"
Hai chuỗi còn lại cần xét là "𝐵𝐴𝑁" và "𝐴𝑇"
Chuỗi con chung dài nhất của hai chuỗi này là A
Thêm vào LCS đã tìm được lúc trước, ta tìm được LCS là "𝐴𝐴𝑁𝐴" là LCS của hai chuỗi cần xét ban đầu
Nói chung, cho bất kì chuỗi 𝑋 và 𝑌 với độ dài 𝑛 và 𝑚, nếu ta kí hiệu các phần tử
𝑥1, … , 𝑥𝑛 và 𝑦1, … , 𝑦𝑚 và các tiền tốt 𝑋1 đến 𝑋𝑛−1 và 𝑌1 đến 𝑌𝑚−1 ta có thể nói:
Nếu 𝑥𝑛 = 𝑦𝑚
Thì: 𝐿𝐶𝑆(𝑋𝑛, 𝑌𝑚) = 𝐿𝐶𝑆(𝑋𝑛−1, 𝑌𝑚−1) ⋀ 𝑥𝑛
Tính chất thứ hai:
Giả sử hai chuỗi 𝑋 và 𝑌 không cùng kết thúc với phần tử giống nhau 𝐿𝐶𝑆(𝑋, 𝑌)
là chuỗi có độ dài lớn nhất trong 2 chuỗi:𝐿𝐶𝑆(𝑋𝑛, 𝑌𝑚−1) và 𝐿𝐶𝑆(𝑋𝑛−1, 𝑌𝑚)
Xét hai chuỗi sau:
𝑋: "ABCDEFG" (𝑛 phần tử)
Trang 27Trưởng hợp 2: 𝐿𝐶𝑆(𝑋, 𝑌) không kết thúc với G
Trong trường hợp này, loại bỏ G khỏi chuỗi 𝑋 cũng không gây ảnh hưởng gì với
lý do như đã nêu trên, ta có thể viết: 𝐿𝐶𝑆(𝑋𝑛, 𝑌𝑚) = 𝐿𝐶𝑆(𝑋𝑛−1, 𝑌𝑚)
Trong bất cứ trường hợp nào thì LCS cũng tìm được với 1 trong hai công thức: 𝐿𝐶𝑆(𝑋𝑛, 𝑌𝑚−1) hoặc 𝐿𝐶𝑆(𝑋𝑛−1, 𝑌𝑚) Cả hai đều là 𝐿𝐶𝑆(𝑋, 𝑌) nhưng phải là dài nhất Cho nên giá trị LCS phải là dài nhất trong 2 chuỗi
2.3.3.4 Định nghĩa công thức LCS
Có hai chuỗi tuần tự như sau: 𝑋 = (𝑥1, 𝑥2, … , 𝑥𝑛 ) và Y = (𝑦1, 𝑦2, … , 𝑦𝑚 ) Tiền
tố của X là 𝑥1,2,…,𝑛 và tiền tố của Y là 𝑦1,2…,𝑚 Để biển diễn LCS cho chuỗi trình tự con chung dài nhất của tiền tố 𝑋𝑖 và 𝑌𝑗 có thể theo công thức sau:
𝐿𝐶𝑆(𝑋𝑖, 𝑌𝑗) =
{
∅ , 𝑛ế𝑢 𝑖 = 0 ℎ𝑜ặ𝑐 𝑗 = 0𝐿𝐶𝑆(𝑋𝑖−1, 𝑌𝑗−1) + 1, 𝑛ế𝑢 𝑥𝑖 = 𝑦𝑗𝑚𝑎𝑥 {𝐿𝐶𝑆(𝑋𝑖, 𝑌𝑗−1)
𝐿𝐶𝑆(𝑋𝑖−1, 𝑌𝑖) , 𝑛ế𝑢 𝑥𝑖 ≠ 𝑦𝑖Công thức 2.2, trong đó:
𝐿𝐶𝑆(𝑋𝑖, 𝑌𝑗) là chuỗi con chung dài nhất của 2 tiền tố 𝑋𝑖 và 𝑌𝑗
𝑥𝑖 là phần tử thứ 𝑖 trong chuỗi 𝑋
𝑦𝑗 là phần tử thứ 𝑗 trong chuỗi 𝑌
Ta so sánh 𝑋𝑖 và 𝑌𝑗 so sánh với 𝑥𝑖 và 𝑦𝑗, nếu chung bằng nhau thì 𝐿𝐶𝑆(𝑋𝑖−1, 𝑌𝑗−1) được kế thừa bởi 𝑥𝑖 Nếu chúng không bằng nhau thì 𝐿𝐶𝑆(𝑋𝑖−1, 𝑌𝑗) và 𝐿𝐶𝑆(𝑋𝑖, 𝑌𝑗−1)
Trang 28được lưu giữ lại Nếu chung có chiều dài bằng nhau nhưng không giống nhua thì cả 2 đều được lưu lại
2.3.3.5 Ví dụ bài toán LCS
Cho 2 chuỗi 𝑅 = (𝐺𝐴𝐶) và 𝐶 = (𝐴𝐺𝐶𝐴𝑇), cần tìm chuỗi con chung dài nhất giữa 2 chuỗi 𝑅 và 𝐶 Hàm LCS dùng các phần tử rỗng để định nghĩa tiền tố rỗng cho 2 chuỗi này: 𝑅0 = ∅ và 𝐶0 = ∅ Tất cả tiền tố được đặt trong 1 bảng, với cột lưu trữ kí tự của chuỗi R, còn dòng sẽ lưu kí tự của chuỗi C
Bảng này dùng để lưu trữ chuỗi LCS qua mỗi bước tính toán Cột thứ 2 và dòng thứ 2 sẽ lưu các giá trị rỗng Lý do là khi so sánh chuỗi rỗng với 1 chuỗi không rỗng, thì chuổi con chung dài nhất luôn là 1 chuỗi rỗng
𝐿𝐶𝑆(𝑅1, 𝐶1) được xác định bằng cách so sánh phần tử đầu tiên trong mỗi chuỗi ban đầu G và A không bằng nhau, do đó, LCS sẽ lấy chuỗi con dài nhất giữa 2 chuỗi: 𝐿𝐶𝑆(𝑅1 , 𝐶0) và 𝐿𝐶𝑆(𝑅0, 𝐶1) Theo như bảng, cả 2 chuỗi đều rỗng, vì thế 𝐿𝐶𝑆(𝑅1, 𝐶1) cũng sẽ rỗng
𝐿𝐶𝑆(𝑅1, 𝐶2) được xác định bằng cách so sánh G và G Do 2 kí tự này giống nhau, nên sẽ được gắn vào chuỗi, 𝐿𝐶𝑆(𝑅0, 𝐶1) lúc này sẽ là (∅𝐺)
Đối với 𝐿𝐶𝑆(𝑅1, 𝐶3), G và C không giống nhau, chuỗi rỗng Lúc này chuỗi con chung 𝐿𝐶𝑆(𝑅1, 𝐶3) = (𝐺)
𝐿𝐶𝑆(𝑅1, 𝐶4) và 𝐿𝐶𝑆(𝑅1, 𝐶5) cũng được tính tương tự, và kết quả là chuỗi (G)
Trang 29Tới 𝐿𝐶𝑆(𝑅2, 𝐶1), A so sánh với A, cả 2 kí tự này đều bằng nhau, vì thế ta gắn A vào tập rỗng, kết quả là 𝐿𝐶𝑆(𝑅2, 𝐶1) = (𝐴)
𝐿𝐶𝑆(𝑅2, 𝐶2), A không bằng G 𝐿𝐶𝑆(𝑅1, 𝐶2) = (𝐺) và 𝐿𝐶𝑆(𝑅2, 𝐶1) = (𝐴) Lúc này, chuỗi con chung dài nhất là 𝐿𝐶𝑆(𝑅2, 𝐶2) = (𝐴) và (𝐺)
Trang 30Với 𝐿𝐶𝑆(𝑅3, 𝐶4), C và A không bằng nhau Trộn 𝐿𝐶𝑆(𝑅3, 𝐶3) và 𝐿𝐶𝑆(𝑅2, 𝐶4), kết quả tạo thành sẽ là 𝐿𝐶𝑆(𝑅3, 𝐶4) = (𝐴𝐶) và (𝐺𝐶) và (𝐺𝐴)
Với 𝐿𝐶𝑆(𝑅3, 𝐶5), C và T không bằng nhau Kết quả là 𝐿𝐶𝑆(𝑅3, 𝐶5) = 𝐿𝐶𝑆(𝑅3, 𝐶4) = (𝐴𝐶) và (𝐺𝐶) và (𝐺𝐴)
Như vậy, kết quả cuối cùng sẽ là: (AC) và (GC) và (GA)
2.3.3.6 Thuật toán LCS
Với công thức LCS như đã nêu trên ta có thể dễ dàng hiện thực bài toán này theo
kĩ thuật đệ quy, tuy nhiên kĩ thuật đệ quy sử dụng bộ nhớ không hiệu quả và không giải được các chuỗi có độ dài lớn Vì vậy, kĩ thuật quy hoạch động được ưu tiên sử dụng trong trường hợp này
function LCSLength(X[1 m], Y[1 n])