Tải bản đầy đủ (.pdf) (44 trang)

BÁO CÁO CUỐI KỲ MÔN HỌC MACHINE LEARNING FACE VERIFICATION BY SIAMESE NETWORK AND MASK DETECTION.

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.11 MB, 44 trang )

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH
KHOA ĐIỆN ĐIỆN TỬ
BỘ MƠN KỸ THUẬT MÁY TÍNH - VIỄN THÔNG
*****************

BÁO CÁO CUỐI KỲ MÔN HỌC MACHINE LEARNING

FACE VERIFICATION BY SIAMESE NETWORK
AND MASK DETECTION.

NGÀNH CÔNG NGHỆ KỸ THUẬT MÁY TÍNH

Hướng dẫn: PhD. Trần Vũ Hồng

Sinh viên: NGUYỄN MINH
HẢI

MSSV: 17119073


MỤC LỤC
MỞ ĐẦU

3

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

3

2. Mục tiêu đề tài


4

3. Đối tượng và phạm vi nghiên cứu

4
5

CHƯƠNG 1: GIỚI THIỆU
1.1. Tổng quan về đề tài

5

1.2. Những thử thách của đề tài

6

CHƯƠNG 2: MẠNG NEURAL VÀ MẠNG NEURAL TÍCH CHẬP
2.1. Mạng neural và mạng neural lan truyền ngược

7
7
7

2.1.1. Giới thiệu về mạng neural
2.1.2. Kiến trúc mạng neural

13

2.1.3. Thuật toán lan truyền ngược


14
15

2.2. Mạng neural tích chập
2.2.1. Giới thiệu về mạng neural tích chập

15

2.2.2. Convolution (tích chập)

15

2.2.3. Cấu trúc mạng neural tích chập

17

2.2.4. Cách chọn tham số cho mạng CNN

23

CHƯƠNG 3: TỔNG QUAN VỀ SIAMESE NETWORK

24

3.1. Khái quát

24

3.2. Siamese Network là gì


24

3.3. Các hàm mất mát được sử dụng trong Mạng Siamese

26
28

CHƯƠNG 4: XÂY DỰNG MODEL

28

4.1. Xây dựng phần xác minh gương mặt
4.1.1. Khái quát

28

4.1.2. Xây dựng tập dữ liệu

29

4.1.3. Xây dựng Mạng

30

4.1.4. Constractive loss

32

4.1.5. Train model và đánh giá


33
37

4.2. Xây dựng phần phát hiện khẩu trang
4.2.1. Khái quát phương pháp

37

4.2.2. Dataset

38

2


4.2.3. Xây dựng mạng

38

4.2.4. Train model và đánh giá

40
43

CHƯƠNG 5: KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN
5 .1. Kết quả

43

5.2. Hướng phát triển


44
46

TÀI LIỆU THAM KHẢO

3


MỞ ĐẦU
1. Lý do chọn đề tài
AI ngày càng phát triển một cách mạnh mẽ, và nhanh chóng xen lẫn vào
cuộc sống của chúng ta. Có lẻ mỗi người các bạn, lẫn tôi khi bắt đầu nghiên cứu về
lĩnh vực này thì đều có một động lực hoặc một gì đó hấp dẫn các bạn khi nhìn vào
những hệ thống AI bên ngồi đời sống hoặc trên Tivi trơng rất ngầu phải khơng.
Riêng tơi thì khi nhìn những hệ thống nhận diện ảnh với những gương mặt người
được phát hiện ra và hiển thị trên màn hình thì thực sự nó đã cuốn hút tơi rất nhiều,
và tơi tự đặt câu hỏi làm cách thần kỳ nào mà cái camera nó có thể nhận diện được
gương mặt của tơi và thậm chí là biết được tên tơi như vậy.
Vâng đó chính là lý do đã dẫn dắt tơi đến AI, một động lực có vẻ trơng hơi
trẻ con. Quay lại thời điểm hiện tại, có lẻ lẫn tơi và các bạn đến bây giờ đều đã tự
xây dựng được một hệ thống phân loại những gương mặt khác nhau của bất kỳ
người nào mà mình muốn, có thể là lớp học của bạn miễn là bạn có data. Vâng cái
mà tơi nhấn mạnh ở đây chính là data, lớp của bạn có thể có 20 người và việc lấy
hàng trăm bức ảnh cho mỗi người để nhận diện được họ cho có vẻ là thực hiện
được, nhưng nếu mở rộng phạm vi lên không phải là của lớp nữa mà là của trường,
của công ty của bạn làm sao mà bạn có thể lấy hàng trăm bức ảnh của mỗi người
trong cơng ty của bạn với lượng nhân viên tính bằng ngàn. Đó là khó khăn thứ nhất,
khó khăn thứ hai là, nếu cơng ty bạn có nhân viên mới thì bạn lại phải train lại tồn
bộ model đó với một đống dữ liệu trong thời gian tính bằng ngày nếu bạn không

