1. Trang chủ
  2. » Luận Văn - Báo Cáo

ĐỒ ÁN CƠ SỞ - ĐỀ TÀI: XÂY DỰNG PHẦN MỀM NHẬN DIỆN KHUÔN MẶT

27 42 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 27
Dung lượng 1,2 MB

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

Nội dung

Không chỉ dừng lại ởviệc chỉnh sửa, tăng chất lượng hình ảnh mà với công nghệ xử lý ảnh hiện naychúng ta có thể giải quyết các bài toán nhận dạng chữ viết, nhận dạng dấu vântay, nhận dạn

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

ĐỒ ÁN CƠ SỞ 5

ĐỀ TÀI: XÂY DỰNG PHẦN MỀM NHẬN

DIỆN KHUÔN MẶT

Sinh viên thực hiện : HÀ THANH VINH

LÊ THỊ MINH CHAU Giảng viên hướng dẫn : TS LÊ VĂN MINH

Lớp : 18IT1

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

Trang 2

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

ĐỒ ÁN CƠ SỞ 5

ĐỀ TÀI: XÂY DỰNG PHẦN MỀM NHẬN

DIỆN KHUÔN MẶT

Trang 3

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

Trang 4

Sự phát triển của internet đã đưa con người vao kỷ nguyên xa lộ thôngtin mạng Thông qua mạng internet con người có thể mua bán hàng hóa, traođổi thông tin một các rộng rãi trên toàn cầu Máy tính càng trở nên gần gũihơn với cuộc sống của chúng ta, nó tăng khả năng tiếp cận và hỗ trợ nhữngcông việc khó khăn và phức tạp trong mọi lĩnh vực của cuộc sống nói chung

và công tác quản lí trong các doanh nghiệp, cơ quan nói riêng như bảo mậtthông tin, xem và công tác quản lí trong doanh nghiệp Đã có nhiều phầnmềm được xây dựng để phục vụ cho tính chất phức tạp của cuộc sống nóichung và công tác quản lí trong các doanh nghiệp, cơ quan

Trong suốt quá trình học tập, chúng em đã được các thầy cô cung cấp

và truyền đạt những kiến thức cần thiết trong lĩnh vực công nghệ thông tin.Trong khuôn khổ một đồ án môn học dưới sự hướng dẫn của thây cô giáo,cùng sự tích lũy kiến thức nhóm em đã xây dựng đề tài “ Phần mềm nhận diệnkhuôn mặt “ bằng ngôn ngữ Python

Trang 5

LỜI CẢM ƠN

Chúng em xin gửi lời cảm ơn chân thành và sâu sắc đến các thầy cô đặc biệt làgiảng viên TS Lê Văn Minh trong thời gian qua đã giúp đỡ chúng em trong việc hoànthành bài báo cáo đồ án cơ sở

Mặc dù gặp nhiều khó khăn trong việc hoàn thành bài đồ án này, tuy nhiênchúng em vẫn cố gắng để thực hiện hoàn chỉnh nhất bài báo cáo Tuy nhiên, vì chưa cóđầy đủ kỹ năng cũng như kinh nghiệm để hoàn thành bài báo cáo đồ án nên em vẫncòn nhiều thiếu sót Rất mong được sự đóng góp ý kiến của thầy cô để bài báo cáo đồ

án được hoàn thiện hơn, chúng em xin chân thành cảm ơn

Trang 6

NHẬN XÉT

(Của giảng viên hướng dẫn)

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

Chữ ký của giáo viên hướng dẫn

Trang 7

MỤC LỤC

DANH MỤC CÁC BẢNG

DANH MỤC HÌNH

DANH MỤC CỤM TỪ VIẾT TẮT

CHƯƠNG 1: GIỚI THIỆU 1

1 Tổng quan đề tài 1

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

1.2 Mục dích của đề tài 1

1.3 Đối tượng và phạm vi nghiên cứu đề tài 2

1.4 Bài toán nhận diện khuôn mặt và những khó khăn 2

1.5 Nhận dạng (Recognition) hay Phân lớp khuôn mặt (Face Clasaification)3 1.5.1 Ngôn ngữ lập trình 5

1.5.2 Môi trường lập trình 5

1.5.3 Làm quen với thư viện OpenCV 6

CHƯƠNG 2: TỔNG QUAN VỀ XỬ LÝ ẢNH 7

