1. Trang chủ
  2. » Thể loại khác

ĐỒ ÁN CƠ SỞ 5: XÂY DỰNG WEBSITE TƯ VẤN KIỂU TÓC PHÙ HỢP VỚI KHUÔN MẶT BẰNG PYTHON FLASK,MTCNN. Giảng viên hướng dẫn : Th.S. Đặng Thị Kim Ngân

49 15 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 49
Dung lượng 6,7 MB

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

Nội dung

Học máy Machine learning là một phương pháp phân tích dữ liệu có thể tự động hóa phân tích dữ liệu và tìm ra các trích xuất đặc trưng của bộ dữ liệu.Học máy sử dụng các thuật toán trừu t

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

VÀ TRUYỀN THÔNG VIỆT - HÀN

KHOA KHOA HỌC MÁY TÍNH

BÁO CÁO ĐỒ ÁN CƠ SỞ 5

XÂY DỰNG WEBSITE TƯ VẤN KIỂU TÓC PHÙ

HỢP VỚI KHUÔN MẶT BẰNG PYTHON

Trang 2

VÀ TRUYỀN THÔNG VIỆT - HÀN

KHOA KHOA HỌC MÁY TÍNH

BÁO CÁO ĐỒ ÁN CƠ SỞ 5

XÂY DỰNG WEBSITE TƯ VẤN KIỂU TÓC PHÙ HỢP VỚI

KHUÔN MẶT BẰNG PYTHON FLASK,MTCNN

Đà Nẵng, tháng 5 năm 2021

Trang 3

MỞ ĐẦU

Trong xã hội hiện tại, những nhu cầu về thẩm mỹ đang có xu hướngphát triển và không ngừng tăng lên trong cả phái đẹp mà còn được số đông quýông rất quan tâm Tuy nhiên, cùng với đó là những hiện tượng xấu với tóc cũngtăng lên theo, dẫn đến việc mái tóc bị mất kiểm soát mất trật tự và sự liên kếtkhiến mỗi chủ nhân của nó rất khó chịu Và đặc biệt là trong việc tạo kiểu tóc

Một lý do chính khiến cho mái tóc của các bạn thường ” không vui “, lànhững tác động ngoại cảnh ngày càng lấn sâu vào mái tóc khiến cho chân tóc bị

hư tổn đồng thời khiến cho da đầu cũng chịu một ảnh hưởng không hề tốt mỗingày Nhưng điều quan trọng hơn là chính bản thân mỗi người chủ của mái tóccũng không hề quan tâm là tóc của mình đang bị hư hại tới mức nào và cầnphục hồi như thế nào? Một thực trạng đáng buồn của đa phần các bạn nam hiệnnay Chỉ quan tâm tới làm đẹp mà quên đi chăm sóc tóc tai thường xuyên

Trong khuôn khổ đồ án này, chúng em sẽ tiếp tục giải quyết bài toán tưvấn kiểu tóc online Để đưa ra các mẫu tóc phù hợp với từng khuôn mặt đểkhách hàng thoải mái lựa chọn, giải quyết các vấn đề về kiểu tóc

Trang 4

LỜI CẢM ƠN

Để thực hiện và hoàn thành tốt đồ án này, em đã nhận được sự giúp đỡ vàhướng dẫn rất tận tình của các thầy cô thuộc Trường Đại học Công nghệ thông tin

và Truyền thông Việt Hàn – Đại học Đà Nẵng Em xin cảm ơn các thầy cô thuộc

bộ môn chuyên ngành đã cung cấp cho chúng em các thông tin, kiến thức vô cùngquý báu và cần thiết trong suốt thời gian quá để em có thể thực hiện và hoàn thành

người đã trực tiếp hướng dẫn chúng em trong thời gian thực hiện đồ án này

Cuối cùng, xin chân thành cảm ơn các bạn trong ngành công nghệ thôngtin đã ủng hộ, giúp đỡ, chia sẻ kiến thức, kinh nghiệm và tài liệu có được giúpchúng tôi trong quá trình nghiên cứu và thực hiện đề tài

Do giới hạn về mặt thời gian và kiến thức cũng như kinh nghiệm thực tiễnnên đề tài không tránh khỏi những sai sót Em rất mong nhận được sự thông cảmcủa quý thầy cô và mong đón nhận những góp ý của thầy cô và các bạn

Em xin chân thành cảm ơn!

Trang 5

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

Đà Nẵng, tháng 5 năm 2021

Giảng viên hướng dẫn

Th.S Đặng Thị Kim Ngân

Trang 6

MỤC LỤC

Chương 1: 10

GIỚI THIỆU 10

1.1 Giới thiệu đề tài 10

1.2 Phương pháp thực hiện 11

1.3 Mục đích nghiên cứu 12

1.4 Giới hạn của đề tài 12

1.5 Cấu trúc đồ án: 12

Chương 2: 13

CƠ SỞ LÝ THUYẾT 13

2.1 Các phương pháp nhận diện khuôn mặt 13

