Bao cao cuoi ky docx 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ũ Hoà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 CHƯƠNG 1 GIỚI THIỆU 5 1 1 Tổng quan về đề tài 5 1 2 Những thử thác.
Trang 1TRƯỜ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ũ Hoàng
Sinh viên: NGUYỄN MINHHẢI
MSSV: 17119073
Trang 2MỤC LỤC
3.3 Các hàm mất mát được sử dụng trong Mạng Siamese 26
Trang 34.2.3 Xây dựng mạng 38
Trang 4MỞ ĐẦ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àocuộ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àonhững hệ thống AI bên ngoà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 đượcgươ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ơitrẻ 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ườitrong 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 toà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ôngthuê GPU của bên thứ ba, nhưng thậm chí là bạn thuê đi nữa thì chi phí cũng sẽ rấtmắ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ácminh 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ộ
Trang 5chiế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ôngbá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
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
Trang 6CHƯƠ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ươngmặ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 facerecognition, nhưng hai khái niệm này hoàn toàn khác Một hệ thống facerecognition nó sẽ cho ta biết được chính xác người ấy là ai trong toàn bộ nhữngngườ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ốngnhau 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ưngcủ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 chogươ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 haykhông đeo
Trang 7- 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êmphần mạng ở phía sau cho phần phát hiện Đó là một bài toán cầnthực nghiệm nhiều lần trong suốt quá trình xây dựng để tìm ra mộtgiải pháp tốt nhất có thể.
Trang 8CHƯƠ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 sinhhọ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ôngqua 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ếtcô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 quá trình học tập
từ mẫu huấn luyện Về bản chất học chính là quá trình hiệu chỉnh trọng số liên kếtgiữa các neural
.
Trang 9Cá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ệunà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 kthường được ký hiệu là Wkj Thôngthường các trọng số này được khởi tạomộ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ụctrong quá trình Train
- Hàm tổng (Summing Function) : thường được dùng để tính tổng tích các đầuvà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ệntượng thiên vị
- Activation function: Hàm này được dùng để quyết định xem tế bào thần kinhnà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
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ệunà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
Trang 10Một số activation function thông dụng
1 Trong quá khứ hàm Sigmoid thường dùng vì có đạo hàm rất đẹp Tuy nhiên hiệnnay 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).
Trang 11+Hàm Sigmoid không có trung tâm là 0 gây khó khăn cho việc hội tụ
c Hàm ReLu
Công thức:
Trang 12Đồ thị:
Hàm ReLU đang được sử dụng khá nhiều trong những năm gần đây khi huấnluyện các mạng neuron ReLU đơn giản lọc các giá trị < 0 Nhìn vào công thứcchú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ộicủ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ầnTanh Điều này có thể do ReLU không bị bão hoà ở 2 đầu nhưSigmoid và Tanh
● Tính toán nhanh hơn Tanh và Sigmoid sử dụng hàm exp và công thứcphức tạp hơn ReLU rất nhiều do vậy sẽ tốn nhiều chi phí hơn để tínhtoá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
Trang 13● Khi learning rate lớn, các trọng số (weights) có thể thay đổi theo cáchlàm tất cả neuron dừng việc cập nhật.
2.1.2 Kiến trúc mạng neural
Trang 14để chúng cùng dạng với nhau để tính toá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àitoá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 Ngoà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 toá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 toá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
Trang 15tổng quát 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:
Trong đó tầng vào𝑎1chì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
Trang 16Những năm gần đây ta đã chứng kiến nhiều thành tựu vượt bậc trong ngànhthị 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 minhnhư 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 trongnhững mô hình Deep Learning tiên tiến giúp ta xây dựng được những hệ thốngthông minh như hiện nay Trong đồ án 2 này, tôi sẽ trình bày về Convolution cũngnhư ý tưởng áp dụng CNN vào hệ thống xác minh gương mặt bằng SiameseNetwork
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àyvà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êndướ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 grayscalethì giá trị biến thiên từ 0 đến 255)
Trang 17Sliding window còn có tên gọi là kernel, fliter hay feature detector Ở đây, tadù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êntrá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ậpcùng lúc lên toàn bộ ma trận ảnh bên trái Dưới đây là một số ví dụ của phép tíchchậ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 Ngoà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
Trang 182.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ụngcác hàm nonlinear activation như ReLU và tanh để kích hoạt các trọng số trong cácnode
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ừutượng hơn cho các lớp tiếp theo Trong mô hình mạng truyền ngược (feedforwardneural network) thì mỗi neural đầu vào (input node) cho mỗi neural đầu ra trong cáclớp tiếp theo
Mô hình này gọi là mạng kết nối đầy đủ (fully connected layer) hay mạngtoà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ủafilter á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ămhàng nghìn filter như vậy và kết hợp kết quả của chúng lại Ngoài ra có một số layerkhá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 quá trình huấn luyện mạng (traning) CNN tự động học các giá trị quacá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ự rawpixel > edges > shapes > facial > high-level features Layer cuối cùng được dùng đểphân lớp ảnh
Trang 19Trong 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 quaconvolution 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ũnggiố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
Trang 20● Tuy nhiên trong CNN chúng ta không làm như vậy mà chúng ta chỉ kết nốitrong một vùng nhỏ của các neuron đầu vào như một filter có kích thước 5×5tương ứng (28- 5 + 1) 24 điểm ảnh đầu vào Mỗi một kết nối sẽ học mộttrọ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ộttrườ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áccá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
Trang 21Vớ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ệchxác định một feature map là shared bias Như vậy đơn giản nhất là qua cácbước trên chúng ta chỉ có 1 feature map Tuy nhiên trong nhận dạng ảnhchú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úpchọ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
Trang 22khác nhau trong hình ảnh đầu vào Chúng ta gọi việc map từ input layer sang hiddenlayer là một feature map.
Tóm lại, một convolutional layer bao gồm các feature map khác nhau Mỗimột feature map giúp detect một vài feature trong bức ảnh Lợi ích lớn nhất củatrọng số chia sẻ là giảm tối đa số lượng tham số trong mạng CNN