thuê GPU của bên thứ ba, nhưng thậm chí là bạn th đi nữa thì chi phí cũng sẽ rất
mắc.
Vâng đó chính là lý do tơi thực hiện đề tài này của mình Face Recognition
by Seames Network. Giả sử bạn là một vị khách đến sân bay nước ngoài và việc xác
minh hộ chiếu hoặc visa của bạn với gương mặt của bạn có giống nhau khơng sẽ
được thực hiện bằng AI chứ không phải tiếp viên nữa, hệ thống sẽ chưa bao giờ
thấy mặt bạn trước đây, khi bạn đưa hộ chiếu vào hệ thống nó sẽ chụp ảnh trên hộ

4


chiếu và một camera khác sẽ chụp ảnh gương mặt của bạn. Và nó sẽ xuất ra thơng
báo rằng ảnh trên hộ chiếu của bạn nó có phải cùng một người khơng, nếu phải thì
bạn sẽ được vào làm tiếp tục giấy tờ cịn nếu khơng thì có vẻ khơng ổn cho lắm rồi.
2. Mục tiêu đề tài
- Xây dựng được một model có thể xác minh được gương mặt và đồng thời
có thể phát hiện các vật thể như kính, mũ, khẩu trang.
- Xây dựng được model khơng cần train lại khi có dữ liệu mới.
- Model phải có độ chính xác chấp nhận được
- Vấn đề Realtime là một vấn đề cần quan tâm
3. Đối tượng và phạm vi nghiên cứu
a) Đối tượng:
- Các thuật toán và các phương pháp phục vụ cho việc xây dựng
model.
- Bộ thư viện xử lý ảnh Opencv và học sâu Tensorflow
b) Phạm vi nghiên cứu:
Với phạm vi của đề tài chủ yếu tập trung nghiên cứu, tìm hiểu và xây dựng
được model chạy theo yêu cầu đặt ra lúc đầu. Bởi vì thời gian không cho phép nên
chỉ thu thập được data dành cho việc phát hiện khẩu trang, còn data cho kính và mũ
thì vẫn chưa được nên đề tài sẽ rút gọn lại chỉ là mask detection and face

verification.
Phần phát hiện gương mặt cũng nằm ngoài phạm vi của đề tài nghiên cứu.

5


CHƯƠNG 1: GIỚI THIỆU
1.1. Tổng quan về đề tài
Face verification là nhiệm vụ so sánh gương mặt của một người với gương
mặt của một người khác xem có khớp hay khơng. Nghe qua nó có vẻ giống với face
recognition, nhưng hai khái niệm này hoàn toàn khác. Một hệ thống face
recognition nó sẽ cho ta biết được chính xác người ấy là ai trong toàn bộ những
người ta đem đi xây dựng model với một lượng lớn dữ liệu, nhưng một khuyết điểm
là sẽ phải train lại model của bạn khi hệ thống xuất hiện thêm dữ liệu mới, còn hệ
thống face verification nó sẽ nói lên một cách khác là hai người này có thể là giống
nhau hoặc khác nhau bằng việc so sánh các vector nhúng đại diện cho các đặc trưng
của gương mặt, một sản phẩm về face verification ví dụ như nhận diện gương mặt
để mở khóa điện thoại.

