MẪU ĐỒ ÁN KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VIỆT HÀN ĐỒ ÁN CƠ SỞ 3 ĐỀ TÀI PHẦN MỀM NHẬN DIỆN KHUÔN MẶT TRONG CÔNG TY LỜI CẢM ƠN NHẬN XÉT (Của cơ quan thực tập, nế[.]
Trang 2LỜI CẢM ƠN
NHẬN XÉT
(Của cơ quan thực tập, nếu có) Bold, size 16, xếp sau trang Lời cảm ơn
size 13………
………
………
………
………
………
Để hoàn thành tốt đề tài này chúng em xin cảm ơn tới quý thầy cô Trường Đại học Công nghệ thông tin và truyền thông Việt – Hàn đã tạo điều kiện cho nhóm chúng em nghiên cứu và hoàn thành đề tài Tiếp đến, chúng em xin chân trọng cảm ơn TS.Nguyễn Hà Huy Cường đã tận tình giúp đỡ, chỉ bảo hướng dẫn chúng em trong suốt quá trình thực hiện đề tài
Vì thời gian và năng lực còn có hạn chế nên không thể tránh khỏi những sai sót trong khi thực hiện đề tài nghiên cứu của mình Rất mong được sự góp ý bổ sung của thầy để đề tài của chúng em ngày càng hoàn thiện hơn
Xin chân thành cảm ơn !
Trang 31.3.1 Giới thiệu ngôn ngữ lập trình Python 41.3.2 Giới thiệu về thư viện OpenCV 41.3.3 Môi trường lập trình Pycharm 51.3.4 Giới thiệu CSDL DB Browser SQLite 5
DANH MỤC THAM KHẢO
Trang 4DANH MỤC HÌNH
Trang
Hình 1 Tổng quan về hệ thống phát hiện mặt người trong ảnh 3
Hình 12 Giao diện nhận diện
Hình 13 Lưu thông tin sinh viên vào database
Trang 6PHẦN I : MỞ ĐẦU
1 Tổng quan
Hiện nay, cùng với sự phát triển của xã hội, vấn đề án ninh bảo mật đang đượcyêu cầu khắt khe ở mọi nơi trên thế giới Các hệ thống nhận dạng con ngườiđược ra đời với độ tin cậy ngày càng cao Một trong các bài toán nhận dạng conngười rất được quan tâm hiện nay là nhận dạng khuôn mặt Vì nhận dạng khuônmặt là cách cơ bản và dễ dàng nhất mà con người dùng để phân biệt nhau Bêncạnh đó, ngày nay việc thu thập, xử lý thông tin qua ảnh để phân biệt đối tượngđang được quan tâm và ứng dụng rộng rãi Với phương pháp này, chúng ta cóthể thu nhận được nhiều thông từ đối tượng mà không cần tác nhiều đến đốitượng nghiên cứu
2 Mục đích
Chúng em xây dựng phần mền nhận diện khuôn mặt nhằm mục đích áp dụng cho các công ty có thể nhận diện được khuôn mặt của nhân viên trong công ty cũng như có thể điểm danh nhân viên để chấm công cho họ
3 Phương pháp
- 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 sử dụng ngôn ngữ Python và thư viện OpenCV Hệ thống lấymẫu khuôn mặt bằng camera, sau đó hệ thống trí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 đó để so sánh và hệ thống đưa ra kếtluận rằng có phải đối tượng được cho phép hay không Sử dụng công cụ IDLEPython để 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ụngmột số công cụ để lập trình như Sublime Text, PHPStorm, Pycharm …
4 Ý nghĩa
Hệ thống nhận dạng khuôn mặt là một ứng dụng máy tính tự động xác địnhhoặc nhận dạng một người nào đó từ một bức hình ảnh kĩ thuật số hoặc mộtkhung hình video từ một nguồn video Một trong những cách để thực hiện điều
Trang 7này là so sánh các đặc điểm khuôn mặt chọn trước từ hình ảnh và một cơ sở dựliệu về khuôn mặt người
Phần 2 : NỘI DUNG
Chương 1 : Nghiên cứu tổng quan1.1 Các phương pháp
1.1.1 Bài toán nhận dạng mặt ngườ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à các thiết
bị được hỗ trợ công nghệ xử lý ảnh 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 được bằng hìnhảnh ngày càng tăng và phổ biến Theo đó, lĩnh vực xử lý ảnh cũng được chútrọng phá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ý ảnhhiện nay chúng ta có thể giải quyết các bài toán nhận dạng chữ viết, nhận dạngdấu vân tay, đặc biệt là nhận dạng khuôn mặt…
Công nghệ nhân diện khuôn mặt (Facial Recognition Technology) hiện làmột công nghệ đang được sử dụng khá phổ biến tại các quốc gia phát triển.Công nghệ này có khả năng xác định hoặc xác nhận một người từ hình ảnh kỹthuật số được lấy mẫu trước đó hoặc từ một khung hình trong một nguồn videokhác Đây là một phương pháp xác minh độc đáo khi thiết bị sẽ dựa vào nhữngđiểm khác nhau tiêu biểu nhất trên khuôn mặt của một người để tiến hành phânbiệt giữa người này với người khác Do vậy đối với các trường hợp như song sinhthì người dùng có thể yên tâm rằng máy vẫn sẽ phát hiện ra.Chính vì đặc điểmnày thì ngoài được ứng dụng trong việc quản lý nhân sự ra thì nó còn là sự lựachọn của rất nhiều đơn vị hoạt động trong lĩnh vực an ninh, bảo mật
Xây dựng một dự án phần mềm ứng dụng nhận dạng khuôn mặt nhằmgiúp việc quản lý, điểm danh và thống kê theo từng yêu cầu cho việc điểm danhnhân viên , ra vào công ty Ngoài ra, giúp sinh viên 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)
1.1.2 Tổng quan kiến trúc của một hệ thống nhận dạng mặt người
- Nghiên cứu tổng quan
- Phân tích và thiết kế hệ thống
2
Trang 8- Triển khai xây dựng.
- Kết luận và hướng phát triển
Hình 1 : Tổng quan về hệ thống phát hiện mặt người trong ảnh
Về cơ bản, từ ảnh gốc ban đầu, hệ thống sẽ chia ảnh thành vô số vùngnhỏ để tính các đặc trưng, sau đấy đưa các đặc trưng Tiếp theo, chương trình
sẽ xác định các vùng khả quan (các ứng viên) có thể là khuôn mặt, cuối cùng cácứng viên này sẽ được đưa vào một bộ phân loại để tiến hành xác định ứng viênnào là mặt người
1.2 Ưu điểm và hạn chế tồn tại của các phương pháp
1 Nhận dạng dựa trên các đặc trưng của các phần tử trên khuôn mặt:
Đây là phương pháp nhận dạng khuôn mặt dựa trên viện xác định các đặctrưng hình học của các chi tiết trên một khuôn mặt (vị trí, diện tích , hình dạngcủa mắt, mũi, miệng, ) và mối quan hệ giữa chúng (khoảng cách của hai mắt,khoảng cách của hai lông mày, )
Trang 9Ưu điểm của phương pháp này là nó gần với cách mà con người sử dụng
để nhận biết khuôn mặt Hơn nữa với việc xác điịnh đặc tính cà mối quan hệ,phương pháp này có thể cho kết quả tốt trong các trường hợp ảnh có nhiềunhiễu như bị nghiêng, bị xoay hoặc ánh sáng thay đổi
Hạn chế của phương pháp này là cài đặt thuật toán phức tạp do việc xácđịnh mối quan hệ giữa các đặc tính sẽ khó phân biệt Mặt khác, với các ảnh kíchthước bé thì các đặc tính sẽ khó phân biệt
2 Nhận dạng dựa trên xét tổng thể khuôn mặt:
Đây là phương pháp xem mỗi ảnh có kích thước RxC là một vector trongkhông gian RxC chiều Ta sẽ xây dựng một không gian mới có chiều nhỏ hơn saochi khi biểu diễn trong không gian có các đặc điểm chính của một khuôn mặtkhông bị mất đi Trong không gian đó, các ảnh cùng một người sẽ được tậptrung lại một nhóm gần nhau và cách xa các nhóm khác
Ưu điểm của phương pháp này là tìm được các đặc tính tiêu biểu của đốitượng cần nhận dạng mà không cần phải xác định các thành phần và mối quan
hệ giữa các thành phần đó Phương pháp sử dụng thuật toán có thể thực hiệntốt với các ảnh có độ phân giải cao, thu gọn ảnh thành một ảnh có kích thướcnhỏ hơn Có thể kết hợp các phương pháp khác như mạng Nơ-ron, SupportVector Machine
Hạn chế của phương pháp này phân loại theo chiều phân bố lớn nhất củavector Tuy nhiên, chiều phân bố lớn nhất không phải lúc nào cũng mang lại hiệuqua tốt nhất cho bài toán nhận dạng và đặc biệt là phương pháp này rất nhạyvới nhiễu
1.3 Công nghệ thực hiện
1.3.1 Giới thiệu về ngôn ngữ lập trình Python
Python là một ngôn ngữ lập trình bậc cao cho các mục đích lập trình đa năng,
do Guido van Rossum tạo ra và lần đầu ra mắt vào năm 1991 Python được thiết
kế với ưu điểm mạnh là dễ đọc, dễ học và dễ nhớ Python là ngôn ngữ có hìnhthức rất sáng sủa, cấu trúc rõ ràng, thuận tiện cho người mới học lập trình Cấutrúc của Python còn cho phép người sử dụng viết mã lệnh với số lần gõ phím tốithiểu Vào tháng 7 năm 2018, Van Rossum đã từ chức Leader trong cộng đồngngôn ngữ Python sau 30 năm lãnh đạo
Python hoàn toàn tạo kiểu động và dùng cơ chế cấp phát bộ nhớ tự động; dovậy nó tương tự như Perl, Ruby, Scheme, Smalltalk, và Tcl Python được pháttriển trong một dự án mã mở, do tổ chức phi lợi nhuận Python SoftwareFoundation quản lý
4
Trang 101.3.2 Giới thiệu về thư viện OpenCV
OpenCV là thư viện mã nguồn mở của intel về thị giác máy tính Nó cung cấp một bộ mã nguồn bao gồm hàng trăm hàm, lớp dựa trên các thuật toán về xử lý ảnh cũng như Computer vision dùng ngôn ngữ C/C++ Open CV thể hiện sự đa dạng của trí tuệ nhân tạo Được ứng dụng nhiều trong các bài toán nhận dạng mặt, dò tìm mặt, phát hiện mặt, lọc Kalman, …
Cấu trúc tổng quan của OpenCV bao gồm 5 phần chính 4 trong 5 phần đóđược chỉ ra trong hình vẽ dưới
Hình 2 : Cấu trúc cơ bản của OpenCV
Phần CV bao gồm các thư viện cơ bản về xử lý ảnh và các giải thuật về thịgiác máy tính ML là bộ thư viện về các thuật toán học máy, bao gồm rất nhiều
bộ phân cụm và phân loại thống kê HighGUI chứa đựng những thủ tục vào ra,các chức năng về lưu trữ cũng như đọc các file ảnh và video Phần thứ 4, Cxcorechứa đựng các cấu trúc dữ liệu cơ bản ( ví dụ như cấu trúc XML, các cây dữ liệu
…) Phần cuối cùng là CvAux, phần này bao gồm các thư viện cho việc phát hiện,theo dõi và nhận dạng đối tượng (khuôn mặt, mắt …)
1.3.3 Môi trường lập trình Pycharm
- Phần mềm PyCharm cung cấp một bộ công cụ hoàn chỉnh cho các nhà pháttriển Python chuyên nghiệp
- PyCharm được xây dựng xung quanh một trình soạn thảo hiểu mã sâu sắc, vàmột trình sửa lỗi cho cái nhìn rõ ràng về hoạt động của mã PyCharm cung cấpkhả năng tích hợp với các công cụ cộng tác như hệ thống kiểm soát phiên bản vàcác tracker Trình biên tập chuyên nghiệp mở rộng các yếu tố cần thiết bằngcách tích hợp liền mạch với các khuôn khổ web, các công cụ JavaScript, ảo hóa
và hỗ trợ containerization
1.3.4 Giời thiệu CSDL DB Browser Sqlite
Trang 11- SQLite là một hệ quản trị cơ sở dữ liệu quan hệ, khác với các hệ quản trị CSDLkhác nó không cần client–server database engine (một dịch vụ, ứng dụng cài đặtđầy đủ thông qua nó kết nối, tương tác với các CSDL), nó được nhúng vào rấtnhiều chương trình khác nhau, từ destop, mobile đến website
Hầu hết ngôn ngữ lập trình có các thư viện hỗ trợ kết nối, truy vấn đến SQLitenhư: PHP C, Java, C#, JavaScript Nó được nhúng vào các trình duyệt, vào các
hệ thống nhúng, hệ điều hành như Android, IOS đều đã nhúng mặc định
- Vì SQLite không cần client–server database engine nên có thể hiểu file CSDL đãtích hợp mọi thứ, sử dụng ngay không cần phải cài đặt thêm thứ gì
Chương 2 Tổng quan về Nhận Dạng khuôn mặt
2.1 Hệ thống xác định khuôn mặt và ứng dụng
2.1.1 Định nghĩa
Hệ thống nhận dạng khuôn mặt là một ứng dụng máy tính tự động xác địnhhoặc nhận dạng một người nào đó từ một bức hình ảnh kỹ thuật số hoặc mộtkhung hình video từ một nguồn video Một trong những cách để thực hiện điềunày là so sánh các đặc điểm khuôn mặt chọn trước từ hình ảnh và một cơ sở dữliệu về khuôn mặt
Hệ thống này thường được sử dụng trong các hệ thống an ninh và có thể được
so sánh với các dạng sinh trắc học khác như các hệ thống nhận dạng vântay hay tròng mắt
2.1.2 Một số phương pháp xác định khuôn mặt người
Hiện nay có hai phương pháp nhận diện khuôn mặt được sử dụng rộng rãi nhấtlà:
- Nhận dạng dựa trên các đặc trưng của các phần tử trên khuôn mặt (Featurebased face recognition)
- Nhận dạng dựa trên xét tổng thể khuôn mặt (Appearance based facerecognition)
Ngoài ra còn có một số phương pháp về loại nhận dạng sử dụng mô hình vềkhuôn mặt:
- Nhận dạng 2D: Elastics Bunch Graph, Active Appearance Model
- Nhận dạng 3D: 3D Morphable Model
2.1.3 Phương pháp áp dụng trong đồ án
Vì kết quả nghiên cứu cuối cùng là một phần mềm áp dụng vào thực tế với yêucầu về độ chính xác cao, khả năng thích ứng linh hoạt, hoạt động ổn định trongmôi trường thực tế và hoạt động với các camera với độ phân giải thấp Nên
6
Trang 12nhóm quyết định chọn phương pháp nhận dạng dựa trên các đặc trưng của cácphần tử trên khuôn mặt (Feature based face recognition).
Chương 3 Phân tích và triển khai xây dựng
3.1 Phân tích thiết kế hệ thống
3.1.1 Phân tích
Nhiệm vụ chính của chương trình là dò tìm khuôn mặt từ một bức ảnh, một filevideo hoặc từ webcam, sau đấy lưu khuôn mặt vào csdl để phục vụ cho các mụcđích khác (sẽ được phát triển sau)
Hình 3 : Biểu đồ ngữ cảnh của hệ thống
Như vậy các chức năng chương trình bao gồm:
Kết nối đến webcam, đọc các file ảnh và video
Phát hiện các nhiều khuôn mặt có trong bức ảnh, video,
webcam
Lưu ảnh khuôn mặt được phát hiện vào cơ sở dữ liệu
Nhận diện khuôn mặt và thay đổi trạng thái điểm danh
3.1.2 Phân tích thiết kê
và huấn
Trang 13a Xử lý đầu vào:
Chương trình nhận đầu vào là file ảnh, video hoặc webcam, tuy nhiên,việc phát hiện khuôn mặt được thực hiện trên các bức ảnh, do đó, với đầu vào làwebcam hay file video, ta phải chuyển thành các ảnh tĩnh và xử lý trên từng ảnhtĩnh Sau khi đã có ảnh đầu vào rồi thì sẽ chuyển ảnh cho giai đoạn xử lý tiếptheo, đó là phát hiện các khuôn mặt có trong ảnh
b Phát hiện khuôn mặt:
Phần này xử lý chính nghiệp vụ của hệ thống Sau khi có ảnh truyền vào,
hệ thống sẽ thực hiện chức năng phát hiện khuôn mặt có trong ảnh
Việc phát hiện khuôn mặt được thực hiện nhanh bằng thuật toánadaboost thông qua hàm cvHaarDetectObjects() của OpenCV Hàm này thựchiện việc phát hiện đối tượng dựa trên các đặc trưng haar-like, cụ thể là nhờ vàomột bộ Cascade được truyền vào cho hàm Bộ Cascade được xây dựng theodạng cây (tree-node) và đã được huấn luyện từ trước
Việc huấn luyện bộ Cascade có thể thực hiện từ những dữ liệu thu thậpđược để phục vụ cho quá trình nhận dạng Ví dụ, muốn nhận dạng một người A,
ta thu thập các ảnh khuôn mặt của người A với nhiều tư thế, góc chụp và điềukiện chụp khác nhau, sau đấy cho bộ nhận dạng học theo thuật toán Cascadetraining Sau khi đã training xong, hệ thông sẽ lưu lại thành một file có đuôi yml,bao gồm nhiều đặc điểm, nhiều tư thế của người dùng, giúp hệ thống có thểnhận diện
c Xử lý đầu ra:
8
Hình 4 : Sơ đồ hệ thống
Trang 14Khuôn mặt sau khi được phát hiện sẽ được tách ra khỏi bức ảnh và lưudưới dạng ảnh bitmap với phần mở rộng là *.jpg
Đối với đầu vào là các file ảnh, dữ liệu đầu ra cũng là file ảnh đấy nhưng
có lưu vị trí khuôn mặt đã được phát hiện trên bức ảnh, đồng thời tách các riêngkhuôn mặt và lưu vào cơ sở dữ liệu
Đối với đầu vào là các file video hoặc webcam Các khuôn mặt sẽ đượctách ra và lưu lại thành các file ảnh riêng rẽ, và được đánh số thứ tự theo tên filevideo Ví dụ như file video test.avi thì ảnh các khuôn mặt phát hiện được sẽđược đánh số theo thứ tự như sau: test.avi_1.jpg, test.avi_2.jpg …
Thiết kế cơ sở dữ liệu:
Lưu trữ cơ sở dữ liệu là một phần quan trọng của ứng dụng Việc xâydựng, tổ chức cơ sở dữ liệu ảnh hướng lớn đến tốc độ của chương trình Do đótôi đã xây dựng và quản cơ sở dữ liệu bằng hệ quản trị cơ sở dữ liệu SQL Lite,đây là hệ quản trị cơ sở dữ liệu mạnh, đáp ứng được nhiều yêu cầu về quản lý
cơ sở dữ liệu của các doanh nghiệp lớn, đặc biệt là các ngân hàng hay kho bạc.Tuy hiện tại, chương trình chỉ dừng lại ở mức phát hiện khuôn mặt trong ảnh,nhưng việc xây dựng một cơ sở dữ liệu tốt sẽ là tiền đề để có thể phát triểnchương trình thành các ứng dụng lớn hơn sau này
Hệ thống cần lưu trữ các dữ liệu: Ảnh khuôn mặt sau khi đã được phát hiện trên webcam
Như vậy các thông tin trong cơ sở dữ liệu bao gồm 2 thực thể sau:
ID: Mã ảnh, kiểu Integer, là khóa chính và có ràng buộc là tự tăng
Name: Tên của sinh viên, kiểu dữ liệu text (255)
Hình 5 : Cơ sở dữ liệu