Tải bản đầy đủ (.docx) (47 trang)

Tìm Hiểu Mạng Cnn Và Ứng Dụng Nhận Dạng Mặt Người.docx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.51 MB, 47 trang )

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

BÀI TẬP LỚN
MƠN: TRÍ TUỆ NHÂN TẠO
ĐỀ TÀI
TÌM HIỂU MẠNG CNN VÀ ỨNG DỤNG NHẬN DẠNG MẶT NGƯỜI


Hà Nội - Năm 2023


MỤC LỤC
DANH MỤC HÌNH................................................................................................................................. III
CÁC TỪ VIẾT TẮT.................................................................................................................................V
CHƯƠNG 1: TỔNG QUAN VỀ MẠNG NƠ RON VÀ GIỚI THIỆU VỀ MẠNG NƠ RON TÍCH
CHẬP.......................................................................................................................................................................1
1.1. NƠ RON NHÂN TẠO...............................................................................................................................1
1.1.1. Lịch sử của nơ ron nhân tạo........................................................................................................1
1.1.2. Cấu tạo và quá trình xử lý của nơ ron sinh học...........................................................................2
1.1.3. Cấu tạo và quá trình xử lý của một nơ ron nhân tạo...................................................................2
1.1.4. Các mơ hình hàm kích hoạt của mạng nơ ron nhân tạo..............................................................5
1.2. MẠNG NƠ RON TÍCH CHẬP....................................................................................................................9
1.2.1. Khái niệm về mạng nơ ron tích chập..........................................................................................9
1.2.2. Mơ hình mạng nơ ron tích chập..................................................................................................9
1.2.3. Xây dựng mạng nơ ron tích chập..............................................................................................10
CHƯƠNG 2: XÂY DỰNG CHƯƠNG TRÌNH.........................................................................................19
2.1. XÂY DỰNG MƠ HÌNH...........................................................................................................................19
2.2. CÁC BƯỚC THỰC HIỆN........................................................................................................................19
2.2.1. Tạo tập dữ liệu...........................................................................................................................19


2.2.2. Huấn luyện dữ liệu đưa vào......................................................................................................24
2.2.3. Hiển thị dữ liệu đầu ra...............................................................................................................30
2.3. KẾT QUẢ SAU KHI HUẤN LUYỆN.........................................................................................................31
2.4. ĐƯA HÌNH ẢNH MỘT NGƯỜI CẦN NHẬN DIỆN.....................................................................................32
KẾT LUẬN...................................................................................................................................................35
PHỤ LỤC......................................................................................................................................................36
TÀI LIỆU THAM KHẢO............................................................................................................................39

i


TĨM TẮT
Deep Learning là thuật tố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, cả cụ thể lẫn trừu tượng, qua đó làm rõ nghĩa của các
loại dữ liệu. Deep Learning được ứng dụng trong nhận diện hình ảnh, nhận diện
giọng nói, xử lý ngôn ngữ tự nhiên. Hiện nay rất nhiều các bài tốn nhận dạng
sử dụng Deep Learning, vì nó có thể giải quyết các bài tốn với số lượng lớn các
biến, tham số kích thước đầu vào lớn với hiệu năng cũng như độ chính xác vượt
trội so với các phương pháp phân lớp truyền thống, xây dựng những hệ thống
thơng minh với độ chính xác cao. Trong báo cáo này, chúng tôi nghiên cứu về
đề tài “Nhận diện khuôn mặt” theo sự hướng dẫn của Giảng viên Lê Thị Thủy.

ii


DANH MỤC HÌNH
Hình 1.1 Hình ảnh thí nghiệm của David Hubel và Torsten Wiesel trên mèo ..............1
Hình 1.2 Hình ảnh một nơ ron sinh học .......................................................................2
Hình 1.3 Cơng thức của một nơ ron nhân tạo................................................................3
Hình 1.4 Hình ảnh của một nơ ron nhân tạo .................................................................3

