1. Trang chủ
  2. » Công Nghệ Thông Tin

Xây dựng chương trình nhận diện khuôn mặt bằng CNN

23 69 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 23
Dung lượng 1,41 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trong xã hội hiện đại ngày nay, Robot đang ngày một phát triển, dần dần đang được sử dụng để thay thế con người trong 1 số công việc. Ví dụ: Nhà hàng It’s More Teatime Than Terminator tại Côn Sơn, Trung Quốc có hàng chục Robot bé nhó dễ thương có thể nấu nướng và phục vụ. Công ty Moley Robotics tại London, Anh đã chế tạo ra Robot nấu ăn đầu tiên. Aiko Chihira, một Robot giống hệ người được Toshiba công bố tại Triển lãm điện tử CEATEC ngày 7102014. Aiko không chỉ nhìn, di chuyển, nói tiếng Nhật một cách trôi chảy, mà còn có thể sử dụng thành thạo ngôn ngữ kí hiệu.

Trang 1

MER GEFO RMA

T 20

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI

KHOA CÔNG NGHỆ THÔNG TIN

-🙙🙙🙙 -BÁO CÁO ĐỀ TÀI

Học phần: Trí Tuệ Nhân Tạo

Đề tài: Tìm hiểu về mạng CNN để xây dựng

hệ thống nhận diện khuôn mặt

Giáo viên hướng dẫn: ThS Lê Thị Thủy

Nhóm sinh viên thực hiện:

1 Nguyễn Danh Hòa

2 Đặng Công Khả

3 Nguyễn Quý HoàngLớp: IT6043.5 Khóa: K14 Nhóm: 25

Hà Nội - Năm 2022

Trang 2

MER GEFO RMA

T 20

MỤC LỤC

3 Nhận diện khuôn mặt với thời gian thực 20

Trang 3

MER GEFO RMA

T 20

Bảng phân chia công việc:

công nghệ, viết code, thu thập dữ liệu, kiểm thử sản phẩm, viết báo cáo.

Đặng Công Khả Thành viên nhóm Viết code, thu thập

dữ liệu, viết báo

cáo.

Nguyễn Quý Hoàng Thành viên nhóm Viết code, thu thập

dữ liệu, viết báo

cáo.

Trang 4

MER GEFO RMA

T 20

LỜI NÓI ĐẦU

1 Lý do chọn đề tài

Trong xã hội hiện đại ngày nay, Robot đang ngày một phát triển, dần

dần đang được sử dụng để thay thế con người trong 1 số công việc Ví dụ:

- Nhà hàng It’s More Teatime Than Terminator tại Côn Sơn, Trung

Quốc có hàng chục Robot bé nhó dễ thương có thể nấu nướng và phục vụ

- Công ty Moley Robotics tại London, Anh đã chế tạo ra Robot nấu

ăn đầu tiên

- Aiko Chihira, một Robot giống hệ người được Toshiba công bố tại

Triển lãm điện tử CEATEC ngày 7/10/2014 Aiko không chỉ nhìn,

di chuyển, nói tiếng Nhật một cách trôi chảy, mà còn có thể sử dụng thành thạo ngôn ngữ kí hiệu

Khi làm việc, Robot sẽ luôn cần phải học hỏi chứ không phải chỉ làm

những việc như đã được lập trình ban đầu Và để Robot có khả năng đó thì

cần có được một bộ não giống như con người, và đối với Robot, đó chính là

học máy, tiếng Anh là “Machine Learning” (ML) Một số lĩnh vực phổ biến

Trang 5

MER GEFO RMA

T 20

Trong bài báo cáo này, chúng tôi sẽ giới thiệu quá trình tìm hiểu và

xây dựng 1 hệ thống nhận dạng khuôn mặt bằng cấu trúc mạng CNN – một

cấu trúc mạng nổi tiếng, thường được sử dụng trong lĩnh vực xử lý ảnh và

Robot

Trang 6

MER GEFO RMA

T 20

Chương I Giới thiệu về cấu trúc mạng CNN

1 Định nghĩa CNN là gì?