Việc cần làm là chúng ta phải đi tìm được những vector nhúng đại diện cho
gương mặt của người nào đó một cách tốt nhất, từ những vector nhúng đó tơi sẽ
dùng Artificial Neural Network (ANN) để phát hiện xem có đeo khẩu trang hay
khơng đeo.

6


1.2. Những thử thách của đề tài
Một số thử thách của đề tài cần được nhìn nhận và giải quyết để giúp
quá trình xây dựng về sau thuận lợi nhất:

-

Data dùng để xây dựng model phải tốt, tốt ở đây khơng phải hình
ảnh chất lượng cao mà tốt ở đây là những dữ liệu dùng để xây
dựng model phải đủ khó cho model học để nó trở nên thơng minh
hơn, nếu việc lựa chọn dữ liệu để xây dựng model quá dễ thì việc
xác minh gương mặt trong tương lai sẽ khơng được đảm bảo độ
chính xác.

-

Sau khi xây dựng được model dùng để xác minh gương mặt thì
làm sao để những trọng số đó phù hợp để tiếp tục xây dựng thêm
phần mạng ở phía sau cho phần phát hiện. Đó là một bài tốn cần
thực nghiệm nhiều lần trong suốt quá trình xây dựng để tìm ra một
giải pháp tốt nhất có thể.

7


CHƯƠNG 2: MẠNG NEURAL VÀ MẠNG NEURAL TÍCH
CHẬP
2.1. Mạng neural và mạng neural lan truyền ngược
2.1.1. Giới thiệu về mạng neural
Định nghĩa: Mạng neural nhân tạo, Artificial Neural Network (ANN) là một
mơ hình xử lý thơng tin phỏng theo cách thức xử lý thông tin của các hệ thống sinh
học. Nó được tạo nên từ một lượng lớn các phần tử (neural) kết nối với nhau thông
qua các liên kết (trọng số liên kết) làm việc như một thể thống nhất để giải quyết
cơng việc nào đó. Một mạng neural nhân tạo được xây dựng cho một ứng dụng cụ
thể ví dụ như nhận dạng mẫu, phân loại dữ liệu ,… thơng qua một q trình học tập

từ mẫu huấn luyện. Về bản chất học chính là q trình hiệu chỉnh trọng số liên kết
giữa các neural.

.
.
.

8


Các thành phần cơ bản của một mạng neural bao gồm:
-

Tập các đầu vào: là các tín hiệu vào (inputs signal) của mạng, các tín hiệu
này thường được đưa vào dưới dạng một vector N chiều.

-

Tập các liên kết: Mỗi liên kết được thể hiện bởi một trọng số liên kết
(Synaptic weight). Trọng số liên kết giữa tín hiệu vào thứ j với neural k
thường được ký hiệu là Wkj. Thông thường các trọng số này được khởi tạo
một cách ngẫu nhiên ở thời điểm khởi tạo mạng, và được cập nhập liên tục
trong quá trình Train.

-

Hàm tổng (Summing Function) : thường được dùng để tính tổng tích các đầu
vào với trọng số liên kết của nó

-


Bias: thường được đưa vào như một thành phần của hàm truyền để tránh hiện
tượng thiên vị.

-

Activation function: Hàm này được dùng để quyết định xem tế bào thần kinh
này có được kích hoạt hay khơng. Nó nhận đầu vào là kết quả của hàm tổng
và bias.

-

Đầu ra: Là tín hiệu đầu ra của một neural, với mỗi neural sẽ có tối đa một
đâu ra.

Xét về mặt toán học cấu trúc của một neural k, được mơ tả bằng cặp biểu thức
sau:
𝑃

µ𝑘 = ∑ 𝑤𝑘. 𝑥𝐽 và 𝑦𝐾 = f(µ𝑘 − 𝑏𝑘)
𝐽=1

Trong đó: x1, x2, .., xp là các tín hiệu đầu vào; (wk1, wk2, .., wk3) là các
trọng số kiên kết của neural thứ k; uk là hàm tổng; bk là bias; f là hàm truyền và yk
là tín hiệu đầu ra của neural.
Như vậy neural nhân tạo nhận các tín hiệu đầu vào (xử lý nhân các tín hiệu
này với trọng số liên kết, tính tổng các tích thu được rồi gửi đến activation
function), và cho một tín hiệu đầu ra (là kết quả của activation function).