Hình 1.5 Hình ảnh vị trí thiên lệch được thêm vào trong thực tế ..................................4
Hình 1.6 Kết quả của hàm sigmoid với các trọng số đầu vào khác nhau nhưng khơng
có thiên lệch .................................................................................................................. 5
Hình 1.7 Kết quả của hàm sigmoid với các trọng số thiên lệch khác nhau ..................5
Hình 1.8 Đồ thị hàm Sigmoid .......................................................................................6
Hình 1.9 Đồ thị hàm TanH ...........................................................................................6
Hình 1.10 Đồ thị hàm tuyến tính ...................................................................................7
Hình 1.11 Đồ thị hàm RELU ........................................................................................8
Hình 1.12 Đồ thị hàm ELU ...........................................................................................8
Hình 1.13 Các tầng (layer) trong CNN là 3 chiều..........................................................9
Hình 1.14 Hình ảnh minh họa một ví dụ sử dụng CNN để phân lớp đồ vật ..................9
Hình 1.15 Ví dụ minh họa về cấu trúc CNNs – LeNet – 5...........................................10
Hình 1.16 Hình ảnh một mạng nơ ron được kết nối đầy đủ ........................................10
Hình 1.17 Tích chập một ma trận nhỏ để tạo ra dữ liệu...............................................11
Hình 1.18 Ví dụ về lớp tích chập.................................................................................12
Hình 1.19 So sánh giữa ReLU và sigmoid...................................................................14
Hình 1.20 Ví dụ minh họa đơn giản về tầng gộp.........................................................15
Hình 1.21 Một ví dụ về lớp được kết nối đầy đủ ........................................................16
Hình 1.22 Ví dụ về trường hợp quá khớp (bên trái) và trường hợp chuẩn (bên phải). .17
Hình 1.23 Cấu trúc của AlexNet .................................................................................18
Hình 2.1 Sơ đồ quy trình của mơ hình nhận dạng khn mặt .....................................19
Hình 2.2 Chuyển ảnh về xám.......................................................................................20
Hình 2.3 Tầm nhìn của máy tính khi các đặc trưng Haar chạy ...................................21
Hình 2.4 Tạo khung khuôn mặt ..................................................................................21
iii


Hình 2.5 Các đặc trưng Haar đánh dấu những nơi có thể là khn mặt.......................22
Hình 2.6 Bức ảnh đã được xác định khn mặt ..........................................................22
Hình 2.7 Đưa bức ảnh cần nhận diện vào chương trình...............................................23

Hình 2.8 Sau khi phát hiện khn mặt.........................................................................23
Hình 2.9 Dữ liệu được lưu ..........................................................................................23
Hình 2.10 Kiến trúc dạng khối của mơ hình CNN ......................................................24
Hình 2.11 Một ảnh đầu vào kích thước 100x100x1 (đa cấp xám)................................25
Hình 2.12 Kết quả sau khi thực hiện khối B2 .............................................................26
Hình 2.13 Kết quả sau khi thực hiện khối B3 .............................................................26
Hình 2.14 Kết quả sau khi thực hiện khối B4..............................................................27
Hình 2.15 Kết quả sau khi thực hiện khối B5 .............................................................27
Hình 2.16 Kết quả sau khi thực hiện khối B6 .............................................................28
Hình 2.17 Dữ liệu phân lớp của mơ hình CNN............................................................29
Hình 2.18 Dữ liệu danh tính ........................................................................................30
Hình 2.19 Hơn 20 triệu trọng số được huấn luyện.......................................................31
Hình 2.20 Độ chính xác và giá trị hàm lỗi theo từng epoch.........................................32
Hình 2.21 Hình ảnh trước khi nhận diện .....................................................................32
Hình 2.22 Hình ảnh sau khi nhận diện (Trường Giang)...............................................33
Hình 2.23 Hình ảnh trước khi nhận diện 5 người ........................................................33
Hình 2.24 Hình ảnh sau khi nhận diện 5 người............................................................34

iv


CÁC TỪ VIẾT TẮT

ReLu

Rectified Linear Unit

CNN

Convolutional Neural Network


OpenCV

Open Source Computer Vision

CV

Computer Vision

MLL

Machine Learning Library

CONV

Convolution

v