2.1.1 Nhận dạng khuôn mặt người dùng thuật toán PCA 14

2.1.2 Nhận dạng khuôn mặt người dựa trên phương pháp LBP [5] 15

2.1.3 Nhận dạng khuôn mặt dựa trên phương pháp haar like và thuật toán Adaboost 16

2.2 Mạng nơ-ron tích chập (Convolutional Neural Network) 21

2.2.1 Định nghĩa 21

2.2.2 Cấu trúc đơn giản của CNN [8] 22

2.3 Tìm hiểu về Face Detector - MTCNN: 25

2.4 Tìm hiểu Pre-trained model - FaceNet 29

2.4.1 Pre-trained model 29

2.4.2 FaceNet 29

2.4.3 Thuật toán Triplet loss trong FaceNet: 30

2.5 Kỹ thuật căn chỉnh khuôn mặt (Face alignment) 33

Hình 21 Căn chỉnh khuôn mặt 34

2.6 Ngôn ngữ Python 34

2.6.1 Giới thiệu sơ lược về ngôn ngữ Python 34

2.6.2 Các đặc điểm của ngôn ngữ Python 35

2.6.3 Ứng dụng của Python 38

2.7 Một số thư viện quan trọng 38

2.7.1 Opencv 38

2.7.2 Numpy 40

Trang 7

2.7.3 Keras 40

2.7.4 TensorFlow 41

2.7.5 Dlib 41

Chương 3: 42

PHÂN TÍCH VÀ XÂY DỰNG HỆ THỐNG 42

3.1 Phân tích – thiết kế hệ thống phát hiện mặt người 42

3.1.1 Phân tích 42

3.1.2 Thiết kế hệ thống: 43

3.1.4 Phát hiện khuôn mặt trong ảnh đầu vào: 44

3.1.5 Căn chỉnh khuôn mặt trước khi nhận dạng: 44

3.1.7 Trích rút đặc trưng khuôn mặt từ ảnh đầu vào: 45

3.1.8 Nhận diện khuôn mặt 45

3.2 Kết quả thử nghiệm hệ thống 46

KẾT LUẬN 48

1 Kết quả đạt được 48

2 Hướng phát triển: 48

DANH MỤC TÀI LIỆU THAM KHẢO 48

Trang 8

MỤC LỤC HÌNH ẢNH

Hình 1: Mô tả tính toán với bán kính 1 điểm ảnh và lấy mẫu 8 điểm lân cận 14

Hình 2: Đặc trưng theo cạnh 15

Hình 3: Đặc trưng theo đường 15

Hình 4: Đặc trưng theo xung quanh tâm 15

Hình 5: Đặc trưng theo đường chéo 15

Hình 6: Cách tính Integral Image của ảnh 16

Hình 7: Cách tính tổng giá trị pixel vùng cần tính 17

Hình 8: Hệ thống phát hiện khuôn mặt 17

Hình 9: Cấu trúc của mạng nơ-ron tích chập 20

Hình 10: Minh họa chập với kernel 3x3 21

Hình 11: Phép toán sử dụng phép gộp 22

Hình 12: Một số hàm phi tuyến 22

Hình 13 Kiến trúc mạng MTCNN 24

Hình 14 Mạng neural P-Net 25

Hình 15 Mạng neural R-Net 26

Hình 16 Mạng neural O-Net 27

Hình 17 FaceNet lấy hình ảnh khuôn mặt làm đầu vào và xuất ra vector embedding 28

Hình 18 Triplet loss trên hai positive faces-mặt tích cực và một negative face-mặt tiêu cực 30

Hình 19 Triplet loss 31

Hình 20 Triplet loss trước và sau khi đào tạo 32

Hình 21 Căn chỉnh khuôn mặt 33

Hình 22: Biểu đồ ngữ cảnh của hệ thống 41

Hình 23 Sơ đồ thực hiện 42

Hình 24: Sơ đồ hệ thống 42

Hình 25 Trước và sau khi căn chỉnh khuôn mặt 43

Hình 26 Cosine similarity 44

Hình 27: Giao diện tạo mới người dùng 45

Hình 28: Giao diện training 46

Hình 29: Giao diện kết quả và tư vấn khuôn mặt dài 46

Hình 30: Giao diện kết quả và tư vấn khuôn mặt tròn 47

Hình 31: Giao diện kết quả và tư vấn khuôn mặt oval 47

Trang 9

Chương 1: GIỚI THIỆU

1.1 Giới thiệu đề tài

Ngày nay, trong kỷ nguyên số, máy tính là một phần không thể thiếu trongnghiên cứu khoa học cũng như trong đời sống hàng ngày Tuy nhiên, do hệ thốngmáy tính dựa trên lý thuyết cổ điển (tập hợp, logic nhị phân), nên dù có khả năngtính toán lớn và độ chính xác cao, thì máy tính cũng chỉ có thể làm việc theo mộtchương trình gồm các thuật toán được viết sẵn do lập trình viên chứ chưa thể tựlập luận hay sáng tạo