9



Một số activation function thông dụng
a. Hàm Sigmoid
Công thức:

Đồ thị:

Hàm Sigmoid nhận đầu vào là một số thực, và chuyển thành một giá trị trong
khoảng (0;1). Đầu vào là một số thực âm rất nhỏ sẽ cho đầu ra tiệm cận với 0,
ngược lại nếu đầu vào là một số thực dương lớn sẽ cho đầu ra là một số tiệm cận với
1. Trong quá khứ hàm Sigmoid thường dùng vì có đạo hàm rất đẹp. Tuy nhiên hiện
nay hàm Sigmoid ít được dùng vì những nhược điểm sau:
+ Hàm Sigmoid bão hào và triệt tiêu gradient: Một nhược điểm dễ nhận
thấy là khi đầu vào có trị tuyệt đối lớn (rất âm hoặc rất dương), gradient của hàm số
này sẽ rất gần với 0. Điều này đồng nghĩa với việc các hệ số tương ứng với unit
đang xét sẽ gần như khơng được cập nhật (cịn được gọi là vanishing gradient).

10


+ Hàm Sigmoid khơng có trung tâm là 0 gây khó khăn cho việc hội tụ
b. Hàm Tanh:
Cơng thức:

Đồ thị:

Hàm tanh nhận đầu vào là một số thực và chuyển thành một giá trị trong
khoảng (-1; 1). Cũng như Sigmoid, hàm Tanh bị bão hồ ở 2 đầu (gradient thay đổi
rất ít ở 2 đầu). Tuy nhiên hàm Tanh lại đối xứng qua 0 nên khắc phục được một

nhược điểm của Sigmoid.
c. Hàm ReLu
Công thức:

11


Đồ thị:

Hàm ReLU đang được sử dụng khá nhiều trong những năm gần đây khi huấn
luyện các mạng neuron. ReLU đơn giản lọc các giá trị < 0. Nhìn vào công thức
chúng ta dễ dàng hiểu được cách hoạt động của nó. Một số ưu điểm khá vượt trội
của nó so với Sigmoid và Tanh:
● Tốc độ hội tụ nhanh hơn hẳn. ReLU có tốc độ hội tụ nhanh gấp 6 lần
Tanh. Điều này có thể do ReLU khơng bị bão hồ ở 2 đầu như
Sigmoid và Tanh.
● Tính tốn nhanh hơn. Tanh và Sigmoid sử dụng hàm exp và công thức
phức tạp hơn ReLU rất nhiều do vậy sẽ tốn nhiều chi phí hơn để tính
tốn.
● Tuy nhiên ReLU cũng có một nhược điểm: Với các node có giá trị
nhỏ hơn 0, qua ReLU activation sẽ thành 0, hiện tượng đấy gọi là
“Dying ReLU “. Nếu các node bị chuyển thành 0 thì sẽ khơng có ý
nghĩa với bước linear activation ở lớp tiếp theo và các hệ số tương
ứng từ node đấy cũng không được cập nhật với gradient descent. =>
Leaky ReLU ra đời.

12


● Khi learning rate lớn, các trọng số (weights) có thể thay đổi theo cách

làm tất cả neuron dừng việc cập nhật.
d. LeaKy ReLu
Công thức:

Đồ thị:

Leaky ReLU là một cố gắng trong việc loại bỏ "dying ReLU". Thay vì trả về
giá trị 0 với các đầu vào <0 thì Leaky ReLU tạo ra một đường xiên có độ dốc nhỏ
(xem đồ thị). Có nhiều báo cáo về việc Leaky ReLU có hiệu quả tốt hơn ReLU,
nhưng hiệu quả này vẫn chưa rõ ràng và nhất quán.

2.1.2. Kiến trúc mạng neural

13