CHƯƠNG 1: TỔNG QUAN VỀ MẠNG NƠ RON VÀ GIỚI
THIỆU VỀ MẠNG NƠ RON TÍCH CHẬP
1.1. NƠ RON NHÂN TẠO
1.1.1. Lịch sử của nơ ron nhân tạo
Vào năm 1943, nhà thần kinh học Warren McCulloch đã cùng nhà toán học
Walter Pitts đã viết một cuốn sách về cách mạng thần kinh hoạt động. Và họ đã thực hiện
mô phỏng một mạng thần kinh đơn giản trên một mạch điện. [9]
Vào năm 1949, Donald Hebb đã viết cuốn sách Organization of Behavior. Điểm
nhấn chính là mạng thần kinh nào được sử dụng nhiều sẽ được tăng cường.
Vào năm 1959, David Hubel và Torsten Wiesel đã xuất bản cuốn sách Receptive

fields of single neurons in the cat’s striate cortex, miêu tả về phản ứng của các tế bào thần
kinh thị giác trên loài mèo, cũng như cách loài mèo ghi nhớ và nhận diện hình dạng trên
kiến trúc vỏ não của nó.

Hình 1.1 Hình ảnh thí nghiệm của David Hubel và Torsten Wiesel trên mèo

Vào năm 1989, Yann LeCun đã áp dụng thuật toán học cho mạng nơ ron theo kiểu
lan truyền ngược vào kiến trúc mạng nơ ron tích chập của Fukushima. Sau đó vài năm,
LeCun đã cơng bố LeNet-5 [13]. Có thể nói, LeNet-5 là một trong những mạng nơ ron
tích chập sơ khai nhất, tuy nhiên các dấu ấn của nó vẫn tồn tại tới ngày nay, có thể thấy
thông qua một số thành phần thiết yếu mà các mạng nơ ron tích chập của ngày nay vẫn
đang sử dụng

1


1.1.2. Cấu tạo và quá trình xử lý của nơ ron sinh học

Hình 1.2: Hình ảnh một nơ ron sinh học

Một nơ ron gồm có: thân nơ ron, tua gai thần kinh, sợi trục thần kinh, trong đó:
 Thân nơ ron: là nơi xử lý các tín hiệu được đưa vào;
 Tua gai thần kinh: là nơi nhận các xung điện vào trong nơ ron;
 Sợi trục thần kinh: là nơi đưa tín hiệu ra ngồi sau khi được xử lý bởi nơ
ron;
 Khớp thần kinh: vị trí nằm giữa tua gai thần kinh và sợi trục thần kinh, đây
là điểm liên kết đầu ra của nơ ron này với đầu vào của nơ ron khác.

1.1.3. Cấu tạo và quá trình xử lý của một nơ ron nhân tạo
Dựa vào cấu tạo của một nơ ron sinh học, các nhà khoa học nghiên cứu và lập trình

đã đưa ra kiến trúc của một nơ ron nhân tạo:

2


Hình 1.3: Cơng thức của một nơ ron nhân tạo

Mạng nơ ron nhân tạo có thể mơ tả đơn giản lại như sau:

Hình 1.4: Hình ảnh một nơ ron nhân tạo

Trong đó:

3


 Danh sách các đầu vào: Là các thuộc tính đầu vào của
một nơ ron. Số lượng thuộc tính đầu vào thường nhiều
hơn một, do dữ liệu thô đầu vào thường là một vector
nhiều chiều, hoặc nhiều nơ ron tầng trước kết nối tới một
nơ ron tầng sau.
 Trọng số liên kết: Các liên kết được thể hiện độ mạnh yếu
qua một giá trị được gọi là trọng số liên kết. Kết hơp
với các đầu truyền, tín hiệu đến các
nơ ron nhân tạo khác sẽ được tính bằng ;

Hình 1.5: Hình ảnh vị trí thiên lệch được thêm vào trong thực tế

 Hàm tổng: Tổng các tích của các đầu vào với trọng số
liên kết mô phỏng các khớp kết nối. Sau đó đi qua hàm

tính tổng để tính ra giá trị trước khi đưa vào hàm truyền;
 Thiên lệch (b): Độ lệch được đưa vào sau khi khi tính
