Để xây dựng khả năng tương tác cho gương, cần tạo một hệ thống Machine Learning để gương tương tác nhận diện được chuyển động của người dùng. Dữ liệu dùng để “train” hệ thống Machine Learning được thu thập dựa trên tọa độ 3D của các khớp đã xây dựng trên ảnh màu. Từ đó, tạo một tập dữ liệu lớn của nhiều động tác khác nhau và tiến hành “train”.
58 4.3.1. Xây dựng skeleton 3D
Xây dựng skeleton 3D giúp việc nhận diện những động tác chính xác hơn cũng như những chuyển động phức tạp trong không gian ba chiều. Đồng thời khắc phục nhược điểm không xác định được khoảng cách từ máy ảnh tới vật thể trong ảnh. Từ ảnh màu, sau khi nhận diện khớp ta sẽ có được tọa độ x và y của các khớp trên ảnh màu. Tính tọa độ z cho từng khớp dựa vào giá trị độ sâu lấy từ ảnh độ sâu gửi về tương ứng của các khớp đang xét sẽ được dữ liệu tọa độ 3D của các khớp. Việc chuyển đổi skeleton 3D dựa trên các yếu tố: độ tin tưởng của khớp đó trong skeleton 2D và khoảng cách tìm được. Xét từng khớp từ 0 tới 17, nếu độ tin tưởng của khớp đó không đạt, tức không xác định được khớp đó, hoặc khoảng cách tính được quá gần thì khớp đó sẽ bị loại bỏ khỏi việc tính toán skeleton 3D.
Để tăng độ chính xác, giá trị độ sâu của từng khớp sẽ bằng trung bình các giá trị độ sâu xung quanh khớp đó. Từ đó, ta xây dựng được một skeleton 3D từ skeleton 2D và ảnh depth.
59
Hình 4-12 Skeleton bao gồm toa độ các khớp trong không gian xyz
4.3.2. Thu thập dữ liệu chuyển động
Các động tác ra lệnh của người dùng dựa trên chuyển động của khớp bàn tay phải. Để tiến hành “Training”, ta cần có tập dữ liệu đủ lớn của nhiều động tác khác nhau. Dữ liệu bao gồm nhiều mẫu, mỗi mẫu chứa 15 tọa độ của khớp bàn tay phải tương ứng với vị trí của khớp này trong 15 thời điểm khác nhau trong một chuyển động. Các giá trị tọa độ trong mẫu sẽ là tọa độ tương đối so với tọa độ đầu tiên trong mẫu, tức lấy tọa độ đầu tiên trongmẫu là gốc tọa độ.
Mỗi động tác sẽ có một video ghi lại quá trình chuyển động của động tác đó lặp đi lặp lại nhiều lần và ghi lại tọa độ của các khớp tương ứng với từng frame của video thành tập dữ liệu tọa độ của các khớp để có được lượng mẫu càng nhiều càng tốt.
60 Lấy tín hiệu màn hình đỏ nhấp nháy được đặt trong khung hình của video để xác định lúc bắt đầu của mỗi lần chuyển động hoặc dùng đếm ngược thời gian bắt đầu động tác. Dựa vào đó tách từng mẫu từ tập dữ liệu tọa độ tương ứng của với động tác trong video.
Hình 4-13 Quá trình thu thập dữ liệu động tác
Mỗi động tác cần ít nhất 100 mẫu để đảm bảo độ chính xác. Chuyển đổi dữ liệu thành một ma trận gồm 45 cột và số hàng tương ứng số mẫu đưa vào. Mỗi mẫu sẽ được gán cho giá trị đại diện cho loại động tác được train, tạo thành một tập “target”. Tách tập dữ liệu thành dữ liệu train và dữ liệu kiểm tra lại thuật toán.
4.3.3. Training
Do tập dữ liệu thu về là gồm các điểm có tọa độ XYZ không phù hợp cho việc phân bổ tuyến tính của SVM ta cần tiến hành tiền sử lý dữ liệu đầu vào. Mỗi động tác cần ít nhất 100 mẫu để đảm bảo độ chính xác và chuyển đổi dữ liệu thành một ma trận gồm 45 cột. Nghĩa là từ ma trận (100,15,3) ta chuyển đổi thành ma trận (100,45). Mỗi mẫu sẽ được gán cho giá trị đại diện cho loại động tác được train, tạo thành một tập ma trận “target” có dạng (100,1). Tách tập dữ liệu thành dữ liệu train và dữ liệu kiểm tra lại thuật toán.
Sử dụng phương pháp Linear Kernel cho thuật toán SVM đã nói ở phần cơ sở lý thuyết để train nhận diện các động tác. Hệ thống sẽ đưa từng mẫu của tập dữ liệu vào để tính kết quả và so sánh kết quả với giá trị tương ứng trong tập “target”. Nếu đúng, hệ thống sẽ tiếp tục với mẫu tiếp theo, nếu sai hệ số trong
61
phương trình sẽ được thay đổi theo công thức hồi quy và tiếp tục tính với mẫu tiếp theo. Việc này giúp tìm được hệ số chính xác nhất có thể đáp ứng được việc tìm các vector biên phân loại được chuyển động. Cuối cùng, ta được phương trình có thể phân loại được các động tác với giá trị đầu vào là các giá trị tương tự như mẫu của tập dữ liệu.
4.3.4. Nhận diện chuyển động
Để tiến hành nhận diện chuyển động trực tiếp từ dữ liệu đưa về của máy ảnh, đầu tiên, sau khi có được skeleton 3D tiến hành lưu lại tọa độ của khớp, ở đây xét tọa độ của khớp tay phải. Khi đủ 15 tọa độ thì sẽ đưa vào phương trình nhận để nhận biết loại chuyển động.
Tiếp theo, cứ mỗi 3 tọa độ mới thêm vào, thì 3 tọa độ mới đó sẽ được đưa vào sau chuỗi 15 tọa độ và xóa 3 tọa độ đầu tiên trong chuỗi rồi tiếp tục đưa chuỗi 15 tọa độ này vào phương trình nhận diện chuyển động. Điều này giúp cải thiện tốc độ xử lý của hệ thống gương tương tác.
Hình 4-14 Nguyên lý đưa dữ liệu vào hệ thống
Để tránh trường hợp người dùng không chuyển động mà hệ thống vẫn nhận diện động tác, xét khoảng cách giữa các tọa độ liên tiếp nhau trong chuỗi lớn hơn giá trị 0.03 mét, nếu số lượng các khoảng cách thỏa điều kiện đó lớn hơn 12 thì cho đó là một chuyển động.
Kết quả, ta có thể đưa liên tục tọa độ của bàn tay phải vào hệ thống để kiểm tra loại chuyển động đó. Có 4 loại chuyển động được đưa vào train là gạt trái, gạt phải, gạt lên, gạt xuống. Nếu là gạt trái hệ thống sẽ trả về giá trị 1 cho gạt trái, 2 cho gạt phải, 3 cho gạt lên và 4 cho gạt xuống.
62
Hình 4-15 Kết quả nhận diện chuyển động khi gạt phải
63
Bảng 4-1 Kết quả thực nghiệm nhận diện chuyển động
Loại STT
Gạt trái Gạt phải Gạt lên Gạt xuống
1 ✓ ✓ ✓ ✓ 2 ✓ ✓ ✓ ✓ 3 ✓ ✓ ✓ 4 ✓ ✓ ✓ ✓ 5 ✓ ✓ ✓ ✓ 6 ✓ ✓ ✓ 7 ✓ ✓ ✓ 8 ✓ ✓ ✓ ✓ 9 ✓ ✓ ✓ ✓ 10 ✓ ✓ ✓ ✓ 11 ✓ ✓ ✓ 12 ✓ ✓ ✓ ✓ 13 ✓ ✓ ✓ ✓ 14 ✓ ✓ 15 ✓ ✓ ✓ 16 ✓ ✓ ✓ ✓ 17 ✓ ✓ ✓ ✓ 18 ✓ ✓ ✓ ✓ 19 ✓ ✓ ✓ 20 ✓ ✓ ✓ ✓
64
✓ Nhận diên đúng
Nhận diện sai hoặc không nhận diện được
Kết quả:
- Độ chính xác của động tác gạt trái là 95%
- Độ chính xác của động tác gạt phải là 90%
- Độ chính xác của động tác gạt lên là 85%
- Độ chính xác của động tác gạt xuống là 90%
Yếu tố ảnh hưởng đến độ chính xác của nhận diện chuyển động:
- Tập dữ liệu để train của hệ thống phải đủ lớn, nếu không sẽ dẫn đến việc hệ
thống không đủ dữ liệu để nhận dạng dẫn đến nhận dạng sai.
- Tốc độ ra động tác của người tương tác không được quá nhanh cũng như quá chậm, nếu quá nhanh camera sẽ không thể ghi lại đủ khung hình cho chuyển động, nếu quá chậm thì khoảng các tọa độ trong các thời điểm của chuyện động sẽ quá ngắn dẫn đến hệ thống hiểu nhằm người tương tác đang không ra lệnh.
Nhận xét: Các chuyển động được nhận diện tương đối chính xác, tuy nhiên
nếu chuyển động quá nhanh thì hệ thống sẽ không nhận diện được chuyển động.