Trong nhiều năm qua có rất nhiều công trình nghiên cứu về bài toán nhận dạngkhuôn mặt người từ ánh đen trắng,xám đến ảnh màu như ngày hôm nay.Các nghiên cứu đi từ bài toán đơn giản ,mỗi
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA ĐIỆN – ĐIỆN TỬ
BÁO CÁO BÀI TẬP LỚN TRUYỀN THÔNG ĐA PHƯƠNG TIỆN
Đề tài : Nhận dạng khuôn mặt bằng matlab GVHD : Vũ Hữu Tiến
Hà Nội - 5/2022
Trang 2Mục lục
LỜI MỞ ĐẦU 4
I TỔNG QUAN VỀ NHẬN DIỆN KHUÔN MẶT VÀ THUẬT TOÁN MẠNG NƠ-RON 5
1 Phương pháp nhận diện khuôn mặt 5
2 Thuật toán mạng nơ-ron 5
3 InPut 6
3.1 Kiến Trúc AlexNet 7
3.2 Overlapping Max Pooling 7
3.3 ReLu Nonlinearity 8
3.4 Reducing overfitting 9
II BÀI TOÁN NHẬN DẠNG BẰNG MẠNG NƠ-RON TÍCH CHẬP 11
1 Cách Thức Hoạt Động 11
2 Nhận Diện Khuôn mặt 13
3 Phát Hiện Các Điểm Quan Trọng Trên Khuôn Mặt 14
4 Liên Kết Khuôn Mặt 15
III ẢNH MÀU VÀ CÁC LỆNH XỬ LÝ ẢNH MÀU TRONG MATLAB 16
1 Ảnh số 16
2 Ảnh màu 16
3 Các định dạng ảnh cơ bản trong xử lý ảnh 17
IV SƠ ĐỒ KHỐI VÀ CODE CHƯƠNG TRÌNH 19
1 Sơ đồ khối 19
2 Code chương trình 20
2.1 Collect data 20
2.2 Trainning 21
2.3 Test 22
Trang 3Mục Lục Hình Ảnh
Hình 1 Điều chỉnh bức ảnh về 256px 7
Hình 2.AlexNet bao gồm 5 convolution Layer và 3 Fully connected Layers 7
Hình 3.So sánh tốc độ huấn luyện của ReLu và Tanh 8
Hình 4.Giá trị bão hoà của hàm Tanh 9
Hình 5.Hiệu ứng hình qua gương 10
Hình 6 Rút trích kích thước 227*227 từ bức ảnh 256*256 11
Hình 7.Mô hình huấn luyện 11
Hình 8.Tổng quan về phương pháp nhận dạng khuôn mặt người bằng mạng nơ ron tích chập 12
Hình 9.Thiết kế mạng nơ-ron để xử lý ảnh 12
Hình 10.Các giai đoạn dò tìm và hiệu chỉnh 13
Hình 11.Kết quả phát hiện mẫu trên ảnh IJB-A bằng phương pháp tháp sâu 14
Hình 12 Kiến trúc DCNN được sử dụng để trích xuất các mô tả cục bộ cho nhiệm vụ phát hiện các điểm mốc trên khuôn mặt 14
Hình 13.Ví dụ về các điểm mốc trên khuôn mặt 15
Hình 14.Kết quả mẫu của phương pháp liên kết khuôn mặt cho các video của JANUS CS2, là bộ dữ liệu mở rộng của IJB-A 16
Trang 4LỜI MỞ ĐẦU
Trong thế giới ngày nay với sự phát triển mạnh mẽ của kỹ thuật số và mạng toàncầu, vấn đề về đảm bảo an toàn thông tin cũng như vật chất ngày càng trở nên quan trọng
và khó khăn Một trong những phương pháp đơn giản nhất cũng là bài toán phức tạp nhất
là xác định một người thông qua khuôn mặt từ đó cập nhật thông tin để đảm bảo an toànthông tin cũng như tìm kiếm tội phạm
Trong nhiều năm qua có rất nhiều công trình nghiên cứu về bài toán nhận dạngkhuôn mặt người từ ánh đen trắng,xám đến ảnh màu như ngày hôm nay.Các nghiên cứu
đi từ bài toán đơn giản ,mỗi ảnh chỉ có một khuôn mặt người nhìn vào thiết bị thu hình vàđầu ở tư thế thẳng đứng trong ảnh đen trắng.Cho đến ngày hôm nay bài toán mở rộng choảnh màu ,có nhiều tư thế thay đổi trong ảnh.Không những thế vậy mà còn mở rộng phạm
vi từ môi trường xung quanh khá đơn giản cho đến môi trường xung quanh rất phức tạpnhằm đáp ứng nhu cầu của con người
Mục tiêu của đề tài “Nhận dạng khuôn mặt bằng matlab dùng thuật toán mạng ron” là thực hiện chương trình tìm kiếm một bức ảnh có khuôn mặt một người trong tậpảnh cơ sở giống với khuôn mặt của người đó trong ảnh cần kiểm tra bằng ngôn ngữmatlab
Trang 5nơ-I TỔNG QUAN VỀ NHẬN DIỆN KHUÔN MẶT VÀ THUẬT TOÁN MẠNG NƠ-RON
1 Phương pháp nhận diện khuôn mặt
Dựa vào những đặc điểm của phương pháp nhận diện khuôn mặt người trên ảnh.Cácphương pháp này được chia làm bốn hướng tiếp cận :
Hướng tiếp cận trên tri thức: Mã hoá các hiểu biết của con người về khuôn mặtthành các luật Thông thường các luật mô tả mối quan hệ giữa các đặc trưng
Hướng tiếp cận dựa trên các đặc trưng không thay đổi: Mục tiêu của các thuậttoán này là đi tìm các đặc trưng mô tả cấu trúc khuôn mặt người mà các đặc trưngnày sẽ không thay đổi theo thời gian, và không phụ thuộc vào biểu cảm khuônmặt, vị trí đặt thiệt bị thu hình hay điều kiện ánh sáng
Hướng tiếp cận dựa trên so mẫu khớp: Dùng các mẫu chuẩn của khuôn mặt người
để mô tả cho khuôn mặt người hay các đặc trưng khuôn mặt Các mối tương quangiữa những dữ liệu ảnh đưa vào và các mẫu dùng để xác định khuôn mặt người
Hướng tiếp cận dựa trên diện mạo: Trái ngược so với mẫu khớp, các mô hình(hay các mẫu) được học từ một tập ảnh huấn luyện trước đó Sau đó hệ thống sẽxác định khuôn mặt người hay còn gọi hướng tiếp cận này là hướng tiếp cận theophương pháp học
2 Thuật toán mạng nơ-ron
Mạng nơ ron nhân tạo (Artificial Neural Network ANN) là một chuỗi các giải thuậtlập trình, mô phỏng dựa trên cách hoạt động của mạng lưới thần kinh trong não bộ cácsinh vật sống Mạng nơ ron nhân tạo được sử dụng để tìm ra mối quan hệ của một tập dữliệu thông qua một thiết kế kiến trúc chứa nhiều tầng ẩn (hidden layer), mỗi tầng lạichứa nhiều nơ ron Các nơ ron được kết nối với nhau và độ mạnh yếu của các liên kếtđược biểu hiện qua trọng số liên kết Lập trình thông thường có thể làm được rất nhiềuphần mềm lớn, như tính toán mô phỏng các vụ nổ hạt nhân trong siêu máy tính ở cácphòng thí nghiệm, hoặc tái hiện các tế bào ở cấp độ phân tử để phân tích các thử nghiệmthuốc Một siêu máy tính có thể tính toán được nhiều tỉ phép tính trên giây, tuy nhiên lậptrình thông thường lại gặp khó khăn trong việc nhận ra các mẫu đơn giản, ví dụ nhưnhận diện mặt người, điều mà một bộ não sinh học xử lý nhanh và chính xác hơn nhiều
Áp dụng với các kỹ thuật học sâu, mạng nơ ron nhân tạo hiện nay đang được áp dụng đểgiải quyết những vấn đề mà lập trình theo logic thông thường khó có thể giải quyếtđược Do đó, mạng nơ ron nhân tạo đang nhanh chóng trở nên phổ biến, và là xu thế trênnhiều lĩnh vực
Mạng nơ-ron tích chập (CNN) là một trong những mô hình học sâu thành công nhấttrong lĩnh vực nhận dạng khuôn mặt, các vùng hình ảnh khác nhau luôn được sử dụng
Trang 6đồng thời khi trích xuất các đặc trưng hình ảnh, nhưng trong thực tế, các phần khác nhaucủa khuôn mặt đóng những vai trò khác nhau trong nhận diện khuôn mặt Mỗi khuônmặt của mỗi người có sự độc đáo và nét đặc trưng riêng biệt.
Một hệ thống nhận diện mặt người thông thường bao gồm bốn bước xử lý sau:
Phát hiện khuôn mặt (Face Detection)
Phân đoạn khuôn mặt (Face Alignment hay Segmentation)
Trích chọn đặc trưng (Feature Extraction)
Nhận diện (Recognition) hay Phân lớp khuôn mặt (Face Classification)
3 Mạng Neural Network AlexNet
3.1 InPut
Mạng AlexNet là mô hình giải quyết bài toán phân lớp một bức ảnh vào 1 lớp trong
1000 lớp khác nhau (vd gà, chó, mèo… ) Đầu ra của mô hình là một vector có 1000phần tử Phần tử thứ i của vector đại diện cho xác suất bức ảnh thuộc về lớp thứ i Do
đó, tổng của các phần tử trong vector là 1
Đầu vào của mạng AlexNet là một bức ảnh RGB có kích thước 256x256 pixel Toàn
bộ các bức ảnh của tập train và tập test đều có cùng kích thước là 256x256 Nếu một bứcảnh nào đó không có kích thước 256x256, bức ảnh đó sẽ được chuyển về kích thướcđúng 256x256 Những bức hình có kích thước nhỏ hơn 256 thì sẽ được phóng bự lên đếnkích thước 256, những bức hình nào có kích thước lớn hơn 256 thì sẽ được cắt loại phầnthừa để nhận được bức hình có kích thước 256x256 Hình 1 là ví dụ về việc điều chỉnhbức ảnh về kích thước 256x256
Hình 1 Điều chỉnh bức ảnh về 256px
Trang 7Nếu ảnh đầu vào là ảnh xám (grayscale), bức ảnh trên sẽ được chuyển đổi thànhđịnh dạng RGB bằng cách tạo ra 3 layer kênh màu giống nhau từ ảnh xám Sau khichuẩn hoá hết tất cả các ảnh về dạng 256x256x3, nhóm tác giả chỉ sử dụng một phầncủa bức ảnh có kích thước 227x227x3 của một bức ảnh làm đầu vào cho mạng neuralnetwork
3.2 Kiến Trúc AlexNet
Hình 2.AlexNet bao gồm 5 convolution Layer và 3 Fully connected Layers
Những convolution layer ( hay còn gọi với tên khác là các filter) rút trích các thôngtin hữu ích trong các bức ảnh Trong một convolution layer bất kỳ thường bao gồmnhiều kernel có cùng kích thước Ví dụ như convolution layer đầu tiên của AlexNet chứa
96 kernel có kích thước 11x11x3 Thông thường thì width và height của một kernel bằngnhau, và độ sâu (depth) thường bằng số lượng kênh màu
Convolutional 1 và convolution 2 kết nối với nhau qua một Overlapping MaxPooling ở giữa Tương tự như vậy giữa convolution 2 và convolution 3 Convolutional 3,convolution 4, convolution 5 kết nối trực tiếp với nhau, không thông qua trung gian.Convolutional 5 kết nối fully connected layter 1 thông qua một Overlapping Maxpooling, tiếp theo mà một fully connected layter nữa Và cuối cùng là một bộ phân lớpsoftmax với 1000 lớp nhãn (các bạn có thể xem hình kiến trúc mạng AlexNet ở trên để
có cái nhìn tổng quát hơn)
ReLU nonlinerity được sử dụng sau tất các các convolution và fully connected layer.Trước đây, ReLU nonlinerity của lớp convolution 1 và 2 thường theo sau bởi một bướcchuẩn hoá cục bộ (local normalization) rồi mới thực hiện pooling
3.3 Overlapping Max Pooling
Max Pooling layer thường được sử dụng để giảm chiều rộng và chiều dài của mộttensor nhưng vẫn giữ nguyên chiều sâu Overlapping Max Pool layter cũng tương tự như
Trang 8Max Pool layter, ngoại trừ việc là một window của bước này sẽ có một phần chồng lênwindow của bước tiếp theo Ta sử dụng pooling có kích thước 3x3 và bước nhảy là 2giữa các pooling Nghĩa là giữa pooling này và pooling khác sẽ overlapping với nhau 1pixel Các thí nghiệm thực tế đã chứng minh rằng việc sử dụng overlapping giữa cácpooling giúp giảm độ lỗi top-1 error 0.4% và top-5 error là 0.3% khi so với việc sử dụngpooling có kích thước 2x2 và bước nhảy 2 (vector output của cả hai đều có số chiềubằng nhau).
3.4 ReLu Nonlinearity
Một cải tiến quan trọng khác của AlexNet là việc sử dụng hàm phi tuyến ReLU.Trước đây, các nhóm nghiên cứu thường sử dụng hàm kích hoạt là hàm Tanh hoặc hàmSigmoid để huấn luyên mô hình neural network AlexNet chỉ ra rằng, khi sử dụngReLU, mô hình deep CNN sẽ huấn luyện nhanh hơn so với viêc sử dụng tanh hoặcsigmoid Hình 3 được rút ra từ bài báo chỉ ra rằng với việc sử dụng ReLU (đường nétliền trong hình), AlexNet đạt độ lỗi 25% trên tập huấn luyện và nhanh hơn gấp 6 lần sovới mô hình tương tự nhưng sử dụng Tanh (đường nét đứt trong hình) Thí nghiệm trên
sử dụng tập dữ liệu CIFAR-10 để huấn luyện
Hình 3.So sánh tốc độ huấn luyện của ReLu và Tanh
Để hiểu rõ hơn lý do vì sao ReLU lại nhanh hơn so với các hàm khác, chúng ta hãy đốisánh hình dạng giá trị output của các hàm trên
Công thức của ReLU là: f(X) = max(0,x)
Trang 9Hình 4.Giá trị bão hoà của hàm Tanh
hình 4, ta có nhận xét rằng: hàm tanh đạt giá trị bão hoà khi giá trị z >2.5 và z < -2.5(số 2.5 là số cảm tính của mình) Và tại vùng |z|>2.5, thì độ dốc của hàm hầu như gầnnhư bằng 0, |z| càng lớn thì độ dốc càng gần 0 hơn Vì lý do này nên gradient descent sẽhội tụ chậm Còn đối với hàm ReLU, với giá trị z dương thì độ dốc của hàm không gầnbằng 0 như hàm tanh Điều này giúp cho việc hội tụ xảy ra nhanh hơn Với giá trị z âm,
độ dốc bằng 0, tuy nhiên, hầu hết các giá trị của các neural trong mạng thường có giá trịdương, nên trường hợp âm ít (hiếm) khi xảy ra ReLU huấn luyện nhanh hơn so vớisigmoid cũng bởi lý do tương tự
3.5 Reducing overfitting
3.5.1 Overfitting là gì?
Khi dạy một đứa trẻ từ 2-5 tuổi về việc cộng hai số, chúng sẽ học rất nhanh và trảlời đúng hầu hết các câu hỏi mà chúng ta đã dạy chúng Tuy nhiên, chúng sẽ trảlời sai đối với những câu hỏi hơi lắc léo một chút (câu hỏi tương tự câu chúng ta
đã dạy, nhưng thêm một xíu thông tin đòi hỏi trẻ phải suy nghĩ), hoặc các câu hỏichưa được dạy Lý do chúng trả lời sai những câu hỏi đó là khi trả lời những câuhỏi được dạy, chúng thường nhớ lại câu trả lời, chứ không thực sự hiểu câu hỏi.Cái này ở Việt Nam ta gọi là học vẹt
Tương tự vậy, Neural network chính bản thân nó có khả năng học được những gìđược dạy, tuy nhiên, nếu quá trình huấn luyện của bạn không tốt, mô hình có khảnăng sẽ giống như những đứa trẻ trên kia, hồi tưởng lại những gì đã dạy chochúng mà không hiểu bản chất Và kết quả Neural Network sẽ hoạt động tốt trêntập huấn luyện (nhưng chúng không rút ra được bản chất chính của vấn đề), và
kết quả trên tập test tệ Người ta gọi trường hợp trên là overfitting.
3.5.2 Augmentation
Trang 10 Việc sử dụng nhiều biến thể khác nhau của một bức hình có thể giúp ngăn môhình không bị overfitting Với việc sử dụng nhiều biến thể của 1 bức hình, bạn bắt
ép mô hình không học vẹt dữ liệu Có nhiều cách khác nhau để sinh ra dữ liệumới dựa vào dữ liệu có sẵn
3.5.3 Data augmentation by mirroring
Ý tưởng của việc này là lấy ảnh trong gương của một bức hình (ảnh ảo) Nhìn vàoảnh bên dưới, bên trái là hình gốc của con mèo trong tập huấn luyện, bên phải làảnh của con mèo khi thêm hiệu ứng hình qua gương (đơn giản là xoay qua trục y
là được )
Hình 5.Hiệu ứng hình qua gương
3.5.4 Data augmentation by random crops
Việc lựa chọn vị trí ảnh gốc một cách ngẫu nhiên cũng giúp chúng ta có thêm mộtảnh khác so với ảnh gốc ban đầu
Nhóm tác giả của AlexNet rút trích ngẫu nhiên bức ảnh có kích thước 227x227 từbức ảnh 256x256 ban đầu làm input đầu vào cho mô hình Bằng cách này, chúng
ta có thể tăng số lượng dữ liệu lên gấp 2048 lần bằng việc sử dụng cách này
Trang 113.5.5 Dropout
Với gần 60 triệu tham số trong tập huấn luyện, việc overfitting xảy ra là điều dễhiểu Các tác giả của AlexNet đã thực nghiệm nhiều cách nữa để giảm overfitting
Họ sử dụng một kỹ thuật gọi là dropout -kỹ thuật này khá đơn giản, một neural sẽ
có xác suất bị loại khỏi mô hình là 0.5 Khi một neural bị loại khỏi mô hình, nó sẽkhông được tham qia vào quá trình lan truyền tiến hoặc lan truyền ngược Chonên, mỗi giá trị input sẽ đi qua một kiến trúc mạng khác nhau Như mô tả ở hình
7, kết quả là giá trị của tham số trọng số sẽ tốt hơn và khó bị overfitting hơn.Trong quá trình test, toàn bộ network được sử dụng, không có dropout, tuy nhiên,giá trị output sẽ scaled bởi tham số 0.5 tương ứng với những neural không sửdụng trong quá trình trainning Với việc sử dụng dropout, chúng ta sẽ tăng gấpđôi lần lặp cần thiết để đạt được độ hội tụ, nhưng khi không sử dụng dropout,mạng AlexNet rất dễ bị overfitting
Trang 12Hình 7.Mô hình huấn luyện
II.BÀI TOÁN NHẬN DẠNG BẰNG MẠNG NƠ-RON TÍCH CHẬP
1 Cách Thức Hoạt Động
Phương pháp bao gồm các bước khác nhau để thực hiện nhận diện khuôn mặt tựđộng Đầu tiên là thực hiện phát hiện khuôn mặt để khoanh vùng khuôn mặt trong từngkhung hình ảnh và video Sau đó, dữ liệu ở bước trên đuợc liên kết với các khuôn mặtđược phát hiện với danh tính chung trên các video và căn chỉnh các khuôn mặt thành tọa
độ bằng cách sử dụng các mốc được phát hiện Cuối cùng, hệ thống thực hiện xác minhkhuôn mặt để tính toán độ tương tự giữa một cặp hình ảnh / video
Hình 8.Tổng quan về phương pháp nhận dạng khuôn mặt người bằng mạng nơ ron tíchchập
Trang 13Hình 9.Thiết kế mạng nơ-ron để xử lý ảnh
Từ mạng nơ ron trên, ta có thể thấy các bước xử lý ảnh từ trái sang phải Lần lượt, ta
có thể thấy hình ảnh các cửa sổ dò tìm (ô vuông màu xanh) đang giảm dần và hiệu chỉnhdần theo từng giai đoạn dò tìm:
Hình 10.Các giai đoạn dò tìm và hiệu chỉnh
2 Nhận Diện Khuôn mặt
Tất cả các khuôn mặt trong khung hình ảnh / video được phát hiện bằng hệ thống dòkhuôn mặt dựa trên mạng nơ ron tích chập sâu (Deep Convolutional Neural Network –DCNN), được gọi là Mô hình tháp sâu để phát hiện khuôn mặt (Deep PyramidDeformable Parts Model for Face Detection - DP2MFD), bao gồm hai mô-đun Môđunđầu tiên tạo ra một hình tháp sâu được chuẩn hóa bảy cấp cho bất kỳ hình ảnh đầu vàonào có kích thước tùy ý Kiến trúc mạng nơ ron tích chập tương tự như Alexnet, được sửdụng để trích xuất các tính năng sâu Mạng hình tháp này tạo ra một tháp gồm 256 bản
đồ đặc trưng ở lớp tích chập thứ 5 (conv5) Bộ lọc 3*3 được áp dụng để có được lớp