2.1 Xử lý ảnh, các vấn đề cơ bản trong xử lý ảnh 7

2.1.1 Xử lý ảnh (XLA) là gì ? 7

2.1.2 Các vấn đề cơ bản trong xử lý ảnh 10

2.2 Quan hệ giữa các điểm ảnh 10

2.2.1 Các lân cận của điểm ảnh 10

2.2.2 Các mối liên kết điểm ảnh 11

2.2.3 Đo khoảng cách giữa các điểm ảnh 11

CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH 12

3.1 Phân tich thiết kế hệ thống 12

3.1.1 Đối tượng sử dụng 12

3.1.2 Chức năng chính 12

3.1.3 Phân tích 12

3.1.4 Sơ đồ khối thực hiện chương trình 12

3.1.5 Sơ đồ hoạt động 13

3.2 Demo kết quả 13

3.2.1 Demo code 13

3.2.2 Demo sản phẩm 15

KẾT LUẬN 16

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

Trang 8

DANH MỤC CÁC BẢNG

Trang 9

DANH MỤC HÌNH

Hình 1: Hệ thống nhận dạng mặt người 2

Hình 2: Các bước chính trong một hệ thống nhận dạng khuôn mặt 3

Hình 3: Ngôn ngữ Python 5

Hình 4: Visual Studio Code 5

Hình 5: Thư viện OpenCV 6

Hình 6: Các thành phần của thư viện OpenCV 6

Hình 7: Quá trình xử lý ảnh 7

Hình 8: Các bước cơ bản trong một hệ thống xử lý ảnh 7

Hình 9: Sơ đồ phân tích, xử lý ảnh và lưu đồ thông tin giữa các khối 10

Hình 10: Lân cận các điểm ảnh của tọa độ (x, y) 11

Hình 11: Sơ đồ ngữ cảnh của hệ thống 12

Hình 12: Sơ đồ khối thực hiện chương trình 12

Hình 13: Sơ đồ hoạt động 13

Trang 10

DANH MỤC CỤM TỪ VIẾT TẮT

Trang 11

CHƯƠNG 1: GIỚI THIỆU

Chương 1 Tổng quan đề tài

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

Với sự phát triển không ngừng của khoa học và công nghệ, đặc biệt là vớinhững chiếc điện thoại thông minh (smartphone) ngày càng hiện đại và được sửdụng phổ biến trong đời sống con người đã làm cho lượng thông tin thu đượcbằng hình ảnh ngày càng tăng Theo đó, lĩnh vực xử lý ảnh cũng được chú trọngphát triển, ứng dụng rộng rãi trong đời sống xã hội hiện đại Không chỉ dừng lại ởviệc chỉnh sửa, tăng chất lượng hình ảnh mà với công nghệ xử lý ảnh hiện naychúng ta có thể giải quyết các bài toán nhận dạng chữ viết, nhận dạng dấu vântay, nhận dạng khuôn mặt… Một trong những bài toán được nhiều người quantâm nhất của lĩnh vực xử lý ảnh hiện nay đó là nhận dạng khuôn mặt (FaceRecognition) Như chúng ta đã biết, khuôn mặt đóng vai trò quan trọng trong quátrình giao tiếp giữa người với người, nó mang một lượng thông tin giàu có, chẳnghạn như từ khuôn mặt chúng ta có thể xác định giới tính, tuổi tác, chủng tộc,trạng thái cảm xúc, đặc biệt là xác định mối quan hệ với đối tượng (có quen biếthay không) Do đó, bài toán nhận dạng khuôn mặt đóng vai trò quan trọng trongnhiều lĩnh vực đời sống hằng ngày của con người như các hệ thống giám sát,quản lý vào ra, tìm kiếm thông tin một người nổi tiếng,…đặc biệt là an ninh, bảomật Có rất nhiều phương pháp nhận dạng khuôn mặt để nâng cao hiệu suất tuynhiên dù ít hay nhiều những phương pháp này đang vấp phải những thử thách về