Mạng neural sẽ có 3 kiểu tầng:
● Tầng vào (input layer): là tâng bên trái cùng của mạng thể hiện cho các ngõ
vào của mạng
● Tầng ra (output layer): là tầng bên phải cùng của mạng thể hiện cho các đầu
ra của mạng
● Tầng ẩn (hidden layer): là tầng nằm giữa tầng vào và tầng ra thể hiện cho sự
suy luận logic của mạng.
Lưu ý, mỗi Neural Network chỉ có 1 tầng vào và 1 tầng ra nhưng có thể có nhiều
tầng ẩn Trong mạng Neural Network, mỗi nút mạng là một sigmoid nơ-ron nhưng
hàm kích hoạt của chúng có thể khác nhau. Tuy nhiên trong thực tế người ta thường
để chúng cùng dạng với nhau để tính tốn cho thuận lợi.
Ở mỗi tầng, số lượng các nút mạng (nơ-ron) có thể khác nhau tuỳ thuộc vào bài
tốn và cách giải quyết. Nhưng thường khi làm việc người ta để các tầng ẩn có số
lượng nơ-ron bằng nhau. Ngồi ra, các nơ-ron ở các tầng thường được liên kết đôi

một với nhau tạo thành mạng kết nối đầy đủ (full-connected network). Khi đó ta có
thể tính được kích cỡ của mạng dựa vào số tầng và số nơ-ron.

2.1.3. Thuật toán lan truyền ngược
Lan truyền ngược (backpropagation) là giải thuật cốt lõi giúp cho các mơ
hình học sâu có thể dễ dàng thực thi tính tốn được. Với các mạng Neural Network
hiện đại, nhờ giải thuật này mà thuật toán tối ưu với đạo hàm (gradient descent) có
thể nhanh hơn hàng triệu lần so với cách thực hiện truyền thống. Cứ tưởng tượng 1
mơ hình với lan truyền ngược chạy mất 1 tuần thì có thể mất tới 200,000 năm để
huấn luyện với phương pháp truyền thống!
Mặc lan truyền ngược được sử dụng cho học sâu, nhưng nó cịn là cơng cụ
tính tốn mạnh mẽ cho nhiều lĩnh vực khác từ dự báo thời tiết tới phân tích tính ổn
định số học, chỉ có điều là nó được sử dụng với những tên khác nhau. Thực ra nó
được khai phá lại để sử dụng cho rất nhiều lĩnh vực khác nhau. Nhưng một cách

14


tổng qt khơng phụ thuộc vào ứng dụng thì tên của nó là “phép vi phân ngược”
(reverse-mode differentiation).
Giải thuật lan truyền ngược được thực hiện như sau:
1. Lan truyền tiến:


𝑙

Lần lượt tính các 𝑎 từ L =2 , L theo cơng thức:

1


Trong đó tầng vào 𝑎 chình bằng giá trị vào của mạng X
2. Tính đạo hàm theo z ở tầng ra

𝑙

𝑙

Với 𝑎 , 𝑧 vừa tính được ở bước 1
3. Lan truyền ngược
Tính đạo hàm theo z ngược lại từ L= (L-1) theo cơng thức:

𝑙

Với 𝑧 tính được ở bước 1

và tính được ở vịng lặp ngay trước.

2.2. Mạng neural tích chập
2.2.1. Giới thiệu về mạng neural tích chập

15


Những năm gần đây ta đã chứng kiến nhiều thành tựu vượt bậc trong ngành
thị giác máy tính (Computer Vision). Các hệ thống xử lý ảnh lớn như Facebook,
Google hay Amazon đã đưa vào sản phẩm cuả mình những chức năng thông minh
như nhận diện khuôn mặt người dùng, phát triển xe hơi tự lái hay drone giao hàng
tự động.
Convolution Neural Network (CNNs – mạng nơron tích chập) là một trong
những mơ hình Deep Learning tiên tiến giúp ta xây dựng được những hệ thống

thông minh như hiện nay. Trong đồ án 2 này, tơi sẽ trình bày về Convolution cũng
như ý tưởng áp dụng CNN vào hệ thống xác minh gương mặt bằng Siamese
Network.

