Mô hình thống kê học sâu trong nhận dạng khuôn mặt

Tóm tắt: Học sâu 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, diễn tả cả cụ thể lần trừu tượng, từ đó làm rõ nghĩa các loại dữ liệu. Học sâu được ứng dụng trong nhận diện hình ảnh, giọng nói, xử lý ngôn ngữ tự nhiên. Convolutional Neural Network (CNNs) là một trong những mô hình của học sâu đem lại kết quả có độ chính xác cao.

pdf11 trang | Chia sẻ: thanhle95 | Lượt xem: 459 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Mô hình thống kê học sâu trong nhận dạng khuôn mặt, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
4 TẠP CHÍ KHOA HỌC QUẢN LÝ VÀ CÔNG NGHỆ MÔ HÌNH THỐNG KÊ HỌC SÂU TRONG NHẬN DẠNG KHUÔN MẶT DEEP LEARNING STATISTIC MODEL IN FACE RECOGNITION Đỗ Thành Công Khoa Công nghệ thông tin, Trường Đại học Kinh doanh và Công nghệ Hà Nội E-mail: plc1810@gmail.com Ngày tòa soạn nhận được bài báo: 28/11/2018 Ngày phản biện đánh giá: 18/12/2018 Ngày bài báo được duyệt đăng: 28/12/2018 Tóm tắt: Học sâu 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, diễn tả cả cụ thể lần trừu tượng, từ đó làm rõ nghĩa các loại dữ liệu. Học sâu được ứng dụng trong nhận diện hình ảnh, giọng nói, xử lý ngôn ngữ tự nhiên. Convolutional Neural Network (CNNs) là một trong những mô hình của học sâu đem lại kết quả có độ chính xác cao. Từ khóa: Summary: Deep learning refers to the number of layers through which the data is transformed. Deep learning is also known as deep structured learning and a part of a broader family of neural network methods based on convolutional neural networks (CNN) s. Deep learning is applied in image recognition, voice, natural language processing. It is one of the deep learning models that results in high accuracy. Keywords: Face Detection, Deep Learning, Convolutional Neural Network (CNNs) I. GIỚI THIỆU 1. Định nghĩa xác định khuôn mặt Xác định khuôn mặt người (Face Detection) là một kỹ thuật máy tính để xác định các vị trí và các kích thước của khuôn mặt trong các ảnh bất kỳ (ảnh kỹ thuật số). Kỹ thuật này nhận biết các đặc trưng của khuôn mặt và bỏ qua các thứ khác như: tòa nhà, cây cối, cơ thể, 2. Ứng dụng nhận dạng khuôn mặt 5TẠP CHÍ KHOA HỌC QUẢN LÝ VÀ CÔNG NGHỆ Bài toán nhận dạng khuôn mặt được phát triển từ những năm 1990, đến nay bài toán đã được ứng dụng trong rất nhiều lĩnh vực khác nhau. Xác minh tội phạm: Dựa vào ảnh của một người, nhận dạng xem người đấy có phải là tội phạm hay không bằng cách so sách với các ảnh tội phạm đang được lưu trữ. Hoặc có thể sử dụng camera để phát hiện tội phạm trong đám đông. Ứng dụng này giúp cơ quan an ninh quản lý con người tốt hơn. Camera chống trộm: Các hệ thống camera sẽ xác định đâu là con người và theo dõi xem con người đó có làm gì phạm pháp không, ví dụ như lấy trộm đồ, xâm nhập bất hợp pháp vào một khu vực nào đó. Bảo mật: Các ứng dụng về bảo mật rất đa dạng, một trong số đó là công nghệ nhận dạng mặt người của máy tính, điện thoại. Công nghệ này cho phép chủ nhân của thiết bị chỉ cần cho camera chụp hình đúng khuôn mặt là có thể đăng nhập. Lưu trữ khuôn mặt: Xác định mặt người có thể được ứng dụng trong các trạm rút tiền tự động (ATM). Lưu trữ được khuôn mặt của người rút tiền, ngân hàng có thể đối chứng và xử lý dễ dàng các trường hợp rút tiền phạm pháp. Trong thiết bị di động hay mạng xã hội, lưu trữ khuôn mặt giúp nhận dạng ảnh, phân loại ảnh bạn bè một cách nhanh chóng. Tìm kiếm và tổ chức dữ liệu liên quan đến con người thông qua khuôn mặt người trên nhiều hệ cơ sở dữ liệu lưu trữ thật lớn, như internet, các hãng truyền hình, . ví dụ: tìm các phim có diễn viên Thành Long đóng, tìm các trận đá bóng có Quang Hải đá, Trong chụp hình, nhận dạng khuôn mặt để máy chụp hình thế hệ mới để cho kết quả hình ảnh đẹp hơn, nhất là khuôn mặt người. Một số hãng xe nhận dạng khuôn mặt để kiểm tra lái xe có ngủ gật hay không để thông báo khi cần thiết. 3. Các phương pháp tiếp cận: Để xác định khuôn mặt trong ảnh ta có thể sử dụng theo bốn hướng tiếp cận chính. Ngoài ra cũng có rất nhiều nghiên cứu mà phương pháp xác định mặt người không chỉ dựa vào một hướng mà có liên quan đến nhiều hướng. Hướng tiếp cận tri thức: các đặc trưng của khuôn mặt sẽ được mã hóa thành các luật. Thông thường các luật thường mô tả các quan hệ của đặc trưng như khuôn mặt thường có hai mắt đối xứng qua trục thẳng đứng ở giữa khuôn mặt và có một mũi, một miệng. Các quan hệ đặc trưng có thể được mô tả như quan hệ về khoảng cách và vị trí. Hướng tiếp cận đặc trưng không thay đổi: xác định khuôn mặt người dựa trên các đặc trưng không bị thay đổi khi thay đối tư thế khuôn mặt , vị trí quan sát hay điều kiện ánh sáng thay đổi. Đã có rất nhiều nghiên cứu về hướng tiếp cận này, các đặc điểm không thay đổi được tìm thấy như màu da, lông mày, mắt, mũi, miệng hay các đường viền trên tóc Hướng tiếp cận so khớp mẫu: các mẫu chuẩn của khuôn mặt (thường là khuôn mặt được 6 TẠP CHÍ KHOA HỌC QUẢN LÝ VÀ CÔNG NGHỆ chụp thẳng) sẽ được xác định trước hoặc được biểu diễn thành một hàm với các tham số cụ thể. Từ ảnh đầu vào, ta tính các giá trị tương quan so với các mẫu chuẩn về đường viền khuôn mặt, mắt, mũi và miệng. Thông qua các giá trị tương quan này mà hệ thống sẽ quyết định có hay không có tồn tại khuôn mặt trong ảnh. Hướng tiếp cận dựa trên diện mạo: Hướng tiếp cận dựa trên diện mạo trái ngược với hướng tiếp cận dựa trên so sánh khớp mẫu (các mẫu đã được các nhà nghiên cứu định nghĩa trước), các mẫu trong hướng tiếp cận này được học từ một tập ảnh mẫu. Có thể nói hướng tiếp cận dựa trên diện mạo áp dụng các kỹ thuật theo hướng xác suất thống kê và học máy để tìm những đặc tính liên quan của khuôn mặt và không phải là khuôn mặt. II. MÔ HÌNH HỌC SÂU (DEEP LEARNING) Học sâu là phương pháp sử dụng nhiều lớp các đơn vị xử lý phi tuyến để trích trọn các đặc trưng và chuyển đổi. Trong các lớp này thì giá trị của các lớp đầu ra của lớp trước sẽ là giá trị đầu vào cho lớp kế tiếp nó. Các thuật toán được sử dụng có thể là thuật toán học có giám sát hoặc không có giám sát. Học sâu thì thường được áp dụng cho các mô hình nhận dạng mẫu và các bài toán phân loại thống kê. Các thuật toán học sâu khác so với các thuật toán học nông ở việc biến đổi các tín hiệu tham số khi nó truyền từ lớp đầu vào cho lớp đầu ra, nơi một tham số biến đổi là một đơn vị xử lý có khả năng huấn luyện cho các tham số, chẳng hạn như trọng số và ngưỡng. 1. Giới thiệu về mạng Neuron Mạng neuron nhân tạo, Artificial Neuron Network (ANN) gọi tắt là mạng neuron, neuron network, là một mô hình xử lý thông tin phỏng theo cách thức xử lý thông tin của các hệ neuron sinh học. Nó được tạo lên từ một số lượnglớn các phần tử (gọi là phần tử xử lý hay neuron) kết nối với nhau thông qua cácliên kết (gọi là trọng số liên kết) làm việc như một thể thống nhất để giải quyết mộtvấn đề cụ thể nào đó. Một mạng neuron nhân tạo được cấu hình cho một ứng dụng cụ thể (nhận dạng mẫu, phân loại dữ liệu ...) thông qua một quá trình học từ tập các mẫu huấn luyện. Về bản chất học chính là quá trình hiệu chỉnh trọng số liên kết giữa các neuron. Kiến trúc chung của một mạng nơron nhân tạo (ANN) gồm 3 thành phần đó là: Input Layer, Hidden Layer và Output Layer Hình 1. Mô hình mạng Neuron 7TẠP CHÍ KHOA HỌC QUẢN LÝ VÀ CÔNG NGHỆ Theo hình trên, lớp ẩn (Hidden Layer) gồm các Nơron nhận dữ liệu input từ các Nơron ở lớp (Layer) trước đó và chuyển đổi các input này cho các lớp xử lý tiếp theo. Trong một ANN có thể có nhiều lớp ẩn. 2. Huấn luyện mạng Neuron Mạng neuron nhân tạo phỏng theo việc xử lý thông tin của bộ não người, do vậy đặc trưng cơ bản của mạng là có khả năng học, khả năng tái tạo các hình ảnh và dữ liệu khi đã học. Trong trạng thái học thông tin được lan truyền theo hai chiều nhiều lần để học các trọng số. Có 3 kiểu học chính, mỗi kiểu học tương ứng với một nhiệm vụ học trừu tượng. Đó là học có giám sát (có mẫu), học không giám sát và học tăng cường. Thông thường loại kiến trúc mạng nào cũng có thể dùng được cho các nhiệm vụ. Học cố giám sát: Là cách huấn luyện một mô hình trong đó dữ liệu học có đầu vào và đầu ra tương ứng đầu vào đó. Mô hình được huấn luyện bằng cách giảm thiểu sai số lỗi (loss) của các dự đoán tại các vòng lặp huấn luyện. Sau quá trình huấn luyện. mô hình sẽ có khả năng đưa ra dự đoán về đầu ra với một đầu vào mới gặp (không có trong dữ liệu học). Nếu không gian đầu ra được biểu diễn dứới dạng rời rạc, ta gọi đó là bài toán phân loại (classification). Nếu không gian đầu ra được biểu diễn dưới dạng liên tục, ta gọi đó là bài toán hồi quy (regression). Học không giám sát: là cách huấn luyện một mô hình trong đó dữ liệu học chỉ bao gồm đầu vào mà không có đầu ra. Mô hình sẽ được huấn luyện cách để tìm cấu trúc hoặc mối quan hệ giữa các đầu vào. Một trong những phương pháp học không giám sát quan trọng nhất là phân cụm (clustering): Tạo các cụm khác nhau với mỗi cụm biểu diễn một đặc trưng nào đó của dữ liệu và phân các đầu vào mới vào các cụm theo các đặc trưng của đầu vào đó. Học tăng cường: là phương pháp huấn luyện hệ thống tự động. Phương pháp này không cần dữ liệu ban đầu mà sẽ thu thập dữ liệu thông qua phép thử đúng hay sai. 3. Mạng neuron tích chập Convolutional Neuron Network (CNNs – Mạng neuron tích chập) là một trong những mô hình Deep Learning tiên tiến giúp cho chúng ta xây dựng được những hệ thống thông minh với độ chính xác cao như hiện nay. Tích chập là một cửa sổ trên một mặt trận mô tả như hình: Hình 2. Mô hình tổ hợp tích chập 8 TẠP CHÍ KHOA HỌC QUẢN LÝ VÀ CÔNG NGHỆ Ma trận bên trái là một bức ảnh đen trắng. Mỗi giá trị của ma trận tương đương với một điểm ảnh (pixel), 0 là màu đen, 1 là màu trắng (nếu là ảnh grayscale thì giá trị biến thiên từ 0 đến 255). Sliding window còn có tên gọi là kernel, filter hay feature detector. Ở đây, ta dùng một ma trận filter 3×3 nhân từng thành phần tương ứng (element-wise) với ma trận ảnh bên trái. Gía trị đầu ra do tích của các thành phần này cộng lại. Kết quả của tích chập là một ma trận (convoled feature) sinh ra từ việc trượt ma trận filter và thực hiện tích chập cùng lúc lên toàn bộ ma trận ảnh bên trái. Mạng neuron tích chập bao gồm các lớp sau: lớp Convolutional, lớp RELU, lớp Pooling, lớp Fully connected. Sự sắp xếp về số lượng và thứ tự giữa các lớp này sẽ tạo ra những mô hình khác nhau phù hợp cho các bài toán khác nhau. Lớp Convolutiinal: Lớp này chính là nơi thể hiện tư tưởng ban đầu của mạng nơ-ron tích chập. Thay vì kết nối toàn bộ điểm ảnh, lớp này sẽ sử dụng một bộ các bộ lọc (filters) có kích thước nhỏ so với ảnh (thường là 3×3 hoặc 5×5) áp vào một vùng trong ảnh và tiến hành tính tích chập giữa bộ filter và giá trị điểm ảnh trong vùng cục bộ đó. Bộ filter sẽ lần lượt được dịch chuyển theo một giá trị bước trượt (stride) chạy dọc theo ảnh và quét toàn bộ ảnh. Lớp RELU: Lớp này thường được cài đặt ngay sau lớp Convolutional. Lớp này sử dụng hàm kích hoạt f(x) = max(0,x)f(x)=max(0,x). Nói một cách đơn giản, lớp này có nhiệm vụ chuyển toàn bộ giá trị âm trong kết quả lấy từ lớp Convolutional thành giá trị 0. Ý nghĩa của cách cài đặt này chính là tạo nên tính phi tuyến cho mô hình. Tương tự như trong mạng truyền thẳng, việc xây dựng dựa trên các phép biến đổi tuyến tính sẽ khiến việc xây dựng đa tầng đa lớp trở nên vô nghĩa. Có rất nhiều cách để khiến mô hình trở nên phi tuyến như sử dụng các hàm kích hoạt sigmoid, tanh, nhưng hàm f(x) = max(0,x)f(x)=max(0,x) dễ cài đặt, tính toán nhanh mà vẫn hiệu quả. Lớp Pooling: Lớp này sử dụng một cửa sổ trượt quét qua toàn bộ ảnh dữ liệu, mỗi lần trượt theo một bước trượt (stride) cho trước. Khác với lớp Convolutional, lớp Pooling không tính tích chập mà tiến hành lấy mẫu (subsampling). Khi cửa sổ trượt trên ảnh, chỉ có một giá trị được xem là giá trị đại diện cho thông tin ảnh tại vùng đó (giá trị mẫu) được giữ lại. Các phương thức lấy phổ biến trong lớp Pooling là MaxPooling ( lấy giá trị lớn nhất), MinPooling (lấy giá trị nhỏ nhất) và AveragePooling (lấy giá trị trung bình). Lớp Fully connected: Lớp này tương tự với lớp trong mạng nơ-ron truyền thẳng, các giá trị ảnh được liên kết đầy đủ vào node trong lớp tiếp theo. Sau khi ảnh được xử lý và rút trích đặc trưng từ các lớp trước đó, dữ liệu ảnh sẽ không còn quá lớn so với mô hình truyền thẳng nên ta có thể sử dụng mô hình truyền thẳng để tiến hành nhận dạng. III. XÂY DƯNG KIẾN TRÚC MẠNG CNNS NHẬN DẠNG KHUÔN MẶT 1. Xây dựng mạng CNNs Xây dựng tầng Convolutiinal: sử dụng ảnh có kích thước (32*32*3). Sử dụng 6 bước lọc mỗi bước lọc có kích thước (5*5*3) ta sẽ được bản đồ kích thước 28. 9TẠP CHÍ KHOA HỌC QUẢN LÝ VÀ CÔNG NGHỆ Hình 3. Tầng Convolutiinal Xây dựng tầng Pooling: Sử dụng 64 bộ lọc filter có kích thước [244*244*64] thực hiện với thông số F= 2, S=2 ta sẽ thu được đàu ra kích thước [112*112*64] Hình 4. Mô hình pooling cho ảnh Xây dựng hàm biến đổi tuyến tính: Về cơ bản, covolution là một phép biển đổi tuyến tính. Nếu tất cả các neuron được tổng hợp bởi các phép biến đổi tuyến tính thì một mạng neuron đều có thể đưa về dưới dạng một hàm tuyến tính. Tuy nhiên, các nghiên cứu gần đây chứng minh được việc sử dụng hàm ReLu (Rectified Linear Unit) là đáng tin cậy nhất. Kết nối Fully-connected: cách kết nối các neural ở hai tầng với nhau trong đó tầng sau kết nối đẩy đủ với các neural ở tầng trước nó. Đây cũng là dạng kết nối thường thấy ở ANN, trong CNN tầng này thường được sử dụng ở các tầng phí cuối của kiến trúc mạng. Trong bài toán phân lớp ảnh , CNNs sẽ được mô tả như sau: [[CONV -> RELU]*N -> POOL?]*M -> [FC -> RELU]*K -> FC Trong đó: [CONV -> RELU]*N tức là trong kiến trúc này sau tầng CONV là tầng RELU, trong CNN kiến trúc 2 tầng này có thể lặp N lần. 10 TẠP CHÍ KHOA HỌC QUẢN LÝ VÀ CÔNG NGHỆ POOL? là tầng Pooling cho người thiết kế quyết định có thể có hoặc không. [[CONV -> RELU]*N -> POOL?]*M trong kiến trúc CNN có thể lặp lại M lần kiểu sau tầng CONV là tầng RELU và kế tới là tầng Pooling. [FC -> RELU]*K trong CNN có thể lặp K lần cấu trúc kiểu sau tầng FC là tầng RELU nhưng trước nó phải có tầng [CONV -> RELU]. Như vậy CNNs sẽ cố gắng tìm ra các thông số tối ưu cho các filter tương ứng theo thứ tự pixel > edges > shapes > facial > high-level features. Hình 5. Thứ tự các bộ lọc trong mạng CNNs 2. Huấn luyện mạng CNNS Bài toán áp dụng trong mô hình nhỏ chỉ nhận dạng 10 khuôn mặt người khác nhau. Sử dụng tập ảnh chụp 10 nghệ sỹ Việt Nam.Sử dụng 80% ảnh để huấn luyện và 20% ảnh để kiểm chứng. Hình 6. Mô hình mạng huấn luyện. 11TẠP CHÍ KHOA HỌC QUẢN LÝ VÀ CÔNG NGHỆ Hình 6: Tập mẫu huấn luyện Bước 2: Thay đổi kích thước hình ảnh huấn luyện thành cỡ 128 x 128. a = tf.truncated_normal([16,128,128,3]) sess = tf.Session() sess.run(tf.initialize_all_variables()) sess.run(tf.shape(a)) Bước 3: Đặt tên cho các lớp và thiết lập số lượng ảnh sử dụng kiểm tra. validation_size = 0.2 img_size = 128 num_channels = 3 train_path = 'face_train' Bước 4: Thiết lập các tầng tích chập: filter_size_conv1 = 3 num_filters_conv1 = 32 filter_size_conv2 = 3 num_filters_conv2 = 32 Bước 1: Xây dựng tập thư viện là hình ảnh khuôn mặt người và được phân loại và lưu vào thư mục đặt theo tên nghệ sỹ và lưu vào thư mục training_face. 12 TẠP CHÍ KHOA HỌC QUẢN LÝ VÀ CÔNG NGHỆ filter_size_conv3 = 3 num_filters_conv3 = 64 Bước 5: Xây dựng tầng Flattening def create_flatten_layer(layer): layer_shape = layer.get_shape() num_features = layer_shape[1:4] layer = tf.reshape(layer, [-1, num_features]) return layer Bước 6: Xây dựng kết nối Fully-connected def create_fc_layer(input, num_inputs, num_outputs, use_relu=True): weights = create_weights(shape=[num_inputs, num_outputs]) biases = create_biases(num_outputs) layer = tf.matmul(input, weights) + biases if use_relu: layer = tf.nn.relu(layer) return layer Bước 7: Thực hiện huấn luyện mạng Hình 7. Kết quả huấn luyện mạng Kết quả huấn luyện sau 300 lần huấn luyện kết quả sai số đạt khoảng 68%. Bước 8: Lưu kết quả huấn luyện. saver.save(session, 'test/trainningData.xml') 3. Xây dựng mô hình dự đoán: Hình 8. Mô hình dự đoán 13TẠP CHÍ KHOA HỌC QUẢN LÝ VÀ CÔNG NGHỆ Hình 8. Kết quả thử nghiệm IV. HƯỚNG PHÁT TRIỂN Với phương pháp sử dụng mạng tích chập để nhận dạng khuôn mặt đem lại tỉ lệ thành công cao tuy nhiên vẫn còn tồn tại một số khó khăn: Tỉ lệ nhận dạng còn phụ thuộc vào điều kiện ánh sáng, phản chiếu, khuôn mặt bị che bởi tóc hay mũ. Màu sắc của môi trường xung quanh có thể có lẫn với khuôn mặt khiến kết quả không chính xác. Trong bức ảnh có nhiều khuôn mặt và có nhiều hướng mặt khác nhau. Để khắc phục những hạn chế trên ta có thể kết hợp hợp học tăng cường cùng thuật toán. IV. KẾT LUẬN Bước 1: Load file huấn luyện Bước 2: Đọc ảnh đầu vào và tìm ra vùng gần giống dự đoán là khuôn mặt và lưu ảnh xử lý vào thư mục process. Bước 3: Đối sánh hình ảnh và so sánh với các lớp đã học được. Kết quả thử nghiệm với một ảnh không có trong tập huấn luyện. Thu được sai số khoảng 0.97 14 TẠP CHÍ KHOA HỌC QUẢN LÝ VÀ CÔNG NGHỆ Bài toán nhận dạng khuôn mặt là một vấn đề hay có nhiều ứng dụng trong thực tế. Dữ liệu thu thập khi huấn luyện càng lớn sẽ đem kết quả chính xác. TÀI LIỆU THAM KHẢO [1] Z. Li, J.-i. Imai and M. Kaneko, "Robust face recognition using block-based bag of words.,"Pattern Recognition (ICPR), 2010 20th International Conference on. IEEE, pp. 1285- 1288, 2010. [2] C.-F. Tsai, "Bag-of-words representation in image annotation: A review.," ISRN Artificial Intelligence 2012,2012. [3] S. Liao, A. K. Jain and S. Z. Li, "Partial face recognition: Alignment-free approach," IEEE Transactions on Pattern Analysis and Machine Intelligence 35.5, pp. 1193-1205, 2013. [4] R. Achanta, A. Shaji, K. Smith, A. Lucchi, P. Fua and S. Süsstrunk, "SLIC superpixels compared to state-of-the-art superpixel methods," IEEE transactions on pattern analysis and machine intelligence,vol. 34.11, pp. 2274-2282, 2012. [8] J. Y. Wright, G. A. Y., S. S. S. A. and Y. Ma, "Robust face recognition via sparse representation," IEEE transactions on pattern analysis and machine intelligence, vol. 31(2), pp. 210-227, 2009. [5] D. G. Lowe, "Distinctive image features from scale-invariant keypoints," International ournal of computer vision, vol. 60.2, pp. 91-110, 2004. [6] J. Canny, "A computational approach to edge detection, "IEEE Transactions on pattern analysis and machine intelligence,vol. 6, pp. 679-698, 1986. [7] K. Mikolajczyk, A. Zisserman and C. Schmid, "Shape recognition with edge-based features, "British Machine Vision Conference (BMVC'03), vol. Vol. 2, pp. 779-788, 2003. [8] K. Mikolajczyk and C. Schmid, "Scale & affine invariant interest point detectors," International journal of computer vision,vol. 60(1), pp. 63-86, 2004.
Tài liệu liên quan