CNN là tên viết tắt của từ Convolutional Neural Network (hay còn gọi là

CNNs_mang nơ ron tích chập) Đây là một trong những mô hình Deep Learning

vô cùng tiên tiến CNN sẽ cho phép bạn xây dựng các hệ thống thông minh với

độ chính xác vô cùng cao Hiện nay, CNN được ứng dụng rất nhiều trong

những bài toán nhận dạng object trong ảnh Và kiến thức cụ thể về CNN đã

được lý giải như sau:

● Convolutional

Đây là một loại cửa sổ dạng trượt nằm trên một ma trận Những

convolutional layer sẽ có các parameter được học để điều chỉnh và lấy

ra những thông tin chính xác nhất mà không cần phải chọn

feature Convolution hay tích chập chính là nhân các phần tử trong ma

trận Sliding Window còn được gọi là kernel, filter hoặc feature detect

và là loại ma trận có kích thước nhỏ

● Feature

Feature là đặc điểm, các CNN sẽ so sánh hình ảnh dựa theo từng mảnh

và những mảnh này được gọi là Feature Thay vì phải khớp các bức

ảnh lại với nhau thì CNN sẽ nhìn ra sự tương động khi tìm kiếm thô

các Feature khớp với nhau bằng 2 hình ảnh tốt hơn Mỗi Feature được

xem là một hình ảnh mini có nghĩa chúng là những mảng 2 chiều nhỏ

Các Feature này đều tương ứng với các khía cạnh nào đó của hình ảnh

và chúng có thể khớp lại với nhau

Trang 7

MER GEFO RMA

T 20

2 Các lớp cơ bản của mạng CNN

● Convolutional layer

Đây là lớp quan trọng nhất của CNN, lớp này có nhiệm vụ thực hiện mọi

tính toán Những yếu tố quan trọng của một convolutional layer là: stride,

padding, filter map, feature map

● CNN sử dụng các filter để áp dụng vào vùng của hình ảnh Những

filter map này được gọi là ma trận 3 chiều, mà bên trong nó là các con

số và chúng là parameter

● Stride có nghĩa là khi bạn dịch chuyển filter map theo pixel dựa vào

giá trị trừ trái sang phải Và sự chuyển dịch này chính là Stride

● Padding: Là các giá trị 0 được thêm vào với lớp input

● Feature map: Nó thể hiện kết quả của mỗi lần filter map quét qua

input Sau mỗi lần quét sẽ xảy ra quá trình tính toán

● Relu Layer

Relu layer là hàm kích hoạt trong neural network và hàm này còn

được gọi là activation function Hàm kích hoạt có tác dụng mô phỏng

các neuron có tỷ lệ truyền xung qua axon Trong activation function

thì nó còn có hàm nghĩa là: Relu, Leaky, Tanh, Sigmoid,

Trang 8

MER GEFO RMA

T 20

Maxout, Hiện nay, hàm relu được dùng phổ biến và vô cùng thông

dụng

Nó được sử dụng nhiều cho các nhu cầu huấn luyện mạng neuron thì

relu mang lại rất nhiều ưu điểm nổi bật như: việc tính toán sẽ trở nên

nhanh hơn, Quá trình sử dụng relu, chúng ta cần lưu ý đến vấn đề

tùy chỉnh các learning rate và theo dõi dead unit Những lớp relu layer

đã được sử dụng sau khi filter map được tính ra và áp dụng hàm relu

lên những giá trị của filter map

● Pooling layer

Khi đầu vào quá lớn, những lớp pooling layer sẽ được xếp vào giữa

những lớp Convolutional layer để làm giảm parameter Hiện nay, pooling

layer có 2 loại chủ yếu là: max pooling và average

● Fully connected layer

Lớp này có nhiệm vụ đưa ra kết quả sau khi lớp convolutional layer và

pooling layer đã nhận được ảnh truyền Lúc này, ta thu được kết quả là

model đã đọc được thông tin của ảnh và để liên kết chúng cũng như

cho ra nhiều output hơn thì ta sử dụng fully connected layer