độ sáng, hướng nghiêng, kích thước ảnh, hay ảnh hưởng của tham số môi trường.Bài toán Nhận diện khuôn mặt (Face Recognition) bao gồm nhiều bài toán khácnhau như: phát hiện mặt người (face detection), đánh dấu (facial landmarking),trích chọn (rút) đặc trưng (feature extration), gán nhãn, phân lớp (classification).Trong thực tế, nhận dạng khuôn mặt người (Face Recognition) là một hướngnghiên cứu được nhiều nhà khoa học quan tâm, nghiên cứu để ứng dụng trongthực tiễn Ở các trường đại học hàng đầu về Công Nghệ Thông Tin nhưMassachusetts Institute of Technology (MIT), Carnegie Mellon University(CMU), Standford, Berkeley và các công ty lớn như Microsoft, Apple, Google,Facebook đều có các trung tâm về sinh trắc học (Biometrics Center) và nghiêncứu về nhận dạng khuôn mặt người và nó đã trở thành một trong những lĩnh vựcnghiên cứu chính cho đến nay Gần đây, công ty Hitachi Kokusai Electric củaNhật mới cho ra đời một camera giám sát, có thể chụp ảnh và tìm ra 36 triệukhuôn mặt khác có nét tương tự trong cơ sở dữ liệu chỉ trong vòng một giây Cóhai phương pháp nhận dạng phổ biến hiện nay là nhận dạng dựa trên đặc trưngcủa các phần tử trên khuôn mặt như biến đổi Gabor Wavelet và mạng Neural,SVM,…và nhận dạng dựa trên xét tổng thể toàn khuôn mặt như phương phápPCA, LDA, LFA Trong đó, PCA là phương pháp trích rút đặc trưng nhằm giảm

số chiều của ảnh tuy đơn giản nhưng mang lại hiệu quả tốt Hệ thống hoạt động

ổn định và có tính thích nghi cao khi dữ liệu đầu vào thay đổi nhiều

1.2 Mục dích của đề tài

- Xây dựng một dự án phần mềm ứng dụng nhận dạng khuôn mặt

- Tìm hiểu về thư viện OpenCv

- Tìm hiểu các phương pháp xác định khuôn mặt (Face Detection)

Trang 12

- Bộ thư viện xử lý ảnh OpenCv

- Bộ CSDL sinh viên tự thu thập

b) Phạm vi nghiên cứu:

- Tập trung tìm hiểu nhận dạng khuôn mặt (Face Recognition) chứ khôngchú trọng tìm hiểu phát hiện khuôn mặt (Face Detection)

- Việc xử lý ảnh, nhận dạng khuôn mặt thỏa mãn các điều kiện:

- Ánh sáng bình thường, ngược sáng, ánh sáng đèn điện (Với bộ CSDL tựthu thập)

- Góc ảnh: Trực diện (frontal) hoặc góc nghiêng không quá 10o

- Không bị che khuất (no occulusion)

- Ảnh có chất lượng cao (high quality images)

1.4 Bài toán nhận diện khuôn mặt và những khó khăn

1.4.1 Bài toán nhận diện mặt người

Hệ thống nhận dạng mặt người là một hệ thống nhận vào là một ảnh hoặcmột đoạn video (một dòng các hình ảnh liên tục) Qua xử lý, tính toán hệ thốngxác định được vị trí mặt người (nếu có) trong ảnh và xác định là người nào trong

số những người mà hệ thống đã được biết (qua quá trình học) hoặc là người lạ

Hình 1: Hệ thống nhận dạng mặt người

Trang 13

Bài toán nhận dạng mặt người là bài toán đã được nghiên cứu từ nhữngnăm 70 Tuy nhiên, đây là một bài toán khó nên những nghiên cứu hiện tạivẫn chưa đạt được những kết quả mong muốn Chính vì thế, vấn đề này vẫnđang được nhiều nhóm trên thế giới quan tâm nghiên cứu Khó khăn của bàitoán nhận dạng mặt người có thể kể đến như sau:

a) Tư thế chụp, góc chụp: Ảnh chụp khuôn mặt có thể thay đổi rất nhiều bởi

vì góc chụp giữa camera và khuôn mặt Chẳng hạn như: chụp thẳng, chụpchéo bên trái 45o hay chụp chéo bên phải 45o , chụp từ trên xuống, chụp từdưới lên, v.v… Với các tư thế khác nhau, các thành phần trên khuôn mặt nhưmắt, mũi, miệng có thể bị khuất một phần hoặc thậm chí khuất hết