2.2.2. Convolution (tích chập)
Tích chập được sử dụng đầu tiên trong xử lý tín hiệu số (Signal processing).
Nhờ vào nguyên lý biến đổi thông tin, các nhà khoa học đã áp dụng kỹ thuật này
vào để xử lý hình ảnh và video số.
Để dễ hình dung ta xem tích chập như một cửa sổ trượt (sliding window) áp
đặt lên một ma trận. Cơ chế của tích chập được biểu diễn qua hình minh họa bên
dưới.

Ma trận bên trái là một bức ảnh đen trắng. Mỗi giá trị của ma trận tương
đương với một điểm ảnh(pixel), 0 là màu đen, 1 là màu trắng (nếu là ảnh grayscale
thì giá trị biến thiên từ 0 đến 255).

16


Sliding window cịn có tên gọi là kernel, fliter hay feature detector. Ở đây, ta
dùng một ma trận filter 3x3 nhân từng thành phần tương ứng với ma trận ảnh bên
trái.
Giá trị đầu ra do tích các thành phần cộng lại. Kết quả của tích chập là một
ma trận (convoled feature) sinh ra từ việc trượt ma trận filter và thực hiện tích chập
cùng lúc lên tồn bộ ma trận ảnh bên trái. Dưới đây là một số ví dụ của phép tích
chập.
1. Ta có thể làm mờ bức ảnh ban đầu bằng cách lấy giá trị trung bình của
điểm ảnh xung quanh cho vị trí điểm ảnh trung tâm.

2. Ngồi ra ta có thể phát hiện cạnh bằng cách tính vi phân (độ dị biệt)

giữa các điểm ảnh lân cận.

17


2.2.3. Cấu trúc mạng neural tích chập
Mạng CNN là một tập hợp các lớp Convolution chồng lên nhau và sử dụng
các hàm nonlinear activation như ReLU và tanh để kích hoạt các trọng số trong các
node.
Mỗi một lớp sau khi thơng qua các hàm kích hoạt sẽ tạo ra các thông tin trừu
tượng hơn cho các lớp tiếp theo. Trong mơ hình mạng truyền ngược (feedforward
neural network) thì mỗi neural đầu vào (input node) cho mỗi neural đầu ra trong các
lớp tiếp theo.
Mơ hình này gọi là mạng kết nối đầy đủ (fully connected layer) hay mạng
toàn vẹn (affine layer). Cịn trong mơ hình CNN thì ngược lại. Các layer liên kết
được với nhau thông qua cơ chế convolution.
Layer tiếp theo là kết quả convolution từ layer trước đó, nhờ vậy mà ta có
được các kết nối cục bộ. Như vậy mỗi neuron ở lớp kế tiếp sinh ra từ kết quả của
filter áp đặt lên một vùng ảnh cục bộ của neuron trước đó.
Mỗi một lớp được sử dụng các filter khác nhau thơng thường có hàng trăm
hàng nghìn filter như vậy và kết hợp kết quả của chúng lại. Ngồi ra có một số layer
khác như pooling/subsampling layer dùng để chắt lọc lại các thơng tin hữu ích hơn
(loại bỏ các thơng tin nhiễu).
Trong q trình huấn luyện mạng (traning) CNN tự động học các giá trị qua
các lớp filter dựa vào cách thức mà ta thực hiện. Ví dụ trong tác vụ phân lớp ảnh,
CNN sẽ cố gắng tìm ra thơng số tối ưu cho các filter tương ứng theo thứ tự raw
pixel > edges > shapes > facial > high-level features. Layer cuối cùng được dùng để
phân lớp ảnh.

18