Ngoài ra, nếu như fully connected layer có được giữ liệu hình ảnh thì

chúng sẽ chuyển nó thành mục chưa được phân chia chất lượng Cái

này khá giống với phiếu bầu rồi chúng sẽ đánh giá để bầu chọn ra hình

ảnh có chất lượng cao nhất

3 Cấu trúc của mạng CNN là gì?

Trang 9

MER GEFO RMA

T 20

Mạng CNN là một trong những tập hợp của lớp Convolution bị chồng

lên nhau cũng như sử dụng hàm nonlinear activation như ReLU và tanh để

kích hoạt trọng số trong node Lớp này sau khi thông qua hàm thì sẽ được

trọng số trong các node Những lớp này sau khi đã thông qua hàm kích hoạt

thì có thể tạo ra những thông tin trừu tượng hơn cho những lớp tiếp theo

Trong mô hình CNN có tính bất biến và tích kết hợp Nếu như bạn có

cùng một đối tượng mà lại chiếu theo nhiều góc độ khác nhau thì độ chính

xác có thể sẽ bị ảnh hưởng Với chuyển dịch, quay và co giãn thì pooling

layer sẽ được sử dụng để giúp làm bất biến những tính chất này Vì vậy, CNN

sẽ đưa ra kết quả có độ chính xác tương ứng ở từng mô hình

Trong đó, pooling layer sẽ cho bạn tính bất biến đối với phép dịch

chuyển, phép co dãn và phép quay Còn tính kết hợp cục bộ sẽ cho bạn thấy

những cấp độ biểu diễn, thông tin từ thấp đến mức độ cao với độ trừu tượng

thông qua convolution từ các filter Mô hình CNN có các layer liên kết được

với nhau dựa vào cơ chế convolution

Những layer tiếp theo sẽ là kết quả từ những convolution từ layer trước

đó, vì thế mà bạn sẽ có các kết nối cục bộ phù hợp nhất Vậy, mỗi neuron ở

lớp sinh ra tiếp theo từ kết quả filter sẽ áp đặt lên vùng ảnh cục bộ của một

neuron có trước đó Trong khi huấn luyện mạng, CNN sẽ tự động học hỏi các

giá trị thông qua lớp filter dựa vào cách thức mà người dùng thực hiện

Trong đó, cấu trúc cơ bản của CNN thường bao gồm 3 phần chính là:

Local receptive field (trường cục bộ): Lớp này có nhiệm vụ

tách lọc dữ liệu, thông tin ảnh và lựa chọn các vùng ảnh có giá trị sử dụng cao

nhất

Trang 10

MER GEFO RMA

T 20

Shared weights and bias (trọng số chia sẻ): Lớp này giúp làm

giảm tối đa lượng tham số có tác dụng chính của yếu tố này trong mạng CNN

Trong mỗi convolution sẽ có các feature map khác nhau và mỗi feature lại có

khả năng giúp detect một vài feature trong ảnh

Pooling layer (lớp tổng hợp): Pooling layer là lớp cuối cùng và

có tác dụng làm đơn giản các thông tin đầu ra Có nghĩa là, sau khi đã hoàn

tất tính toán và quét qua các lớp thì đến pooling layer để lược bớt các thông

tin không cần thiết Từ đó, cho ra kết quả theo như ý mà người dùng mong

muốn

4 Giới thiệu về kiến trúc VGG19

Architect của VGG19 bao gồm 19 layer :13 layer Conv (2 layer conv-conv,3

layer conv-conv-conv) đều có kernel 3×3, sau mỗi layer conv là maxpooling

downsize xuống 0.5, và 3 layer fully connection và 3 layer convolution ở 3

layer conv cuối (thành 4 conv stack với nhau)

VGG 19 sử dụng kernel 3×3 thay vì 11×11 ở alexnet(7×7 ZFNet) Kết hợp 2

conv 3×3 có hiệu quả hơn 1 cov 5×5 về receptive field giúp mạng deeper hơn lại

giảm tham số tính toán cho model 3 Conv 3×3 có receptive field same 1 conv 7×7