Học máy (Machine learning) là một phương pháp phân tích dữ liệu có thể

tự động hóa phân tích dữ liệu và tìm ra các trích xuất đặc trưng của bộ dữ liệu.Học máy sử dụng các thuật toán trừu tượng để tự học từ dữ liệu, cho phép máytính tìm thấy những thông 2 tin có giá trị ẩn ở rất sâu mà không thể lập trình đượcbằng cách thông thường Khi tiếp xúc với dữ liệu mới, học máy có thể thích ứngrất nhanh và độc lập

Học sâu (Deep Learning) là một ngành đặc biệt của học máy Học sâu sửdụng mạng nơ ron nhân tạo (Artificial Neural Networks) để giải quyết các bàitoán mà tính toán cứng chưa thể xử lý được như dữ liệu trừu tượng, dữ liệu mờ,

dữ liệu không rõ ràng, Với tính chất như vậy, học sâu thường được ứng dụngtrong nhận diện hình ảnh, nhận diện giọng nói, xử lý ngôn ngữ tự nhiên hoặc dựđoán, dự báo

Mạng nơ ron nhân tạo (Artificial Neural Networks) là một mô hình xử lýthông tin, cấu thành từ các lớp nơ ron, được ra đời trên cơ sở mô phỏng hoạt độngnão bộ của sinh vật Mạng nơ ron nhân tạo gắn kết nhiều nơ ron theo một mô hìnhnhất định, được trải qua huấn luyện để rút ra được kinh nghiệm, và sử dụng cáckinh nghiệm đã có để xử lý các thông tin mới Mạng nơ ron nhân tạo thường ápdụng vào giải các bài toán nhận dạng mẫu, hoặc dự đoán

Mạng nơ ron Tích chập (Convolutional Neural Network) là một trongnhững mô hình học sâu hiện đại nhất hiện nay Mạng nơ ron Tích chập hiện naythường được sử dụng nhiều trong các hệ thống thông minh do ưu điểm của mạng

là có độ chính xác cao, tuy nhiên tốc độ tính toán lại rất nhanh Vì lý do đó, mạng

nơ ron tích chập rất mạnh trong xử lý hình ảnh, và được ứng dụng rất nhiều trongngành thị giác máy tính trong các bài toán liên quan đến nhận dạng đối tượng

Trang 10

Ngày nay, với sự phát triển của công nghệ bán dẫn, máy tính ngày càngnhỏ đi, năng lượng tiêu thụ ngày càng thấp xuống, trong khi sức mạnh lại ngàycàng tăng lên Với những ưu điểm như vậy, chúng ta có thể thấy rất nhiều thiết bịthông minh đã và đang hiện diện mọi nơi trong đời sống, với camera nhiều điểmảnh, bộ nhớ trong lớn và vi xử lý mạnh như: điện thoại thông minh, máy ảnh kỹthuật số, camera hành trình,… Ngoài ra, với sự bùng nổ của xu hướng mạng vạnvật IOT, người ta có thể sẽ còn thấy rất nhiều thiết bị thông minh mới xuất hiện:

xe ô tô tự lái, thiết bị bay không người lái tự giao hàng, Có thể thấy, việc sửdụng trí thông minh nhân tạo để khai thác dữ liệu hình ảnh trong các thiết bị thôngminh trong tương lai đã và đang trở thành xu hướng Từ nhận định trên và sự gợi

ý của giảng viên hướng dẫn, nhóm em quyết định chọn nội dung “Xây dựng ứngdụng nhận diện sử dụng deep learning” để làm đề tài nghiên cứu thực hiện đồ án

cơ sở của mình

1.2 Phương pháp thực hiện

- Trước tiên ta phải nêu bài toán, phân tích và thiết kế hệ thống nhận dạng

- Xây dựng hệ thống deep learning sử dụng ngôn ngữ Python và mạng nơron Tích chập (CNN) Hệ thống lấy mẫu khuôn mặt bằng camera, sau đó hệ thốngtrích xuất, phân tích khuôn mặt từ hình ảnh hoặc các mẫu được lấy trước đó để sosánh và hệ thống đưa ra kết luận rằng có phải đối tượng đã sử dụng web hay chưahoặc đã tư vấn những kiểu tóc nào Sử dụng công cụ IDLE Python để lập trình

- Sau đó xây dựng cơ sở dữ liệu SQLite để thống kê, hiển thị dữ liệu, sửdụng một số công cụ để lập trình như Sublime Text, PHPStorm, Pycharm …

1.3 Mục đích nghiên cứu

 Tìm hiểu về các thuật toán nhận diện khuôn mặt người

 Tìm hiểu về mạng nơ-ron tích chập (CNN)

 Nâng cao kỹ năng thiết kế và lập trình bằng ngôn ngữ Python

 Rèn luyện kỹ năng nghiên cứu và tìm hiểu tài liệu

 Xây dựng mô hình có thể nhận diện được các kiểu mặt của conngười: mặt dài, mặt tròn, mặt vuông, mặt trái tim, mặt oval