Trong mơ hình CNN có 2 khía cạnh cần quan tâm là tính bất biến (Location
Invariance) và tính kết hợp (Compositionality). Với cùng một đối tượng, nếu đối
tượng này được chiếu theo các gốc độ khác nhau (translation, rotation, scaling) thì
độ chính xác của thuật toán sẽ bị ảnh hưởng đáng kể.
Pooling layer sẽ cho biết tính bất biến đối với phép dịch chuyển (translation),
phép quay (rotation) và phép co giãn (scaling). Tính kết hợp cục bộ cho biết các cấp
độ biểu diễn thông tin từ mức độ thấp đến mức độ cao và trừu tượng hơn thơng qua
convolution từ các filter.
Đó là lý do tại sao CNNs cho ra mơ hình với độ chính xác rất cao. Cũng
giống như cách con người nhận biết các vật thể trong tự nhiên.
Mạng CNN sử dụng 3 ý tưởng cơ bản:
● các trường tiếp nhận cục bộ (local receptive field)
● trọng số chia sẻ (shared weights)
● tổng hợp (pooling).
Trường tiếp nhận cục bộ (local receptive field)
● Đầu vào của mạng CNN là một ảnh. Ví dụ như ảnh có kích thước 28×28 thì
tương ứng đầu vào là một ma trận có 28×28 và giá trị mỗi điểm ảnh là một ơ
trong ma trận. Trong mơ hình mạng ANN truyền thống thì chúng ta sẽ kết
nối các neuron đầu vào vào tầng ảnh.

19


● Tuy nhiên trong CNN chúng ta không làm như vậy mà chúng ta chỉ kết nối
trong một vùng nhỏ của các neuron đầu vào như một filter có kích thước 5×5
tương ứng (28- 5 + 1) 24 điểm ảnh đầu vào. Mỗi một kết nối sẽ học một
trọng số và mỗi neuron ẩn sẽ học một bias. Mỗi một vùng 5×5 đấy gọi là một
trường tiếp nhận cục bộ.


Một cách tổng quan, ta có thể tóm tắt các bước tạo ra 1 hidden layer bằng các
cách sau:
1. Tạo ra neuron ẩn đầu tiên trong lớp ẩn 1

2. Dịch filter qua bên phải một cột sẽ tạo được neuron ẩn thứ 2

20


Với bài toán nhận dạng ảnh người ta thường gọi ma trận lớp đầu vào
là feature map, trọng số xác định các đặc trương là shared weight và độ lệch
xác định một feature map là shared bias. Như vậy đơn giản nhất là qua các
bước trên chúng ta chỉ có 1 feature map. Tuy nhiên trong nhận dạng ảnh
chúng ta cần nhiều hơn một feature map.

Như vậy, local receptive field thích hợp cho việc phân tách dữ liệu ảnh, giúp
chọn ra những vùng ảnh có giá trị nhất cho việc đánh giá phân lớp.
Trọng số chia sẻ (shared weight and bias)
Đầu tiên, các trọng số cho mỗi filter (kernel) phải giống nhau. Tất cả các
nơ-ron trong lớp ẩn đầu vào sẽ phát hiện chính xác feature tương tự chỉ ở các vị trí

21


khác nhau trong hình ảnh đầu vào. Chúng ta gọi việc map từ input layer sang hidden
layer là một feature map.
Tóm lại, một convolutional layer bao gồm các feature map khác nhau. Mỗi
một feature map giúp detect một vài feature trong bức ảnh. Lợi ích lớn nhất của
trọng số chia sẻ là giảm tối đa số lượng tham số trong mạng CNN.

Lớp tổng hợp (pooling layer)
Lớp pooling thường được sử dụng ngay sau lớp convulational để đơn giản
hóa thơng tin đầu ra để giảm bớt số lượng neuron.

Thủ tục pooling phổ biến là max-pooling, thủ tục này chọn giá trị lớn nhất
trong vùng đầu vào 2×2.

Như vậy qua lớp Max Pooling thì số lượng neuron giảm đi phân nửa. Trong
một mạng CNN có nhiều Feature Map nên mỗi Feature Map chúng ta sẽ cho mỗi
Max Pooling khác nhau. Chúng ta có thể thấy rằng Max Pooling là cách hỏi xem

22


trong các đặc trưng này thì đặc trưng nào là đặc trưng nhất. Ngồi Max Pooling cịn
có L2 Pooling.
Cuối cùng ta đặt tất cả các lớp lại với nhau thành một CNN với đầu ra gồm
các neuron với số lượng tùy bài toán.

Hai lớp cuối cùng của các kết nối trong mạng là một lớp đầy đủ kết nối (fully
connected layer) . Lớp này nối mọi nơron từ lớp max pooled tới mọi nơron của tầng
ra.

2.2.4. Cách chọn tham số cho mạng CNN
-

