Chương 1 TỔNG QUAN: giới thiệu tổng quát về đề tài mà nhóm thực, xác định mục tiêu đề tài, giới hạn của đề tài, các phương pháp nghiên cứu, các đối tượng và phạm vi nghiên cứu. Chương 2 CƠ SỞ LÝ THUYẾT VỀ ONE SHOT LEARNING VÀ CÁC NGÔN NGỮ THIẾT KẾ WEBSITE: giới thiệu về mô hình One-shot learning, mạng neural Siamese, MYSQL database và các loại ngôn ngữ lập trình thiết kế giao diện web. Chương 3 THIẾT KẾ HỆ THỐNG XÁC THỰC KHUÔN MẶT VÀ GIAO DIỆN NGƯỜI DÙNG: đưa ra sơ đồ thiết kế tổng quát của hệ thống, các thuật toán, các giải thuật tương ứng với từng chức năng được áp dụng vào đề tài. Chương 4 KẾT QUẢ: trình bày các kết quả mà nhóm thực hiện đạt được so với mục tiêu ban đầu và tiến hành thực thi đánh giá hệ thống.
Chương 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN: đưa ra các kết luận về đề tài và xác định các điểm hạn chế, để từ đó hình thành việc xây dựng và phát triển của đề tài trong tương lai. Trang 4 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT VỀ ONE SHOT LEARNING VÀ CÁC NGÔN NGỮ THIẾT KẾ WEBSITE 2. KHÁI NIỆM Mạng học sâu đã trở thành phương pháp hiện đại cho các nhiệm vụ phân loại hình ảnh. Tuy nhiên một trong những hạn chế lớn nhất là yêu cầu số lượng lớn dữ liệu hình ảnh gán nhãn.
Trong nhiều ứng dụng thực tế, việc thu thập dữ liệu số lượng lớn như vậy là không khả thi, vì vậy phương pháp One-shot learning ra đời là một lời giải của bài toán nêu trên. Trong các hệ thống phân loại ảnh thường thấy là thực hiện đưa ảnh đầu vào qua các convolution layer, kết quả ngõ ra được thể hiện là các phân phối xác suất trên các lớp cần dự đoán. Nhược điểm có thể thấy là quá trình huấn luyện yêu cầu số lượng lớn các ảnh cho từng lớp khác nhau. Bên cạnh đó hệ thống sẽ không thể phân loại các đối tượng thuộc các lớp bên ngoài tập dữ liệu đã được huấn luyện.
Và nếu cần phân loại một lớp mới thì phải thực hiện thu thập lại hình ảnh và huấn luyện lại mô hình, sẽ dẫn đến tiêu tốn thời gian chi phí cho những ứng dụng đòi hỏi tập dữ liệu thay đổi liên tục [1].1: One-shot learning thực hiện công việc phân loại động vật [1]. Ý tưởng của One-shot learning chỉ cần một vài, thậm chí một bức ảnh cho từng lớp để thực hiện phân loại. Nó so sánh mức độ giống và khác nhau giữa hai ảnh để quyết định hai ảnh có cùng lớp hay không. Để so sánh nó thực hiện một phép đo Trang 5 khoảng cách giữa hai vector ngõ ra của mỗi bức ảnh, nếu hai bức ảnh cùng thuộc một class thì khoảng cách của hai vector ngõ ra của chúng là nhỏ nhất, còn nếu không thì khoảng cách sẽ là cực đại.
Phương pháp này thay vì phân loại trực tiếp hình ảnh đầu vào thì nó sẽ so sánh ảnh đầu vào với hình ảnh đã được lưu trữ trước đó, tính toán khoảng cách và đưa qua hàm sigmoid cho ra kết quả dự đoán trong khoảng giá trị từ 0 đến 1, kết quả càng gần đến 1 thì hai ảnh càng giống nhau. Phương pháp One-shot learning không bị phụ thuộc vào số lượng các lớp, do đó việc huấn luyện lại khi xuất hiện thêm một lớp mới là không cần thiết [2]. GIỚI THIỆU VỀ MẠNG SIAMESE NEURAL NETWORK Trong thời kỳ của trí tuệ nhân tạo hiện đại sử dụng Deep learning, các mạng neural có thể hoàn thành tốt mọi tác vụ, nhưng nhược điểm của chúng lại phụ thuộc quá nhiều vào dữ liệu để mang lại khả năng dự đoán chính xác cao. Tuy nhiên, khi áp dụng mạng neural cho các bài toán như xác minh khuôn mặt và chữ ký, không thể dựa vào việc thu thập thêm các dữ liệu hình ảnh, để giải quyết vấn đề các vấn đề trên, vì vậy kiến trúc mạng neural mới đã được xây dựng có tên Siamese networks.
Mạng này hướng tới việc sử dụng một số ít lượng dữ liệu nhưng có được những kết quả dự đoán tốt hơn các mạng neural khác. Việc sử dụng rất ít dữ liệu cho việc huấn luyện khiến mạng neural Siamese dần dần trở nên xu hướng của trí tuệ nhân tạo hiện đại. Các vấn đề xảy ra khi áp dụng mạng CNN truyền thống vào đề tài Giả sử rằng một tổ chức muốn phát triển hệ thống điểm danh hoặc để chấm công, thông qua việc nhận dạng khuôn mặt cho 10 nhân viên. Ta có thể sử dụng mô hình phân loại truyền thống như mạng CNN.
Tuy nhiên trong thực tế một công ty hay tổ chức thường có số lượng nhân sự tới hàng trăm thậm chí có thể lên tới hàng nghìn người thì xảy ra hai vấn đề như sau: - Để có thể huấn luyện một hệ thống như vậy, trước tiên cần rất nhiều hình ảnh khác nhau của từng người trong tổ chức, điều này có thể thực sự không khả thi. - Điều gì sẽ xảy ra nếu một người mới gia nhập hoặc rời khỏi tổ chức? Cần phải thu thập lại toàn bộ dữ liệu và huấn luyện lại toàn bộ mô hình một lần Trang 6 nữa. Điều này thực tế khó có thể thực hiện được, đặc biệt đối với các tổ chức lớn nơi mà sự thay đổi nhân sự diễn ra gần như hàng ngày, hàng tuần. Với bài toán toán nhận diện khuôn mặt thì việc thu thập số lượng lớn ảnh chụp các khuôn mặt là rất khó, đặc biệt là trong môi trường cơ quan, công sở hay trường học có rất nhiều người và số lượng thay đổi liên tục thì các hệ thống điểm danh khuôn mặt dựa trên các mạng phân loại thông thường buộc phải huấn luyện từ đầu nếu có sự thay đổi nhân sự thì đó là điều bất khả thi.
Vì thế mạng Siamese được tạo ra để giải quyết các vấn đề kể trên. Ý tưởng và kiến trúc của mạng Siamese Ý tưởng của mạng Siamese rất đơn giản. Thay vì học cách phân loại chính xác đối tượng được đưa vào input thì nó sẽ học cách phân biệt sự giống và khác nhau giữa đối tượng cần nhận dạng và dữ liệu được lưu trong database. Vì vậy khi cần thêm một class mới ta không cần huấn luyện lại mô hình.
Kiến trúc Siamese là một mạng song sinh. Gồm hai mạng con có kiến trúc mạng giống nhau và có cùng trọng số hoạt động song song, nhận hai ảnh làm ngõ vào (mỗi ngõ vào mạng con nhận một ảnh), ngõ ra của hai mạng con sẽ qua một hàm Loss thực hiện tính toán mức độ giống nhau giữa hai ảnh ngõ vào.2: Ví dụ về kiến trúc của mạng Siamese [2].3 Các bước huấn luyện mô hình thông qua mạng Siamese Với kiến trúc bao gồm hai mạng CNN chạy song song, nên quá trình huấn luyện một mô hình cũng sẽ tương tự. Nhưng thay vì sẽ cho ra một output cụ thể, Siamese sẽ chỉ dừng lại tại việc cho ra hai embedded vector của hai tấm ảnh và từ đó sẽ tinh khoảng cách của chúng. Quá trình huấn luyện cụ thể của một mô hình sẽ gồm 4 bước: Bước 1: chọn một cặp Input data làm ngõ vào (ảnh khuôn mặt trong dataset) - Positive: hai ảnh cùng Class - Negative: hai ảnh khác Class Bước 2: đưa qua các mạng con để xử lý, output của các mạng con là các vectơ Bước 3: tính toán khoảng cách euclide giữa hai vectơ đó Bước 4: sử dụng hàm phi tuyến sigmoid có thể sử dụng để đưa giá trị trong khoảng [0,1], càng về 1 thì hai ảnh càng giống nhau, còn về 0 thì ngược lại.
CÁC THÀNH PHẦN CẤU TẠO NÊN MẠNG NEURAL SIAMESE Mạng Siamese bao gồm hai mạng CNN thực thi song song, nên kiến trúc của Siamese cũng sẽ bao gồm các lớp liên tiếp nhau, và kiến trúc mạng được hình thành dựa trên bốn loại lớp chính đó là: lớp đầu vào (input layer), lớp nhân chập (convolutional layer), lớp tổng hợp (pooling layer) và lớp kết nối đầy đủ (fully - connected layer) [3]. Lớp đầu vào – Input layer Đầu vào của mạng Siamese sẽ là các cặp hình ảnh phải có cùng kích thước. Ví dụ một ảnh đầu vào được biểu diễn (100, 100, 3) được hiểu là hình ảnh có kích thước 100*100 và là hình ảnh màu với 3 kênh tương ứng với 3 màu chủ đạo: Red, Green, Blue. Lớp nhân chập – Convolutional layer Trong toàn bộ kiến trúc của Siamese Neural Network, Convolutional Layer sẽ là nhân tố sở hữu vai trò quan trọng.
Lớp nhân chập sẽ đại diện SNN thực thi việc tính toán để cho ra các trọng số của bài toán từ các dữ liệu đầu vào. Đây là lớp đầu Trang 8 tiên thực hiện mọi phép toán nhằm trích xuất đặc trưng khác nhau từ các dữ liệu đầu vào. Đồng hành với Convolutional Layer sẽ có các thuật ngữ cần được làm rõ như Filter Map, Stride, Feature Map và Padding. - Filter Map: đây là các ma trận vuông (mặt nạ nhân chập) dùng để áp vào lần lượt các pixel của hình ảnh để cho ra các đặc trưng của mỗi bức ảnh.
Những ma trận này có thể là một ma trận 3 chiều tương ứng với 3 màu sắc: R, G và B, các ma trận này bao gồm những con số và các con số chính là Parameter [3]. - Stride: trong mạng Neural, Stride là việc dịch Filter Map từ trái sang phải theo lần lượt từng Pixel [3]. - Padding: là các con số 0 được thêm vào xung quanh viền của ma trận ngõ vào. - Feature Map: đây là kết quả của việc Filter Map được dịch trên toàn bộ pixel của dữ liệu đầu vào input.
Mỗi lần Filter Map dịch hoàn tất, việc tính toán sẽ được thực thi từ đó nó sẽ cho ra các ma trận mới có trọng số là kết quả của tổng phép nhân chập trên từng pixel. Dưới đây là biểu diễn quá trình nhân chập của một hình ảnh màu với một ma trận 3*3 ngõ ra sẽ là một ma trận bằng tổng các phần tử của phép nhân chập trên 3 kênh RGB cộng với một trọng số bias.3: Quá trình nhân chập trên ảnh màu [4].3 Lớp tổng hợp – Pooling layer Thông thường trong mạng SNN, lớp tổng hợp (Pooling) sẽ là lớp tiếp theo của một tích chập (Convolution). Ý nghĩa của lớp Pooling là nhằm giảm kích thước ma trận xuống, từ đó số lượng các điểm ảnh sẽ giảm đi, sau đó ma trận mới được tạo ra sẽ được đưa vào lớp Convolution tiếp theo. Max pooling và average pooling là hai phương pháp phổ biến trong việc giảm chiều dữ liệu của ma trận.
- Phương pháp max pooling: chọn giá trị trọng số lớn nhất trong phạm vi mà nó được thực thi. - Phương pháp average pooling: tính trung bình các giá trị trong số trong phạm vi mà nó đang được thực thi.