Trang 11

1.4 Giới hạn của đề tài

Với thời gian có hạn nên nhóm chỉ thực hiện nghiên cứu các vấn đề cơ bảntrong phạm vi nhất định:

- Triển khai xây dựng

- Kết luận và hướng phát triển

Trang 12

Chương 2: CƠ SỞ LÝ THUYẾT

2.1 Các phương pháp nhận diện khuôn mặt

Hiện nay các phương pháp nhận dạng mặt được chia thành nhiều hướngtheo các tiêu chí khác nhau: nhận dạng với dữ liệu đầu vào là ảnh tĩnh 2D là phổbiến nhất, tuy nhiên tương lai có lẽ sẽ là 3D (vì việc bố trí nhiều camera 2D sẽ cho

dữ liệu 3D và đem lại kết quả tốt hơn, đáng tin cậy hơn), cũng có thể chia thành 2hướng là: làm với dữ liệu ảnh và làm với dữ liệu video Trên thực tế người ta haychia các phương pháp nhận dạng mặt ra làm 3 loại: phương pháp tiếp cận toàn cục(Global) như Eigenfaces - PCA, Fisherfaces - LDA; phương pháp tiếp cận dựa trêncác đặc điểm cục bộ (Local Feature Based) như LBP, Gabor Wavelets và phươngpháp lai (là sự kết hợp của phương pháp toàn cục và phương pháp cục bộ) [1]

Phương pháp nhận dạng khuôn mặt dựa trên các đặc điểm cục bộ: Đây là phương

pháp nhận dạng khuôn mặt dựa trên việc xác định các đặc trưng hình học của cácchi tiết trên một khuôn mặt (như vị trí, diện tích, hình dạng của mắt, mũi, miệng,

…), và mối quan hệ giữa chúng (như khoảng cách của hai mắt, khoảng cách củahai lông mày,…) [2]

Phương pháp nhận dạng khuôn mặt dựa trên xét toàn diện khuôn mặt:

Nhận dạng dựa trên toàn diện khuôn mặt, có nghĩa là sẽ không đi xét đến từngthành phần đặc trưng trên khuôn mặt nữa mà sẽ xem khuôn mặt là một khônggian cụ thể và sẽ tìm những đặc trưng, những đặc điểm chính trên không gian đó.[2]

Phương pháp dựa trên các đặc điểm cục bộ đã được chứng minh là ưu việthơn khi làm việc trong các điều kiện không có kiểm soát và có thể nói rằng lịch sửphát triển của nhận dạng mặt là sự phát triển của các phương pháp trích chọn đặctrưng (Feature Extractrion Methods) được sử dụng trong các hệ thống dựa trênfeature based Các ứng dụng cụ thể của nhận dạng mặt dựa trên 2 mô hình nhậndạng: identification (xác định danh tính, bài toán 1-N), và verification (xác thựcdanh tính, bài toán 1-1) Trong bài toán identification, ta cần xác định danh tínhcủa ảnh kiểm tra, còn trong bài toán verification ta cần xác định 2 ảnh có cùngthuộc về một người hay không [1]

Trang 13

2.1.1 Nhận dạng khuôn mặt người dùng thuật toán PCA

Kohonen đã đưa ra phương pháp dùng vector riêng để nhận dạng khuônmặt, ông dùng một mạng neural đơn giản để chứng tỏ khả năng của phương phápnày trên các ảnh đã được chuẩn hóa Mạng neural tính một mô tả của khuôn mặtbằng cách xấp xỉ các vector riêng của ma trận tương quan của ảnh Các vectorriêng sau này được biết đến với cái tên Eigenface [3] Kirby và Sirovich chứng tỏcác ảnh có khuôn mặt có thể được mã hóa tuyến tính bằng một số lượng vừa phảicác ảnh cơ sở Tính chất này dựa trên biến đổi Karhunen-Lòeve, mà còn được gọidưới một cái tên khác là PCA và biến đổi Hotelling Ý tưởng này được xem làcủa Pearson trình bày đầu tiên vào năm 1901 và sau đó là Hotelling vào năm

1933 Cho một tập các ảnh huấn luyện có kích thước n x m được mô tả bởi cácvector có kích thước m x m, các vector cở sở cho một không gian con tối ưu đượcxác định thông qua lỗi bình phương trung bình khi chiếu các ảnh huấn luyện vàokhông gian con này Các tác giả gọi tập các vector cơ sở tối ưu này là ảnh riêngsau đó gọi cho đơn giản là vector riêng của ma trận hiệp phương sai được tính từcác ảnh khuôn mặt đã vector hóa trong tập huấn luyện Nếu cho 100 ảnh, mà mỗikhuôn mặt có kích thước 91x50 thì có thể chỉ dùng 50 ảnh riêng, trong khi vẫnduy trì được một khả năng giống nhau hợp lý (giữ được 95% tính chất) [4]

