Chương trình nhận diện mặt người trong ảnhNhận diện khuôn mặt người trong ảnh là một phần của lĩnh vực Trí tuệ nhântạo và Thị giác máy tính, nơi các máy tính được lập trình để tự động nh
Trang 1TRƯỜNG ĐẠI HỌC HẢI PHÒNG
KHOA CÔNG NGHỆ THÔNG TIN
Trang 2LỜI CẢM ƠN
Trước hết, chúng em xin bày tỏ lòng biết ơn sâu sắc tới Th.S Nguyễn Thị
Lanh, người đã trực tiếp hướng dẫn và tận tình giúp đỡ nhóm em hoàn thành báo
cáo bài tập lớn này
Do khả năng và trình độ còn hạn chế, thời gian còn hạn hẹp, kinh nghiệmthực tế của bản thân còn có hạn nên báo cáo của nhóm em không thể tránh khỏinhững sai sót nhất định Vì vậy nhóm em rất mong được sự góp ý kịp thời của cô ,
để báo cáo của nhóm em được hoàn thiện và đầy
“Đồ Họa Xử Lý Ảnh” , khoa công nghệ thông tin đã giúp nhóm chúng em hoànthành bài báo cáo này
Chúng em xin chân thành cảm ơn!
i
Trang 3MTc lTc
LỜI CẢM ƠN i
LỜI NÓI ĐẦU 1
CHƯƠNG I: GIỚI THIỆU HỆ THỐNG 2
1.1 Ch ươ ng trình nh n di n m t ng ậ ệ ặ ườ i trong nh ả 2
1.2 Haar Cascade là gì ? 2
1.2.1 Thu th p D li u Đào T o: ậ ữ ệ ạ 3
1.2.2 T o Haar-like Features: ạ 3
1.2.3 Huấấn Luy n B Phấn L p: ệ ộ ớ 3
1.2.4 T o Cascade Classifier: ạ 3
1.2.5 Nh n Di n và Đánh Giá: ậ ệ 4
1.3 Mô T Khái Quát vềề Ch ả ươ ng Trình Nh n Di n Khuôn M t Trong nh S D ng Thu t Toán " ậ ệ ặ Ả ử ụ ậ Haar Cascade ": 4
1.3.1 Xấy D ng B Phấn L p Haar Cascade: ự ộ ớ 4
1.3.2 Đào T o B Phấn L p: ạ ộ ớ 4
1.3.3 T o B L c (Cascade): ạ ộ ọ 4
1.3.4 Nh n Di n và Đ nh V Khuôn M t: ậ ệ ị ị ặ 4
1.4 Nghi p V Cầền Th c Hi n: ệ ụ ự ệ 5
1.4.1 Thu Th p D Li u: ậ ữ ệ 5
1.4.2 Tiềền X Lý D Li u: ử ữ ệ 5
1.4.3 Trích Xuấất Đ c Tr ng và T o Embedding: ặ ư ạ 5
1.4.4 L u Tr D Li u: ư ữ ữ ệ 5
1.4.5 Qu n Lý và C p Nh t C S D Li u: ả ậ ậ ơ ở ữ ệ 5
1.4.6 Đ m B o An Toàn và Tuấn Th Quy Đ nh: ả ả ủ ị 6
1.5 u Đi m và H n Chềế c a Haar Cascade trong Nh n Di n Khuôn M t: Ư ể ạ ủ ậ ệ ặ 6
CHƯƠNG II : PHÂN TÍCH, TÌM HIỂU THUẬT TOÁN 7
2.1 Mô hình t ng quan c a ch ổ ủ ươ ng trình .7
2.1.1 Chu n B D Li u Huấấn Luy n: ẩ ị ữ ệ ệ 7
2.1.2 Ch n Các Đ c Tr ng Haar: ọ ặ ư 7
2.1.3 Huấấn Luy n B Phấn L p AdaBoost: ệ ộ ớ 7
2.1.4 Xấy D ng Cascade: ự 7
2.1.5 Ki m Tra và Nh n Di n: ể ậ ệ 7
2.1.6 Tôấi u Hóa và Điềều Ch nh: Ư ỉ 8
2.2 Mô t ho t đ ng c b n c a face_detector ả ạ ộ ơ ả ủ 8
ii
Trang 4CHƯƠNG III CÀI ĐẶT HỆ THỐNG 11
3.1.1 Ngôn ng s d ng ữ ử ụ 11
3.1.1 Th vi n s d ng: OpenCV ư ệ ử ụ 13
3.1.2 Kềất qu : ả 13
CHƯƠNG IV: TỔNG QUAN VỀ MOHO 14
1.1 Moho là gì? 14
1.2 Các tính năng c a Moho pro 12 ủ 16
1.3 Ư u đi m và nh ể ượ c đi m ể 20
KẾT LUẬN 21
TÀI LIỆU THAM KHẢO 22
iii
Trang 5LỜI NÓI ĐẦU
Nhận diện khuôn mặt người trong ảnh là một trong những lĩnh vực nghiêncứu đang thu hút sự chú ý rộng rãi trong cộng đồng khoa học máy tính và trí tuệnhân tạo Trong thời đại số hóa ngày nay, việc nhận diện khuôn mặt không chỉ làmột khía cạnh quan trọng của nghiên cứu về trí tuệ nhân tạo mà còn có ứng dụngthực tế mạnh mẽ trong nhiều lĩnh vực khác nhau như an ninh, y tế, giám sát, vàgiao thông vận tải
Đề tài nghiên cứu này tập trung vào việc phát triển và tối ưu hóa các thuậttoán nhận diện khuôn mặt người trong ảnh, với mục tiêu chính là nâng cao độ chínhxác và tốc độ của quá trình nhận diện Chúng tôi đã sử dụng một loạt các phươngpháp tiên tiến và công nghệ mới nhất để đạt được mục tiêu này Trong quá trìnhnghiên cứu, chúng tôi đã đối mặt với những thách thức và vấn đề phức tạp, vàthông qua các phương pháp đánh giá và thử nghiệm, chúng tôi đã xây dựng đượcmột hệ thống nhận diện khuôn mặt đáng tin cậy và hiệu quả
Báo cáo này không chỉ trình bày về quá trình nghiên cứu và kết quả đạt được
mà còn phân tích các ứng dụng tiềm năng của công nghệ nhận diện khuôn mặttrong thế giới thực Ngoài ra, chúng tôi cũng xem xét về các thách thức đạo đức vàpháp lý liên quan đến việc sử dụng công nghệ nhận diện khuôn mặt trong các ứngdụng thực tế
Chúng em hy vọng rằng báo cáo này sẽ cung cấp cái nhìn sâu hơn và chi tiết
về lĩnh vực nhận diện khuôn mặt người, và sẽ góp phần vào sự hiểu biết chung và
sự phát triển của lĩnh vực này Cùng nhau, chúng ta có thể khám phá những tiềmnăng vô tận của công nghệ nhận diện khuôn mặt trong tương lai
1
Trang 6CHƯƠNG I: GIỚI THIỆU HỆ THỐNG 1.1 Chương trình nhận diện mặt người trong ảnh
Nhận diện khuôn mặt người trong ảnh là một phần của lĩnh vực Trí tuệ nhântạo và Thị giác máy tính, nơi các máy tính được lập trình để tự động nhận biết vàxác định các khuôn mặt trong hình ảnh tĩnh Điều này liên quan đến việc sử dụngcác thuật toán và kỹ thuật máy học để nhận diện các đặc điểm đặc trưng của khuônmặt, bao gồm các mắt, mũi, miệng và các đặc trưng hình học khác, từ các hình ảnhsố
Nguyên tắc hoạt động: Chương trình nhận diện khuôn mặt người trong ảnhhoạt động dựa trên một số nguyên tắc và các bước cụ thể để xác định và nhận diệnkhuôn mặt trong hình ảnh
1.2 Haar Cascade là gì ?
Haar Cascade là một phương pháp nhận diện đối tượng trong hình ảnh, đặc biệtđược sử dụng phổ biến trong việc nhận diện khuôn mặt Phương pháp này dựa trênviệc sử dụng các hình chữ U được gọi là "Haar-like features", một loại đặc trưngđược sử dụng trong việc nhận diện các cạnh, đường thẳng và các hình dạng đơngiản trong hình ảnh
2
Trang 7Cách Thức Hoạt Động Của Haar Casade :
1.2.1 Thu thập Dữ liệu Đào Tạo:
Đầu tiên, một lượng lớn các hình ảnh chứa đối tượng cần nhận diện (ví dụ: khuônmặt) và hình ảnh không chứa đối tượng được thu thập
1.2.2 Tạo Haar-like Features:
Các Haar-like features là các hình chữ U đặc biệt được thiết kế để phát hiện cácbiên giới giữa các vùng sáng và tối trong hình ảnh
1.2.3 Huấn Luyện Bộ Phân Lớp:
Bộ phân lớp (classifier) được huấn luyện bằng cách so sánh giá trị của các like features trên hình ảnh đào tạo với giá trị được biết đến của các vùng chứa hoặckhông chứa đối tượng
Haar-1.2.4 Tạo Cascade Classifier:
Cascade classifier là một chuỗi các bộ phân lớp được sắp xếp theo thứ tự Khi mộtvùng của hình ảnh không vượt qua bất kỳ bộ phân lớp nào, việc kiểm tra dừng lại,giúp quá trình nhận diện trở nên nhanh chóng
3
Trang 81.2.5 Nhận Diện và Đánh Giá:
Hình ảnh mới được chạy qua cascade classifier Nếu vùng nào đó vượt qua tất cảcác bộ phân lớp, nó được coi là vùng chứa đối tượng và được nhận diện
1.3 Mô Tả Khái Quát về Chương Trình Nhận Diện Khuôn Mặt Trong Ảnh Sử
DTng Thuật Toán " Haar Cascade ":
Nhận diện khuôn mặt người trong ảnh sử dụng thuật toán Haar Cascade là mộtphương pháp truyền thống được sử dụng để xác định và định vị khuôn mặt tronghình ảnh Dưới đây là một mô tả khái quát về quá trình này:
Cách Hoạt Động của Haar Cascade trong Nhận Diện Khuôn Mặt:
1.3.1 Xây Dựng Bộ Phân Lớp Haar Cascade:
Bắt đầu với việc xây dựng một bộ phân lớp (classifier) dựa trên các Haar-likefeatures Các Haar-like features là các đặc điểm được thiết kế để nhận biết các biêngiới giữa các vùng sáng và tối trong hình ảnh
1.3.2 Đào Tạo Bộ Phân Lớp:
Bộ phân lớp được đào tạo bằng cách sử dụng hàng loạt các ảnh chứa khuôn mặt (dữliệu đào tạo) và ảnh không chứa khuôn mặt (dữ liệu âm) Bộ phân lớp học cáchphân biệt giữa các Haar-like features của khuôn mặt và các đối tượng khác
1.3.3 Tạo Bộ Lọc (Cascade):
Bộ phân lớp Haar Cascade thường được tổ chức thành một chuỗi các bộ phân lớp(cascade) Mỗi bộ phân lớp trong chuỗi được thiết lập với ngưỡng thấp hơn Khimột vùng của hình ảnh không vượt qua một bộ phân lớp nào, nó sẽ được loại bỏngay lập tức, giúp tăng tốc độ nhận diện
1.3.4 Nhận Diện và Định Vị Khuôn Mặt:
Khi một hình ảnh được đưa vào, thuật toán Haar Cascade quét qua hình ảnh vàkiểm tra xem các Haar-like features có trùng khớp với các đặc trưng của khuôn mặt
4
Trang 9hay không Nếu một vùng của hình ảnh vượt qua tất cả các bộ phân lớp trong chuỗiCascade, nó được xác định là khuôn mặt và được đánh dấu hoặc giữ lại cho các xử
1.4.2 Tiền Xử Lý Dữ Liệu:
Chuẩn Hóa Kích Thước: Đảm bảo rằng tất cả các ảnh trong tập dữ liệu cókích thước đồng nhất, điều này giúp thuật toán nhận diện được học từ các kíchthước ảnh thống nhất
Loại Bỏ Nhiễu: Kiểm tra và loại bỏ các ảnh có chất lượng thấp hoặc bị nhiễu
để tránh việc làm ảnh hưởng đến độ chính xác của hệ thống
1.4.3 Trích Xuất Đặc Trưng và Tạo Embedding:
Sử Dụng Mô Hình Nhận Diện Khuôn Mặt: Sử dụng một mô hình nhận diệnkhuôn mặt để xác định vị trí và trích xuất khuôn mặt từ ảnh
Tạo Embedding: Sử dụng một mô hình như FaceNet hoặc OpenFace đểchuyển đổi các khuôn mặt thành các vector embedding Embedding này biểu diễnđặc trưng của khuôn mặt dưới dạng số học
1.4.4 Lưu Trữ Dữ Liệu:
Lưu Trữ Embedding và Thông Tin Liên Quan: Lưu trữ các vector embeddingcủa khuôn mặt cùng với thông tin liên quan như tên, ID hoặc thông tin cá nhânkhác vào cơ sở dữ liệu
5
Trang 101.4.5 Quản Lý và Cập Nhật Cơ Sở Dữ Liệu:
Tổ Chức Cơ Sở Dữ Liệu: Cơ sở dữ liệu nên được tổ chức một cách có hệthống để dễ dàng quản lý và tìm kiếm
Cập Nhật Thường Xuyên: Khi có dữ liệu mới, cần cập nhật cơ sở dữ liệu đểđảm bảo rằng nó luôn chứa các thông tin nhận diện mới nhất
1.4.6 Đảm Bảo An Toàn và Tuân Thủ Quy Định:
Bảo Mật Dữ Liệu: Đảm bảo rằng dữ liệu được lưu trữ an toàn và được bảo
vệ khỏi truy cập trái phép
Tuân Thủ Quy Định: Đảm bảo rằng việc thu thập và lưu trữ dữ liệu tuân thủcác quy định về quyền riêng tư và an toàn dữ liệu
Xây dựng cơ sở dữ liệu nhận diện khuôn mặt đòi hỏi sự cẩn thận và tuân thủcác quy định để đảm bảo rằng thông tin cá nhân của người dùng được bảo vệ và sửdụng đúng cách
1.5 Ưu Điểm và Hạn Chế của Haar Cascade trong Nhận Diện Khuôn Mặt:
Trang 11Độ Chính Xác Thấp Trong Các Tình Huống Phức Tạp: Độ chính xác giảm điđáng kể trong các tình huống với ánh sáng yếu hoặc góc nhìn không lý tưởng.Khả Năng Nhận Diện Sai: Có thể dẫn đến việc nhận diện các vùng không phải làkhuôn mặt hoặc không nhận diện được các khuôn mặt có các đặc điểm đa dạng.
CHƯƠNG II : PHÂN TÍCH, TÌM HIỂU THUẬT TOÁN
2.1 Mô hình tổng quan của chương trình.
Chương trình Haar Cascade dựa trên một mô hình tổng quan gồm nhiều bước đểnhận diện đối tượng trong ảnh hoặc video Dưới đây là mô hình tổng quan củathuật toán Haar Cascade:
2.1.1 Chuẩn Bị Dữ Liệu Huấn Luyện:
Tạo bộ dữ liệu lớn chứa hình ảnh có và không có đối tượng quan tâm
Hình ảnh có thể bao gồm nhiều biến động như kích thước, góc độ, và điều kiện ánhsáng
Trang 122.1.3 Huấn Luyện Bộ Phân Lớp AdaBoost:
Áp dụng thuật toán AdaBoost để tập trung vào việc huấn luyện nhiều bộ phân lớpyếu
Mỗi bộ phận yếu được đánh giá dựa trên khả năng phân loại đối tượng và khôngđối tượng
2.1.4 Xây Dựng Cascade:
Kết hợp các bộ phận AdaBoost thành một Cascade
Mỗi bộ phận của Cascade có trách nhiệm kiểm tra một vùng cụ thể của ảnh và loại
bỏ các vùng không chứa đối tượng nhanh chóng
2.1.5 Kiểm Tra và Nhận Diện:
Áp dụng Cascade lần lượt trên ảnh hoặc video
Mỗi bộ phận của Cascade kiểm tra xem khu vực đang xem xét có chứa đối tượngkhông
Khi một bộ phận không nhận diện được đối tượng, nó loại bỏ khu vực đó vàchuyển sang bộ phận tiếp theo
2.1.6 Tối Ưu Hóa và Điều Chỉnh:
Tối ưu hóa các ngưỡng quyết định để cân bằng giữa độ nhạy và chính xác.Điều chỉnh các tham số để đảm bảo rằng Cascade hoạt động hiệu quả trên nhiềuđiều kiện và loại ảnh
2.2 Mô tả hoạt động cơ bản của Haar Cascade
Bài báo của tác giả Paul Viola và Michael Jones đã trình bày một phươngpháp mới và nhanh hơn để xử lý hình ảnh và phát hiện khuôn mặt bằng cách sửdụng các đặc điểm hình chữ nhật như hình dưới đây Các đặc điểm hình chữ nhật
8
Trang 13tương tự như nhân được sử dụng để phát hiện các đặc điểm khác nhau của khuônmặt như mắt và các nốt như trong hình minh họa.
Các tính năng hình chữ nhật được chạy lần lượt trên hình ảnh và tổng số pixel nằmtrong phần màu trắng được trừ cho tổng số pixel nằm trong phần màu đen.Trong đó
a) Là các bộ lọc bắt các cạnh trong ảnh
b) Bắt các đường thẳng trong ảnh
c) Về đặc trưng 4 hình vuông
Trong hình minh họa bên dưới, đặc điểm hình chữ nhật đầu tiên đang tính toán cho
sự khác biệt về cường độ giữa vùng mắt và vùng má trên khuôn mặt Và đặc điểmhình chữ nhật thứ hai là đo sự chênh lệch về cường độ giữa hai vùng mắt và sốngmũi Bộ lọc Haar chỉ có thể nhìn cụ thể vào một vùng trong cửa sổ để nhận diện
9
Trang 14Vì vậy, sử dụng các đặc điểm hình chữ nhật này trên một hình ảnh, chúng ta có thểtạo ra hàng nghìn điểm đặc trưng cho hình ảnh Tuy nhiên, việc tính toán tổng sốpixel trong các vùng trắng và đen trong toàn bộ ảnh có thể là một hoạt động tốnkém, đặc biệt là đối với các ảnh lớn.
Các tác giả cũng đề xuất một phương pháp được gọi là ảnh tích phân có thể đạtđược tính toán tương tự bằng cách thực hiện các phép toán chỉ trên bốn điểm ảnh
Có thể sử dụng hàng nghìn hình ảnh được gắn nhãn để chuyển đổi chúng thành bản
đồ tính năng tầng HAAR và đào tạo nó bằng cách sử dụng mô hình học máy để tạo
bộ phân loại nhận diện khuôn mặt
10
Trang 15 Bước 1: Hình ảnh (đã được gửi đến bộ phân loại) được chia thành các phầnnhỏ (hoặc các cửa sổ con như trong hình minh họa).
Bước 2: Chúng tôi đặt N không có bộ dò theo cách xếp tầng trong đó mỗi bộphát hiện sự kết hợp của các loại đặc trưng khác nhau từ các hình ảnh (ví dụ:đường thẳng, cạnh, hình tròn, hình vuông) được truyền qua Giả sử khi việctrích xuất đối tượng địa lý được thực hiện, mỗi phần phụ được gán một giátrị tin cậy
Bước 3: Hình ảnh (hoặc hình ảnh phụ) có độ tin cậy cao nhất được phát hiệndưới dạng khuôn mặt và được gửi đến bộ tích lũy trong khi phần còn lại bị từchối Do đó, Cascade tìm nạp khung hình / hình ảnh tiếp theo nếu còn lại vàbắt đầu lại quá trình
CHƯƠNG III CÀI ĐẶT HỆ THỐNG 3.1 Ngôn ngữ, nền tảng, thư viện sử dTng
3.1.1 Ngôn ngữ sử dTng.
11
Trang 16Python là ngôn ngữ lập trình hướng đối tượng bậc cao, dùng để phát triển website
và nhiều ứng dụng khác nhau Python được tạo ra bởi Guido van Rossum và đượcphát triển trong một dự án mã mở (open source) Với cú pháp cực kì đơn giản vàthanh lịch, Python là lựa chọn hoàn hảo cho những ai lần đầu tiên học lập trình.Tuy nhiên, đây cũng là ngôn ngữ nổi tiếng về sự chặt chẽ, nhanh, mạnh, và có mặt
ở mọi hệ điều hành
Được sử dụng trong lập trình từ những game đơn giản nhất, cho đến những thuậttoán tìm kiếm phức tạp nhất, Python không hổ danh là ngôn ngữ dành cho cả ngườimới lẫn hacker
· Đặc trưng của ngôn ngữ python
Ngôn ngữ lập trình đơn giản, dễ học
So với các ngôn ngữ khác như Java, C++, C#…thì ngôn ngữ lập trình Python đơngiản và dễ học hơn nhiều, chính vì thế mà các lập trình viên mới “ nhập môn” đều
ưa thích
Bởi lẽ sử dụng ngôn ngữ Python sẽ rút ngắn thời gian nghiên cứu và tìm hiểu vềnhững giải pháp hơn là cú pháp khi phát triển phần mềm bằng ngôn ngữ này, vừatiết kiệm thời gian nhưng lại đem lại giá trị về thực tiễn lẫn kinh tế
Miễn phí mã nguồn mở
Có một số ngôn ngữ lập trình bạn buộc lòng phải chi trả một mức phí nhất định để
có thể học tập và cài đặt, thì Python lại hoàn toàn miễn phí
Đặc biệt hơn nữa bạn có thể sử dụng ngôn ngữ Python cho mục đích thương mạihóa của mình Bên cạnh đó, vì là ngôn ngữ mã nguồn mở nên bạn hoàn toàn có thểthay mã nguồn của nó
12
Trang 17Ngôn ngữ thông dịch cấp cao
Thay vì phải mất công quản lý bộ nhớ, dọn dẹp những dữ liệu không cần thiết đểgiảm tải bộ nhớ thì Python sẽ tự động chuyển đổi sang ngôn ngữ mà máy tính cóthể hiểu được
Đây cũng là tính năng nổi trội mà ngoài Python ra thì các ngôn ngữ lập trình khácnhư C hoặc C++ không làm được
Thư viện tiêu chuẩn lớn
Nhằm giúp cho việc lập trình của các lập trình viên trở nên đơn giản và dễ dànghơn, Python đã tạo cho mình một lượng thư viện tiêu chuẩn cực lớn nhằm giảiquyết nhanh những tác vụ phổ biến
Thư viện tiêu chuẩn này đã được kiểm tra kỹ lưỡng và được sử dụng bởi hàng trămngười Cho nên, bạn hoàn toàn có thể yên tâm rằng nó sẽ không gây ảnh hưởng đếnphần code cũng như ứng dụng của bạn
13