Tuyển tập Hội nghị khoa học toàn quốc lần thứ nhất về Động lực học và Điều khiển
Đà Nẵng, ngày 19-20/7/2019, tr. 147-151, DOI 10.15625/vap.2019000271
Nâng cao chất lượng hệ thống nhận dạng cử chỉ tay sử dụng
mạng tích chập với học chuyển đổi
Nguyễn Hoài Nam, Đặng Thanh Hải và Trần Gia Khánh
Bộ môn Điều khiển tự động, Viện Điện, Đại học Bách khoa Hà Nội
Số 1 Đại Cồ Việt, Quận Hai Bà Trưng, Hà Nội, Việt Nam
E-mail:
Tóm tắt
Trong bài báo này, chúng tôi sẽ nhận dạng cử chỉ tay bằng
mạng tích chập (CNN) kết hợp với học chuyển đổi để nâng cao
độ chính xác. Mục tiêu là nhận dạng 17 cử chỉ tay trong tập dữ
liệu của nhóm tác giả Xiao Sun, Yichen Wei, Shuang Liang,
Xiaoou Tang và Jian Sun, CVPR 2015, và nâng cao độ chính
xác nhận dạng. Chúng tơi huấn luyện một mạng tích chập mới
bằng cách học kế thừa từ mạng Google Net. Toàn bộ việc huấn
luyện và kiếm tra mạng được thực hiện với tập dữ liệu được
chia sẻ công khai. Chúng tôi thấy rằng, mạng tích chập được
học chuyển đổi từ mạng đã được huấn luyện sẽ có khả năng
nhận dạng cử chỉ tay tốt hơn. Không những thế, học kế thừa
giúp giảm tài nguyên cần phải sử dụng, và tăng tốc độ học.
Từ khóa: CNN, tích chập, Deep Learning, Nhận dạng cử chỉ
tay, mạng nơron.
1. Mở đầu
Con người hồn tồn có khả năng nhận biết được
những cử chỉ tay, cùng với những quyết định tiếp theo
có thể đưa ra. Sau một thời gian học, chúng ta có thể
giao tiếp gần như dễ dàng bằng cử chỉ tay. Trong thời
gian gần đây, nhiều nghiên cứu quan trọng đã được tiến
hành trong việc phát triển các máy có khả năng phân loại
hình ảnh được chụp bằng cử chỉ tay vào các danh mục
được xem xét. Những hệ thống như vậy đã được tìm thấy
các ứng dụng trong điều khiển trò chơi và điện tử, điều
khiển robot, môi trường thực tế ảo và giao tiếp ngôn ngữ
tự nhiên. Trong nhiều công việc, việc nhận ra cử chỉ tay
tĩnh dựa trên cử chỉ quan trọng hoặc khác biệt tương đối
giữa các cử chỉ, vì rõ ràng là một số cử chỉ tay khá giống
nhau khi xem ở chế độ 2D. Do đó, tập hợp các dấu hiệu
cử chỉ tay được tìm thấy trong cơ sở dữ liệu được trích
xuất cho nhiệm vụ nhận biết. Tuy nhiên, các đặc điểm
phân biệt nhỏ có mặt trong tất cả các cử chỉ, có thể được
cảm nhận bởi con người. Khả năng của các hệ thống
tương tác người – máy để mở rộng vốn từ vựng bằng
cách có khả năng nhận ra nhiều cử chỉ tay hơn là rất quan
trọng, vì điều này cho phép mở rộng ở cấp độ của giao
tiếp và điều khiển.
Trong bài báo này, chúng tôi áp dụng học sâu, dựa
trên mạng tích chập với học chuyển đổi sử dụng mạng
GoogleNet để thực hiện nhiệm vụ phân loại 17 cử chỉ
tay trong tập dữ liệu được chia sẻ công khai.
2. Học sâu
Học sâu là một nhánh của học máy dựa trên việc
học các dữ liệu đại diện, trái ngược với các thuật toán cụ
thể theo nhiệm vụ. Việc học có thể là học giám sát, bán
giám sát hoặc khơng giám sát.
Các mơ hình học sâu được lấy cảm hứng từ các mơ
hình xử lý thơng tin và giao tiếp trong các hệ thống
nơron sinh học nhưng có sự khác biệt khác nhau từ các
đặc tính cấu trúc và chức năng của bộ não sinh học (đặc
biệt là bộ não con người).
Cấu trúc của học sâu thường được xây dựng cùng
với phương pháp lớp chồng lớp. Học sâu giúp tháo gỡ
những khái niệm trừu tượng này và chọn ra những đặc
điểm cần thiết cho việc học.
Trong học sâu, mỗi mức học cách chuyển đổi dữ
liệu đầu vào của nó thành một đại diện tóm lược hơn một
chút. Trong ứng dụng nhận dạng hình ảnh, đầu vào thơ
có thể là một ma trận các điểm ảnh; lớp đại diện đầu tiên
có thể tóm lược các điểm ảnh và mã hóa các cạnh. Lớp
thứ 2 có thể tổng hợp và mã hóa sự sắp xếp của các cạnh.
Lớp thứ 3 có thể mã hóa mũi và mắt, và lớp thứ tư có
thể nhận ra rằng hình ảnh chứa một khn mặt. Quan
trọng, một q trình học sâu có thể tìm hiểu các đặc điểm
để tối ưu hóa ở cấp độ cao. Tất nhiên, điều này khơng
hồn tồn làm giảm nhu cầu điều chỉnh bằng tay; ví dụ,
số lượng lớp và kích cỡ lớp khác nhau có thể cung cấp
mức độ tích hợp khác nhau.
3. Mạng tích chập
Mạng tích chập – Convolutional neural networks
(CNN) là công cụ được sử dụng rộng rãi đối với học sâu.
Nó đặc biệt thích hợp cho việc sử dụng hình ảnh làm đầu
vào mặc dù nó cũng được sử dụng cho các ứng dụng
khác như chữ viết, tín hiệu và các phản hồi liên tục khác.
Tuy nhiên, trường hợp sử dụng cơ bản và phổ biến nhất
của các mạng này là để nhận dạng hình ảnh.
Một mạng tích chập có nhiều lớp như là lớp tích
chập, lớp max-pooling hoặc average-pooling, và lớp liên
kết đủ [1]. Với một hình ảnh đầu vào, lớp đầu tiên của
mạng sẽ xác định kích thước tương ứng như chiều dài,
chiều rộng và số kênh màu. Các nơron trong mỗi lớp tích
chập sẽ học các đặc điểm trong ảnh. Đầu ra của một lớp
tích chập là một bản đồ đặc trưng và là đầu vào của lớp
tiếp theo. Cuối cùng, những đặc điểm đã được học sẽ trở
thành đầu vào của lớp phân loại ở lớp cuối của mạng.
Nguyễn Hoài Nam, Đặng Thanh Hải và Trần Gia Khánh
3.1. Lớp tích chập
Xét một hình ảnh có kích thước đầu vào bằng
32x32x3, đây là một mảng các giá trị pixels. Một hạt
nhân có kích thước 5x5x3 được sử dụng để thực hiện
các phép tính tích chập. Xét vị trí đầu tiên của hạt nhân,
ở góc trên cùng bên trái của hình ảnh đầu vào. Nếu như
hạt nhân trượt dọc theo bức ảnh, nó sẽ nhân giá trị bên
trong hạt nhân với giá trị của điểm ảnh của bức ảnh. Các
phép nhân này tất cả sẽ được tổng hợp. Do đó, lúc này
ta có một số duy nhất và số này đại diện cho hạt nhân
khi ở góc trên cùng bên trái của bức ảnh. Bây giờ ta lặp
lại quy trình này cho toàn bộ đầu vào, bước tiếp theo ta
sẽ dịch hạt nhân sang phải 1 đơn vị và sau đó lại sang
phải 1 đơn vị. Mỗi vị trí duy nhất trên đầu vào ta thu
được một số. Sau khi trượt hạt nhân qua tất cả các vị trí,
những gì ta thu được là một mảng số 28x28x1 đó chính
là bản đồ đặc trưng.
Giả sử rằng ta dùng 2 hạt nhân 5x5x3 thay vì một
khi đó kích thước của bản đồ đặc trưng sẽ là 28x28x2.
Mỗi một hạt nhân sẽ giúp ta nhận biết được 1 đặc điểm
của ảnh đầu vào. Càng có nhiều hạt nhân, độ sâu của bản
đồ đặc trưng càng lớn và chúng ta càng có nhiều thơng
tin về đầu vào.
Trong ví dụ trên, hạt nhân di chuyển dọc đầu vào
một đơn vị tại một thời điểm. Số lượng điểm ảnh mà hạt
nhân dịch chuyển qua được gọi là stride. Stride thường
được đặt sao cho kích thước đầu ra là một số chẵn. Với
Stride bằng 1 như trên ta thu được một đầu ra có kích
thước 28x28x1. Nếu Stride bằng 2 thì kích thước đầu ra
chỉ cịn 15x15x1. Nếu chúng ta cố tăng stride lên 3, sau
đó chúng ta sẽ gặp vấn đề về khoảng cách và đảm bảo
hạt nhân trượt được trên toàn bộ đầu vào.
3.2. Lớp Pooling
Lớp max-pooling và average–pooling theo sau lớp
tích chập để trích mẫu, từ đó giảm số lượng kết nối tới
lớp tiếp theo. Chúng khơng thực hiện bất kì việc tự học
nào, nhưng giảm số lượng tham số phải học ở lớp tiếp
theo. Đồng thời lớp pooling cũng giúp làm giảm hiện
tượng overfitting. Một lớp max-pooling trả về kết quả là
giá trị lớn nhất trong một hình chữ nhật của đầu vào của
nó. Kích cỡ hình chữ nhật này được xác định trước bởi
giá trị “poolsize”. Tương tự thì lớp average – pooling trả
về kết quả là trung bình cộng các giá trị trong hình chữ
nhật đó.
Lớp pooling qt dọc theo chiều dài và rộng của đầu
vào từng bước một với kích thước được xác định bằng
giá trị “Stride”. Nếu giá trị “poolSize” nhỏ hơn hoặc
bằng giá trị “Stride” thì vùng pooling sẽ không bị chồng
chéo.
3.3. Lớp liên kết đủ
Lớp liên kết đủ kết nối với tất cả các nơ-ron trong
lớp trước. Cách thức hoạt động của lớp này là tổng hợp
tất cả các đặc điểm được học ở các lớp trước để nhận
biết các mẫu lớn hơn. Đối với bài tốn phân loại, lớp liên
kết đủ tổng hợp những tính năng giúp phân loại hình ảnh.
Vì lí do này mà số đầu ra của lớp liên kết đủ cuối cùng
của mạng bằng với số lượng các loại ảnh cần phân loại.
3.4. Học kế thừa
Học kế thừa thông thường được sử dụng trong
những ứng dụng của học sâu. Ta có thể lấy một mạng
tích chập đã được huấn luyện sẵn và sử dụng nó để thiết
kế một mạng tích chập mới để giải quyết bài toán mới.
Việc tinh chỉnh một mạng có sẵn đơn giản và nhanh hơn
rất nhiều so với việc bắt đầu tạo và huấn luyện một mạng
mới. Ngoài ra lợi thế của học sâu là các mạng đã được
huấn luyện sẵn, đã học tập được rất nhiều những tính
năng phong phú. Do đó có thể được áp dụng cho số
lượng lớn các bài tốn tương tự khác.
Ví dụ, ta có thể lấy một mạng đã được huấn luyện
với một vạn hay một triệu ảnh, ta có thể huấn luyện lại
mạng đó với bài tốn chỉ với dữ liệu gồm vài trăm ảnh.
Ta có thể dễ dàng tinh chỉnh lại mạng đã huấn luyện sẵn
với tập dữ liệu nhỏ hơn rất nhiều so với dữ liệu huấn
luyện gốc. Và nếu ta có một tập dữ liệu rất lớn, thì học
chuyển đổi có thể nhanh hơn rất nhiều so với huấn luyện
một mạng mới từ đầu.
Học chuyển đổi cho phép người dùng:
Chuyển đổi những tính năng đã được học của một mạng
đã được huấn luyện sẵn tới một mạng tích chập mới chưa
được huấn luyện.
Giảm thời gian huấn luyện và kích cỡ của tập dữ liệu.
Thực hiện học sâu mà khơng cần học tạo một mạng mới
tồn bộ.
3.5. Dữ liệu huấn luyện
Tập dữ liệu được sử dụng thu được từ cơ sở dữ liệu
được chia sẻ công khai [4], bao gồm 17 cử chỉ tay. Hình
4.1 biểu thị 17 cử chỉ tay tĩnh chưa được xử lý cho nhiệm
vụ nhận dạng. Các cử chỉ biểu thị các kí tự, trên nền
phông tối và hiển thị cả các khớp tay (các chấm màu).
Tập dữ liệu bao gồm tổng cộng các tay phải của 9 người.
Mỗi người bao gồm 17 cử chỉ khác nhau và có 500 ảnh
cho mỗi cử chỉ. Kích thước mỗi ảnh là 320x240 pixel.
Để việc học được chính xác, 70% tổng số ảnh được
dùng để huấn luyện, 15% cho tập test và 15% cho tập
validation.
Huấn luyện một mạng và thực hiện dự đoán với dữ
liệu mới u cầu hình ảnh có kích thước bằng với kích
thước ảnh đầu vào của mạng. Do đó trước khi huấn
luyện mạng, ta cần điều chỉnh lại kích thước ảnh trong
tập dữ liệu bằng với kích thước đầu vào mạng. Hình ảnh
cử chỉ tay gốc có kích thước 320x240 pixels. Một thuật
tốn được sử dụng để thay đổi lại kích thước hình ảnh
bằng với kích thước của mạng được sử dụng để học kế
chuyển đổi là 224x224. Thuật toán giúp tiền xử lý tất cả
các tập ảnh trong tập dữ liệu huấn luyện, tập test và
validations.
4. Huấn luyện mạng nơron
4.1. Hàm mục tiêu
Hàm mục tiêu được sử dụng ở trong bài này là hàm
tổng bình phương sai lệch (sum of squares error – SSE).
SSE là một thước đo sai lệch giữa hai biến ngẫu nhiên
ặng Thanh Hải
Nâng cao chất lượng hệ thống nhận dạng cử chỉ tay sử dụng mạng tích chập với học chuyển đổi
liên tục [1]. Đối với đầu ra mạng Y và đầu ra mẫu T,
hàm SSE được cho bởi:
k
L Yi Ti
2
(1)
i 1
Trong đó, k là số lượng quan sát. [1]
Hình 4.1. 17 cử chỉ tay của một người
Mạng trong mạng tích chập có thể trích xuất thông
tin về các chi tiết nhỏ, trong khi hạt nhân 5x5 có thể bao
phủ một trường tiếp cận lớn của đầu vào, do đó cũng có
thể trích xuất thơng tin của nó. Ta cũng có một lớp
pooling giúp giảm kích thước không gian và chống lại
hiện tượng overfitting. Trên hết, ta cũng có lớp ReLU
sau mỗi lớp conv, giúp cải thiện tính phi tuyến. Về cơ
bản, mạng có thể thực hiện các chức năng của các hoạt
động khác nhau này trong khi vẫn cân nhắc tính tốn [5].
GoogleNet là một trong những mơ hình đầu tiên đưa
ra ý tưởng rằng các lớp CNN không phải luôn luôn được
xếp chồng lên nhau. Cùng với môđun Inception,
GoogleNet không chỉ giảm số lượng tham số và kích
thước khơng gian, mà cịn cải thiện hiệu suất và tốc độ
tính tốn.
4.3. Huấn luyện mạng mới
Mạng tích chập trong bài này được huấn luyện trên
76500 hình ảnh với kích thước 224x224x3 mỗi ảnh. Tất
cả việc huấn luyện và mơ phỏng được thực hiện trên máy
tính với cấu hình: CPU Intel(R) Core (TM) i5–5200
@2.20GHz (4CPUs), ~ 2.2GHz, GPU đơn GeForce 940
M VRAM 2020 MB, RAM 8192 MB trên mơi trường
Matlab.
Thuật tốn huấn luyện được sử dụng trong đề tài là
Mini – Batch Gradient Descent với giá trị MinibatchSize
= 84. Hình 6.1 mơ tả q trình huấn luyện mạng.
4.2. Mạng đã được huấn luyện
Trong bài báo này, chúng tôi sử dụng học chuyển
đổi từ mạng đã được huấn luyện là Google Net. Google
Net là một mạng CNN có 22 lớp và đã giành chiến thắng
tại ILSVRC 2014 với một top 5 tỉ lệ sai lệch bằng 6.7%.
Đây là một trong những cấu trúc mạng tích chập đầu tiên
thực sự lạc ra khỏi cách tiếp cận thông thường đơn giản
là xếp chồng các lớp Conv và pooling lên nhau trong
một cấu trúc tuần tự. Các tác giả cũng nhấn mạng rằng
cấu trúc mới này đặt sự cân nhắc đáng kể vào bộ nhớ và
sử dụng năng lượng.
Về cơ bản, ở mỗi lớp tích chập truyền thống, ta phải
đưa ra lựa chọn về việc có một hoạt động pooling và một
hoạt động Conv (cũng có cả lựa chọn kích thước hạt
nhân). Môđun Inception cho phép thực hiện tất cả các
hoạt động trên song song. Trên thực tế đây chính là ý
tưởng “navie” mà các tác giả đã nghĩ ra.
Nếu làm theo cách này, chúng ta sẽ kết thúc với một
kênh có độ sâu vơ cùng lớn cho khối đầu ra. Các tác giả
đã giải quyết vấn đề này bằng cách thêm các lớp 1x1
trước các lớp 3x3 và 5x5. Các lớp 1x1 (hay mạng trong
lớp mạng) cung cấp phương pháp giảm kích thước mạng.
Chẳng hạn, giả sử rằng ta có một khối đầu vào
100x100x60 (đây không nhất thiết là đầu vào ảnh mà chỉ
là đầu vào bất kỳ của một lớp trong mạng). Áp dụng 20
hạt nhân tích chập 1x1 sẽ cho phép giảm kích thước khối
đầu vào xuống 100x100x20. Điều này có nghĩa là các
lớp 3x3 hay 5x5 sẽ khơng có nhiều khối lượng phải giải
quyết. Điều này có thể được nghĩ như là một “pooling
of features” bởi vì ta đã giảm độ sâu của khối tương tự
như cách ta giảm chiều dài và chiều rộng với lớp max –
pooling bình thường.
Hình 4.2. Quá trình huấn luyện mạng
Thay vì việc phải huấn luyện lại rất nhiều tham số
và một khối lượng tính tốn khổng lồ, với học chuyển
đổi chỉ cần phải huấn luyện những lớp cuối cùng, đó là
các lớp liên kết đủ. Do đó thời gian huấn luyện và khối
lượng tính tốn sẽ được giảm đi rất nhiều.
Những lớp đầu của mạng đã được học những tính
năng đơn giản nhất như là màu sắc hay những đốm màu,
nên ta có thể giữ các lớp này bằng cách đóng băng tham
số. Sau đó, ta sẽ thay thế các lớp cuối để học những tính
năng tương ứng với nhiệm vụ bài tốn.
Các tham số của mạng được mơ tả ở bảng dưới.
Bảng 4.1. Các siêu tham số mạng
Tham số
miniBatchSize
Initial Learning-rate
LearnRateDropFactor
LearnRateDropPeriod
ValidationFrequency
maxEpoch
4.4. Kết quả
Giá trị
84
0,0001
0,5
4
300
20
Mạng được huấn luyện trên tập dữ liệu 76500 ảnh
sau khoảng 2 ngày. Để kiểm tra hiệu quả của mạng, ta
sử dụng một tập ảnh Test khoảng 11475 ảnh (15%) để
Nguyễn Hoài Nam, Đặng Thanh Hải và Trần Gia Khánh
kiểm tra mạng. Hiệu suất của công việc nhận dạng này,
thể hiện ở giá trị độ chính xác được tính bằng công thức
sau:
𝑡ổ𝑛𝑔 𝑠ố ả𝑛ℎ 𝑛ℎậ𝑛 𝑑ạ𝑛𝑔 đú𝑛𝑔
𝑎𝑐𝑐𝑢𝑟𝑎𝑐𝑦
𝑡ổ𝑛𝑔 𝑠ố ả𝑛ℎ 𝑐ủ𝑎 𝑡ậ𝑝 𝑡𝑒𝑠𝑡
5. Kết luận
Mạng tích chập tỏ ra vơ cùng hiệu quả trong lĩnh
vực nhận dạng hình ảnh nói chung và nhận dạng cử chỉ
tay nói riêng. Với việc nhận dạng được cử chỉ tay, ta có
thể thực hiện các ứng dụng khác như điều khiển thiết bị,
Hình 4.3. Kết quả nhận dạng cử chỉ tay từ tập Test
Bảng 4.1 biểu thị kết quả nhận dạng của mạng trên
tập dữ liệu Test. Độ chính xác của mạng thu được khá
cao 95,69% cho thấy hiệu suất của mạng rất tốt.
Bảng 4.2. Kết quả nhận dạng ảnh
Tham số
Tổng số ảnh tập Test
Số ảnh nhận dạng đúng
Độ chính xác
Giá trị
11475
10981
95.96%
Hình 4.3 biểu thị 25 cử chỉ được nhận dạng, bao
gồm nhãn và xác suất nhận dạng cử chỉ đó. Hình 7.2 biểu
thị hàm accuracy trong quá trình huấn luyện. Kết quá
hàm đã được làm trơn bằng cách nối các điểm rời rạc
sau mỗi bước lặp. Hình 4.2 là đồ thị hàm mục tiêu. Từ
đồ thị, ta thấy sau khoảng hơn một vạn bước, giá trị hàm
mục tiêu bám dần đến giá trị 0. Tương tự như hàm
accuracy, hàm mục tiêu đã được làm trơn bằng cách nối
các giá trị rời rạc sau mỗi bước lặp. Các chấm đen, là giá
trị hàm ứng với tập Validation.
Hình 4.4. Accuracy
Hình 4.2. Hàm mục tiêu
ặng Thanh Hải
Nâng cao chất lượng hệ thống nhận dạng cử chỉ tay sử dụng mạng tích chập với học chuyển đổi
hay ứng dụng trong nhà thông minh. Tuy nhiên trong
giai đoạn hiện nay, đặc biệt là tại Việt Nam, việc nghiên
cứu và phát triển kỹ thuật học sâu nói chung cịn có
nhiều hạn chế.
Chúng tơi đã thiết kế mạng tích chập sử dụng học
chuyển đổi từ mạng Google Net nhận dạng cử chỉ tay
trên một tập dữ liệu được chia sẻ cơng khai. Kết quả
nhận dạng với độ chính xác là 95.96%, cao hơn so với
bài báo [3].
Lời cảm ơn
Nghiên cứu này được tài trợ bởi Trường Đại học
Bách khoa Hà Nội trong đề tài mã số T2018-PC-052.
Tài liệu tham khảo
[1] Mark Hudson Beale, Martin T. Hagan, Howard B.
Demuth, Neural Network Toolbox™ User's Guide, 2018.
[2] Martin T. Hagan, Oklahoma State University; Stillwater,
Oklahoma; Howard B. Demuth University of Colorado
Boulder,
Colorado;
Mark
Hudson
Beal
MHB Inc.Hayden, Idaho Orlando De Jesús Consut Fisc,
Texas, Neuron Network Design, 1996.
[3] Oyebade K. Oyedotun, Adnan Khashman, Deep learning
in vision-based static hand gesture recognition ,2016.
[4] Xiao Sun, Yichen Wei, Shuang Liang, Xiaoou Tang, Jian
Sun, Cascaded Hand Pose Regression, CVPR 2015.
[5] Christian Szegedy, Wei Liu, Chapel Hill, YangqingJia,
Pierre Sermanet, Scott Reed, Dragomir Anguelov,
Dumitru Erhan, Vincent Vanhouckem, Andrew
Rabinovich, Going deeper with convolution, 2014.
[6] Classify
Image
Using
.
GoogLeNet,
[7] Deep Learning Toolbox Model for AlexNet Network,
www.mathworks.com.
[8] Pretrained
Convolutional
Neural
Networks.