Số các convolution layer: càng nhiều các convolution layer thì performance
càng được cải thiện. Sau khoảng 3 hoặc 4 layer, các tác động được giảm một
cách đáng kể


-

Filter size: thường filter theo size 5×5 hoặc 3×3

-

Pooling size: thường là 2×2 hoặc 4×4 cho ảnh đầu vào lớn

-

Cách cuối cùng là thực hiện nhiều lần việc train test để chọn ra được param
tốt nhất.

23


CHƯƠNG 3: TỔNG QUAN VỀ SIAMESE NETWORK
3.1. Khái quát
Trước khi đi vào các phương pháp cho mạng Siamese thì tơi sẽ nói tóm tắt ở
đây mục đích của mạng Siamese sau đó chúng ta có thể hiểu được lý do tại sao các
nhà khoa học lại nghiên cứu và tạo ra các phương pháp khác nhau của mạng.
Trong kỷ nguyên Deep learning hiện đại, các mạng thần kinh gần như hoàn
thành tốt mọi tác vụ, nhưng các mạng thần kinh này dựa vào nhiều dữ liệu hơn để
thực hiện tốt. Tuy nhiên, đối với một số vấn đề nhất định như nhận dạng khuôn mặt
và xác minh chữ ký, chúng ta không phải lúc nào cũng dựa vào việc lấy thêm dữ
liệu, để giải quyết loại nhiệm vụ này, chúng ta có một loại kiến ​trúc mạng thần kinh
mới gọi là Siamese Networks.
Nó chỉ sử dụng một số hình ảnh để có được những dự đoán tốt hơn. Khả năng
học hỏi từ rất ít dữ liệu đã khiến mạng Siam trở nên phổ biến hơn trong những năm
gần đây.

3.2. Siamese Network là gì
Mạng nơron Siamese là một lớp kiến ​trúc mạng nơron có chứa hai hoặc
nhiều mạng con giống nhau . ' giống hệt nhau' ở đây có nghĩa là, chúng có cấu
hình giống nhau với cùng thơng số và trọng lượng. Cập nhật thông số được phản
ánh trên cả hai mạng con. Nó được sử dụng để tìm sự giống nhau của các đầu vào
bằng cách so sánh các vectơ đặc trưng của nó, vì vậy các mạng này được sử dụng
trong nhiều ứng dụng.
Theo truyền thống, một mạng nơ-ron học cách dự đoán nhiều lớp. Điều này đặt
ra một vấn đề khi chúng ta cần thêm hoặc bớt các lớp mới vào dữ liệu. Trong trường
24


hợp này, chúng ta phải cập nhật mạng nơ-ron và đào tạo lại nó trên tồn bộ tập dữ
liệu. Ngồi ra, mạng nơ-ron sâu cần một khối lượng lớn dữ liệu để đào tạo. Mặt
khác, SNN học một hàm tương tự. Vì vậy, chúng ta có thể huấn luyện nó để xem
liệu hai hình ảnh có giống nhau hay khơng (mà chúng ta sẽ làm ở đây). Điều này
cho phép phân loại các lớp dữ liệu mới mà không cần đào tạo lại mạng.
Ưu và nhược điểm của Siamese Networks:

Những lợi thế chính của Siamese Networks là:
● Mạnh mẽ hơn cho sự mất cân bằng giữa các lớp: Với sự hỗ trợ của học
One-shot, việc cung cấp một vài hình ảnh cho mỗi lớp là đủ để Siamese
Networks nhận ra những hình ảnh đó trong tương lai
● Rất tốt khi được kết hợp với trình phân loại: Do cơ chế học tập của nó hơi
khác với phân loại, việc tính trung bình đơn giản của nó với trình phân loại có
thể làm tốt hơn nhiều so với trung bình 2 mơ hình được giám sát tương quan (ví
dụ: bộ phân loại GBM & RF)
● Học từ sự tương đồng về ngữ nghĩa: Siamese tập trung vào việc học nhúng (ở
lớp sâu hơn) đặt các lớp / khái niệm giống nhau gần nhau. Do đó, có thể tìm
hiểu sự tương đồng về ngữ nghĩa.


25


×