Turk và Pentland áp dụng PCA để xác định và nhận dạng khuôn mặt.Tương tự, dùng PCA trên tập huấn luyện ảnh các khuôn mặt để sinh các ảnhriêng (còn gọi là Eigenface) để tìm một không gian con (không gian khuôn mặt)trong không gian ảnh Các ảnh khuôn mặt được chiếu vào không gian con này vàđược gom nhóm lại Tương tự các ảnh không có khuôn mặt dùng để huấn luyệncũng được chiếu vào cùng không gian con và gom nhóm lại Các ảnh khi chiếuvào không gian khuôn mặt thì không bị thay đổi tính chất cơ bản, trong khi chiếucác ảnh không có khuôn mặt thì xuất hiện sự khác nhau cũng không ít Xác định

sự có mặt của một khuôn mặt trong ảnh thông qua tất cả khoảng cách giữa các vịtrí trong ảnh và không gian ảnh Khoảng cách này dùng để xem xét có hay không

có khuôn mặt người, kết quả khi tính toán các khoảng cách sẽ cho ta một bản đồ

về khuôn mặt Có nhiều nghiên cứu về xác định khuôn mặt, nhận dạng, và trích ‘

Trang 14

đặc trưng từ ý tưởng vector riêng, phân rã, và gom nhóm Sau đó Kim phát triểncho ảnh màu, bằng cách phân đoạn ảnh để không gian tìm kiếm giảm xuống [4]

2.1.2 Nhận dạng khuôn mặt người dựa trên phương pháp LBP [5]

Mẫu nhị phân cục bộ (Local Binary Pattern - LBP) là phương pháp tríchchọn kết cấu của ảnh thành vector đặc trưng gọi là đặc trưng LBP Ý tưởng banđầu của phương pháp này được tác giả Ojala và các đồng nghiệp giới thiệu, banđầu xử lý trên ảnh xám Ví dụ với một điểm ảnh xét 8 điểm lân cận và sử dụngchính giá trị của điểm ảnh tại trung tâm để phân ngưỡng 8 giá trị lân cận Kết quảtìm được một chuỗi bit nhị phân có chiều dài bằng 8 tương ứng với 8 điểm lâncận được định nghĩa theo thứ tự nhất định Chuỗi bit sẽ được chuyển sang hệ thậpphân và giá trị thập phân này thay thế giá trị ban đầu của điểm ảnh đang xét Số

điểm lân cận có thể được thay đổi bằng đại lượng bán kính Hình 2.1 mô tả quá

trình tính toán LBP cho bài toán nhận dạng mặt người

Hình 1: Mô tả tính toán với bán kính 1 điểm ảnh và lấy mẫu 8 điểm lân cận

Ưu điểm của phương pháp LBP là có chi phí tính toán thấp, ổn định khi cường độthay đổi đơn điệu và dễ mở rộng lên không gian nhiều chiều như ảnh màu trong

hệ RGB Tuy nhiên, nhược điểm của đặc trưng dựa trên gradient là:

- Đầu tiên, gradient phác họa cường độ phân phối xung quanh điểm ảnh mộtcách khá thô do chỉ biểu thị bởi hai giá trị 0 và 1 Hai mức gradient giốngnhau có thể thuộc hai đối tượng cục bộ khác nhau, do đó không rõ ràng

- Thứ hai, thông tin về gradient không đủ biểu diễn cho các đối tượng trongtrường hợp gặp môi trường phức tạp gây ra nhiễu

Trang 15

2.1.3 Nhận dạng khuôn mặt dựa trên phương pháp haar like và thuật toán Adaboost.

2.1.3.1 Đặc trưng Haar-like [6]

Đặc trưng Haar-like được sử dụng trong việc nhận dạng đối tượng trongảnh số được phát biểu bởi Viola và Jones gồm 4 đặc trưng cơ bản để xác định mộtđối tượng trong ảnh Mỗi đặc trưng Haar-like là sự kết hợp gồm 2 hoặc 3 khối chữnhật mang giá trị “đen” hoặc “trắng” Những khối chữ nhật này thể hiện sự liên hệtương quan giữa các bộ phận trong ảnh mà bản thân từng giá trị pixel không thểdiễn đạt được

Hình 2: Đặc trưng theo cạnh

Hình 3: Đặc trưng theo đường

Hình 4: Đặc trưng theo xung quanh tâm

Hình 5: Đặc trưng theo đường chéo

Dựa theo các đặc trưng trên, giá trị của đặc trưng Haar-like được xây dựngbởi độ chênh lệch giữa tổng các pixel của các vùng đen so với tổng các pixel củacác vùng trắng

Trang 16

Dưới đây là công thức tính giá trị đặc trưng Haar-like:

Như vậy để tính giá trị đặc trưng Haar-like cần phải thực hiện tính toántổng các vùng pixel trên ảnh Điều này làm cho chi phí bài toán lớn không thể đápứng các tính năng yêu cầu thời gian thực Do vậy Viola và Jones [3] đã đề xuất rakhái niệm “Integral Image” để giảm thiểu chi phí cho bài toán tính giá trị của đặctrưng Haar-like để bài toán có thể xử lý với thời gian thực Tính “Integral Image”bằng cách sử dụng mảng 2 chiều với kích thước bằng kích thước của ảnh cần tínhgiá trị đặc trưng Haar-like Ảnh chia nhỏ ở vị trí (x, y) được tính bằng tổng cácgiá trị pixel của vùng từ vị trí (0,0) đến vị trí (x-1, y-1) Việc tính toán đơn giản làthực hiện phép cộng số nguyên nên tốc độ thực hiện được tối ưu hóa

Hình 6: Cách tính Integral Image của ảnh

Trang 17

Hình 7: Cách tính tổng giá trị pixel vùng cần tính

Hình 8: Hệ thống phát hiện khuôn mặt

Từ ảnh gốc ban đầu, hệ thống sẽ chia ảnh thành nhiều tỉ lệ rất nhỏ để tínhcác đặc trưng qua các hàm đặc trưng cơ bản Haar-like Sau khi tính toán được cáchàm đặc trưng, ta nhận được một số lượng rất lớn các đặc trưng Để lựa chọn vàxác định có thể là khuôn mặt, ta dùng giải thuật Adaboost để lựa chọn và kết hợpcác vùng trọng số yếu thành trọng số mạnh Cuối cùng, các vùng đã được lựachọn sẽ được đưa vào bộ phân loại “Cascade of classifier” để loại bỏ các vùngkhông phải khuôn mặt và xác định vùng nào là khuôn mặt Và đưa ra kết quả cuốicùng

Trang 18

2.1.3.2 Thuật toán Adaboost [6]

Adaboost là một cách trong hướng tiếp cận dựa trên diện mạo, Viola vàJones dùng AdaBoost kết hợp cascade để xác định khuôn mặt người với các đặctrưng dạng Haar wavelet-like Tốc độ xử lý khá nhanh và tỷ lệ chính xác hơn 80%trên ảnh xám Adaboost là một bộ phân loại mạnh phi tuyến phức dựa trên tiếpcận boosting được Freund và Schapire đưa ra vào năm 1995 Adaboost cũng hoạtđộng dựa trên nguyên tắc kết hợp tuyến tính các “weak classifiers” để hình thànhmột “strong classifier” Là một cải tiến của của tiếp cận boosting Adaboost sửdụng thêm khái niệm trọng số (weight) để đánh dấu các mẫu khó nhận dạng.Trong quá trình huấn luyện, cứ mỗi “weak classifiers” được xây dựng, thuật toán

sẽ tiến hành cập nhật lại trọng số để chuẩn bị cho việc xây dựng “weak classifier”

kế tiếp: tăng trọng số của các mẫu bị nhận dạng sai và giảm trọng số của các mẫuđược nhận dạng đúng bởi các “weak classifier” vừa xây dựng Bằng cách này

“weak classifier” sau có thể tập trung vào các mẫu mà các “weak classifier” trước

nó làm chưa tốt Sau cùng, các “weak classifier” sẽ được kết hợp tùy theo mức độtốt của chúng để tạo nên “strong classifier”

2.1.3.3 Khái quát Cascade of classifier [7]

Ta sẽ có một chuỗi các bộ phân lớp, trong đó mỗi bộ phân lớp được xâydựng bằng thuật toán Adaboost Bây giờ, ta đưa tất cả các cửa sổ con đi qua chuỗicác bộ phân lớp này:

 Bộ phân lớp đầu tiên sẽ loại bỏ phần lớn các cửa sổ không phải khuôn mặt(nagative sub window) và cho đi qua các cửa sổ được cho là khuôn mặt(positive sub window) Ở đây, bộ phân lớp này rất đơn giản và do đó, độphức tạp tính toán cũng rất thấp Tất nhiên, vì rằng nó đơn giản nên trong

số các cửa sổ được nhận dạng là khuôn mặt sẽ có một số lượng lớn cửa sổ

bị nhận dạng sai (không phải là khuôn mặt)

 Những cửa sổ được cho đi qua bởi bộ phân lớp đầu sẽ được xem xét bởi bộphân lớp sau đó: nếu bộ phân lớp cho rằng đó không phải là khuôn mặt thì

ta loại bỏ; nếu bộ phân lớp cho rằng đó là khuôn mặt thì ta lại cho đi qua

và chuyển đến bộ phân lớp phía sau

Trang 19

 Những bộ phân lớp càng về sau thì càng phức tạp hơn, đòi hỏi sự tính toánnhiều hơn Người ta gọi những cửa sổ con (mẫu) mà bộ phân lớp khôngloại bỏ được là những mẫu khó nhận dạng Những mẫu này càng đi sâuvào trong chuỗi các bộ phân lớp thì càng khó nhận dạng Chỉ những cửa sổ

