Đồ án Thị giác máy tính với đề tài Nhận dạng khuôn mặt. Nhận diện khuôn mặt sử dụng mô hình mạng Lenet5. Chi tiết về mô hình Lenet5 và lý do sử dụng. Các hàm kích hoạt thường dùng. Bộ data tự tạo để train và test mô hình. Độ chính xác lên đến 95%
Trang 1TRƯỜNG ĐẠI HỌC XÂY DỰNG HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN
Trang 2Mục Lục
Mở đầu 1
Chương I: Lý thuyết 2
1 Các phép đo hiệu năng 2
a Accuracy 2
b Confusion Matrix 2
c ROC curve - AUC 3
d F1 – score 4
2 LeNet5 5
a Mạng thần kinh tích chập 5
b Lịch sử của LeNet5 5
c LeNet5 là gì ? 6
d Tính năng của LeNet5 6
e Kiến trúc LeNet5 6
3 Các hàm kích hoạt thường dùng 12
a Thế nào là hàm kích hoạt 12
b Vì sao chúng ta cần sử dụng hàm kích hoạt 13
c Linear Function 13
d ReLU (Rectified Linear unit) 13
e Sigmoid 14
f Hyperbolic Tangent Activation Function(Tanh) 15
g Softmax Activation Function 15
Chương II: Thực nghiệm và Đánh giá 16
1 Bộ data sử dụng 16
2 Xử lý và phân tích data 16
3 Xây dựng model 18
4 Kết quả, đánh giá và cải tiến 19
Tài liệu tham khảo 22
Trang 3Mở đầu
Với sự phát triển không ngừng của khoa học và công nghệ, đặc biệt là với những chiếcđiện thoại thông minh (smartphone) ngày càng hiện đại và được sử dụng phổ biến trongđời sống con người đã làm cho lượng thông tin thu được bằng hình ảnh ngày càng tăng.Theo đó, lĩnh vực xử lý ảnh cũng được chú trọng phát triển, ứng dụng rộng rãi trong đờisống xã hội hiện đại Không chỉ dừng lại ở việc chỉnh sửa, tăng chất lượng hình ảnh màvới công nghệ xử lý ảnh hiện nay chúng ta có thể giải quyết các bài toán nhận dạng chữviết, nhận dạng dấu vân tay, nhận dạng khuôn mặt…
Một trong những bài toán được nhiều người quan tâm nhất của lĩnh vực xử lý ảnh hiệnnay đó là nhận dạng khuôn mặt (Face Recognition) Như chúng ta đã biết, khuôn mặtđóng vai trò quan trọng trong quá trình giao tiếp giữa người với người, nó mang mộtlượng thông tin giàu có, chẳng hạn như từ khuôn mặt chúng ta có thể xác định giới tính,tuổi tác, chủng tộc, trạng thái cảm xúc, đặc biệt là xác định mối quan hệ với đối tượng (cóquen biết hay không) Do đó, bài toán nhận dạng khuôn mặt đóng vai trò quan trọngtrong nhiều lĩnh vực đời sống hằng ngày của con người như các hệ thống giám sát, quản
lý vào ra, tìm kiếm thông tin một người nổi tiếng,…đặc biệt là an ninh, bảo mật Có rấtnhiều phương pháp nhận dạng khuôn mặt để nâng cao hiệu suất tuy nhiên dù ít hay nhiềunhững phương pháp này đang vấp phải những thử thách về độ sáng, hướng nghiêng, kíchthước ảnh, hay ảnh hưởng của tham số môi trường
Bài toán Nhận diện khuôn mặt (Face Recognition) bao gồm nhiều bài toán khác nhaunhư: phát hiện mặt người (face detection), đánh dấu (facial landmarking), trích chọn (rút)đặc trưng (feature extration), gán nhãn, phân lớp (classification) Trong thực tế, nhậndạng khuôn mặt người (Face Recognition) là một hướng nghiên cứu được nhiều nhà khoahọc quan tâm, nghiên cứu để ứng dụng trong thực tiễn Ở các trường đại học hàng đầu vềCông Nghệ Thông Tin như Massachusetts Institute of Technology (MIT), CarnegieMellon University (CMU), Standford, Berkeley và các công ty lớn như Microsoft, Apple,Google, Facebook đều có các trung tâm về sinh trắc học (Biometrics Center) và nghiêncứu về nhận dạng khuôn mặt người và nó đã trở thành một trong những lĩnh vực nghiêncứu chính cho đến nay Gần đây, công ty Hitachi Kokusai Electric của Nhật mới cho rađời một camera giám sát, có thể chụp ảnh và tìm ra 36 triệu khuôn mặt khác có nét tương
tự trong cơ sở dữ liệu chỉ trong vòng một giây
Trang 4Chương I: Lý thuyết
1 Các phép đo hiệu năng
Khi xây dựng 1 mô hình học máy, chúng ta cần một phép đánh giá để xem mô hình sửdụng có hiệu quả không và để so sánh khả năng của các mô hình
Có rất nhiều cách đánh giá 1 mô hình Tùy vào những bài toán khác nhau mà chúng ta sửdụng các phương pháp khác nhau Các phương pháp thường được sử dụng là:
Accuracy= Number of Correct Predictions
Total number of predictions
Mặc dù nó đơn giản để sử dụng và thực hiện, nó chỉ thích hợp cho những trường hợp mỗilớp có số lượng mẫu bằng nhau
Sẽ là tốt khi sử dụng Accuracy khi các lớp biến mục tiêu trong dữ liệu gần như cân bằng
và ngược lại, không sử dụng khi biến mục tiêu chủ yếu thuộc về 1 lớp
b Confusion Matrix
Confusion là một phương pháp đánh giá kết quả của những bài toán phân loại với việcxem xét cả những chỉ số về độ chính xác và độ bao quát của các dự đoán cho từng lớp.Một confusion matrix gồm 4 chỉ số sau đối với mỗi lớp phân loại:
Về cơ bản, ma trận nhầm lẫn gồm 4 chỉ số để dễ hiểu ta dùng ví dụ dự đoán ung thư đểgiải thích các chỉ số này:
Trang 5- TP(True Positive): Số lượng dự đoán chính xác Là khi mô hình dự đoán đúng mộtngười bị ung thư.
- TN (True Negative): Số lương dự đoán chính xác một cách gián tiếp Là khi mô hình
dự đoán đúng một người không bị ung thư, tức là việc không chọn trường hợp bị ungthư là chính xác
- FP(False Positive): Số lượng các dự đoán sai lệch Là khi mô hình dự đoán một người
bị ung thư và người đó hoàn toàn khỏe mạnh
- FN(False Negative): Số lượng các dự đoán sai lệch một cách gián tiếp Là khi môhình dự đoán một người không bị ung thư nhưng người đó bị ung thư, tức là việckhông chọn trường hợp bị ung thư là sai
Từ 4 chỉ số, có thể sử dụng 2 tham số sau đây để đánh giá mức độ tin cậy của mô hình:
- Precision: Trong tất cả các dự đoán Positive được đưa ra, bao nhiêu dự đoán là chính
xác chỉ số này được tính theo công thức:
Precision= TP
TP+FP
- Recall: Trong tất cả các trường hợp Positive, bao nhiêu trường hợp đã được dự đoán
chính xác chỉ số này được tính theo công thức:
Recall= TP
TP+FN
Confusion Matrix là biểu diễn dạng bảng của các kết quả dự đoán của bất kỳ bộ phân loạinhị phân nào, được sử dụng để mô tả hiệu suất của mô hình phân loại trên 1 tập dữ liệuthử nghiệm khi các giá trị thực được biết đến
c ROC curve - AUC
Đường cong ROC ( receiver operating characteristic curve) là 1 biểu đồ cho thấy hiệusuất của mô hình phân loại ở tất cả các ngưỡng phân loại
Đường cong này hiển thị hai tham số:
Trang 6Hình 1: Tỷ lệ TP so với FP ở các ngưỡng phân loại khác nhau.
Để tính toán các điểm trong đường cong ROC, chúng ta có thể đánh giá mô hình hồi quylogistic nhiều lần với các ngưỡng phân loại khác nhau, nhưng cách này sẽ không hiệuquả Có một thuật toán dựa trên sắp xếp hiệu quả có thể cung cấp thông tin này, được gọi
là AUC
AUC là viết tắt của "Area under ROC Curve." Điều này có nghĩa là AUC đo toàn bộ khu
vực hai chiều bên dưới toàn bộ đường cong ROC
Hình 2: AUC
AUC cung cấp một phép đo tổng hợp về hiệu suất trên tất cả các ngưỡng phân loại có thể
có Một cách diễn giải AUC là xác suất mô hình xếp hạng một ví dụ dương tính ngẫunhiên cao hơn ví dụ phủ định ngẫu nhiên
d F1 – score
Như vậy chúng ta đã có 2 khái niệm Precision và Recall và mong muốn 2 đại lượng nàycàng cao càng tốt Tuy nhiên trong thực tế nếu ta điều chỉnh model để tăng Recall quá
Trang 7mức có thể dẫn đến Precision giảm và ngược lại, cố điều chỉnh model để tăng Precision
có thể làm giảm Recall Nhiệm vụ của chúng ta là phải cân bằng 2 đại lượng này
Vậy thì bài toán mới được đặt ra là: giả sử chúng ta đang xây dựng một tập các model (đểsau đó chọn ra model tốt nhất) Và chúng ta như “đứng giữa 2 con đường” khi lựa chọncác model sao cho cân bằng giữa Precision và Recall Nhưng thật may có thêm một tham
số nữa dung hòa giữa 2 cái và ta có thể căn vào đó để lựa chọn, đó là F-1 Score:
F 1=2 Precision∗Recall
Precision+Recall
Đó, giờ chúng ta cứ căn vào F1 mà chọn model, F1 càng cao thì càng tốt Khi lý tưởngnhất thì F1 = 1 (khi Recall = Precision=1) F1-score có giá trị nằm trong nửa khoảng(0,1] F1 càng cao, bộ phân lớp càng tốt Khi cả recall và precision đều bằng 1 (tốt nhất
có thể), F1=1 Khi cả recall và precision đều thấp, ví dụ bằng 0.1, F1=0.1
2 LeNet5
a Mạng thần kinh tích chập.
Mạng thần kinh chuyển đổi (ConvNet/CNN) là một thuật toán Deep Learning được cho
là hấp thụ hình ảnh đầu vào, gán tầm quan trọng (trọng số và độ lệch có thể học được)cho các khía cạnh/đối tượng khác nhau trong hình ảnh và có thể phân biệt giữa chúng Quá trình tiền xử lý cần thiết trong ConvNet thấp hơn nhiều so với các thuật toán phânloại khác trong khi ở các chiến lược nguyên thủy, các bộ lọc được thiết kế thủ công, với
đủ đào tạo, ConvNets có khả năng nghiên cứu và tìm hiểu các bộ lọc/đặc điểm này.Thiết kế của ConvNet tương tự như mẫu thuộc tính của Tế bào thần kinh trong Bộ nãocon người và được thúc đẩy bởi tổ chức của Visual Cortex Các tế bào thần kinh riêng lẻchỉ phản ứng với các kích thích trong một vùng hạn chế của chế độ xem trực quan đượcgọi là Trường tiếp nhận một nhóm các trường như vậy chồng lên nhau để ẩn toàn bộ khuvực trực quan
b Lịch sử của LeNet5.
LeNet-5 là một trong những mạng thần kinh tích chập sớm nhất đã thúc đẩy sự kiện họcsâu Sau vô số năm phân tích và nhiều lần lặp lại hấp dẫn, kết quả cuối cùng được đặt tên
là LeNet-5 vào năm 1988
Năm 1989, Yann LeCun và cộng sự tại Bell Labs ban đầu đã áp dụng quy tắc lan truyềnngược cho tất cả các ứng dụng hợp lý và tin rằng tính linh hoạt được cung cấp trong quátrình tổng quát hóa mạng có thể được tăng lên đáng kể bằng cách cung cấp các ràng buộc
từ miền tác vụ
Trong cùng năm đó, LeCun đã giải thích một điểm bất thường nhỏ trong nhận dạng chữ
số viết tay trong một bài báo khác và chứng minh rằng bằng cách giả sử rằng vấn đề cóthể phân tách tuyến tính, các mạng một lớp có xu hướng thể hiện các kỹ năng khái quáthóa kém
Sau khi loại bỏ sự bất thường bằng cách sử dụng bộ phát hiện tính năng bất biến trênmạng nhiều lớp, không tự nhiên, mô hình có thể hoạt động rất tốt Ông tin rằng những kếtquả này đã xác minh rằng việc giảm thiểu số lượng tham số miễn phí trong mạng thầnkinh có thể tăng cường khả năng tổng quát hóa giống nhau
Trang 8và hoạt động tốt trong xử lý hình ảnh quy mô lớn.
LeNet-5 có sự xuất hiện của CNN và xác định các yếu tố cơ bản của CNN Tuy nhiên, nóhoàn toàn không phù hợp vào thời điểm đó do thiếu thiết bị phần cứng, đặc biệt là GPU
và thuật toán khác nhau
d Tính năng của LeNet5.
- Mỗi lớp tích chập bao gồm ba phần: chức năng kích hoạt tích chập, tổng hợp và phituyến tính
- Sử dụng tích chập để trích xuất các đặc trưng không gian (Convolution ban đầu đượcgọi là các trường tiếp nhận)
- Subsampling lớp tổng hợp trung bình hàm kích hoạt tanh
- Sử dụng MLP làm bộ phân loại cuối cùng
- Kết nối thưa thớt giữa các lớp để giảm độ phức tạp của tính toán
e Kiến trúc LeNet5.
LeNet5 là một mạng nhỏ, nó chứa các mô-đun cơ bản của deep learning: convolutionallayer, pooling layer, and full link layer Nó là cơ sở của các mô hình học sâu khác Ở đâychúng tôi phân tích sâu về LeNet5 Đồng thời, thông qua phân tích ví dụ, hiểu sâu hơn vềlớp tích chập và lớp tổng hợp
LeNet-5 Tổng cộng bảy lớp, không bao gồm đầu vào, mỗi lớp chứa một tham số có thể huấn luyện; mỗi lớp có nhiều FeatureMap, một đặc điểm của mỗi FeatureMap đầu vào được trích xuất bằng bộ lọc tích chập và sau đó mỗi FeatureMap có nhiều nơ-ron
Trang 9Input Layer
Lớp đầu tiên là lớp đầu vào Nó thường không được coi là một lớp của mạng vì không có
gì được học trên lớp đó Lớp đầu vào hỗ trợ 32x32 và đây là các kích thước của hình ảnh
sẽ được chuyển sang lớp tiếp theo
C1 layer-convolutional layer
o Input picture: 32 * 32
o Convolution kernel size: 5 * 5
o Convolution kernel types: 6
o Output featuremap size: 28 * 28 (32-5 + 1) = 28
o Number of neurons: 28 * 28 * 6
o Trainable parameters: (5 * 5 + 1) * 6 (5 * 5 = 25 tham số đơn vị và một tham số
thiên vị cho mỗi bộ lọc, tổng cộng 6 bộ lọc)
o Number of connections: (5 * 5 + 1) * 6 * 28 * 28 = 122304
Chi tiết:
- Thao tác tích chập đầu tiên được thực hiện trên ảnh đầu vào (sử dụng 6convolution kernels kích thước 5 * 5) để thu được 6 C1 f eature maps (6 eaturemaps kích thước 28 * 28, 32-5 + 1 = 28)
- Chúng ta hãy xem có bao nhiêu tham số là cần thiết Kích thước của convolutionkernel là 5 * 5 và có tổng cộng 6 * (5 * 5 + 1) = 156 tham số, trong đó +1 cho biếtrằng kernel có độ lệch
- Đối với C1 convolutional layer, mỗi pixel trong C1 được kết nối với 5 * 5 pixel
và 1 độ lệch trong ảnh đầu vào, do đó, có tổng cộng 156 * 28 * 28 = 122304 kếtnối Có 122.304 kết nối, nhưng chúng ta chỉ cần tìm hiểu 156 tham số, chủ yếuthông qua chia sẻ trọng số
S2 layer-pooling layer (downsampling layer)
o Input: 28 * 28
o Sampling area: 2 * 2
Trang 10o Sampling method: 4 đầu vào được thêm vào, nhân với tham số có thể huấn luyện, cộng với phần bù có thể huấn luyện Kết quả qua sigmoid
o Input: tất cả 6 hoặc một số kết hợp feature maps trong S2
o Convolution kernel size: 5 * 5
o Convolution kernel type: 16
o Output featureMap size: 10 * 10 (14-5 + 1) = 10
o Mỗi feature maps trong C3 được kết nối với tất cả 6 hoặc một số feature mapstrong S2, cho biết rằng feature maps của lớp này là sự kết hợp khác nhau của cácfeature maps được trích xuất từ lớp trước
o The trainable parameters are: 6 * (3 * 5 * 5 + 1) + 6 * (4 * 5 * 5 + 1) + 3 * (4 *
- 6 feature maps đầu tiên của C3 (tương ứng với cột thứ 6 của hộp màu đỏ đầu tiêntrong hình trên) được kết nối với 3 feature maps được kết nối với lớp S2 (hộp màu
đỏ đầu tiên trong hình trên) và 6 feature maps tiếp theo feature maps được kết nốivới lớp S2 4 feature maps được kết nối (hộp màu đỏ thứ hai trong hình trên), 3feature maps tiếp theo được kết nối với 4 feature maps không được kết nối ở lớpS2 và feature maps cuối cùng là được kết nối với tất cả các feature maps ở lớp S2
- Kích thước kernel tích chập vẫn là 5 * 5, vì vậy có 6 * (3 * 5 * 5 + 1) + 6 * (4 * 5
* 5 + 1) + 3 * (4 * 5 * 5 + 1) +1 *(6*5*5+1) = 1516 tham số Kích thước ảnh là10*10 nên có 151600 kết nối
Trang 11Cấu trúc tích chập của C3 và 3 đồ thị đầu tiên trong S2 được hiển thị bên dưới
S4 layer-pooling layer (downsampling layer)
o Input: 10 * 10
o Sampling area: 2 * 2
o Sampling method: 4 đầu vào được thêm vào, nhân với tham số có thể huấn
luyện, cộng với phần bù có thể huấn luyện Kết quả qua sigmoid
- S4 là pooling layer,, kích thước cửa sổ vẫn là 2 * 2, tổng cộng có 16 feature maps,
và 16 map 10x10 của lớp C3 được gộp theo đơn vị 2x2 để thu được 16 feature
Trang 12maps, 5x5 Lớp này có tổng cộng 32 tham số đào tạo 2x16, 5x5x5x16 = 2000 kếtnối.
C5 layer-convolution layer
o Input: tất cả 16 feature maps của lớp S4
o Convolution kernel size: 5 * 5
o Convolution kernel type: 120
o Output featureMap size: 1 * 1 (5-5 + 1)
o Trainable parameters / connection: 120 * (16 * 5 * 5 + 1) = 48120
Chi tiết:
- Lớp C5 là một lớp tích chập Vì kích thước của 16 hình ảnh của lớp S4 là 5x5,giống như kích thước của convolution kernel , nên kích thước của hình ảnh đượctạo thành sau khi tích chập là 1x1 Điều này dẫn đến 120 kết quả tích chập Mỗicái được kết nối với 16 maps ở cấp độ trước Vì vậy, có (5x5x16 + 1) x120 =
48120 tham số và cũng có 48120 kết nối Cấu trúc mạng của lớp C5 như sau:
F6 layer-fully connected layer
o Input: c5 vec-tơ 120 chiều
o Calculation method: tính toán tích vô hướng giữa vectơ đầu vào và vectơ trọng
số, cộng với phần bù và kết quả được xuất ra thông qua hàm sigmoid
o Trainable parameters: 84 * (120 + 1) = 10164
Chi tiết:
- Layer 6 là một lớp được kết nối đầy đủ Lớp F6 có 84 node, tương ứng với bitmap7x12, -1 nghĩa là trắng, 1 nghĩa là đen, do đó, màu đen và trắng của bitmap củamỗi biểu tượng tương ứng với một mã Các tham số huấn luyện và số lượng kết
Trang 13nối cho lớp này là (120 + 1) x 84 = 10164 Sơ đồ bảng mã ASCII như sau:
Phương thức kết nối của layer 6 như sau:
Output layer-fully connected layer ¶
Lớp đầu ra cũng là một fully connected layer, có tổng cộng 10 nút, tương ứng đại diệncho các số từ 0 đến 9 và nếu giá trị của nút i là 0, kết quả nhận dạng mạng là số i Kết nốimạng chức năng cơ sở hướng tâm (RBF) được sử dụng Giả sử x là đầu vào của lớp trước
và y là đầu ra của RBF, phép tính đầu ra của RBF là:
y i=∑
j (x j−w ij)2
Giá trị của công thức trên w_ij được xác định bởi mã hóa bitmap của i, trong đó i nằmtrong khoảng từ 0 đến 9 và j nằm trong khoảng từ 0 đến 7 * 12-1 Giá trị của đầu ra RBFcàng gần 0 thì càng gần i, tức là càng gần với con số mã hóa ASCII của i, điều đó cónghĩa là kết quả nhận dạng được nhập bởi mạng hiện tại là ký tự i Lớp này có 84x10 =
840 tham số và kết nối