Báo cáo khóa luận tốt nghiệp "Nghiên cứu, phát triển ứng dụng nhận dạng hoạt động của bàn tay sử dụng Webcam Laptop". Có code Python đường link Driver: https://drive.google.com/drive/folders/1l_7BSLTEq6XDfmjJXPWYJhA7Thfeo1K5?usp=drive_link
Trang 1TRƯỜNG ĐẠI HỌC TÂN TRÀO
KHOA KHOA HỌC CƠ BẢN
KHÓA LUẬN TỐT NGHIỆP
TÊN ĐỀ TÀI: NGHIÊN CỨU, PHÁT TRIỂN ỨNG DỤNG NHẬN DẠNG HOẠT ĐỘNG CỦA BÀN TAY
SỬ DỤNG WEBCAM CỦA LAPTOP
Tuyên Quang, 2023
Trang 2TRƯỜNG ĐẠI HỌC TÂN TRÀO
KHOA KHOA HỌC CƠ BẢN
KHÓA LUẬN TỐT NGHIỆP
TÊN ĐỀ TÀI: NGHIÊN CỨU, PHÁT TRIỂN ỨNG DỤNG NHẬN DẠNG HOẠT ĐỘNG CỦA BÀN TAY
SỬ DỤNG WEBCAM CỦA LAPTOP
Người thực hiện: BÀN VĂN BẰNG
Khóa: 2020-2024
Ngành: CÔNG NGHỆ THÔNG TIN
Người hướng dẫn: TS LÊ VĂN HÙNG
Xác nhận của GV hướng dẫn
(Ký, ghi rõ họ tên)
Tuyên Quang, 2023
Trang 3i
LỜI CAM ĐOAN
Tôi xin cam đoan luận văn mang đề tài “Nghiên cứu, phát triển ứng dụng
nhận dạng hoạt động của bàn tay sử dụng Webcam Laptop” là công trình nghiên
cứu của tôi và được hoàn thành dưới sự hướng dẫn của giảng viên TS Lê Văn
Hùng
Toàn bộ số liệu trong bài luận văn đều được thu thập và sử dụng một cách
trung thực cũng như trích dẫn đầy đủ tên các tác giả, các công trình nghiên cứu
Kết quả nghiên cứu được hoàn thành trong bài luận văn không hề sao chép từ
bất cứ một công trình nghiên cứu hay từ một luận văn nào khác đã từng được
công bố ở bất cứ nơi nào khác trước đây
Tuyên Quang, tháng 12 năm 2023
Sinh viên thực hiện
Bàn Văn Bằng
Trang 4ii
MỤC LỤC
MỞ ĐẦU 1
1.Lý do chọn đề tài 1
2.Mục tiêu nghiên cứu 3
3.Đối tượng nghiên cứu 3
4.Phạm vi nghiên cứu 3
5.Phương pháp nghiên cứu 3
NỘI DUNG 4
Chương 1 TỔNG QUAN VỀ NHẬN DẠNG HOẠT ĐỘNG BÀN TAY 4
1.1.TÌNH HÌNH NGHIÊN CỨU TRONG VÀ NGOÀI NƯỚC 4
1.1.1 Nghiên cứu trong nước 4
1.1.2 Nghiên cứu ngoài nước 5
1.2.NHẬN DẠNG HOẠT ĐỘNG BÀN TAY 5
1.2.1 Mô tả bàn tay người 7
1.2.2 Hoạt động của bàn tay 7
1.2.3 Một số ứng dụng của nhận dạng hoạt động bàn tay 8
1.3 MÔ HÌNH NHẬN DẠNG HOẠT ĐỘNG BÀN TAY 11
1.4 MỘT SỐ KHÁI NIỆM CƠ BẢN CỦA HỌC MÁY 16
1.4.1 Học có giám sát và học không giám sát 16
1.4.2 Học quá khớp, học chưa khớp và học vừa khớp 18
1.5 HỌC SÂU (DEEP LEARNING) 20
1.6 CÁC ĐỘ ĐO ĐÁNH GIÁ MÔ HÌNH 21
Chương 2 NHẬN DẠNG HOẠT ĐỘNG BÀN TAY SỬ DỤNG WEBCAM LAPTOP 23
2.1 MEDIAPIPE 23
2.2 SVM (SUPPORT VECTOR MACHINE) 25
2.3 RANDOM FOREST 31
2.4 KHOANH VÙNG VÀ ƯỚC LƯỢNG KHUNG XƯƠNG BÀN TAY 35
Trang 5iii
2.5 HUẤN LUYỆN MÔ HÌNH NHẬN DẠNG HOẠT ĐỘNG BÀN
TAY 37
2.6 NHẬN DẠNG HOẠT ĐỘNG BÀN TAY 38
Chương 3 KẾT QUẢ NGHIÊN CỨU 43
3.1 MỘT SỐ ĐỘ ĐO ĐÁNH GIÁ 43
3.2 THỰC NGHIỆM 44
3.2.1 Một số yêu cầu 44
3.2.2 Chuẩn bị dữ liệu 45
3.2.3 Huấn luyện 47
3.2.4 Kiểm tra 48
3.3 KẾT QUẢ NGHIÊN CỨU 49
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 54
Danh mục tài liệu tham khảo: 55
Trang 6iv
DANH MỤC CÁC BẢNG
Bảng 1.1: Ví dụ về ma trận nhầm lẫn 22
Bảng 3.1: Các tham số tính toán độ đo đánh giá 43
Bảng 3.2: Kết quả các độ đo đánh giá 49
DANH MỤC HÌNH ẢNH Hình 1: Minh họa về giao diện người - máy 1
Hình 2: Điều khiển thiết bị qua giọng nói trong nhà thông minh 1
Hình 3: Điều khiển TV bằng cử chỉ tay 2
Hình 1.1: Sơ đồ nhận dạng hoạt động bàn tay 6
Hình 1.2: Cấu trúc xương và mô hình học của bàn tay 7
Hình 1.3: Minh họa sử dụng hoạt động tay trong thực tế ảo 8
Hình 1.4: Minh họa về dùng các hoạt động tay để điều khiển robot 9
Hình 1.5: Minh họa điều khiển máy tính bằng cử chỉ tay 10
Hình 1.6: Minh họa về sử dụng cử chỉ tay trong y học 10
Hình 1.7: Ví dụ về ngôn ngữ ký hiệu 11
Hình 1.8: Mô hình nhận dạng hoạt động bàn tay 11
Hình 1.9: Hình ảnh các hoạt động bàn tay 12
Hình 1.10: Ví dụ chuyển ảnh RGB sang nhị phân 13
Hình 1.11: Ví dụ về lọc nhiễu 14
Hình 1.12: Hình biểu diễn mô hình học chưa khớp (bên trái), học vừa khớp (ở giữa) và học quá khớp (bên phải) 19
Hình 1.13: Minh họa về mô hình hoạt động của Deep Learning 20
Hình 2.1: Logo MediaPipe 23
Hình 2.2: Mô hình hoạt động của MediaPipe Hands 24
Hình 2.3: Các điểm khớp ngón tay nhận diện bởi Mediapipe 25
Hình 2.4: Mô tả siêu phẳng trong SVM 26
Hình 2.5: Điểm dữ liệu có thể phân tách tuyến tính 26
Hình 2.6: Nhiều siêu phẳng phân tách dữ liệu từ hai lớp 27
Hình 2.7: Chọn siêu phẳng cho dữ liệu có ngoại lệ 27
Trang 7v
Hình 2.8: Siêu phẳng được tối ưu hóa nhất 28
Hình 2.9: Tập dữ liệu 1D gốc để phân loại 28
Hình 2.10: Ánh xạ dữ liệu 1D sang 2D để có thể tách hai lớp 29
Hình 2.11: Sơ đồ biểu diễn các cây quyết định trong random forest 32
Hình 2.12: Mô hình thuật toán Random Forest 33
Hình 2.13: Mô tả phương pháp lấy mẫu bootstrap 34
Hình 2.14: Tổng quan về quá trình hoạt động của Mediapipe Hand 36
Hình 2.15: Sơ đồ tổng quát nhận dạng hoạt động bàn tay 39
Hình 2.16: Xác định các mốc bàn tay bằng MediaPipe Hands 41
Hình 2.17: Minh họa kết quả nhận dạng hoạt động 42
Hình 3.1: Các hoạt động bàn tay được thu thập hình ảnh để huấn luyện nhận dạng trong đề tài 46
Hình 3.2: Các thư mục hình ảnh có tên nhãn là tên hoạt động bàn tay 47
Hình 3.3: Ma trận tạo ra từ dữ liệu file CSV 48
Hình 3.4: Ma trận nhần lẫn khi mô hình huấn luyện với SVM 50
Hình 3.5: Ma trận nhần lẫn khi mô hình huấn luyện với Random Forest 51
Hình 3.6: Hình ảnh nhận dạng hoạt động bàn tay người thứ nhất 52
Hình 3.7: Hình ảnh nhận dạng hoạt động bàn tay người thứ hai 52
Hình 3.8: Hình ảnh nhận dạng hoạt động bàn người thứ ba 53
Hình 3.9: Hình ảnh nhận dạng hoạt động bàn tay người thứ tư 53
Trang 8vi
DANH MỤC TỪ VIẾT TẮT
Từ viết tắt Nghĩa Tiếng Anh Nghĩa Tiếng Việt
CNN Convolutional Neural Network Mạng nơ-ron tích chập
CT Computerized Tomography Chụp cắt lớp vi tính MRI Magnetic Resonance Imaging Chụp cộng hưởng từ ANN Artificial Neural Network Mạng nơ-ron nhân tạo
SVM Support Vector Machines Máy vector hỗ trợ
MEM Maximum Entropy Model Mô hình cực đại hóa
Entropy
Trang 9lý nhanh chóng
Hình 1: Minh họa về giao diện người – máy [39]
Giao diện người - máy cơ bản nhất được sử dụng thông qua bàn phím và chuột bị giới hạn bởi khoảng cách giữa người dùng với đối tượng cần tương tác [33] Một số tương tác qua giọng nói đã đem lại nhiều tiện ích cho người dùng như điều khiển thiết bị thông qua giọng nói trong ngôi nhà thông minh [35], các vấn đề nhận dạng đối tượng cần thiết trong an ninh [22]
Hình 2: Điều khiển thiết bị qua giọng nói trong nhà thông minh [4]
Trang 102
Tuy nhiên, các giao diện này bị giới hạn bởi các đặc trưng giọng nói theo vùng miền, từ đó dẫn đến việc thiết kế hệ thống phức tạp và khó được sử dụng phổ biến [14], hoặc cũng bị hạn chế do môi trường ồn ào, âm thanh nhiễu loạn Nhận dạng hoạt động bàn tay là phương pháp để xây dựng giao diện người dùng thân thiện giữa máy và người sử dụng Trong tương lai gần, công nghệ nhận dạng hoạt động bàn tay cho phép các máy phức hợp và các thiết bị thông minh hoạt động dựa trên tư thế bàn tay, ngón tay và sự di chuyển của bàn tay, loại bỏ việc giao tiếp vật lý giữa người và máy Ngày nay, với sự phát triển của các thư viện mã nguồn mở trong lĩnh vực thị giác máy tính đã cho phép thiết
kế các ứng dụng nhận dạng hoạt động bàn tay dễ dàng hơn và có thể áp dụng các ứng dụng này rộng rãi vào nhiều lĩnh vực như nhận dạng ngôn ngữ cử chỉ [34], điều khiển robot [18], thực tế ảo [43], điều khiển các thiết bị trong nhà [20] và các ứng dụng giải trí [28]
Hình 3: Điều khiển TV bằng cử chỉ tay [13]
Đây là một lĩnh vực được nhiều nhà nghiên cứu và ngành công nghiệp đang quan tâm, nó cho phép con người tương tác với máy dễ dàng và thuận tiện hơn
Vì vậy bài khóa luận này đã lựa chọn đề tài nghiên cứu ứng dụng nhận dạng dạng hoạt động bàn tay người sử dụng webcam laptop
Trang 113
2 Mục tiêu nghiên cứu
- Nghiên cứu các phương pháp nhận dạng hoạt động bàn tay
- Phát triển, ứng dụng nhận dạng hoạt động của bàn tay từ các dữ liệu hình ảnh thu được từ Webcam Laptop
3 Đối tượng nghiên cứu
- Bàn tay và hoạt động của bàn tay
- Phương pháp nhận dạng hoạt động của bàn tay
4 Phạm vi nghiên cứu
Nghiên cứu phương pháp nhận dạng hoạt động bàn tay dựa trên các phương pháp học máy
5 Phương pháp nghiên cứu
- Nghiên cứu tài liệu về hoạt động của bàn tay
- Nghiên cứu tài liệu về nhận dạng hoạt động của bàn tay
- Nghiên cứu thực nghiệm nhận dạng hoạt động của bàn tay
Trang 124
NỘI DUNG Chương 1 TỔNG QUAN VỀ NHẬN DẠNG HOẠT ĐỘNG BÀN TAY
1.1 TÌNH HÌNH NGHIÊN CỨU TRONG VÀ NGOÀI NƯỚC
1.1.1 Nghiên cứu trong nước
Các bài toán trong lĩnh vực trí tuệ nhân tạo, đặc biệt phát triển trong lĩnh vực thị giác máy tính đã được quan tâm của nhiều nhà khoa học trong nước, tại các cở sở giáo dục đào tạo, các viện nghiên cứu trong nước Một số bài toán liên quan đến nhận dạng hoạt động bàn tay:
TS Trần Nguyên Ngọc cùng các cộng sự của Khoa Công nghệ thông tin, Học viện Kỹ thuật Quân sự đã triển khai nghiên cứu đề tài “Nghiên cứu phát triển kỹ thuật nhận dạng cử động của bàn tay người theo thời gian thực” [9]
Đề tài do TS Trần Nguyên Ngọc chủ nhiệm, mã số KC01.TN08/11-15 thuộc chương trình “Nghiên cứu ứng dụng và phát triển công nghệ Thông tin và Truyền thông” đã nghiên cứu thành công kỹ thuật nhận dạng cử động của bàn tay người theo thời gian thực để ứng dụng trong công nghiệp quốc phòng, điều khiển robot, phát triển dạng sản phẩm tích hợp Nhóm đã nghiên cứu phát hiện bàn tay trong chuỗi hình ảnh thu được từ camera và cảm biến khoảng cách; nghiên cứu phát hiện quỹ đạo và bám chuyển động của bàn tay theo thời gian thực; nghiên cứu giải pháp nhận dạng, phân biệt các cử động khác nhau của tay người; nghiên cứu giải pháp chuyển đổi kết quả nhận dạng thành các tín hiệu điều khiển thiết bị; xây dựng phần mềm hỗ trợ tương tác với máy tính thông qua cử động ra hiệu bằng tay Sau đó học máy được áp dụng trong các bài toán nhận dạng hoạt động bàn tay Phạm Minh Lộc cùng cộng sự [8] đã thực hiện nghiên cứu ứng dụng học máy để nhận dạng tư thế bàn tay từ một chuỗi ảnh chiều sâu Lê Minh Thành và cộng sự [11] thiết lập một mạng nơ-ron chập với
14 lớp và ứng dụng vào hệ thống nhận dạng 6 cử chỉ bàn tay phải, với đối tượng đầu vào là các ảnh tĩnh thu được từ camera điện thoại Nguyễn Sinh Huy và cộng sự [26] đề xuất một mô hình sâu mới để ước tính tư thế tay 2D chính xác
Trang 135
kết hợp HOPE-Net, ước tính tư thế tay và Mask R-CNN, cung cấp khả năng phát hiện và phân đoạn tay để định vị bàn tay trong hình ảnh
1.1.2 Nghiên cứu ngoài nước
Đã có nhiều nghiên cứu về nhận dạng hoạt động bàn tay như: Bardia Doosti
và các cộng sự [21] đã thực hiện cuộc khảo sát về nhận dạng hoạt động bàn tay Nhóm tác giả Shan-Chien Hsiao và cộng sự [19], đã thực hiện nghiên cứu ước tính hoạt động tay dựa trên các điểm chính trên khung bàn tay 2D, mục đích ước tính hoạt động bàn tay sử dụng ít tham số hơn so với các mô hình truyền thống Jungpil Shin và các cộng sự [38] đã thực hiện một nghiên cứu nhận dạng hoạt động tay dựa trên học sâu (deep learning) từ hình ảnh 2D, nghiên cứu sử dụng mạng nơ-ron tích chập (CNN - Convolutional Neural Network) để phát hiện cử chỉ bàn tay 2D dựa trên các khớp bàn tay và đầu ngón tay
1.2 NHẬN DẠNG HOẠT ĐỘNG BÀN TAY
Những thiết bị đầu vào và đầu ra được thiết kế trong những năm qua với mục đích giao tiếp giữa con người và máy tính được thực hiện một cách dễ dàng Hai thiết bị phổ biến nhất được biết đến là bàn phím và chuột
Ý tưởng để làm cho máy tính hiểu được các ngôn ngữ giao tiếp của con người và phát triển giao diện người - máy thân thiện đang nhận được sự quan tâm của cộng đồng các nhà nghiên cứu Làm cho máy tính hiểu được lời nói, nét mặt, cử chỉ của con người là một trong những quan tâm đó Trong tương tác người - máy, các hình dạng khác nhau của bàn tay có thể giả định để giao tiếp với các đối tượng hoặc truyền tải rất nhiều thông tin Do đó, bàn tay của con người có thể sử dụng làm “thiết bị đầu vào” rất có giá trị
Trong thế giới thực, chúng ta có thể cầm, thả, di chuyển…các đối tượng bằng các cử chỉ của bàn tay Tương tự như vậy, khi tương tác với các thiết bị như máy tính, tivi, ô tô… chỉ với vài cử chỉ của bàn tay là ta có thể điều khiển được hoạt động của nó Ví dụ như chỉ cần phẩy tay là có thể chuyển kênh tivi, hay bật/ tắt radio trên ô tô… thay vì phải tự tay bấm nút trên bộ điều khiển Để
Trang 146
làm được điều này, bộ điều khiển của các thiết bị phải được gắn một thiết bị cảm nhận (camera/webcam), thiết bị cảm nhận này sẽ thu nhận hình ảnh của bàn tay, nhận dạng cử chỉ để phát lệnh điều khiển tương ứng Ngoài ra, nhận dạng hoạt động bàn tay còn có rất nhiều ứng dụng khác: hoạt động bàn tay được
sử dụng đề giả lập các thao tác tương tác với đối tượng trong thể giới ảo; trong tương tác giữa người và robot, cử chỉ bàn tay chính là ngôn ngữ đề con người
và robot có thể giao tiếp với nhau
Để nhận dạng hoạt động bàn tay, bước đầu tiên trong các hệ thống nhận dạng là có một thiết bị ghi nhận hình ảnh về bàn tay, các hình ảnh sẽ được tiến hành phát hiện vị trí bàn tay qua thiết bị cảm nhận hoặc các phương pháp phát hiện bàn tay để thu thập các quan sát cần cho việc phân loại hay miêu tả sau đó tiến hành xử lý hình ảnh, trích chọn đặc trưng feature extraction) để tính toán các thông tin đưới dạng số hay dạng biểu tượng (synbolic) từ các dữ liệu quan sát và thực hiện Công việc phân loại dựa vào các đặc tính đã được trích chọn
để nhận dạng hoạt động bàn tay Đó chính là nhiệm vụ của bài toán nhận dạng hoạt động của bàn tay Các hoạt động của bàn tay được nhận dạng dựa trên tập
dữ liệu về bàn tay được thu thập từ trước
Hình 1.1: Sơ đồ nhận dạng hoạt động bàn tay
Trang 157
1.2.1 Mô tả bàn tay người
Mô hình xương bàn tay người có cấu trúc như sau [15]: bàn tay con người gồm 27 xương, trong đó có 8 xương ở cổ tay và 19 xương cho lòng bàn tay và ngón tay Các xương này được kết nối với nhau bởi các khớp nối có một hay nhiều bậc tự do Hình 1.2 biểu diễn mô hình xương bàn tay và biểu diễn các khớp nối cùng số bậc tự do tương ứng tạo thành tổng cộng 26 bậc tự do Trong
đó cổ tay có 6 bậc tự do với 3 bậc tự do cho chuyển động tịnh tiến trong không gian và 3 bậc tự do cho chuyển động xoay quanh các trục Năm ngón tay, mỗi ngón có 4 bậc tự do với 2 bậc cho khớp gốc ngón tay (gập/ngửa và khép/mở)
và 1 bậc cho mỗi khớp còn lại
Hình 1.2: Cấu trúc xương và mô hình học của bàn tay [5]
1.2.2 Hoạt động của bàn tay
Một hoạt động của bàn tay là một chuỗi chuyển động và hình dạng các bộ phận trên bàn tay bao gồm các ngón tay, lòng bàn tay và cổ tay Khi thực hiện một hoạt động các bộ phận đó sẽ tạo thành một hình dạng và một chuyển động nhất định Từ những đặc điểm đó sẽ tập trung đánh dấu các điểm đặc trưng và
Trang 16tự do tương tác và khám phá, có thể điều khiển vật dụng hoặc thậm chí thực hiện hàng loạt các hành động phức tạp như thể đang ở ngoài đời thật Đây là một hệ thống giao diện cấp cao giữa người sử dụng và máy tính Hệ thống này
mô phỏng các sự vật và hiện tượng theo thời gian thực và tương tác với người
sử dụng qua tổng hợp các kênh cảm giác
Hình 1.3: Minh họa sử dụng hoạt động tay trong thực tế ảo [16]
Trang 179
Tương tác thực tế ảo sử dụng hoạt động bàn tay cho phép các đối tượng thực sử dụng các cử chỉ bàn tay cho các tương tác 3D [37] hoặc 2D mô phỏng 3D [23] Ưu điểm lớn nhất của việc sử dụng bàn tay để tương tác trong môi trường thực tế ảo nằm ở việc các thao tác tay là hoàn toàn tự nhiên, bởi lẽ đây
là bản năng của con người Do đó, bất cứ ai cũng có thể sử dụng công nghệ này một cách dễ dàng
Ứng dụng trong điều khiển robot:
Các cử chỉ hoạt động bàn tay được sử dụng để tương tác và điều khiển robot hoàn toàn tương tự như các tương tác trong thực tế ảo, và được vận hành bằng cách cung cấp dữ liệu video từ máy ảnh nằm trên robot [25] Tại đây, hoạt động bàn tay có thể điều khiển bàn tay và chuyển động cánh tay của robot để tiếp cận và thao tác với các đối tượng thực, cũng như chuyển động của robot trong thế giới thực
Hình 1.4: Minh họa về dùng các hoạt động tay để điều khiển robot [36]
Điều khiển máy tính:
Trong các ứng dụng máy tính, hoạt động cử chỉ bàn tay có thể cung cấp một
sự tương tác thay thế cho chuột và bàn phím [40] Nhiều hoạt động cho các tác
vụ máy tính để bàn liên quan đến thao tác đồ họa, hoặc chú thích và chỉnh sửa các tài liệu dựa trên cử chỉ [17] Người dùng có thể sử dụng giọng nói, cử chỉ tay để điều khiển máy tính, trình chiếu powerpoint và các thiết bị khác như smart tivi, …
Trang 18sử dụng hoạt động tay đơn giản để thay đổi, di chuyển, hoặc phóng to trên ảnh
CT, MRI, và hình ảnh y tế khác thay vì phải hướng dẫn y tá hoặc sử dụng bàn phím và chuột để tránh nguy cơ nhiễm trùng Điều này có thể giúp các bác sĩ xác định nhanh chóng hơn các vị trí thích hợp trong quá trình phẫu thuật
Hình 1.6: Minh họa về sử dụng cử chỉ tay trong y học [30]
Trang 1911
Ứng dụng trong ngôn ngữ ký hiệu:
Ngôn ngữ cử chỉ là một trường hợp quan trọng của cử chỉ giao tiếp Sử dụng cử chỉ là một cách hiệu quả giúp người khuyết tật có thể giao tiếp với nhau cũng như giao tiếp với máy tính một cách hiệu quả
Hình 1.7: Ví dụ về ngôn ngữ ký hiệu [32]
1.3 MÔ HÌNH NHẬN DẠNG HOẠT ĐỘNG BÀN TAY
Mô hình nhận dạng hoạt động bàn tay như sau:
Hình 1.8: Mô hình nhận dạng hoạt động bàn tay
Trang 20có thể chụp được nhiều góc độ của tư thế tay Đề tài này sử dụng dữ liệu đầu vào là hình ảnh thu được tử webcam laptop
Tiền xử lý:
Tiền xử lý là nhiệm vụ quan trọng trong hệ thống nhận dạng hoạt động bàn tay 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à và chất lượng của thiết bị ghi hình Một hình ảnh chất lượng thấp sẽ ảnh hưởng tới độ chính xác của hệ thống Vì vậy, tiền xử lý ảnh là bắt buộc để nâng cao chất lượng ảnh đồng thời cải thiện độ chính xác của hệ thống được đề xuất 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,
Trang 21Hình 1.10: Ví dụ chuyển ảnh RGB sang nhị phân [34]
Lọc nhiễu: Trong ảnh nhị phân, có thể có một số giá trị 0 trong vùng tay
và có một số giá trị 1 trong khu vực nền Khi đó, nền có những số 1 được biết đến như nhiễu xung quanh và cử chỉ tay có một vài số 0 được biết đến như nhiễu cử chỉ Những nhiễu này có thể dẫn đến một vấn đề trong việc phát hiện đường viền của cử chỉ tay vì vậy cần phải loại bỏ các nhiễu này
Trang 2214
Hình 1.11: Ví dụ về lọc nhiễu [34]
Phân đoạn ảnh: Phân đoạn ảnh là thực hiện việc phân vùng ảnh thành các vùng rời rạc và đồng nhất với nhau hay nói cách khác là xác định các biên của các vùng ảnh đó Các vùng ảnh đồng nhất này thông thường sẽ tương ứng với toàn bộ hay từng phần của các đối tượng thật sự bên trong ảnh Như vậy, mục tiêu của phân đoạn ảnh là làm nổi bật hoặc tách hẳn đối tượng cần quan tâm ra
từ ảnh ban đầu, làm đơn giản hóa và thay đổi cách biểu diễn để dễ dàng phân tích hơn
Trích chọn đặc trưng:
Một hình ảnh kỹ thuật số có thể chứa một lượng lớn dữ liệu, đặc biệt là đối với ảnh có chất lượng tốt, hình ảnh chuyên nghiệp Vì vậy, để thao tác trên một hình ảnh hiệu quả, cần giảm bớt lượng dữ liệu phải xử lý Cách tốt nhất để giải quyết vấn đề này là trích xuất các đặc điểm quan trọng nhất của một hình ảnh
mà có thể đại diện cho toàn bộ hình ảnh Những đặc điểm này được gọi là các đặc trưng hình ảnh Như vậy, trích chọn đặc trưng là chiết xuất thông tin từ dữ liệu thô mà nó phù hợp nhất cho mục đích nhận dạng để giảm thiểu các biến thể trong một lớp và tối đa hóa các biến thể giữa các lớp khác nhau
Trang 2315
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 Có thể nêu ra một số đặc điểm của ảnh sau đây:
Đặc điểm không gian: Phân bố mức xám, biên độ, điểm uốn… Các đặc
điểm loại này thường được trích chọn bằng việc áp dụng phép biến đổi Like,… trên ảnh
Haar- Đặc điểm biến đổi: Đặc điểm biến đổi như hình dáng bàn tay Các đặc
điểm loại này được trích chọn bằng việc áp dụng bộ lọc Gabor lên ảnh
Đặc điểm biên và đường biên: Đặc trưng cho đường biên của đối tượng
rất hữu ích trong việc trích chọn các thuộc tính bất biến được dùng khi nhận dạng đối tượng Các đặc điểm này có thể được trích chọn nhờ toán tử Gradient, toán tử la bàn, toán tử Laplace,…
Việc trích chọn hiệu quả các đặc điểm giúp cho việc nhận dạng các đối tượng ảnh chính xác, với tốc độ tính toán cao và dung lượng nhớ lưu trữ giảm xuống [7]
Huấn luyện hệ thống theo phương pháp học máy truyền thống:
Dựa trên các thông số sau khi trích chọn đặc trưng từ các dữ liệu, có thể sử dụng các phương pháp học máy như: mạng nơ-ron nhân tạo (Artificial Neural Network- ANN), Mô hình Markov ẩn (Hidden Markov Model - HMM), máy vector hỗ trợ (Support Vector Machines - SVM), mô hình cực đại hóa Entropy (Maximum Entropy Model - MEM),… để huấn luyện tập dữ liệu, đồng thời sử sụng các phương pháp đánh giá chất lượng của tập dữ liệu Kết quả thu được là
cơ sở dữ liệu đã được phân lớp
Trang 2416
Cơ sở dữ liệu đã phân lớp:
Tập dữ liệu đạt chất lượng cao đã được huấn luyện và đánh giá ở bước huấn luyện hệ thống
Nhận dạng hoạt động bàn tay:
Thực hiện việc so khớp giữa các véc tơ đặc trưng được trích chọn ở dữ liệu người dùng với các đặc trưng đã được huấn luyện và đánh giá (trong CSDL đã phân lớp) ở tập dữ liệu mẫu để đưa ra kết quả cho nhận dạng hoạt động bàn tay 1.4 MỘT SỐ KHÁI NIỆM CƠ BẢN CỦA HỌC MÁY
1.4.1 Học có giám sát và học không giám sát
Theo phương thức học, các thuật toán Machine Learning thường được chia làm 4 nhóm: Học có giám sát (Supervised learning), Học không giám sát (Unsupervised learning), học bán giám sát (Semi-supervised learning) và học củng cố (Reinforcement learning) [1] Trong đó phương pháp học có giám sát
và không giám sát là phổ biến hơn cả
Học có giám sát (Supervised learning)
Supervised learning là thuật toán dự đoán đầu ra (outcome) của một dữ liệu mới (new input) dựa trên các cặp (input, outcome) đã biết từ trước Cặp dữ liệu này còn được gọi là (data, label), tức (dữ liệu, nhãn) Supervised learning là nhóm phổ biến nhất trong các thuật toán Machine Learning [1]
Một cách toán học, Supervised learning là khi chúng ra có một tập hợp biến đầu vào 𝑋 = {𝑥1, 𝑥2, … , 𝑥𝑁} và một tập hợp nhãn tương ứng 𝑌 = {𝑌1, 𝑌2, … , 𝑌𝑁} trong đó 𝑥𝑖, 𝑦𝑖 là các vector Các cặp dữ liệu biết trước (𝑥𝑖, 𝑦𝑖) được gọi là tập training data (dữ liệu huấn luyện) Từ tập training data này, chúng ta cần tạo ra một hàm số ánh xạ mỗi phần tử từ tập 𝑋 sang một phần tử (xấp xỉ) tương ứng của tập 𝑌:
𝑌𝑖 ≈ 𝑓(𝑥𝑖), ∀𝑖 = 1,2, … , 𝑁
Trang 2517
Mục đích là xấp xỉ hàm số f thật tốt để khi có một dữ liệu x mới, chúng ta
có thể tính được nhãn tương ứng của nó 𝑦 = 𝑓(𝑥)
Ví dụ trong nhận dạng chữ viết tay, ta có ảnh của hàng nghìn ví dụ của mỗi chữ số được viết bởi nhiều người khác nhau Chúng ta đưa các bức ảnh này vào trong một thuật toán và chỉ cho nó biết mỗi bức ảnh tương ứng với chữ số nào Sau khi thuật toán tạo ra một mô hình, tức một hàm số mà đầu vào là một bức ảnh và đầu ra là một chữ số, khi nhận được một bức ảnh mới mà mô hình chưa nhìn thấy bao giờ, nó sẽ dự đoán bức ảnh đó chứa chữ số nào
Thuật toán dò các khuôn mặt trong một bức ảnh đã được phát triển từ rất lâu Thời gian đầu, facebook sử dụng thuật toán này để chỉ ra các khuôn mặt
trong một bức ảnh và yêu cầu người dùng tag friends - tức gán nhãn cho mỗi khuôn mặt Số lượng cặp dữ liệu (khuôn mặt, tên người) càng lớn, độ chính xác
ở những lần tự động tag tiếp theo sẽ càng lớn Bản thân thuật toán dò tìm các
khuôn mặt trong 1 bức ảnh cũng là một thuật toán Supervised learning với
training data (dữ liệu học) là hàng ngàn cặp (ảnh, mặt người) và (ảnh, không
phải mặt người) được đưa vào Chú ý là dữ liệu này chỉ phân biệt mặt người và không phải mặt người mà không phân biệt khuôn mặt của những người khác
Regression (Hồi quy): Nếu nhãn không được chia thành các nhóm mà là
một giá trị thực cụ thể thì bài toán sẽ đưa về dạng regression Ví dụ: một căn nhà rộng x m2, có y phòng ngủ và cách trung tâm thành phố z km sẽ có giá là bao nhiêu?
Trang 2618
Học không giám sát (Unsupervised learning)
Trong thuật toán này, chúng ta không biết được outcome hay nhãn mà chỉ
có dữ liệu đầu vào Thuật toán unsupervised learning sẽ dựa vào cấu trúc của
dữ liệu để thực hiện một công việc nào đó, ví dụ như phân nhóm (clustering) hoặc giảm số chiều của dữ liệu (dimension reduction) để thuận tiện trong việc lưu trữ và tính toán Một cách toán học, Unsupervised learning là khi chúng ta chỉ có dữ liệu vào X mà không biết nhãn Y tương ứng Những thuật toán loại này được gọi là Unsupervised learning vì không giống như Supervised learning, chúng ta không biết câu trả lời chính xác cho mỗi dữ liệu đầu vào [1] Giống như khi ta học, không có thầy cô giáo nào chỉ cho ta biết đó là chữ A hay chữ
B Cụm không giám sát được đặt tên theo nghĩa này
Các bài toán Unsupervised learning được tiếp tục chia nhỏ thành hai loại:
Clustering (phân nhóm): Một bài toán phân nhóm toàn bộ dữ liệu X thành các nhóm nhỏ dựa trên sự liên quan giữa các dữ liệu trong mỗi nhóm Ví dụ: phân nhóm khách hàng dựa trên hành vi mua hàng Điều này cũng giống như việc ta đưa cho một đứa trẻ rất nhiều mảnh ghép với các hình thù và màu sắc khác nhau, ví dụ tam giác, vuông, tròn với màu xanh và đỏ, sau đó yêu cầu trẻ phân chúng thành từng nhóm Mặc dù không cho trẻ biết mảnh nào tương ứng với hình nào hoặc màu nào, nhiều khả năng chúng vẫn có thể phân loại các mảnh ghép theo màu hoặc hình dạng
Association: Là bài toán khi chúng ta muốn khám phá ra một quy luật dựa trên nhiều dữ liệu cho trước Ví dụ: những khách hàng nam mua quần áo thường có xu hướng mua thêm đồng hồ hoặc thắt lưng; những khán giả xem phim Spider Man thường có xu hướng xem thêm phim Bat Man, dựa vào đó tạo ra một hệ thống gợi ý khách hàng (Recommendation System)
1.4.2 Học quá khớp, học chưa khớp và học vừa khớp
Mô hình sau khi huấn luyện có thể đạt hiệu quả không tốt khi dự đoán với một dữ liệu mới Chuyện này xảy ra là do mô hình chưa tổng quát hoá được
Trang 2719
với toàn bộ tập dữ liệu Nguyên nhân cũng khá dễ hiểu khi mà tập huấn luyện chỉ là một tập nhỏ chưa thể đại diện cho toàn thể dữ liệu được và hơn nữa có thể nó còn bị nhiễu Có thể chia nguyên nhân ra làm 2 loại chính là chưa khớp hoặc quá khớp [1]
Hình 1.12: Hình biểu diễn mô hình học chưa khớp (bên trái), học vừa
khớp (ở giữa) và học quá khớp (bên phải)
Học quá khớp (Overfitting):
Học quá khớp đại diện cho việc mô hình rất khớp với tập huấn luyện nhưng khi đem ra dự đoán với dữ liệu mới thì lại không phù hợp Nguyên nhân có thể
do chưa đủ dữ liệu để đánh giá hoặc do mô hình của ta quá phức tạp Mô hình
bị quá phức tạp khi mà mô hình của ta sử dụng cả những nhiễu lớn trong tập
dữ liệu để học, dấn tới mất tính tổng quát của mô hình Ví dụ như ở hình 1 phía bên phải ở trên Mô hình của ta gần như mong muốn bao được hết tất cả các điểm làm cho biên độ dao động của nó lớn quá mức Mô hình này mà dự đoán với 1 giá trị mới của x thì khả năng y sẽ bị lệch đi rất nhiều
Học chưa khớp (Underfitting):
Mô hình được coi là chưa khớp nếu nó chưa được chưa phù hợp với tập dữ liệu huấn luyện và cả các mẫu mới khi dự đoán Nguyên nhân có thể là do mô hình chưa đủ độ phức tạp cần thiết để bao quát được tập dữ liệu Ví dụ như hình
1 phía bên trái ở trên Tập dữ liệu huấn luyện loanh quanh khúc y = sin(2πx)
Trang 2820
thế nhưng mô hình của ta chỉ là một đường thẳng mà thôi Rõ ràng như vậy thì
nó không những không thể ước lượng được giá trị của y với x mới mà còn không hiệu quả với cả tập dữ liệu (x, y) có sẵn
Học vừa khớp (Goodfitting)
Mô hình này nằm giữa 2 mô hình chưa khớp và quá khớp cho ra kết quả hợp lý với cả tập dữ liệu huấn luyện và các giá trị mới Lý tưởng nhất là khớp được với nhiều dữ liệu mẫu và cả các dữ liệu mới Tuy nhiên trên thực tế được
mô hình như vậy rất hiếm
1.5 HỌC SÂU (DEEP LEARNING)
Học sâu (Deep Learning) là một lĩnh vực trong trí tuệ nhân tạo mà mục tiêu chính là xây dựng và đào tạo các mạng thần kinh nhân tạo sâu (hay còn gọi là mạng neural sâu) để tự động học và hiểu dữ liệu đầu vào, từ đó suy luận đầu ra tốt nhất [29] Học sâu là một phần quan trọng của máy học (machine learning)
và nó tập trung vào việc sử dụng các mô hình mạng nơ-ron sâu để giải quyết các nhiệm vụ phức tạp, như nhận dạng hình ảnh, nhận dạng video, xử lý ngôn ngữ tự nhiên, tự động lái xe, và nhiều ứng dụng khác trong đời sống
Là một phần của học máy, học sâu giúp máy tính tự động học từ dữ liệu mẫu, cải thiện khả năng của chúng trong việc tự động phân loại, dự đoán, hiểu,
và gieo thông tin Học sâu được thực hiện thông qua việc xây dựng các mạng nơ-ron sâu với nhiều tầng (layer) và hàng trăm hoặc hàng nghìn tham số để học
và biểu diễn dữ liệu
Hình 1.13: Minh họa về mô hình hoạt động của Deep Learning [38]
Trang 2921
Mạng nơ-ron là một tập hợp các nút (neurons) kết nối với nhau qua các trọng số Các nút này thường được tổ chức thành các lớp (layers) gồm lớp đầu vào (input layer), các lớp ẩn (hidden layers), và lớp đầu ra (output layer):
Lớp đầu vào: Một mạng nơ-ron nhân tạo sẽ có một số nút để nhập dữ liệu đầu vào Các nút này tạo nên lớp đầu vào của hệ thống
Lớp ẩn: Lớp đầu vào xử lý và chuyển dữ liệu đến các lớp sâu hơn trong mạng nơ-ron Các lớp ẩn này xử lý thông tin ở các cấp độ khác nhau, thích ứng với hành vi của mình khi nhận được thông tin mới Các mạng học sâu có hàng trăm lớp ẩn có thể được dùng để phân tích một vấn đề từ nhiều góc độ khác nhau Ví dụ nếu bạn phải phân loại hình ảnh của một loài vật chưa xác định, bạn sẽ cần so sánh hình ảnh này với các loài vật đã biết Chẳng hạn, bạn sẽ quan sát hình dáng của cặp mắt, đôi tai, kích thước, số chi và hình mẫu lông của loài vật đó Bạn sẽ cố gắng xác định các hình mẫu, chẳng hạn như loài vật có móng guốc nên nó có thể là bò hoặc hươu, loài vật có mắt mèo nên nó có thể là một loài mèo hoang dã nào đó Các lớp ẩn trong mạng nơ-ron chuyên sâu hoạt động theo cùng một cách Nếu một thuật toán học sâu đang cố gắng phân loại một hình ảnh động vật, mỗi lớp ẩn của thuật toán này sẽ xử lý một đặc điểm khác nhau của con vật và cố gắng phân loại chính xác nó
Lớp đầu ra: Lớp đầu ra bao gồm các nút xuất dữ liệu Các mô hình học sâu xuất ra đáp án "có" hoặc "không" chỉ có hai nút trong lớp đầu ra Mặt khác, các mô hình xuất ra nhiều đáp án hơn sẽ có nhiều nút hơn
1.6 CÁC ĐỘ ĐO ĐÁNH GIÁ MÔ HÌNH
Một trong những độ đo đơn giản và thường được sử dụng trong các bài toán
phân lớp là độ chính xác (accuracy) Độ đo này đơn giản tính tỉ lệ giữa số điểm
được dự đoán đúng và tổng số điểm trong tập dữ liệu kiểm thử Ví dụ, nếu có
6 điểm dữ liệu được dự đoán đúng trên tổng số 10 điểm Vậy ta kết luận độ chính xác của mô hình là 0.6 (hay 60%)
Cách tính sử dụng độ chính xác như ở trên chỉ cho chúng ta biết được bao
Trang 3022
nhiêu phần trăm lượng dữ liệu được phân loại đúng mà không chỉ ra được cụ thể mỗi loại được phân loại như thế nào, lớp nào được phân loại đúng nhiều nhất, và dữ liệu thuộc lớp nào thường bị phân loại nhầm vào lớp khác Để có thể đánh giá được các giá trị này, sử dụng một ma trận được gọi là ma trận nhầm
lẫn (confusion matrix)
Về cơ bản, ma trận nhầm lẫn thể hiện có bao nhiêu điểm dữ liệu thực sự
thuộc vào một lớp, và được dự đoán là rơi vào một lớp Để hiểu rõ hơn, hãy xem Bảng sau:
Chúng ta có thể suy ra ngay rằng tổng các phần tử trong toàn ma trận này chính là số điểm trong tập kiểm thử Các phần tử trên đường chéo của ma trận
là số điểm được phân loại đúng của mỗi lớp dữ liệu Từ đây có thể suy ra độ chính xác chính bằng tổng các phần tử trên đường chéo chia cho tổng các phần
tử của toàn ma trận
Trang 31 Cung cấp một giải pháp inference nhanh chóng: Google khẳng định rằng
bộ công cụ này có thể chạy ổn định trên hầu hết các cấu hình phần cứng thông dụng
Dễ dàng cài đặt và triển khai: Việc cài đặt cực kỳ dễ dàng và tiện lợi, có thể triển khai trên nhiều nền tảng khác nhau như Mobile (Android/iOS), Desktop/Cloud, Web và IoT devices
Mã nguồn mở và miễn phí: Toàn bộ source code được công khai trên MediaPipe, người dùng hoàn toàn có thể sử dụng và tùy chỉnh trực tiếp để phù hợp với bài toán của mình
x, y và z trong không gian 3D Trong số tọa độ 3D đầu ra thu được, tọa độ X
và Y được chuẩn hóa theo chiều rộng và chiều cao của hộp giới hạn Tọa độ Z
Trang 3224
biểu thị thông tin độ sâu và giá trị của nó trở nên nhỏ hơn khi nó đến gần máy ảnh hơn và lớn hơn khi nó ở xa máy ảnh hơn, sử dụng vị trí cổ tay làm điểm gốc
Mediapipe Hands kết hợp hai mô hình (model) hoạt động phụ thuộc vào với nhau: Mô hình Palm Detection Model (phát hiện lòng bàn tay) để tìm vị trí của bàn tay và một mô hình Hand Landmark Model (mốc bàn tay) để định vị chính xác 21 tọa độ khớp ngón tay từ vị trí tìm được ở Palm Detection [44]
Hình 2.2: Mô hình hoạt động của MediaPipe Hands [27]
Ban đầu, mô hình Palm Detection được sử dụng với một máy dò một lần gọi là Blaze Palm Máy dò này hỗ trợ MediaPipe để giảm độ phức tạp về thời gian của việc phát hiện lòng bàn tay dựa trên tập dữ liệu lớn về kích thước bàn tay trong hình ảnh đầu vào Mô hình này hoạt động trên toàn bộ hình ảnh và trả
về một hộp giới hạn tập trung làm nổi bật các điểm chính, chẳng hạn như lòng bàn tay và nắm tay, để phát hiện lòng bàn tay thay vì tập trung vào các đối tượng không cần thiết
Sau đó, mô hình Hand Landmark sử dụng đầu ra của Palm Detection để ước tính các key points trên bàn tay Điều này tạo ra ba đầu ra như sau:
21 điểm đốt ngón tay trong không gian 3D
Hand flag hiển thị xác suất xuất hiện bàn tay trong hình ảnh đầu vào
Phân loại nhị phân tay trái và tay phải
Trang 3325
Hình 2.3: Các điểm khớp ngón tay nhận diện bởi Mediapipe [44]
Sau khi phát hiện lòng bàn tay trên toàn bộ hình ảnh, mô hình mốc bàn tay tiếp theo thực hiện định vị chính xác điểm chính của 21 tọa độ khớp tay 3D bên trong các vùng bàn tay được phát hiện thông qua hồi quy, đó là dự đoán tọa độ trực tiếp Mô hình này học cách biểu diễn tư thế bàn tay bên trong nhất quán và mạnh mẽ ngay cả đối với bàn tay có thể nhìn thấy được một phần và khả năng
tự che Để có thể ước tính chính xác được 21 điểm mốc bàn tay này, các nhà phát triển đã phải đánh dấu thủ công 30.000 hình ảnh trong thế giới thực với tọa độ 3D bằng cách sử dụng bản đồ độ sâu hình ảnh Để bao quát tốt hơn các
tư thế bàn tay có thể có và cung cấp thêm sự giám sát về bản chất của hình ảnh bàn tay, mô hình cũng kết xuất tổng hợp chất lượng cao trên nhiều nền khác nhau và ánh xạ nó tới các tọa độ 3D tương ứng
2.2 SVM (SUPPORT VECTOR MACHINE)
Máy vectơ hỗ trợ (Support Vector Machine) là một thuật toán học máy có giám sát được sử dụng cho phân loại dữ liệu [42] Mục tiêu chính của thuật toán SVM là tìm siêu phẳng tối ưu trong không gian N chiều có thể phân tách các điểm dữ liệu trong các lớp khác nhau trong không gian đặc trưng
Siêu phẳng cố gắng sao cho khoảng cách giữa các điểm gần nhất của các lớp khác nhau phải lớn nhất có thể Kích thước của siêu phẳng phụ thuộc vào
số lượng đặc trưng Nếu số lượng đặc trưng đầu vào là hai thì siêu phẳng chỉ là