đi qua được tất cả các bộ phân lớp thì ta mới quyết định đó là khuôn mặt.Tóm lại, chuỗi các bộ phân lớp sẽ xử lý các mẫu (cửa sổ con) đi vào theonguyên tắc sau: nếu một bộ phân lớp nào đó cho rằng đó không phải là mặt ngườithì ta loại bỏ ngay; còn nếu bộ phân lớp cho rằng đó là khuôn mặt thì ta chuyểnđến bộ phân lớp sau Nếu một mẫu trót lọt hết tất cả các bộ phân lớp thì ta mớiquyết định đó là khuôn mặt

Đây là một phương pháp cơ bản phù hợp cho những ai mới tham gia nghiêncứu lĩnh vực nhận dạng khuôn mặt, đặc trưng Haar-like kết hợp với Adaboot đượccài sẵn trong bộ thư viện Opencv giúp chúng ta dễ dàng phát hiện khuôn mặt, tốc

độ phát hiện nhanh và hoạt động ổn định trong điều kiện đầy đủ sáng

2.2 Mạng nơ-ron tích chập (Convolutional Neural Network)

2.2.1 Định nghĩa

Mạng nơ-ron tích chập là một trong những mô hình mạng học sâu phổ biếnnhất hiện nay, có khả năng nhận dạng và phân loại hình ảnh với độ chính xác rấtcao (khoảng 98%) Mô hình này đã và đang được phát triển, ứng dụng vào các hệthống xử lý ảnh lớn của Facebook, Google hay Amazon… cho các mục đích khácnhau như các thuật toán gắn thẻ tự động, tìm kiếm ảnh hoặc drone giao hàng tựđộng

Sự ra đời của mạng nơ-ron tích chập là dựa trên ý tưởng cải tiến cách thứccác mạng nơ-ron nhân tạo truyền thống học thông tin trong ảnh Do sử dụng cácliên kết đầy đủ giữa các điểm ảnh vào nút, các mạng nơ-ron nhân tạo truyền thẳng

bị hạn chế rất nhiều bởi kích thước của ảnh, ảnh càng lớn thì số lượng liên kếtcàng tăng nhanh và kéo theo sự bùng nổ khối lượng tính toán Ngoài ra sự liên kếtđầy đủ này cũng là sự dư thừa khi với mỗi bức ảnh, các thông tin chủ yếu thể hiện

Trang 20

qua sự phụ thuộc giữa các điểm ảnh với những điểm xung quanh nó mà khôngquan tâm nhiều đến các điểm ảnh ở cách xa nhau Mạng nơ-ron tích chập ra đờivới kiến trúc thay đổi, có khả năng xây dựng liên kết chỉ sử dụng một phần cục bộtrong ảnh kết nối đến nút trong lớp tiếp theo thay vì toàn bộ ảnh như trong mạngnơ-ron truyền thẳng

Trong luận văn này, nhóm thực hiện sẽ trình bày về tích chập cũng như ýtưởng của mô hình CNN áp dụng trong bài toán nhận diện cảm xúc trên khuônmặt

2.2.2 Cấu trúc đơn giản của CNN [8]

Các lớp cơ bản trong một mạng nơ-ron tích chập bao gồm: lớp chập, lớpgộp và lớp kết nối đầy đủ, được thay đổi về số lượng và cách sắp xếp để tạo ra các

mô hình huấn luyện phù hợp cho từng bài toán khác nhau

Hình 9: Cấu trúc của mạng nơ-ron tích chập

- Lớp chập

Là lớp quan trọng nhất trong cấu trúc của mạng nơ-ron tích chập Chập dựatrên lý thuyết xử lý tín hiệu số, việc chập sẽ giúp trích xuất được những thông tinquan trọng từ dữ liệu Để dễ hình dung, có thể xem tích chập như một cửa sổ trượt

áp đặt lên một ma trận Cơ chế của tích chập được minh họa qua Hình 2.10 bên

dưới

Trang 21

Hình 10: Minh họa chập với kernel 3x3

Từ Hình 2.10, 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, 0 là màu đen, 1 là màu trắng (nếu là ảnhxám thì giá trị biến thiên từ 0 đến 255)

Cửa sổ trượt còn có tên gọi là kernel hay filter Ở đây, ta dùng một ma trận kernel 3×3 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ủa các thành phần này cộng lại Kết quả của tích chập là một ma trậnsinh ra từ việc trượt ma trận kernel và thực hiện tích chập cùng lúc lên toàn bộ matrận ảnh bên trái

- Lớp gộp

Bản đồ đặc trưng được tạo ra thông qua việc tính toán của lớp chập, tuynhiên kích thước của nó so với kích thước đầu vào giảm không đáng kể Nếu kíchthước không thay đổi, sẽ tạo nên một số lượng tính toán lớn và việc học tập cũngtrở nên rất khó khăn Lớp gộp này sẽ giải quyết vấn đề về làm giảm kích thước và

số lượng tính toán của bản đồ đặc trưng

