Nhận dạng khuôn mặt trong video bằng mạng nơ ron tích chập
Deep Learning là thuật toán dựa trên một số ý tưởng từ não bộ tới việc tiếp thu nhiều tầng biểu đạt, cả cụ thể lẫn
trừu tượng, qua đó làm rõ nghĩa của các loại dữ liệu. Deep Learning được ứng dụng trong nhận diện hình ảnh,
nhận diện giọng nói, xử lý ngôn ngữ tự nhiên. Hiện nay rất nhiều các bài toán nhận dạng sử dụng Deep Learning, vì
nó có thể giải quyết các bài toán với số lượng lớn các biến, tham số kích thước đầu vào lớn với hiệu năng cũng như
độ chính xác vượt trội so với các phương pháp phân lớp truyền thống, xây dựng những hệ thống thông minh với
độ chính xác cao. Trong bài báo này, các tác giả nghiên cứu mạng nơ ron tích chập (CNN - Convolutional Neural
Network) là một trong những mô hình Deep Learning tiên tiến cho bài toán nhận dạng khuôn mặt từ video.
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Tóm tắt nội dung tài liệu: Nhận dạng khuôn mặt trong video bằng mạng nơ ron tích chập
eLU: được xây dựng để đảm bảo tính phi tuyến của mô hình huấn luyện sau khi đã thực hiện một loạt các phép tính toán tuyến tính qua các lớp tích chập. Lớp kích hoạt phi tuyến sử dụng các hàm kích hoạt phi tuyến như ReLU hoặc sigmoid, tanh để giới hạn phạm vi biên độ cho phép của giá trị đầu ra. Trong số các hàm kích hoạt này, hàm ReLU được chọn do cài đặt đơn giản, tốc độ xử lý nhanh mà vẫn đảm bảo được tính toán hiệu quả. Phép tính toán của hàm ReLU chỉ đơn giản là chuyển tất cả các giá trị âm thành giá trị 0. Lớp ReLU được áp dụng ngay phía sau lớp tích chập, với đầu ra là một ảnh mới có kích thước giống với ảnh đầu vào, các giá trị điểm ảnh cũng hoàn toàn tương tự, trừ các giá trị âm đã bị loại bỏ. 𝑓(𝑥) = 𝑚𝑎𝑥(0, 𝑥) (2) - Lớp lấy mẫu: được đặt sau lớp tích chập và lớp ReLU để làm giảm kích thước ảnh đầu ra trong khi vẫn giữ được các thông tin quan trọng của ảnh đầu vào. Việc giảm kích thước dữ liệu có tác dụng làm giảm được số lượng tham số cũng như tăng hiệu quả tính toán. Lớp lấy mẫu cũng sử dụng một cửa sổ trượt để quét toàn bộ các vùng trong ảnh như lớp tích chập, và thực hiện phép lấy mẫu thay vì phép tích chập, sẽ chọn lưu lại một giá trị duy nhất đại diện cho toàn bộ thông tin của vùng ảnh đó. Hình 3 thể hiện các phương thức lấy mẫu thường được sử dụng nhất hiện nay, đó là Max Pooling (lấy giá trị điểm ảnh lớn nhất) và Avarage Pooling (lấy giá trị trung bình của các điểm ảnh trong vùng ảnh cục bộ). Hình 3. Phương thức Avarage Pooling và Max Pooling. Như vậy, với mỗi ảnh đầu vào được đưa qua lấy mẫu sẽ thu được một ảnh đầu ra tương ứng, có kích thước giảm xuống đáng kể nhưng vẫn giữ được các đặc trưng cần thiết cho quá trình tính toán và nhận dạng. - Lớp kết nối đầy đủ: được thiết kế tương tự như trong mạng nơ ron truyền thống, tất cả các điểm ảnh được kết nối đầy đủ với node trong lớp tiếp theo. So với mạng nơ ron truyền thống [4], các ảnh đầu vào của lớp này đã có kích thước được giảm bớt rất nhiều, đồng thời vẫn đảm bảo các thông tin quan trọng của ảnh cho việc nhận dạng. Do vậy, việc tính toán nhận dạng sử dụng mô hình truyền thẳng đã không còn phức tạp và tốn nhiều thời gian như trong mạng nơ ron truyền thống. Xây dựng mô hình mạng Hình 4 trình bày một cấu trúc VGG16 ứng dụng vào bài toán nhận dạng khuôn mặt trong video. Face recognition in video using convolutional neural network Hong Quang Doan* Hong Minh Le, Doan Nguyen Thai Center for Micro Electronics and Information Technology, National Center for Technological Progress Received 8 July 2019; accepted 22 August 2019 Abstract: Deep Learning is an algorithm based on some ideas from the brain to absorb many layers of expression, both concrete and abstract, thereby clarifying the meaning of data types. Deep Learning is applied in image recognition, speech recognition, natural language processing. Currently, many identification problems are solved by deep learning based methods tha ks to its ability to solve problems in a large number of variables, large input size with superior performance and accuracy as compared to traditional classification methods, and its ability to build intelligent systems with high accuracy. In this article, the authors conducted a study into the convolutional neural network (CNN) which is one of the advanced deep learning models for the problem of facial recognition from video. Keywords: convolutional neural network, deep learning, face recognition. Classification number: 1.2 1062(1) 1.2020 Khoa học Tự nhiên Hình 4. Kiến trúc mạng VGG16. Tổng tham số trong mô hình là 138.357.544, các tham số trong mỗi lớp của mô hình mạng như sau: * Ảnh đầu vào: Đầu vào: ảnh với kích thước 224 x 224 x 3 = 150K (3 tương ứng với 3 màu: đỏ, xanh lục, xanh lam trong hệ màu RGB thông thường). * Lớp 1 (Tích chập): - Số bộ lọc: 64 - Kích thước bộ lọc: 3 x 3 x 64 - Bộ nhớ: 224 x 224 x 64 = 3,2M - Số lượng tham số: (3 x 3 x 3) x 64 = 1.728 * Lớp 2 (Tích chập): - Đầu vào: 224 x 224 x 64 - Số bộ lọc: 64 - Kích thước bộ lọc: 3 x 3 x 64 - Bộ nhớ: 224 x 224 x 64 = 3,2M - Số lượng tham số: (3 x 3 x 64) x 64 = 36.864 * Lớp chuyển tiếp sang lớp 3 (Lấy mẫu): - Size = (2,2) - Stride = 2 - Padding = 0 - Bộ nhớ: 112 x 112 x 64 = 800K Kích thước đầu ra của dữ liệu giảm 1/2, từ (224 x 224 x 3) xuống (112 x 112 x 3), và chiều sâu được giữ nguyên * Lớp 3 (Tích chập): - Đầu vào: 112 x 112 x 3 - Số bộ lọc: 128 - Kích thước bộ lọc: 3 x 3 x 128 - Bộ nhớ: 112 x 112 x 128 = 1,6M - Số lượng tham số: (3 x 3 x 64) x 128 = 73.728 * Lớp 4 (Tích chập): - Đầu vào: 112 x 112 x 3 - Số bộ lọc: 128 - Kích thước bộ lọc: 3 x 3 x 128 - Bộ nhớ: 112 x 112 x 128 = 1,6M - Số lượng tham số: (3 x 3 x 128) x 128 = 147.456 * Lớp chuyển tiếp sang lớp 5 (Lấy mẫu): - Size = (2,2) - Stride = 2 - Padding = 0 - Bộ nhớ: 56 x 56 x 128 = 400K Kích thước đầu ra của dữ liệu giảm 1/2, từ (112 x 112 x 3) xuống (56 x 56 x 3), và chiều sâu được giữ nguyên *Lớp 5 (Tích chập): - Đầu vào: 56 x 56 x 3 - Số bộ lọc: 256 - Kích thước bộ lọc: 3 x 3 x 256 - Bộ nhớ: 56 x 56 x 256 = 800K - Số lượng tham số: (3 x 3 x 128) x 256 = 294.912 *Lớp 6 (Tích chập): - Đầu vào: 56 x 56 x 3 - Số bộ lọc: 256 - Kích thước bộ lọc: 3 x 3 x 256 - Bộ nhớ: 56 x 56 x 256 = 800K - Số lượng tham số: (3 x 3 x 256) x 256 = 589.824 * Lớp 7 (Tích chập): - Đầu vào: 56 x 56 x 3 - Số bộ lọc: 256 - Kích thước bộ lọc: 3 x 3 x 256 - Bộ nhớ: 56 x 56 x 256 = 800K - Số lượng tham số: (3 x 3 x 256) x 256 = 589.824 * Lớp chuyển tiếp sang lớp 8 (Lấy mẫu): - Size = (2,2) - Stride = 2 - Padding = 0 - Bộ nhớ: 28 x 28 x 256 = 200K Kích thước đầu ra của dữ liệu giảm 1/2, từ (56 x 56 x 3) xuống (28 x 28 x 3), và chiều sâu được giữ nguyên * Lớp 8 (Tích chập): - Đầu vào: 28 x 28 x 3 - Số bộ lọc: 512 - Kích thước bộ lọc: 3 x 3 x 512 - Bộ nhớ: 28 x 28 x 512 = 400K - Số lượng tham số: (3 x 3 x 256) x 512 = 1.179.648 * Lớp 9 (Tích chập): - Đầu vào: 28 x 28 x 3 - Số bộ lọc: 512 - Kích thước bộ lọc: 3 x 3 x 512 - Bộ nhớ: 28 x 28 x 512 = 400K - Số lượng tham số: (3 x 3 x 512) x 512 = 2.359.296 * Lớp 10 (Tích chập): - Đầu vào: 28 x 28 x 3 - Số bộ lọc: 512 - Kích thước bộ lọc: 3 x 3 x 512 - Bộ nhớ: 28 x 28 x 512 = 400K - Số lượng tham số: (3 x 3 x 512) x 512 = 2.359.296 * Lớp chuyển tiếp sang lớp 11 (Lấy mẫu): - Size = (2,2) - Stride = 2 - Padding = 0 - Bộ nhớ: 14 x 4 x 512 = 100K Kích thước đầu ra của dữ liệu giảm 1/2, từ (28 x 28 x 3) xuống (14 x 14 x 3), và chiều sâu được giữ nguyên * Lớp 11 (Tích chập): - Đầu vào: 14 x 14 x 3 - Số bộ lọc: 512 - Kích thước bộ lọc: 3 x 3 x 512 - Bộ nhớ: 14 x 14 x 512 = 100K - Số lượng tham số: (3 x 3 x 512) x 512 = 2.359.296 1162(1) 1.2020 Khoa học Tự nhiên * Lớp 12 (Tích chập): - Đầu vào: 14 x 14 x 3 - Số bộ lọc: 512 - Kích thước bộ lọc: 3 x 3 x 512 - Bộ nhớ: 14 x 14 x 512 = 100K - Số lượng tham số: (3 x 3 x 512) x 512 = 2.359.296 * Lớp 13 (Tích chập): - Đầu vào: 14 x 14 x 3 - Số bộ lọc: 512 - Kích thước bộ lọc: 3 x 3 x 512 - Bộ nhớ: 14 x 14 x 512 = 100K - Số lượng tham số: (3 x 3 x 512) x 512 = 2.359.296 * Lớp chuyển tiếp sang lớp 14 (Lấy mẫu): - Size = (2,2) - Stride = 2 - Padding = 0 - Bộ nhớ: 7 x 7 x 512 = 25K Kích thước đầu ra của dữ liệu giảm 1/2, từ (14 x 14 x 3) xuống (7 x 7 x 3), và chiều sâu được giữ nguyên * Lớp 14 (Kết nối đầy đủ): - Đầu vào: 1 x 1 x 4.096 - Bộ nhớ: 4.096K - Số lượng tham số: 7 x 7 x 512 x 4.096 = 102.760.448 * Lớp 15 (Kết nối đầy đủ): - Đầu vào: 1 x 1 x 4.096 - Bộ nhớ: 4.096K - Số lượng tham số: 4.096 x 4.096 = 16.777.216 * Lớp 16 (Kết nối đầy đủ): - Đầu vào: 1 x 1 x 4.096 - Bộ nhớ: 1.000K - Số lượng tham số: 4.096 x 1.000 = 4.096.000 Học chuyển giao và tinh chỉnh mô hình huấn luyện Là quá trình khai thác, tái sử dụng các tri thức đã được học tập bởi một mô hình huấn luyện trước đó vào giải quyết một bài toán mới mà không phải xây dựng mô hình huấn luyện khác từ đầu. Hiện nay, phương pháp phổ biến thường được áp dụng khi huấn luyện mô hình với một bộ CSDL tương đối nhỏ là sử dụng Học chuyển giao để tận dụng một mạng đã được huấn luyện trước. CNN đã được huấn luyện trước đó với bộ dữ liệu rất lớn như ImageNet (1,2 triệu ảnh với 1.000 nhãn đánh dấu). Phương pháp này sử dụng mạng CNN theo hai cách chính như sau: Mạng CNN này chỉ được sử dụng như một bộ trích chọn đặc trưng cho bộ CSDL huấn luyện mới, bằng cách thay thế các lớp kết nối đầy đủ ở cuối mô hình mạng và giữ cố định các tham số cho toàn bộ các lớp còn lại của mô hình. Thực hiện tối ưu, tinh chỉnh (Fine-tune) một vài hoặc tất cả các lớp trong mô hình mạng. Việc tái sử dụng mạng CNN là dựa trên các đặc trưng được học trong các lớp đầu của mạng là các đặc trưng chung nhất với phần lớn bài toán (ví dụ đặc trưng về cạnh, hình khối hay các khối màu). Các lớp sau đó của mạng CNN sẽ nâng dần độ cụ thể, riêng biệt của các chi tiết phục vụ cho bài toán nhận dạng cần giải quyết. Do đó, hoàn toàn có thể tái sử dụng lại các lớp đầu của mạng CNN mà không phải mất nhiều thời gian và công sức huấn luyện từ đầu. Có 2 loại học chuyển giao: Feature Extractor: sau khi lấy ra các đặc điểm (tai, mũi, tóc) của ảnh bằng việc sử dụng ConvNet của mô hình được huấn luyện trước, sẽ dùng phân loại tuyến tính (Linear SVM, Softmax Classifier...) để phân loại ảnh. Fine-tuning: sau khi lấy ra các đặc điểm của ảnh bằng việc sử dụng CNN của mô hình được huấn luyện trước, thì sẽ coi đây là đầu vào của CNN mới bằng cách thêm các lớp tích chập và lớp kết nối đầy đủ. Kết quả nhận dạng khuôn mặt bằng mô hình VGG16 * Nguồn dữ liệu dùng huấn luyện mô hình thử nghiệm được thu thập trên Internet: - Tổng số người: 2.622 - Tổng số khuôn mặt: 1.200.000 * Khởi tạo các thông số để huấn luyện mạng: - Tốc độ học: 0,25 - Hệ số quán tính: 0,3 - Sai số cực tiểu: 0,00001 - Số lần học tối đa: 100 vòng * Huấn luyện mạng: Môi trường được sử dụng để huấn luyện mô hình nhận dạng là Windows Server 2012, ngôn ngữ Python phiên bản 3.7.1 với framework dùng cho huấn luyện mô hình là Caffe, card đồ họa Nvidia 1080ti, trong khoảng 20 ngày huấn luyện. Huấn luyện mạng: lấy 80% mẫu dữ liệu để huấn luyện mạng, kết quả huấn luyện thể hiện ở hình 5 với sai số MSE là 0,002 qua 100 vòng huấn luyện. Hình 5. Đồ thị lỗi huấn luyện với mẫu dữ liệu. * Kiểm tra mạng: lấy 20% mẫu dữ liệu còn lại để kiểm tra mạng với các bộ trọng số đã được huấn luyện, kết quả kiểm tra với lỗi MSE là 0,0001 (hình 6). 1262(1) 1.2020 Khoa học Tự nhiên Hình 6. Đồ thị lỗi kiểm tra. * Nhận dạng: Dữ liệu video nhận dạng được lấy trên youtube với kết quả cao như trong hình 7, và một số kết quả được thống kê trong bảng 1. Hình 7. Nhận dạng khuôn mặt trong video. Bảng 1. Kết quả thử nghiệm nhận dạng khuôn mặt từ video. Id Tên ảnh Thời gian Từ tệp video Độ chính xác (%) 111240 Anna_Gunn_09-07-2019-11-15-30.jpg 11:15:30 5 98,18 111241 Anna_Gunn_09-07-2019-11-15-31.jpg 11:15:31 5 97,45 111242 Anna_Gunn_09-07-2019-11-15-32.jpg 11:15:32 5 96,95 111243 Anna_Gunn_09-07-2019-11-15-33.jpg 11:15:33 5 98,23 111244 Anna_Gunn_09-07-2019-11-15-33.jpg 11:15:33 5 98.22 111245 Anna_Gunn_09-07-2019-11-15-34.jpg 11:15:34 5 99.63 111246 Anna_Gunn_09-07-2019-11-15-35.jpg 11:15:35 5 97.72 111247 Anna_Gunn_09-07-2019-11-15-36.jpg 11:15:36 5 95.55 111248 Anna_Gunn_09-07-2019-11-15-37.jpg 11:15:37 5 94.66 111249 Anna_Gunn_09-07-2019-11-15-38.jpg 11:15:38 5 97.33 111250 Anna_Gunn_09-07-2019-11-15-38.jpg 11:15:38 5 99,24 111251 Anna_Gunn_09-07-2019-11-15-39.jpg 11:15:39 5 99,02 111252 Anna_Gunn_09-07-2019-11-15-40.jpg 11:15:40 5 95,61 111253 Anna_Gunn_09-07-2019-11-15-41.jpg 11:15:41 5 99,84 111254 Anna_Gunn_09-07-2019-11-15-42.jpg 11:15:42 5 94,32 111255 Anna_Gunn_09-07-2019-11-15-45.jpg 11:15:45 5 91,48 111256 Anna_Gunn_09-07-2019-11-15-48.jpg 11:15:48 5 92,60 111257 Anna_Gunn_09-07-2019-11-15-49.jpg 11:15:49 5 93,23 111258 Anna_Gunn_09-07-2019-11-15-50.jpg 11:15:50 5 99,78 111259 Anna_Gunn_09-07-2019-11-15-51.jpg 11:15:51 5 98,64 111260 Anna_Gunn_09-07-2019-11-15-52.jpg 11:15:52 5 98,12 111261 Anna_Gunn_09-07-2019-11-15-53.jpg 11:15:53 5 99,70 111262 Anna_Gunn_09-07-2019-11-15-54.jpg 11:15:54 5 99,73 111263 Anna_Gunn_09-07-2019-11-15-55.jpg 11:15:55 5 99,92 111264 Anna_Gunn_09-07-2019-11-15-56.jpg 11:15:56 5 99,93 111265 Anna_Gunn_09-07-2019-11-15-56.jpg 11:15:56 5 99,77 111266 Anna_Gunn_09-07-2019-11-15-59.jpg 11:15:59 5 99,56 111267 Anna_Gunn_09-07-2019-11-16-00.jpg 11:16:00 5 99,97 111268 Anna_Gunn_09-07-2019-11-16-01.jpg 11:16:01 5 99,85 Kết luận Mô hình mạng VGG16 với kiến trúc thay đổi, khả năng xây dựng liên kết chỉ sử dụng một phần cục bộ trong ảnh kết nối đến node trong lớp tiếp theo thay vì toàn bộ ảnh như trong mạng nơ ron truyền thẳng, làm tăng khả năng xử lý và đạt tỷ lệ cao trong phân loại ảnh. Độ chính xác nhận dạng khuôn mặt của mô hình trong điều kiện lý tưởng đã đạt hoặc vượt qua cả con người. Tuy nhiên, do các yếu tố khác nhau như ánh sáng, góc, biểu hiện và tuổi tác, làm giảm độ chính xác của quá trình nhận dạng. Trong thời gian tới, các tác giả sẽ tập trung vào việc xây dựng và bổ sung các tập thuộc tính để nâng cao độ chính xác của quá trình nhận dạng. Từ những kết quả đã thử nghiệm của mô hình cho thấy, có thể xây dựng các ứng dụng dựa trên phân loại và nhận dạng khuôn mặt, như: hệ thống chấm công tự động, điểm danh tự động trong các cơ sở đào tạo, và các hệ thống kiểm soát an ninh, phòng chống tội phạm. TÀI LIỆU THAM KHẢO [1] A. Canziani, A. Paszke and E. Culurciello (2016), “An analysis of deep neural network models for practical applications”, arXiv preprint arXiv:1605.07678.ss [2] Y. Jia, E. Shelhamer, J. Donahue, S. Karayev, J. Long, R. Girshick, S. Guadarrama, T. Darrell Caffe (2014), “Convolutional Architecture for Fast Feature”, Embedding arXiv:1408.5093. [3] Y. Sun, X. Wang and X. Tang (2014), “Deep learning face representation by joint identification-verification”, CoRR, abs/1406.4773. [4] Đoàn Hồng Quang, Lê Hồng Minh, Chu Anh Tuấn (2015), “Nhận dạng bàn tay bằng mạng nơ ron nhân tạo”, Tuyển tập báo cáo Diễn đàn “Đổi mới - Chìa khóa cho sự phát triển bền vững”, Viện Ứng dụng Công nghệ, Bộ Khoa học và Công nghệ. [5] Đoàn Hồng Quang, Lê Hồng Minh (2014), “Dùng RFNN kết hợp khử mùa và khử xu hướng để dự báo chỉ số giá vàng trên thị trường”, Tuyển tập báo cáo Diễn đàn “Đổi mới - Chìa khóa cho sự phát triển bền vững”, Viện Ứng dụng Công nghệ, Bộ Khoa học và Công nghệ. [6] Nguyễn Quang Hoan, Đoàn Hồng Quang (2014), “Dự báo chỉ số giá chứng khoán bằng RFNN”, Tạp chí Khoa học và Công nghệ, Trường Đại học Sư phạm Kỹ thuật Hưng Yên, 1, tr.52-56. [7] Nguyễn Quang Hoan, Dương Thu Trang, Đoàn Hồng Quang (2018), “Dự báo số học sinh nhập trường bằng mạng nơ ron nhân tạo”, Tạp chí Khoa học và Công nghệ, Trường Đại học Sư phạm Kỹ thuật Hưng Yên, 18, tr.1-8.
File đính kèm:
- nhan_dang_khuon_mat_trong_video_bang_mang_no_ron_tich_chap.pdf