tốn xong hàm tổng, tạo ra giá trị cuối cùng trước khi đưa
vào hàm truyền. Mục đích của việc thêm vào thiên lệch
nhằm dịch chuyển chức năng của hàm kích hoạt sang trái
hoặc phải, giúp ích khi mạng được huấn luyện. Hình ảnh
vị trí thiên lệch được thêm vào trong mạng nơ ron thực
tế.
Hình ảnh huấn luyện khi có và khơng có thiên lệch:
4


Hình 1.6: Kết quả của hàm sigmoid với các trọng số đầu vào khác nhau nhưng
khơng có thiên lệch

Hình 1.7: Kết quả của hàm sigmoid với các trọng số thiên lệch khác nhau

Hàm kích hoạt (Activation functions): Hàm này được sử dụng
để tính tốn giá trị của đầu ra dựa vào giá trị của hàm Tổng.

1.1.4. Các mơ hình hàm kích hoạt của mạng nơ ron nhân tạo
1.1.4.1 Hàm Sigmod
 Biểu diễn hàm:
 Đạo hàm của hàm:
Hàm Sigmoid được sử dụng vì ngưỡng của nó nằm trong khoảng
(0, 1). Do đó, hàm này được sử dụng nhiều cho các mơ hình dự đốn

5



xác suất đầu ra, tức kết quả chỉ tồn tại trong khoảng từ 0 đến 1: khi
đầu vào là số dương lớn, đầu ra của hàm sigmoid gần
bằng 1. Khi
của hàm này khó

nhỏ hơn 0, đầu ra gần bằng 0. Tuy nhiên, việc tối ưu

khăn, nguyên nhân vì nếu giá trị đầu vào của hàm là 1 số rất lớn,
thì đầu ra của hàm càng về 2 đầu xấp xỉ 1 hoặc 0, nên tốc độ hội tụ sẽ
rất chậm.

Hình 1.8: Đồ thị hàm Sigmoid

1.1.4.2 Hàm TanH
 Biểu diễn hàm:
 Đạo hàm của hàm:
Hàm TanH được sử dụng vì đầu ra của hàm nằm trong khoảng
, thích hợp
với các mơ hình đầu ra có ba giá trị: âm, trung tính (0) và dương.
Chúng ta có thể thấy rõ hơn điều này trong hình minh họa.

6


Hình 1.9: Đồ thị hàm TanH

1.1.4.3 Hàm tuyến tính
 Biểu diễn hàm:
 Đạo hàm của hàm:
Hàm tuyến tính áp dụng thao tác nhận dạng trên dữ liệu với

dữ liệu đầu ra tỷ lệ thuận với dữ liệu đầu vào.

Hình 1.10: Đồ thị hàm tuyến tính

1.1.4.4 Hàm RELU

 Biểu diễn hàm:

 Đạo hàm của hàm:

7


Hàm RELU áp dụng với những trường hợp cần đầu ra nằm trong
khoảng (0, +∞). Hàm RELU có tốc độ tính tốn rất nhanh, gán các giá trị
âm trở thành 0 ngay lập tức, phù
hợp cho việc huấn luyện từ dữ liệu chuẩn. Tuy nhiên, điều này
khiến hàm RELU không ánh xạ các giá trị âm một cách thích hợp.

Hình 1.11: Đồ thị hàm RELU

1.1.4.5 Hàm ELU

 Biểu diễn hàm:

 Đạo hàm của hàm:
Hàm ELU là một biến thể của hàm RELU. Hàm thường được sử
dụng khi ngưỡng đầu ra của nó nằm trong khoảng (-1, +∞). Hàm ELU
khắc phục hạn chế ánh xạ các giá trị âm của hàm RELU.


8


Hình 1.12: Đồ thị hàm ELU

1.2. MẠNG NƠ RON TÍCH CHẬP
1.2.1. Khái niệm về mạng nơ ron tích chập
Mạng nơ ron tích chập là một trong những mạng truyền thẳng
đặc biệt. Mạng nơ ron tích chập là một mơ hình học sâu phổ biến và
tiên tiến nhất hiện nay. Hầu hết các hệ thống nhận diện và xử lý ảnh
hiện nay đều sử dụng mạng nơ ron tích chập vì tốc độ xử lý nhanh và
độ chính xác cao. Trong mạng nơ ron truyền thống, các tầng được coi
là một chiều, thì trong mạng nơ ron tích chập, các tầng được coi là 3
chiều, gồm: chiều cao, chiều rộng và chiều sâu (Hình 1.11). Mạng nơ
ron tích chập có hai khái niệm quan trọng: kết nối cục bộ và chia sẻ
tham số. Những khái niệm này góp phần giảm số lượng trọng số cần
được huấn luyện, do đó tăng nhanh được tốc độ tính tốn.