Input size giảm dần qua các conv nhưng tăng số chiều sâu Làm việc rất tốt cho

task classifier và localizer (rất hay được sử dụng trong object detection) Sử dụng

relu sau mỗi conv và training bằng batch gradient descent Có sử dụng data

augmentation technique trong quá trình training

VGG-19 cũng đã giành được ILSVRC năm 2014

Trang 11

MER GEFO RMA

T 20

Hình minh họa cho kiến trúc VGG19

Mạng CNN là một trong những tập hợp của lớp Convolution bị chồng

lên nhau cũng như sử dụng hàm nonlinear activation như ReLU và tanh để

kích hoạt trọng số trong node Lớp này sau khi thông qua hàm thì sẽ được

Trang 12

MER GEFO RMA

T 20

trọng số trong các node Những lớp này sau khi đã thông qua hàm kích hoạt

thì có thể tạo ra những thông tin trừu tượng hơn cho những lớp tiếp theo

Trong mô hình CNN có tính bất biến và tích kết hợp Nếu như bạn có

cùng một đối tượng mà lại chiếu theo nhiều góc độ khác nhau thì độ chính

xác có thể sẽ bị ảnh hưởng Với chuyển dịch, quay và co giãn thì pooling

layer sẽ được sử dụng để giúp làm bất biến những tính chất này Vì vậy, CNN

sẽ đưa ra kết quả có độ chính xác tương ứng ở từng mô hình

Trong đó, pooling layer sẽ cho bạn tính bất biến đối với phép dịch

chuyển, phép co dãn và phép quay Còn tính kết hợp cục bộ sẽ cho bạn thấy

những cấp độ biểu diễn, thông tin từ thấp đến mức độ cao với độ trừu tượng

thông qua convolution từ các filter Mô hình CNN có các layer liên kết được

với nhau dựa vào cơ chế convolution

Những layer tiếp theo sẽ là kết quả từ những convolution từ layer trước

đó, vì thế mà bạn sẽ có các kết nối cục bộ phù hợp nhất Vậy, mỗi neuron ở

lớp sinh ra tiếp theo từ kết quả filter sẽ áp đặt lên vùng ảnh cục bộ của một

neuron có trước đó Trong khi huấn luyện mạng, CNN sẽ tự động học hỏi các

giá trị thông qua lớp filter dựa vào cách thức mà người dùng thực hiện

Trong đó, cấu trúc cơ bản của CNN thường bao gồm 3 phần chính là:

Local receptive field (trường cục bộ): Lớp này có nhiệm vụ

tách lọc dữ liệu, thông tin ảnh và lựa chọn các vùng ảnh có giá trị sử dụng cao

nhất

Shared weights and bias (trọng số chia sẻ): Lớp này giúp làm

giảm tối đa lượng tham số có tác dụng chính của yếu tố này trong mạng CNN

Trang 13

MER GEFO RMA

T 20

Trong mỗi convolution sẽ có các feature map khác nhau và mỗi feature lại có

khả năng giúp detect một vài feature trong ảnh

Pooling layer (lớp tổng hợp): Pooling layer là lớp cuối cùng và có tác

dụng làm đơn giản các thông tin đầu ra Có nghĩa là, sau khi đã hoàn tất tính

toán và quét qua các lớp thì đến pooling layer để lược bớt các thông tin không

cần thiết Từ đó, cho ra kết quả theo như ý mà người dùng mong muốn

Architect của VGG19 bao gồm 19 layer :13 layer Conv (2 layer conv-conv,3

layer conv-conv-conv) đều có kernel 3×3, sau mỗi layer conv là maxpooling

downsize xuống 0.5, và 3 layer fully connection và 3 layer convolution ở 3 layer

conv cuối (thành 4 conv stack với nhau)

Trang 14

MER GEFO RMA

T 20

Chương II Xây dựng ứng dụng

1 Thu thập dữ liệu mẫu

● Tạo file “Collect Images.py” dùng để thu thập ảnh mẫu dùng cho quá trình train và test

● Import thư viện cv2, là thư viện chuyển dùng của python trong xử lý ảnh