b) Sự xuất hiện hoặc thiếu một số thành phần của khuôn mặt: Các đặc trưngnhư: râu mép, râu hàm, mắt kính, v.v… có thể xuất hiện hoặc không Vấn đềnày làm cho bài toán càng trở nên khó hơn rất nhiều

c) Sự biểu cảm của khuôn mặt: Biểu cảm của khuôn mặt con người có thểlàm ảnh hưởng đáng kể lên các thông số của khuôn mặt Chẳng hạn, cùng mộtkhuôn mặt một người, nhưng có thể sẽ rất khác khi họ cười hoặc sợ hãi, v.v…d) Sự che khuất: Khuôn mặt có thể bị che khuất bởi các đối tượng kháchoặc các khuôn mặt khác

e) Hướng của ảnh (pose variations): Các ảnh khuôn mặt có thể biến đổi rấtnhiều với các góc quay khác nhau của trục camera Chẳng hạn chụp với trụcmáy ảnh nghiêng làm cho khuôn mặt bị nghiêng so với trục của ảnh

f) Điều kiện của ảnh: Ảnh được chụp trong các điều kiện khác nhau về:chiếu sáng, về tính chất camera (máy kỹ thuật số, máy hồng ngoại, v.v…), ảnh

có chất lượng thấp ảnh hưởng rất nhiều đến chất lượng ảnh khuôn mặt

g) Aging condition: Việc nhận dạng ảnh mặt thay đổi theo thời gian còn làmột vấn đề khó khăn, ngay cả đối với khả năng nhận dạng của con người

1.4.2 Tổng quan kiến trúc của một hệ thống nhận dạng mặt người

Một hệ thống nhận dạng mặt người thông thường bao gồm bốn bước xử lýsau:

1 Phát hiện khuôn mặt (Face Detection)

2 Phân đoạn khuôn mặt (Face Alignment hay Segmentation)

3 Trích chọn đặc trưng (Feature Extraction)

1.5 Nhận dạng (Recognition) hay Phân lớp khuôn mặt (Face Clasaification)

Hình 2: Các bước chính trong một hệ thống nhận dạng khuôn mặt

Trang 14

Phát hiện khuôn mặt dò tìm, định vị những vùng (vị trí) có thể là khuôn mặt xuấthiện trong ảnh hoặc các frame video Các vùng này sẽ được tách riêng để xử lý.Phân đoạn khuôn mặt sẽ xác định vị trí mắt mũi, miệng và các thành phần kháccủa khuôn mặt và chuyển kết quả này cho bước trích chọn đặc trưng Ở bướctrích chọn đặc trưng, bằng một phương pháp trích chọn đặc điểm nào đó (mẫu nhịphân cục bộ-Local Binary Pattern-LBP, Gabor wavelets…) sẽ được sử dụng vớiảnh mặt để trích xuất các thông tin đặc trưng cho ảnh từ các thông tin về cácthành phần trên khuôn mặt, kết quả là mỗi ảnh sẽ được biểu diễn dưới dạng mộtvector đặc trưng (feature vector) Những vecto đặc trưng này sẽ là dữ liệu đầuvào cho một mô hình đã được huấn luyện trước để nhận dạng khuôn mặt (FaceRecognition) hay phân lớp khuôn mặt (Face Classifition), tức là xác định danhtính (identity) hay nhãn của ảnh-đó là ảnh của ai Ở bước nhận dạng khuôn mặt(Face Recognition), thường thì phương pháp k-láng giềng gần (k-nearestneighbor:kNN) sẽ được sử dụng Bên cạnh những bước chính nêu trên, chúng tacòn có thể áp dụng thêm một số bước khác như tiền xử lý, hậu xử lý nhằm làmtăng độ chính xác cho hệ thống Ví dụ, sau bước phát hiện khuôn mặt, ta có thểthực hiện bước tiền xử lý (Preprocessing) bao gồm các bước căn chỉnh ảnh (faceimage alignment) và chuẩn hóa ánh sáng (illumination normalization) Do một sốthông số như: tư thế khuôn mặt, độ sáng, điều kiện ánh sáng, v.v… phát hiệnkhuôn mặt được đánh giá là bước khó khăn và quan trọng nhất so với các bướccòn lại của hệ thống Tuy nhiên, trong phạm vi đồ án này, không tập trung tìmhiểu bước phát hiện khuôn mặt mà chỉ tập trung chủ yếu vào bước nhận dạngkhuôn mặt Dữ liệu cho một hệ thống nhận dạng mặt được chia làm 3 tập: tậphuấn luyện (training set), tập tham chiếu (reference set haygallery set) và tập đểnhận dạng (probe set hay query set, đôi khi còn gọi là test set) Trong nhiều hệthống, tập training trùng với tập reference Tập training gồm các ảnh được dùng