Hình 1.13: Các tầng (layer) trong CNN là 3 chiều

Hình 1.14: Hình minh họa một ví dụ sử dụng
CNN để phân lớp đồ vật [20]

9


1.2.2. Mơ hình mạng nơ ron tích chập
Có ba tầng chính để xây dựng kiến trúc cho một mạng
nơron tích chập:
1. Tầng tích chập;

2. Tầng gộp (pooling layer);
3. Tầng được kết nối đầy đủ (fully-connected).
Tầng kết nối đầy đủ giống như các mạng nơ ron thông thường,
và tầng chập thực hiện tích chập nhiều lần trên tầng trước. Tầng gộp có
thể làm giảm kích thước mẫu trên từng khối 2x2 của tầng trước đó. Ở
các mạng nơ ron tích chập, kiến trúc mạng thường chồng ba tầng này
để xây dựng kiến trúc đầy đủ. Ví dụ minh họa về một kiến trúc mạng
nơ ron tích chập đầy đủ:

Hình 1.15: Ví dụ minh họa về cấu trúc CNNs – LeNet – 5[19]

1.2.3. Xây dựng mạng nơ ron tích chập
1.2.3.1 Mạng được kết nối cục bộ
Trong xử lý hình ảnh, thơng tin của hình ảnh là các điểm ảnh
(pixel). Nếu sử dụng mạng được kết nối đầy đủ, chúng ta sẽ có rất
nhiều tham số. Ví dụ, một hình ảnh RGB có kích thước 512x512 pixel
sẽ có 786432 (= 512 x 512 x 3) tham số đầu vào. Vì vậy, nếu chúng ta
sử dụng kiến trúc mạng nơ ron trong hình sau:

10


Hình 1.16: Hình ảnh một mạng nơ ron được kết nối đầy đủ

Hình trên cho thấy nếu áp dụng mạng nơ ron được kết nối đầy
đủ, toàn bộ kiến trúc mạng sẽ cần tính tốn hơn 3 triệu nơ ron. Số
lượng lớn các nơ ron làm cho toàn bộ quá trình học rất chậm và dẫn
đến quá tải so với khả năng tính tốn của máy tính hiện tại.
Qua một vài nghiên cứu về xử lý ảnh, các nhà nghiên cứu nhận
thấy rằng các tính năng trong một hình ảnh thường là cục bộ, và các

nhà nghiên cứu chú ý đến các tính năng cấp thấp đầu tiên khi xử lý ảnh.
Vì vậy, kiến trúc mạng có thể chuyển mạng được kết nối đầy đủ sang
mạng được kết nối cục bộ, nhằm làm giảm độ phức tạp của tính tốn.
Đây là một trong những ý tưởng chính trong CNN. Chúng ta có thể
thấy rõ hơn qua hình sau:

Hình 1.17: Tích chập một ma trận nhỏ để tạo ra dữ liệu

Giống như xử lý hình ảnh thơng thường, chúng ta có thể kết nối
cục bộ một khối vuông ma trận với nơ ron. Kích thước khối thơng
thường là 3x3, 5x5, hoặc 7x7. Ý nghĩa vật lý của khối giống như một
cửa sổ trượt (cửa sổ trượt là một trong những phương pháp
xử lý ảnh). Bằng cách đó, số lượng tham số có thể giảm xuống rất
nhỏ nhưng khơng gây ra giảm hoặc mất thơng tin, vì hình ảnh thơng
thường thường có tính lặp trong khơng gian. Để trích xuất nhiều thơng
tin hơn, các mạng nơ ron kết nối khối cùng với một nơ ron khác. Độ
sâu trong các tầng là số lần chúng ta kết nối một khu vực với các nơ ron
khác nhau. Ví dụ, mạng kết nối cùng một khu vực với 5 nơ ron khác
nhau. Vì vậy, độ sâu là năm trong tầng mới. Chúng ta có thể thấy rõ
hơn qua hình sau:

11


Hình 1.18: Ví dụ về lớp tích chập

Trong thực tế, có thể kết nối tất cả thơng tin độ sâu (ví dụ: kênh
3 RGB) với nơ ron tiếp theo vì kết nối là cục bộ trong khơng gian và có
chiều sâu đầy đủ. Tuy nhiên ở ví dụ này chỉ kết nối thông tin cục bộ về
chiều cao và chiều rộng. Vì vậy, có thể có các tham số trong hình trên

cho nơ ron sau lớp màu xanh nếu chúng ta sử dụng cửa sổ
. Biến thứ nhất và thứ hai là chiều cao và chiều rộng của kích
thước cửa sổ và biến thứ ba là độ sâu của lớp.
Ví dụ này di chuyển cửa sổ bên trong hình ảnh và làm cho tầng tiếp
theo cũng có chiều cao và chiều rộng, và là một hai chiều. Ví dụ: nếu
chúng ta di chuyển cửa sổ 1 pixel
mỗi lần, gọi là bước nhảy là 1, trong một hình ảnh và kích thước cửa sổ là
sẽ có
thấy rằng, kích

các nơ ron ở tầng tiếp theo. Có thể

thước đã giảm từ 32 xuống 28. Vì vậy, để bảo tồn kích thước,
chúng ta thêm phần trống vào đường viền. Quay lại ví
dụ trên,
nếu chúng ta
đệm với 2 pixel,

các nơ ron ở lớp tiếp theo để giữ kích thước chiều cao và chiều rộng.
Như ví dụ trên, nếu chúng ta sử dụng kích thước cửa sổ w, chúng ta
sẽ có 1 vùng được tích chập với kích cỡ của cửa sổ mới là
pixel. Thơng tin đường viền sẽ khơng ảnh hưởng nhiều vì những giá trị
đó chỉ được sử dụng một lần.
Phần kế tiếp sẽ chi tiết hơn về bước nhảy của cửa sổ trượt, tức
khoảng cách thay đổi của cửa sổ mỗi lần. Ví dụ: giả sử bước nhảy
là 2 và cửa sổ trượt bao phủ vùng
Sau đó, cửa sổ thứ hai
bao phủ vùng
và cửa sổ thứ 3 bao phủ vùng


12


Ví dụ, nếu chúng ta sử dụng bước nhảy 1 và kích thước cửa sổ
trong hình ảnh
(pad-zero),

và khơng s

thì chúng ta sẽ có
các nơ ron ở lớp tiếp theo. Nếu chúng ta thay đổi

bước nhảy 1 thành bước nhảy 2 và những tham số khác vẫn
giữ nguyên, thì chúng ta sẽ có có
những nơ ron ở lớp tiếp theo. Chúng ta có thể kết
luận rằng nếu chúng ta sử dụng bước nhảy s, kích thước cửa sổ
trong ảnh
thì sẽ có
các nơ ron ở lớp
tiếp theo. Khi chúng ta sử dụng bước nhảy 3 và những tham số khác
vẫn giữ nguyên thì chúng ta sẽ
nhận được
Vì kết quả khơng phải là số
ngun, nên bước nhảy 3 khơng thể dùng vì chúng ta khơng thể có
được một khối hồn chỉnh trong một mạng nơ ron.
1.2.3.2 Chia sẻ tham số
Trong ví dụ minh họa của mục 1.3.2.1, ta sẽ có số lượng lànơ
ron ở tầng tiếp theo có bước nhảy 1, kích thước cửa sổ 5 x 5 và khơng
có đệm, với độ sâu là 5. Mỗi nơ ron sẽ cótham số. Vì vậy, trong
tầng tiếp theo sẽ có

tham số. Ở đây, chúng ta có thể chia
sẻ các tham số theo từng độ sâu, do đó nơ ron ở mỗi tầng ẩn sẽ sử
dụng tham số giống nhau là
, và tổng tham số sử dụng cho mỗi tầng là. Điều này làm
số lượng tham số giảm một cách đáng kể. Tương tự, các nơ ron ở mỗi

13

,



×