● Sử dụng bộ dữ liệu mã nguồn mở

“haarcascade_frontalface_default.xml” đã được cộng đồng lập trình viên xây dựng để hỗ trợ xác định khuôn mặt.

● Sau khi hệ thống xác định được khuôn mặt trong camera, thực hiện khoanh vùng khuôn mặt và cắt ảnh khuôn mặt theo kích thước (200x200) rồi lưu vào thư

Trang 15

MER GEFO RMA

T 20

mục Train/Test trong folder mang tên của người đang chụp ảnh đã tạo sẵn.

2 Train model

● Import các thư viện cần thiết cho quá trình train

Cài đặt cấu hình cho bộ train và bộ test dữ liệu

● Cài đặt cấu hình cho tập dữ liệu training set và testing set

Trang 16

MER GEFO RMA

T 20

● Thêm lớp tiền sử lí cho quá trình train, ở đây ta sử dụng cấu trúc VGG19

● Set up để hệ thống không train những layer đã được train rồi nhằm tối ưu

quá trình train, tránh lãng phí tài nguyên

● Lấy danh sách các folder trong thư mục train\

● Setup các layer đầu ra

● Tạo model train

Trang 17

MER GEFO RMA

T 20

● Show cấu trúc của model VGG19

Trang 18

MER GEFO RMA

T 20

Trang 19

MER GEFO RMA

T 20

● Bắt đầu quá trình train với cấu hình model được set up như trong ảnh, sau

khi train xong lưu dữ liệu vào file “facefeatures_new_model.h5” để tái sử

dụng sau này

● Quá trình train đang diễn ra

Trang 20

MER GEFO RMA

T 20

3 Nhận diện khuôn mặt với thời gian thực

Tạo file có tên “RealTime Check.py”

Import các thư viện cần thiết

● Sử dụng hàm load_model trong thư viện Keras.model để load file dữ liệu

đã được train ở phần 2

● Load bộ dữ liệu mẫu để nhận dạng khuôn mặt

● Tạo list tên trùng tên với các folder chứa ảnh dùng để train và test

● Sử dụng camera để nhận dạng

● Thực hiện quá trình xác định xem có khuôn mặt nào trong góc cam không

Trang 21

MER GEFO RMA

T 20

● Sau khi xác định được khuôn mặt trong hình, ta resize chúng về kích thước

200x200, cùng với kích thước của dữ liệu dùng để train, sau đó chuyển về

dạng vector rồi dùng hàm “predict” để đưa ra các dự đoán về độ giống

nhau giữa ảnh nhận dạng được với tệp dữ liệu đã được train

● Ta lấy vị trí giá trị lớn nhất trong list pred ở trên, sau đó lấy tên từ list

class_labels ở phía trên với vị trí vừa lấy là được tên của người đang được

nhận dạng, cuối cùng là in ra màn hình tên người được nhận dạng, nếu

không nhận dạng được khuôn mặt nào, màn hình hiện “No face found”,

nhấn “q” để tắt cửa sổ ứng dụng

Trang 22

MER GEFO RMA

T 20

● Một số kết quả khi chạy ứng dụng

Trang 23

MER GEFO RMA

T 20

Chương III Tổng kết

Qua những bước trên, chúng tôi đã trình bày từng bước quá trình xây dựng

một hệ thống nhận dạng khuôn mặt bằng công nghệ CNN, đây chỉ là một mô hình

Machine Learning cơ bản, còn nhiều sai số trong quá trình xử dụng nhưng là bước

đầu trong công cuộc nghiên cứu về công nghệ Machine Learning, rất mong sẽ nhận

được nhiều những nhận xét từ mọi người để chúng tôi có thể cải thiện sản phẩm

trong tương lai

Ngoài ra, chúng em xin gửi lời cảm ơn tới cô Lê Thị Thủy, giảng viên trực

tiếp giảng dạy bộ môn “Trí Tuệ Nhân Tạo” đã hỗ trợ chúng em trong quá trình xây

dựng đề tài này, chúng em xin chân thành cảm ơn cô

Ngày đăng: 04/03/2022, 21:11

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w