MỞ ĐẦU 1. Tổng quan 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 [1]. 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 [2], các vấn đề nhận dạng đối tượng cần thiết trong an ninh [3]. 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 [4].
Nhận diện các cử chỉ 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 cử chỉ 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 cử chỉ 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ư y học [5], nhận dạng ngôn ngữ cử chỉ [6], điều khiển robot [7], thực tế ảo [8], điều khiển các thiết bị trong nhà [9] và các ứng dụng giải trí [10]. Giải thuật nhận dạng cử chỉ bàn tay được phát triển ban đầu dựa trên kỹ thuật xử lý ảnh và thị giác máy tính.
Các giải thuật này chủ yếu dựa vào việc phân đoạn và tách đặc trưng của bàn tay dựa vào một số đặc trưng như màu da, khung xương, độ sâu, mô hình 3 chiều, hoặc nhận dạng dựa vào chuyển động [11]-[13]. Trong những năm gần đây, trí tuệ nhân tạo trong đó cụ thể là các mạng học sâu (Deep neural network) trở nên hiệu quả và được áp dụng trong nhiều ứng dụng như nhận dạng, phân loại ảnh, xử lý ngôn ngữ tự nhiên. Một trong những yếu tố chính là việc phát triển của công nghệ vi mạch cho phép các hệ thống máy tính có cấu hình mạnh ra đời đã tạo điều kiện cho việc thực thi các mạng nhiều lớp trở nên hiệu quả hơn trước. Song song với việc phát triển phần cứng cũng 6 Luan van như các mạng học sâu, sự phát triển của các thư viện mã nguồn mở cho phép thiết kế các mạng học sâu cho các ứng dụng cũng đa dạng và đơn giản hơn.
Trong đề tài này, nhóm nghiên cứu thiết kế mạng nơ-ron tích chập cho bài toán nhận dạng cử chỉ bàn tay. Mạng nơ-ron tích chập được huấn luyện trên tập mẫu được nhóm nhóm tự tạo bao gồm 27,600 mẫu với 6 lớp khác nhau bao gồm “năm ngón tay khép kín”, “năm ngón tay mở”, “cử chỉ bốn ngón tay mở”, “bàn tay nắm”, “cử chỉ có ba ngón tay mở” và “cử chỉ có hai ngón tay mở”, được đặt tên tương ứng từ class1 đến class6. Quá trình thực nghiệm cho thấy, hệ thống có thể nhận dạng đạt độ chính xác lên đến 98. Hơn nữa nhóm xây dựng ứng dụng nhận dạng cử chỉ bàn tay thời gian thực, các ảnh được đọc trực tiếp từ camera.
Ứng dụng đọc trực tiếp từ camera đòi hỏi độ phức tạp cao hơn. Trong đó, một mô hình cho việc tách ảnh bàn tay từ ảnh chụp được vì ảnh thu được từ cảm là ảnh toàn khung bao gồm cả thân người, bàn tay và một số đối tượng cũng như vật thể khác. Sau khi ảnh bày tay được tách ra từ ảnh toàn khung, một mô đun khác được sử dụng để nhận dạng cử chỉ bàn tay. Vì tính chất độ phức tạp của ảnh trong thời gian thực, trong ứng dụng này nhóm chỉ tiết kế nhận dạng theo thời gian thực 3 cử chỉ đơn giản là “Like”, “Ok”, và cử chỉ “2 ngón tay vuông góc”.
Mục tiêu đề tài Thiết kế và mô phỏng hệ thống nhận dạng cử chỉ bàn tay dùng mạng nơ-ron chập với ngõ vào là các ảnh chứa cử chỉ bàn tay. Đối với ảnh tĩnh, hệ thống có khả năng nhận dạng 6 cử chỉ bàn tay khác nhau bao gồm “năm ngón tay khép kín”, “năm ngón tay mở”, “cử chỉ bốn ngón tay mở”, “bàn tay nắm”, “cử chỉ có ba ngón tay mở” và “cử chỉ có hai ngón tay mở”. Đối với ảnh đọc trực tiếp từ camera, hệ thống có khả năng nhận dạng theo thời gian thực 3 trạng thái “Like”, “Ok” và trạng thái “2 ngón tay vuông góc”. Đối tượng và phạm vi nghiên cứu Đối tượng nghiên cứu: - Lý thuyết về xử lý ảnh, phát hiện đối tượng trong ảnh, trích xuất đặc trưng.
- Mạng nơ-ron tích chập. 7 Luan van Phạm vi nghiên cứu: - Nhận dạng được 06 phân loại cử chỉ bàn tay trong ảnh tĩnh: “năm ngón tay khép kín”, “năm ngón tay mở”, “cử chỉ bốn ngón tay mở”, “bàn tay nắm”, “cử chỉ có ba ngón tay mở” và “cử chỉ có hai ngón tay mở”. - Nhận dạng theo thời gian thực 3 cử chỉ đơn giản là “Like”, “Ok”, và cử chỉ “2 ngón tay vuông góc”. Phương pháp nghiên cứu Phân tích đánh giá các hệ thống nhận dạng cử chỉ bàn tay đã được công bố, nghiên cứu mạng nơ-ron tích chập.
Thiết kế mô hình, huấn luyện, đánh giá và hiệu chỉnh thông số. Nội dung nghiên cứu - Nghiên cứu cơ sở lý thuyết về xử lý ảnh: phát hiện bàn tay và trích xuất đặc trưng. - Nghiên cứu các giải pháp nhận dạng và phân loại các cử chỉ bàn tay. - Thiết kế và xây dựng hệ thống nhận dạng và phân loại các cử chỉ bàn tay từ các ảnh tỉnh bàn tay được thu thập thông qua camera điện thoại.
- Thu thập dữ liệu, phân tích, mô phỏng hệ thống và đánh giá kết quả. 8 Luan van Chương 2 MẠNG NƠ-RON TÍCH CHẬP VÀ ỨNG DỤNG NHẬN DẠNG CỬ CHỈ BÀN TAY 2. Mạng nơ-ron tích chập Mạng nơ-ron tích chập hay còn có thể gọi ngắn gọn là mạng nơ-ron chập (Convolutional Neural Network - CNN) dựa trên phép tích chập của ảnh với các bộ lọc thu được trong quá trình huấn luyện để tách các đặc điểm đặc trưng của ảnh. Trong mạng nơ-ron tích chập, các bộ lọc đã biết trong xử lý ảnh không hoặc ít khi được sử dụng để tách biên hay loại bỏ nhiễu.
Các bộ lọc thu được sau quá trình huấn luyện có thể rất khác với các bộ lọc thông dụng trong xử lý ảnh. Trong giải thuật học có giám sát, các bộ lọc được cập nhật trọng số sao cho hàm mất mát tiến về điểm cực tiểu. Ví dụ, lớp tích chập đầu tiên được huấn luyện để phát hiện biên, trong khi các lớp sau được huấn luyện để phát hiện các đặc tính phức tạp hơn của các đối tượng trong ảnh. Một trong những ý tưởng hình thành nên mạng nơ-ron tích chập là việc chia sẻ các trọng số.
Trong các lớp kết nối đầy đủ của mạng nhiều lớp, một nơ-ron ở lớp sau được kết nối đến tất cả các nơ-ron ở lớp trước nó. Tương tự như vậy, một nơ- ron sẽ kết nối đến tất cả các nơ-ron ở lớp sau nó. Kết quả là tạo ra số lượng kết nối và các trọng số tương ứng khá lớn trong mạng. Trong lớp chập, nơ-ron ở lớp sau chỉ kết nối đến 1 nhóm các nơ-ron ở lớp trước.
Hơn nữa các nơ-ron kết nối đến các nhóm này sử dụng cùng một tập trọng số. Do đó mạng nơ-ron tích chập hiệu quả khi số lượng lớp mạng tăng lên. Mạng nơ-ron tích chập là một mô hình khá phổ biến trong các mạng sâu nhiều lớp (Deep neural network). Mạng nơ-ron tích chập là sự kết hợp của mạng nơ-ron với các lớp kết nối đủ và mạng nơ-ron với các lớp chập.
Một mạng nơ-ron tích chập có kiến trúc như hình 2. Input image MaxPooling Convolutional layer MaxPooling Fully connected layer Convolutional layer Hình 2.1: Mạng nơ-ron tích chập. 9 Luan van Mạng nơ-ron tích chập trong hình 2.1 có kiến trúc bao gồm 2 lớp chập (convolutional layer), 2 lớp gộp (pooling layer) và lớp kết nối đầy đủ (fully- connected layer). Ảnh ngõ vào là các ma trận 2 chiều với giả sử có các giá trị nhị phân như trong hình 2.
Bộ lọc (filter) hay còn được gọi là “kernel” có kích thước 3×3 và giả sử có các giá trị nhị phân như hình 2. Nếu việc kết gán 0 không được thực hiện vào biên ảnh ban đầu thì kích thước ma trận ngõ ra sẽ nhỏ hơn kích thước ảnh ma trận ảnh ngõ vào. Các phần tử của ma trận ngõ ra, được gọi là các bản đồ đặc trưng (feature map), thu được từ phép tính tổng của phép nhân từ các phần tử bộ lọc và ảnh khi trượt bộ lọc hết ảnh. Các bản đồ đặc trưng được tạo ra như minh họa trong hình 2.
(a) ma trận vào (b) 3x3 kernel (b) Ngõ ra feature map Hình 2.2: Mô tả tích chập ảnh với bộ lọc. Các mạng nơ-ron tích chập điển hình có 3 lớp cơ bản. Lớp chập thực hiện phép tích chập tạo ra tập có giá trị tích cực tuyến tính trong các bản đồ đặc trưng. Các giá trị tuyến tính trong bản đồ đặc trưng được cho qua các hàm kích hoạt phi tuyến như hàm ReLU.
Lớp này còn được gọi là tầng detector. Lớp thứ 2 trong mô hình là lớp gộp được dùng để hiệu chỉnh ngõ ra. Các hàm Pooling đặt ngõ ra của lớp bản đồ đặc 10 Luan van trưng trong mối liên hệ với các ngõ ra lân cận. Các hàm Pooling thường được sử dụng trong các mạng nơ-ron tích chập là hàm Max Pooling, Average Pooling hoặc hàm Sum Pooling.
Hàm Max Pooling được sử dụng phổ biến trong các mạng nơ-ron tích chập ứng dụng trong nhận dạng, phân loại ảnh. Trong tất cả các trường hợp, Pooling tạo ra các giá trị biểu diễn cho dữ liệu tương đối bất biến đối với sự dịch chuyển của dữ liệu ngõ vào. Tính bất biến đối với sự dịch chuyển được hiểu nếu chúng ta dịch chuyển một lượng nhỏ các giá trị đầu vào, các giá trị ngõ ra của lớp Pooling hầu như có thể được giữ không đổi. Tính bất biến đối với các dịch chuyển nội bộ có thể rất hữu ích nếu chúng ta quan tâm tới việc một vài đặc điểm có mặt hơn là xác định chính xác nó ở đâu.
Ví dụ khi chúng ta xác định có sự tồn tại của khuôn mặt trong ảnh hay không, chúng ta không nhất thiết phải biết vị trí chính xác của mắt, chúng ta chỉ cần nhận biết có mắt ở vị trí bên trái và bên phải của khuôn mặt.