Có nhiều toán tử gộp như Sum-Pooling, Pooling, L_2-Pooling nhưng Pooling thường được sử dụng Về mặt ý nghĩa thì Max-Pooling xác định vị trí chotín hiệu mạnh nhất khi áp dụng một loại kernel Điều này cũng tương tự như làmột bộ lọc phát hiện vị trí đối tượng bằng kernel trong bài toán phát hiện đốitượng trong ảnh

Max-Về mặt lý thuyết với ma trận đầu vào có kích thước a*b*c và thực hiện toán tử gộp trên ma trận con của ma trận đầu vào có kích thước f*f với bước nhảy pixel s thì ta được ma trận đầu ra a’*b’*c’ trong đó:

(2.4)

Trang 22

Hình 11: Phép toán sử dụng phép gộp

Hình 2.11 là ví dụ về sử dụng toán tử gộp Trong đó miêu tả cách thức lớp gộp xử

lý đối với một đầu vào, kích thước của đầu vào là [224*224*64] được thực hiện với các thông số f = 2 và s = 2 thì đầu ra có kích thước [112*112*64] được thể

hiện ở phía trái của Hình 2.11 Phía phải mô tả chi tiết cách thức hoạt động của

max-pooling trong đó f = 2 và s = 2 kết quả đầu ra ma trận tương ứng

- Lớp ReLU

Chập là một phép biển đổi tuyến tính Nếu tất cả các nơ-ron được tổng hợpbởi các phép biến đổi tuyến tính thì một mạng nơ-ron đều có thể đưa về dưới dạngmột hàm tuyến tính Do đó tại mỗi nơ-ron cần có một hàm truyền dưới dạng phituyến

Có nhiều dạng hàm phi tuyến được sử dụng trong quá trình này như sau:

Hình 12: Một số hàm phi tuyến.

Các nghiên cứu gần đây chứng minh được việc sử dụng hàm ReLU cho kết quảtốt hơn ở các khía cạnh: tính toán đơn giản, tạo ra tính thưa ở các nơ-ron ẩn (ví dụnhư sau bước khởi tạo ngẫu nhiên các trọng số, khoảng 50% các nơ-ron ẩn được

Trang 23

kích hoạt) và quá trình huấn luyện nhanh hơn ngay cả khi không phải trải quabước tiền huấn luyện.

- Lớp kết nối đủ

Cách kết nối các nơ-ron ở hai tầng với nhau trong đó tầng sau kết nối đẩy

đủ với các nơ-ron ở tầng trước nó Đây cũng là dạng kết nối thường thấy ở mạngnơ-ron nhân tạo, trong mạng nơ-ron tích chập tầng này thường được sử dụng ởphía cuối của kiến trúc mạng

Hiện nay có một số cấu trúc CNN đạt được kết quả khả quan như:

 LeNet: Đây là mô hình CNN thành công đầu tiên, đặc biệt là trongviệc nhận dạng chữ số, kí tự trong văn bản Được phát triển bởiYann Lecun vào cuối những năm 90

 AlexNet: Được phát triển bởi Alex Krizhevsky, Ilya Sutskever vàGeoff Hinton Làn đầu được giới thiệu vào năm 2012 với cấu trúckhá tương tự như LeNet nhưng với số lượng neuron, filter và layerlớn hơn Được coi là mạng neural đầu tiên phổ biến rộng rãi khảnăng của CNNs

 ZF Net: Là mạng CNNs tốt nhất năm 2013 được phát triển bởiMatthew Zeiler và Rob Fergus (ZF là viết tắt của Zeiler và Fergus).Mạng neural này được phát triển từ AlexNet với việc tinh chỉnh cáchyperparameter (filter size, stride, ) Với những layer gần inputlayer, filter size và stride nhỏ hơn

 GoogLeNet: Là mạng CNNs tốt nhất năm 2014 được phát triển bởiSzegedy từ Google Với một số thay đổi như giảm thiểu số lượngtham số trong AlexNet từ 60 triệu xuống 4 triệu, sử dụng AveragePooling thay cho FC-Layer

 VGGNet: Là mạng CNNs tốt nhất năm 2015 được phát triển bởiKaren Simonyan và Andrew Ziserman Sử dụng filter 3x3 vàpooling 2x2 từ đầu tới cuối mạng Và vẫn còn được tiếp tục pháttriển cho đến nay

2.3 Tìm hiểu về Face Detector - MTCNN:

Trang 24

MTCNN là viết tắt của Multi-task Cascaded Convolutional Networks(Mạng đa năng xếp tầng đa tác vụ) Nó là bao gồm 3 mạng CNN xếp chồng vàđồng thời hoạt động khi detect khuôn mặt Mỗi mạng có cấu trúc khác nhau vàđảm nhiệm vai trò khác nhau trong task Đầu ra của MTCNN là vị trí khuôn mặt

và các điểm trên mặt: mắt, mũi, miệng…

MTCNN hoạt động theo 3 bước, mỗi bước có một mạng neural riêng lầnlượt là: P-Net, R-Net và O-net

Ngày đăng: 20/11/2021, 08:25

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

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

w