để huấn luyện (hay học-learning), thông thường tập này được dùng để sinh ra mộtkhông gian con (projection subspace) là một ma trận và phương pháp hay được

sử dụng là PCA (Principal Component Analysis), WPCA (Whitened PCA), LDA(Linear Discriminant Analysis), KPCA (Kernel PCA) Tập reference gồm các ảnh

đã biết danh tính được chiếu (projected) vào không gian con ở bước training.Bước training nhằm 2 mục đích: giảm số chiều (dimension reduction) của cácvector đặc điểm (feature vector) vì các vector này thường có độ dài khá lớn (vàinghìn tới vài trăm nghìn) nên nếu để nguyên thì việc tính toán sẽ rất rất lâu, thứhai là làm tăng tính phân biệt (discriminative) giữa các ảnh khác lớp (định danhkhác nhau), ngoài ra có thể làm giảm tính phân biệt giữa các ảnh thuộc về mộtlớp (tùy theo phương pháp, ví dụ như Linear Discriminant Analysis LDA- còngọi là Fisher Linear Discriminant Analysis-Fisherface là một phương pháp làmviệc với tập training mà mỗi đối tượng có nhiều ảnh mặt ở các điều kiện khácnhau) Sau khi thực hiện chiếu tập reference vào không gian con, hệ thống lưu lạikết quả là một ma trận với mỗi cột của ma trận là một vector tương ứng với ảnh(định danh đã biết) để thực hiện nhận dạng (hay phân lớp) Nhận dạng (hay phânlớp) được thực hiện với tập các ảnh probe, sau khi tiền xử lý xong, mỗi ảnh sẽđược áp dụng phương pháp trích chọn đặc điểm (như với các ảnh thuộc tậptraining và reference) và được chiếu vào không gian con Tiếp đến việc phân lớp

sẽ dựa trên phương pháp k-NN, định danh của một ảnh cần xác định sẽ được gán

là định danh của ảnh có khoảng cách (distance) gần với nó nhất Ở đây cần lưu ý

là mỗi ảnh là một vector nên có thể dùng khái niệm hàm khoảng cách giữa haivector để đo sự khác biệt giữa các ảnh

Trang 15

1.5.1 Ngôn ngữ lập trình

Để giải quyết bài toán nhận dạng khuôn mặt sử dụng thư viện OpenCV, chúng

ta có thể sử dụng các ngôn ngữ lập trình như: NET C#, VB, IronPython, Java,C++…

Trong đồ án này ngôn ngữ lập trình được sử dụng là Python viết trên phầnmềm Visual Studio Code

Hình 3: Ngôn ngữ Python

1.5.2 Môi trường lập trình

Hình 4: Visual Studio Code

- Visual Studio Code là một trình soạn thảo mã nguồn miễn phí do Microsoft tạocho Windows, Linux và macOS Các tính năng bao gồm hỗ trợ gỡ lỗi, tô sáng cú pháp, hoàn thành mã thông minh, đoạn mã, cấu trúc lại mã và Git được nhúng

Trang 16

gỡ lỗi cho Node.js.

1.5.3 Làm quen với thư viện OpenCV

Hình 5: Thư viện OpenCV

a) OpenCV là gì?

OpenCV (Open Source Computer Vision) là một thư viện mã nguồn mở về thị

giác máy với hơn 500 hàm và hơn 2500 các thuật toán đã được tối ưu về XLA, vàcác vấn đề liên quan tới thị giác máy OpenCv được thiết kế một cách tối ưu, sử dụng tối đa mạnh của các dòng chip đa lõi… để thực hiện các phép tính toán trong thời gian thực, nghĩa là tốc độ đáp ứng của nó thể đủ nhanh cho các ứng dụng thông thường

b) Cấu trúc tổng quan

Hình 6: Các thành phần của thư viện OpenCV

Ngày đăng: 03/03/2022, 02:09

TỪ KHÓA LIÊN QUAN

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