Trang 1 TRƯỜNG ĐẠI HỌC ĐIỆN LỰC Trang 2 TRƯỜNG ĐẠI HỌC ĐIỆN LỰC BÙI TIẾN CHIẾN NHẬN DẠNG KHUÔN MẶT SỬ DỤNG MẠNG NƠRON TRONG NGÔI NHÀ THÔNG MINH Ngành : Kỹ thuật Điều khiển & Tự động hó
BỐ CỤC CỦA LUẬN VĂN
Luận văn gồm 04 chương, qua mỗi chương đều có kết luận riêng của từng chương Sau khi chọn mô hình được chọn và tính toán, sử dụng phương pháp ma trận nhầm lẫn để đánh giá mô hình, xét kết quả của mô hình sử dụng mạng BAM nhận dạng mặt người và đề xuất hướng nghiên cứu, phát triển tiếp theo của đề tài Cụ thể, về cơ bản của mỗi chương được tóm tắt như sau:
Ch ươ ng 1: T ổ ng quan v ề nh ậ n d ạ ng m ặ t ng ườ i
1.1 Lịch sử nghiên cứu về nhận dạng
1.2 Tình hình nghiên cứu trong và ngoài nước về nhận dạng
1.3 Tổng quan về nhận dạng mặt người
Ch ươ ng 2: C ơ s ở lý thuy ế t v ề nh ậ n d ạ ng m ặ t ng ườ i
2.2 Mạng nơron tích chập CNN
2.3 Mạng nơron Hopfield rời rạc
2.4 Mạng nơron có bộ nhớ liên kết hai chiều BAM
2.5 Đánh giá bằng phương pháp ma trận nhầm lẫn
2.6 Lựa chọn phương án để giải quyết bài toán
Ch ươ ng 3: Th ử nghi ệ m m ạ ng n ơ ron để nh ậ n d ạ ng m ặ t ng ườ i
3.1 Thu thập dữ liệu cho mạng nơron
3.2 Thiết kế mạng BAM để nhận dạng mặt người
3.3 Thử nghiệm mạng BAM để nhận dạng mặt người
3.4 Thử nghiệm khả năng chịu lỗi của mạng BAM
3.5 Đánh giá khả năng nhận mẫu của mạng BAM
Ch ươ ng 4: Mô ph ỏ ng và s ử d ụ ng m ạ ng BAM cho ngôi nhà
4.1 Mô phỏng nhận dạng khuôn mặt người bằng phần mềm Python
4.2 Xây dựng mô hình mở/đóng cửa cho ngôi nhà thông minh
TỔNG QUAN VỀ NHẬN DẠNG MẶT NGƯỜI
Kết luận chương 1
Ch ươ ng 2: C ơ s ở lý thuy ế t v ề nh ậ n d ạ ng m ặ t ng ườ i
2.2 Mạng nơron tích chập CNN
2.3 Mạng nơron Hopfield rời rạc
2.4 Mạng nơron có bộ nhớ liên kết hai chiều BAM
2.5 Đánh giá bằng phương pháp ma trận nhầm lẫn
2.6 Lựa chọn phương án để giải quyết bài toán
Ch ươ ng 3: Th ử nghi ệ m m ạ ng n ơ ron để nh ậ n d ạ ng m ặ t ng ườ i
3.1 Thu thập dữ liệu cho mạng nơron
3.2 Thiết kế mạng BAM để nhận dạng mặt người
3.3 Thử nghiệm mạng BAM để nhận dạng mặt người
3.4 Thử nghiệm khả năng chịu lỗi của mạng BAM
3.5 Đánh giá khả năng nhận mẫu của mạng BAM
Ch ươ ng 4: Mô ph ỏ ng và s ử d ụ ng m ạ ng BAM cho ngôi nhà
4.1 Mô phỏng nhận dạng khuôn mặt người bằng phần mềm Python
4.2 Xây dựng mô hình mở/đóng cửa cho ngôi nhà thông minh
TỔNG QUAN VỀ NHẬN DẠNG MẶT NGƯỜI 1.1 Lịch sử nghiên cứu về nhận dạng
Trong năm 1964 và 1965, Bledsoe, cùng với Helen Chan và Charles Bisson, bắt đầu ý tưởng sử dụng máy tính để nhận ra khuôn mặt của con người Với một cơ sở dữ liệu lớn các hình ảnh và một bức ảnh, vấn đề là phải lựa chọn từ cơ sở dữ liệu là một tập hợp nhỏ các hồ sơ hình ảnh như vậy có chứa các hình ảnh ăn khớp với bức ảnh đưa ra
Năm 1966, công việc này được tiếp tục tại Viện nghiên cứu Stanford, chủ yếu bởi Peter Hart Trong các thí nghiệm thực hiện trên một cơ sở dữ liệu hơn 2.000 bức ảnh, máy tính luôn vượt trội so với con người khi thể hiện cùng một nhiệm vụ nhận dạng
Năm 1997, hệ thống được phát triển bởi Christophvonder Malsburg và các sinh viên sau đại học của trường Đại học Bochum ở Đức và Đại học Nam California tại Mỹ, Viện Công nghệ Massachusetts và Đại học Maryland Hệ thống Bochum được phát triển thông qua tài trợ bởi Phòng Thí Nghiệm Nghiên cứu Quân đội Hoa Kỳ Phần mềm này được bán với cái tên ZN-Face và sử dụng trong các nhà điều hành sân bay và các địa điểm đông đúc khác Phần mềm này "đủ mạnh mẽ để nhận dạng được gương mặt từ các góc nhìn ít lý tưởng hơn Nó cũng thường xuyên có thể nhận dạng được gương mặt mặc dù có những trở ngại như ria mép, râu, thay đổi kiểu tóc và thậm chí đeo kính râm"
Năm 2006, các thuật toán nhận dạng khuôn mặt mới nhất đã được đánh giá trong Face Recognition Grand Challenge (FRGC) Hình ảnh gương mặt, hình ảnh scan gương mặt 3D và ảnh iris độ phân giải cao, được sử dụng trong các bài kiểm tra Kết quả cho thấy rằng các thuật toán mới là chính xác hơn 10 lần so với các thuật toán nhận dạng khuôn mặt của năm
2002 và chính xác hơn 100 lần so với các thuật toán của năm 1995 Một số thuật toán đã có thể nhận dạng tốt hơn người tham gia trong việc nhận diện khuôn mặt và duy nhất có thể xác định từng người trong các cặp song sinh giống hệt nhau
Năm 2007, công ty Identix từ Minnesota, đã phát triển một phần mềm là FaceIt FaceIt có thể nhận ra khuôn mặt của một ai đó trong đám đông và so sánh nó với cơ sở dữ liệu trên toàn thế giới để nhận dạng và đặt tên cho một khuôn mặt Phần mềm được viết để phát hiện nhiều đặc điểm trên khuôn mặt người
1.2 Tình hình nghiên cứu trong và ngoài nước về nhận dạng
Những năm gần đây, công nghệ sinh trắc học đã vượt qua các rào cản lớn như chi phí, cách thức vận hành, khả năng truy cập, và cùng với độ chính xác cao trong giải pháp xác thực Cũng như bất kỳ công nghệ bảo mật nào, nhận dạng sinh trắc học cũng không phải là giải pháp hoàn hảo Nhưng chắc chắn rằng, nhận dạng sinh trắc học không còn là hình ảnh của tương lai mà đang hiện hữu ngày càng rõ nét trong cuộc sống hiện tại
Mỗi đặc trưng sinh trắc dùng nhận dạng có ưu - nhược điểm và độ chính xác nhất định Tùy từng hoàn cảnh và yêu cầu thực tiễn mà lựa chọn phương pháp phù hợp nhưng phải đảm bảo các yếu tố:
- Tính phổ biến: Mọi người đều có đặc trưng sinh trắc này;
- Tính riêng biệt: Các cá thể khác nhau thì đặc trưng này khác nhau;
- Tính ổn định: Đặc trưng sinh trắc này không thay đổi theo thời gian;
- Tính thu thập: Đặc trưng này có thể đo và lượng hóa được a) Nhận dạng mống mắt b) Nhận dạng mặt người c) Nhận dạng vân tay d) Nhận dạng tĩnh mạch lòng bàn tay Hình 1.1: Một số ví dụ ứng dụng nhận dạng sinh trắc học
Ngoài ra người ta còn xét đến các yếu tố như:
- Hiệu năng: Khả năng nhận dạng chính xác, tốc độ nhận dạng; các tài nguyên cần thiết để đạt được tốc độ và độ chính xác mong muốn; các nhân tố môi trường hoạt động ảnh hưởng đến tốc độ và độ chính xác trong nhận dạng
- Tính chấp nhận: Mọi người vui lòng chấp nhận phương pháp sử dụng các đặc trưng sinh trắc trong đời sống hàng ngày của họ
- Khả năng phá hoại: Là mức độ khó/dễ đánh lừa hệ thống nhận dạng
Một số phương pháp nhận dạng sinh trắc học đang được sử dụng (Hình 1.1) là những phương pháp có độ tin cậy cao Để nhận dạng tăng khả năng chính xác thì hệ thống nhận dạng phải kết hợp nhiều đặc trưng sinh trắc với nhau Ở Việt Nam, nhận dạng vẫn là lĩnh vực khá mới Dù có nhiều nghiên cứu về nhận dạng đã đạt được những thành tựu nhất định, nhưng nhìn chung vẫn chưa đạt được kết quả cần thiết để có thể tạo ra các sản phẩm mang tính ứng dụng cao Có thể kể đến một số công trình nghiên cứu:
- Công trình nghiên cứu của Nguyễn Quang Hoan, Vũ Thị Thềm, Bùi Đình Quân,
"Khả năng nhớ mẫu của mạng nơ ron hồi quy" Tạp chí Khoa học và Công nghệ Đại học
Sư phạm Hưng Yên, 2017, về khả năng nhớ và nhận dạng đối tượng sử dụng mạng hồi quy liên kết hai chiều Đề tài và bài báo chưa có ứng dụng phần cứng [5]
- Công trình nghiên cứu của Lê Hoài Bắc cùng một số cộng sự đã xây dựng thành công “Hệ thống hỗ trợ quyết định trên mạng nơron và logic mờ” Tích hợp trong hệ hỗ trợ ra quyết định, xây dựng một số hệ thống hỗ trợ quyết định phục vụ trong lĩnh vực khoa học, giáo dục, kinh tế, môi trường, quốc phòng, an ninh…
- Công trình nghiên cứu của Nguyễn Sĩ Dũng, Lê Hoài Quốc “Một số thuật toán về huấn luyện Neural Network trên cơ sở phương pháp Conjugate Gradient”, Đại học Công nghiệp Thành phố Hồ Chí Minh và Đại học Bách khoa Thành phố Hồ Chí Minh
Trên thế giới có rất nhiều hệ thống nhận dạng đã và đang được ứng dụng rất hiệu quả như: Via Voice của IBM, Speech Recognition Engine của Microsoft, Hidden Markov Model Toolkit của đại học Cambridge… Ngoài ra, một số hệ thống nhận dạng khác cũng khá phát triển và đều hướng tới người dùng trong tất cả các lĩnh vực như: Khoa học hình sự, Kinh doanh, Quản lý, Multimedia…
CƠ SỞ LÝ THUYẾT VỀ NHẬN DẠNG MẶT NGƯỜI
Đánh giá bằng phương pháp ma trận nhầm lẫn
2.6 Lựa chọn phương án để giải quyết bài toán
Ch ươ ng 3: Th ử nghi ệ m m ạ ng n ơ ron để nh ậ n d ạ ng m ặ t ng ườ i
3.1 Thu thập dữ liệu cho mạng nơron
3.2 Thiết kế mạng BAM để nhận dạng mặt người
3.3 Thử nghiệm mạng BAM để nhận dạng mặt người
3.4 Thử nghiệm khả năng chịu lỗi của mạng BAM
3.5 Đánh giá khả năng nhận mẫu của mạng BAM
Ch ươ ng 4: Mô ph ỏ ng và s ử d ụ ng m ạ ng BAM cho ngôi nhà
4.1 Mô phỏng nhận dạng khuôn mặt người bằng phần mềm Python
4.2 Xây dựng mô hình mở/đóng cửa cho ngôi nhà thông minh
TỔNG QUAN VỀ NHẬN DẠNG MẶT NGƯỜI 1.1 Lịch sử nghiên cứu về nhận dạng
Trong năm 1964 và 1965, Bledsoe, cùng với Helen Chan và Charles Bisson, bắt đầu ý tưởng sử dụng máy tính để nhận ra khuôn mặt của con người Với một cơ sở dữ liệu lớn các hình ảnh và một bức ảnh, vấn đề là phải lựa chọn từ cơ sở dữ liệu là một tập hợp nhỏ các hồ sơ hình ảnh như vậy có chứa các hình ảnh ăn khớp với bức ảnh đưa ra
Năm 1966, công việc này được tiếp tục tại Viện nghiên cứu Stanford, chủ yếu bởi Peter Hart Trong các thí nghiệm thực hiện trên một cơ sở dữ liệu hơn 2.000 bức ảnh, máy tính luôn vượt trội so với con người khi thể hiện cùng một nhiệm vụ nhận dạng
Năm 1997, hệ thống được phát triển bởi Christophvonder Malsburg và các sinh viên sau đại học của trường Đại học Bochum ở Đức và Đại học Nam California tại Mỹ, Viện Công nghệ Massachusetts và Đại học Maryland Hệ thống Bochum được phát triển thông qua tài trợ bởi Phòng Thí Nghiệm Nghiên cứu Quân đội Hoa Kỳ Phần mềm này được bán với cái tên ZN-Face và sử dụng trong các nhà điều hành sân bay và các địa điểm đông đúc khác Phần mềm này "đủ mạnh mẽ để nhận dạng được gương mặt từ các góc nhìn ít lý tưởng hơn Nó cũng thường xuyên có thể nhận dạng được gương mặt mặc dù có những trở ngại như ria mép, râu, thay đổi kiểu tóc và thậm chí đeo kính râm"
Năm 2006, các thuật toán nhận dạng khuôn mặt mới nhất đã được đánh giá trong Face Recognition Grand Challenge (FRGC) Hình ảnh gương mặt, hình ảnh scan gương mặt 3D và ảnh iris độ phân giải cao, được sử dụng trong các bài kiểm tra Kết quả cho thấy rằng các thuật toán mới là chính xác hơn 10 lần so với các thuật toán nhận dạng khuôn mặt của năm
2002 và chính xác hơn 100 lần so với các thuật toán của năm 1995 Một số thuật toán đã có thể nhận dạng tốt hơn người tham gia trong việc nhận diện khuôn mặt và duy nhất có thể xác định từng người trong các cặp song sinh giống hệt nhau
Năm 2007, công ty Identix từ Minnesota, đã phát triển một phần mềm là FaceIt FaceIt có thể nhận ra khuôn mặt của một ai đó trong đám đông và so sánh nó với cơ sở dữ liệu trên toàn thế giới để nhận dạng và đặt tên cho một khuôn mặt Phần mềm được viết để phát hiện nhiều đặc điểm trên khuôn mặt người
1.2 Tình hình nghiên cứu trong và ngoài nước về nhận dạng
Những năm gần đây, công nghệ sinh trắc học đã vượt qua các rào cản lớn như chi phí, cách thức vận hành, khả năng truy cập, và cùng với độ chính xác cao trong giải pháp xác thực Cũng như bất kỳ công nghệ bảo mật nào, nhận dạng sinh trắc học cũng không phải là giải pháp hoàn hảo Nhưng chắc chắn rằng, nhận dạng sinh trắc học không còn là hình ảnh của tương lai mà đang hiện hữu ngày càng rõ nét trong cuộc sống hiện tại
Mỗi đặc trưng sinh trắc dùng nhận dạng có ưu - nhược điểm và độ chính xác nhất định Tùy từng hoàn cảnh và yêu cầu thực tiễn mà lựa chọn phương pháp phù hợp nhưng phải đảm bảo các yếu tố:
- Tính phổ biến: Mọi người đều có đặc trưng sinh trắc này;
- Tính riêng biệt: Các cá thể khác nhau thì đặc trưng này khác nhau;
- Tính ổn định: Đặc trưng sinh trắc này không thay đổi theo thời gian;
- Tính thu thập: Đặc trưng này có thể đo và lượng hóa được a) Nhận dạng mống mắt b) Nhận dạng mặt người c) Nhận dạng vân tay d) Nhận dạng tĩnh mạch lòng bàn tay Hình 1.1: Một số ví dụ ứng dụng nhận dạng sinh trắc học
Ngoài ra người ta còn xét đến các yếu tố như:
- Hiệu năng: Khả năng nhận dạng chính xác, tốc độ nhận dạng; các tài nguyên cần thiết để đạt được tốc độ và độ chính xác mong muốn; các nhân tố môi trường hoạt động ảnh hưởng đến tốc độ và độ chính xác trong nhận dạng
- Tính chấp nhận: Mọi người vui lòng chấp nhận phương pháp sử dụng các đặc trưng sinh trắc trong đời sống hàng ngày của họ
- Khả năng phá hoại: Là mức độ khó/dễ đánh lừa hệ thống nhận dạng
Một số phương pháp nhận dạng sinh trắc học đang được sử dụng (Hình 1.1) là những phương pháp có độ tin cậy cao Để nhận dạng tăng khả năng chính xác thì hệ thống nhận dạng phải kết hợp nhiều đặc trưng sinh trắc với nhau Ở Việt Nam, nhận dạng vẫn là lĩnh vực khá mới Dù có nhiều nghiên cứu về nhận dạng đã đạt được những thành tựu nhất định, nhưng nhìn chung vẫn chưa đạt được kết quả cần thiết để có thể tạo ra các sản phẩm mang tính ứng dụng cao Có thể kể đến một số công trình nghiên cứu:
- Công trình nghiên cứu của Nguyễn Quang Hoan, Vũ Thị Thềm, Bùi Đình Quân,
"Khả năng nhớ mẫu của mạng nơ ron hồi quy" Tạp chí Khoa học và Công nghệ Đại học
Sư phạm Hưng Yên, 2017, về khả năng nhớ và nhận dạng đối tượng sử dụng mạng hồi quy liên kết hai chiều Đề tài và bài báo chưa có ứng dụng phần cứng [5]
- Công trình nghiên cứu của Lê Hoài Bắc cùng một số cộng sự đã xây dựng thành công “Hệ thống hỗ trợ quyết định trên mạng nơron và logic mờ” Tích hợp trong hệ hỗ trợ ra quyết định, xây dựng một số hệ thống hỗ trợ quyết định phục vụ trong lĩnh vực khoa học, giáo dục, kinh tế, môi trường, quốc phòng, an ninh…
- Công trình nghiên cứu của Nguyễn Sĩ Dũng, Lê Hoài Quốc “Một số thuật toán về huấn luyện Neural Network trên cơ sở phương pháp Conjugate Gradient”, Đại học Công nghiệp Thành phố Hồ Chí Minh và Đại học Bách khoa Thành phố Hồ Chí Minh
Trên thế giới có rất nhiều hệ thống nhận dạng đã và đang được ứng dụng rất hiệu quả như: Via Voice của IBM, Speech Recognition Engine của Microsoft, Hidden Markov Model Toolkit của đại học Cambridge… Ngoài ra, một số hệ thống nhận dạng khác cũng khá phát triển và đều hướng tới người dùng trong tất cả các lĩnh vực như: Khoa học hình sự, Kinh doanh, Quản lý, Multimedia…
Kết luận chương 2
Ch ươ ng 3: Th ử nghi ệ m m ạ ng n ơ ron để nh ậ n d ạ ng m ặ t ng ườ i
3.1 Thu thập dữ liệu cho mạng nơron
3.2 Thiết kế mạng BAM để nhận dạng mặt người
3.3 Thử nghiệm mạng BAM để nhận dạng mặt người
3.4 Thử nghiệm khả năng chịu lỗi của mạng BAM
3.5 Đánh giá khả năng nhận mẫu của mạng BAM
Ch ươ ng 4: Mô ph ỏ ng và s ử d ụ ng m ạ ng BAM cho ngôi nhà
4.1 Mô phỏng nhận dạng khuôn mặt người bằng phần mềm Python
4.2 Xây dựng mô hình mở/đóng cửa cho ngôi nhà thông minh
TỔNG QUAN VỀ NHẬN DẠNG MẶT NGƯỜI 1.1 Lịch sử nghiên cứu về nhận dạng
Trong năm 1964 và 1965, Bledsoe, cùng với Helen Chan và Charles Bisson, bắt đầu ý tưởng sử dụng máy tính để nhận ra khuôn mặt của con người Với một cơ sở dữ liệu lớn các hình ảnh và một bức ảnh, vấn đề là phải lựa chọn từ cơ sở dữ liệu là một tập hợp nhỏ các hồ sơ hình ảnh như vậy có chứa các hình ảnh ăn khớp với bức ảnh đưa ra
Năm 1966, công việc này được tiếp tục tại Viện nghiên cứu Stanford, chủ yếu bởi Peter Hart Trong các thí nghiệm thực hiện trên một cơ sở dữ liệu hơn 2.000 bức ảnh, máy tính luôn vượt trội so với con người khi thể hiện cùng một nhiệm vụ nhận dạng
Năm 1997, hệ thống được phát triển bởi Christophvonder Malsburg và các sinh viên sau đại học của trường Đại học Bochum ở Đức và Đại học Nam California tại Mỹ, Viện Công nghệ Massachusetts và Đại học Maryland Hệ thống Bochum được phát triển thông qua tài trợ bởi Phòng Thí Nghiệm Nghiên cứu Quân đội Hoa Kỳ Phần mềm này được bán với cái tên ZN-Face và sử dụng trong các nhà điều hành sân bay và các địa điểm đông đúc khác Phần mềm này "đủ mạnh mẽ để nhận dạng được gương mặt từ các góc nhìn ít lý tưởng hơn Nó cũng thường xuyên có thể nhận dạng được gương mặt mặc dù có những trở ngại như ria mép, râu, thay đổi kiểu tóc và thậm chí đeo kính râm"
Năm 2006, các thuật toán nhận dạng khuôn mặt mới nhất đã được đánh giá trong Face Recognition Grand Challenge (FRGC) Hình ảnh gương mặt, hình ảnh scan gương mặt 3D và ảnh iris độ phân giải cao, được sử dụng trong các bài kiểm tra Kết quả cho thấy rằng các thuật toán mới là chính xác hơn 10 lần so với các thuật toán nhận dạng khuôn mặt của năm
2002 và chính xác hơn 100 lần so với các thuật toán của năm 1995 Một số thuật toán đã có thể nhận dạng tốt hơn người tham gia trong việc nhận diện khuôn mặt và duy nhất có thể xác định từng người trong các cặp song sinh giống hệt nhau
Năm 2007, công ty Identix từ Minnesota, đã phát triển một phần mềm là FaceIt FaceIt có thể nhận ra khuôn mặt của một ai đó trong đám đông và so sánh nó với cơ sở dữ liệu trên toàn thế giới để nhận dạng và đặt tên cho một khuôn mặt Phần mềm được viết để phát hiện nhiều đặc điểm trên khuôn mặt người
1.2 Tình hình nghiên cứu trong và ngoài nước về nhận dạng
Những năm gần đây, công nghệ sinh trắc học đã vượt qua các rào cản lớn như chi phí, cách thức vận hành, khả năng truy cập, và cùng với độ chính xác cao trong giải pháp xác thực Cũng như bất kỳ công nghệ bảo mật nào, nhận dạng sinh trắc học cũng không phải là giải pháp hoàn hảo Nhưng chắc chắn rằng, nhận dạng sinh trắc học không còn là hình ảnh của tương lai mà đang hiện hữu ngày càng rõ nét trong cuộc sống hiện tại
Mỗi đặc trưng sinh trắc dùng nhận dạng có ưu - nhược điểm và độ chính xác nhất định Tùy từng hoàn cảnh và yêu cầu thực tiễn mà lựa chọn phương pháp phù hợp nhưng phải đảm bảo các yếu tố:
- Tính phổ biến: Mọi người đều có đặc trưng sinh trắc này;
- Tính riêng biệt: Các cá thể khác nhau thì đặc trưng này khác nhau;
- Tính ổn định: Đặc trưng sinh trắc này không thay đổi theo thời gian;
- Tính thu thập: Đặc trưng này có thể đo và lượng hóa được a) Nhận dạng mống mắt b) Nhận dạng mặt người c) Nhận dạng vân tay d) Nhận dạng tĩnh mạch lòng bàn tay Hình 1.1: Một số ví dụ ứng dụng nhận dạng sinh trắc học
Ngoài ra người ta còn xét đến các yếu tố như:
- Hiệu năng: Khả năng nhận dạng chính xác, tốc độ nhận dạng; các tài nguyên cần thiết để đạt được tốc độ và độ chính xác mong muốn; các nhân tố môi trường hoạt động ảnh hưởng đến tốc độ và độ chính xác trong nhận dạng
- Tính chấp nhận: Mọi người vui lòng chấp nhận phương pháp sử dụng các đặc trưng sinh trắc trong đời sống hàng ngày của họ
- Khả năng phá hoại: Là mức độ khó/dễ đánh lừa hệ thống nhận dạng
Một số phương pháp nhận dạng sinh trắc học đang được sử dụng (Hình 1.1) là những phương pháp có độ tin cậy cao Để nhận dạng tăng khả năng chính xác thì hệ thống nhận dạng phải kết hợp nhiều đặc trưng sinh trắc với nhau Ở Việt Nam, nhận dạng vẫn là lĩnh vực khá mới Dù có nhiều nghiên cứu về nhận dạng đã đạt được những thành tựu nhất định, nhưng nhìn chung vẫn chưa đạt được kết quả cần thiết để có thể tạo ra các sản phẩm mang tính ứng dụng cao Có thể kể đến một số công trình nghiên cứu:
- Công trình nghiên cứu của Nguyễn Quang Hoan, Vũ Thị Thềm, Bùi Đình Quân,
"Khả năng nhớ mẫu của mạng nơ ron hồi quy" Tạp chí Khoa học và Công nghệ Đại học
Sư phạm Hưng Yên, 2017, về khả năng nhớ và nhận dạng đối tượng sử dụng mạng hồi quy liên kết hai chiều Đề tài và bài báo chưa có ứng dụng phần cứng [5]
- Công trình nghiên cứu của Lê Hoài Bắc cùng một số cộng sự đã xây dựng thành công “Hệ thống hỗ trợ quyết định trên mạng nơron và logic mờ” Tích hợp trong hệ hỗ trợ ra quyết định, xây dựng một số hệ thống hỗ trợ quyết định phục vụ trong lĩnh vực khoa học, giáo dục, kinh tế, môi trường, quốc phòng, an ninh…
- Công trình nghiên cứu của Nguyễn Sĩ Dũng, Lê Hoài Quốc “Một số thuật toán về huấn luyện Neural Network trên cơ sở phương pháp Conjugate Gradient”, Đại học Công nghiệp Thành phố Hồ Chí Minh và Đại học Bách khoa Thành phố Hồ Chí Minh
Trên thế giới có rất nhiều hệ thống nhận dạng đã và đang được ứng dụng rất hiệu quả như: Via Voice của IBM, Speech Recognition Engine của Microsoft, Hidden Markov Model Toolkit của đại học Cambridge… Ngoài ra, một số hệ thống nhận dạng khác cũng khá phát triển và đều hướng tới người dùng trong tất cả các lĩnh vực như: Khoa học hình sự, Kinh doanh, Quản lý, Multimedia…
THỬ NGHIỆM MẠNG NƠRON ĐỂ NHẬN DẠNG MẶT NGƯỜI
Kết luận chương 3
Ch ươ ng 4: Mô ph ỏ ng và s ử d ụ ng m ạ ng BAM cho ngôi nhà
4.1 Mô phỏng nhận dạng khuôn mặt người bằng phần mềm Python
4.2 Xây dựng mô hình mở/đóng cửa cho ngôi nhà thông minh
TỔNG QUAN VỀ NHẬN DẠNG MẶT NGƯỜI 1.1 Lịch sử nghiên cứu về nhận dạng
Trong năm 1964 và 1965, Bledsoe, cùng với Helen Chan và Charles Bisson, bắt đầu ý tưởng sử dụng máy tính để nhận ra khuôn mặt của con người Với một cơ sở dữ liệu lớn các hình ảnh và một bức ảnh, vấn đề là phải lựa chọn từ cơ sở dữ liệu là một tập hợp nhỏ các hồ sơ hình ảnh như vậy có chứa các hình ảnh ăn khớp với bức ảnh đưa ra
Năm 1966, công việc này được tiếp tục tại Viện nghiên cứu Stanford, chủ yếu bởi Peter Hart Trong các thí nghiệm thực hiện trên một cơ sở dữ liệu hơn 2.000 bức ảnh, máy tính luôn vượt trội so với con người khi thể hiện cùng một nhiệm vụ nhận dạng
Năm 1997, hệ thống được phát triển bởi Christophvonder Malsburg và các sinh viên sau đại học của trường Đại học Bochum ở Đức và Đại học Nam California tại Mỹ, Viện Công nghệ Massachusetts và Đại học Maryland Hệ thống Bochum được phát triển thông qua tài trợ bởi Phòng Thí Nghiệm Nghiên cứu Quân đội Hoa Kỳ Phần mềm này được bán với cái tên ZN-Face và sử dụng trong các nhà điều hành sân bay và các địa điểm đông đúc khác Phần mềm này "đủ mạnh mẽ để nhận dạng được gương mặt từ các góc nhìn ít lý tưởng hơn Nó cũng thường xuyên có thể nhận dạng được gương mặt mặc dù có những trở ngại như ria mép, râu, thay đổi kiểu tóc và thậm chí đeo kính râm"
Năm 2006, các thuật toán nhận dạng khuôn mặt mới nhất đã được đánh giá trong Face Recognition Grand Challenge (FRGC) Hình ảnh gương mặt, hình ảnh scan gương mặt 3D và ảnh iris độ phân giải cao, được sử dụng trong các bài kiểm tra Kết quả cho thấy rằng các thuật toán mới là chính xác hơn 10 lần so với các thuật toán nhận dạng khuôn mặt của năm
2002 và chính xác hơn 100 lần so với các thuật toán của năm 1995 Một số thuật toán đã có thể nhận dạng tốt hơn người tham gia trong việc nhận diện khuôn mặt và duy nhất có thể xác định từng người trong các cặp song sinh giống hệt nhau
Năm 2007, công ty Identix từ Minnesota, đã phát triển một phần mềm là FaceIt FaceIt có thể nhận ra khuôn mặt của một ai đó trong đám đông và so sánh nó với cơ sở dữ liệu trên toàn thế giới để nhận dạng và đặt tên cho một khuôn mặt Phần mềm được viết để phát hiện nhiều đặc điểm trên khuôn mặt người
1.2 Tình hình nghiên cứu trong và ngoài nước về nhận dạng
Những năm gần đây, công nghệ sinh trắc học đã vượt qua các rào cản lớn như chi phí, cách thức vận hành, khả năng truy cập, và cùng với độ chính xác cao trong giải pháp xác thực Cũng như bất kỳ công nghệ bảo mật nào, nhận dạng sinh trắc học cũng không phải là giải pháp hoàn hảo Nhưng chắc chắn rằng, nhận dạng sinh trắc học không còn là hình ảnh của tương lai mà đang hiện hữu ngày càng rõ nét trong cuộc sống hiện tại
Mỗi đặc trưng sinh trắc dùng nhận dạng có ưu - nhược điểm và độ chính xác nhất định Tùy từng hoàn cảnh và yêu cầu thực tiễn mà lựa chọn phương pháp phù hợp nhưng phải đảm bảo các yếu tố:
- Tính phổ biến: Mọi người đều có đặc trưng sinh trắc này;
- Tính riêng biệt: Các cá thể khác nhau thì đặc trưng này khác nhau;
- Tính ổn định: Đặc trưng sinh trắc này không thay đổi theo thời gian;
- Tính thu thập: Đặc trưng này có thể đo và lượng hóa được a) Nhận dạng mống mắt b) Nhận dạng mặt người c) Nhận dạng vân tay d) Nhận dạng tĩnh mạch lòng bàn tay Hình 1.1: Một số ví dụ ứng dụng nhận dạng sinh trắc học
Ngoài ra người ta còn xét đến các yếu tố như:
- Hiệu năng: Khả năng nhận dạng chính xác, tốc độ nhận dạng; các tài nguyên cần thiết để đạt được tốc độ và độ chính xác mong muốn; các nhân tố môi trường hoạt động ảnh hưởng đến tốc độ và độ chính xác trong nhận dạng
- Tính chấp nhận: Mọi người vui lòng chấp nhận phương pháp sử dụng các đặc trưng sinh trắc trong đời sống hàng ngày của họ
- Khả năng phá hoại: Là mức độ khó/dễ đánh lừa hệ thống nhận dạng
Một số phương pháp nhận dạng sinh trắc học đang được sử dụng (Hình 1.1) là những phương pháp có độ tin cậy cao Để nhận dạng tăng khả năng chính xác thì hệ thống nhận dạng phải kết hợp nhiều đặc trưng sinh trắc với nhau Ở Việt Nam, nhận dạng vẫn là lĩnh vực khá mới Dù có nhiều nghiên cứu về nhận dạng đã đạt được những thành tựu nhất định, nhưng nhìn chung vẫn chưa đạt được kết quả cần thiết để có thể tạo ra các sản phẩm mang tính ứng dụng cao Có thể kể đến một số công trình nghiên cứu:
- Công trình nghiên cứu của Nguyễn Quang Hoan, Vũ Thị Thềm, Bùi Đình Quân,
"Khả năng nhớ mẫu của mạng nơ ron hồi quy" Tạp chí Khoa học và Công nghệ Đại học
Sư phạm Hưng Yên, 2017, về khả năng nhớ và nhận dạng đối tượng sử dụng mạng hồi quy liên kết hai chiều Đề tài và bài báo chưa có ứng dụng phần cứng [5]
- Công trình nghiên cứu của Lê Hoài Bắc cùng một số cộng sự đã xây dựng thành công “Hệ thống hỗ trợ quyết định trên mạng nơron và logic mờ” Tích hợp trong hệ hỗ trợ ra quyết định, xây dựng một số hệ thống hỗ trợ quyết định phục vụ trong lĩnh vực khoa học, giáo dục, kinh tế, môi trường, quốc phòng, an ninh…
- Công trình nghiên cứu của Nguyễn Sĩ Dũng, Lê Hoài Quốc “Một số thuật toán về huấn luyện Neural Network trên cơ sở phương pháp Conjugate Gradient”, Đại học Công nghiệp Thành phố Hồ Chí Minh và Đại học Bách khoa Thành phố Hồ Chí Minh
Trên thế giới có rất nhiều hệ thống nhận dạng đã và đang được ứng dụng rất hiệu quả như: Via Voice của IBM, Speech Recognition Engine của Microsoft, Hidden Markov Model Toolkit của đại học Cambridge… Ngoài ra, một số hệ thống nhận dạng khác cũng khá phát triển và đều hướng tới người dùng trong tất cả các lĩnh vực như: Khoa học hình sự, Kinh doanh, Quản lý, Multimedia…
MÔ PHỎNG VÀ SỬ DỤNG MẠNG BAM CHO NGÔI NHÀ
Kết luận chương 4
TỔNG QUAN VỀ NHẬN DẠNG MẶT NGƯỜI 1.1 Lịch sử nghiên cứu về nhận dạng
Trong năm 1964 và 1965, Bledsoe, cùng với Helen Chan và Charles Bisson, bắt đầu ý tưởng sử dụng máy tính để nhận ra khuôn mặt của con người Với một cơ sở dữ liệu lớn các hình ảnh và một bức ảnh, vấn đề là phải lựa chọn từ cơ sở dữ liệu là một tập hợp nhỏ các hồ sơ hình ảnh như vậy có chứa các hình ảnh ăn khớp với bức ảnh đưa ra
Năm 1966, công việc này được tiếp tục tại Viện nghiên cứu Stanford, chủ yếu bởi Peter Hart Trong các thí nghiệm thực hiện trên một cơ sở dữ liệu hơn 2.000 bức ảnh, máy tính luôn vượt trội so với con người khi thể hiện cùng một nhiệm vụ nhận dạng
Năm 1997, hệ thống được phát triển bởi Christophvonder Malsburg và các sinh viên sau đại học của trường Đại học Bochum ở Đức và Đại học Nam California tại Mỹ, Viện Công nghệ Massachusetts và Đại học Maryland Hệ thống Bochum được phát triển thông qua tài trợ bởi Phòng Thí Nghiệm Nghiên cứu Quân đội Hoa Kỳ Phần mềm này được bán với cái tên ZN-Face và sử dụng trong các nhà điều hành sân bay và các địa điểm đông đúc khác Phần mềm này "đủ mạnh mẽ để nhận dạng được gương mặt từ các góc nhìn ít lý tưởng hơn Nó cũng thường xuyên có thể nhận dạng được gương mặt mặc dù có những trở ngại như ria mép, râu, thay đổi kiểu tóc và thậm chí đeo kính râm"
Năm 2006, các thuật toán nhận dạng khuôn mặt mới nhất đã được đánh giá trong Face Recognition Grand Challenge (FRGC) Hình ảnh gương mặt, hình ảnh scan gương mặt 3D và ảnh iris độ phân giải cao, được sử dụng trong các bài kiểm tra Kết quả cho thấy rằng các thuật toán mới là chính xác hơn 10 lần so với các thuật toán nhận dạng khuôn mặt của năm
2002 và chính xác hơn 100 lần so với các thuật toán của năm 1995 Một số thuật toán đã có thể nhận dạng tốt hơn người tham gia trong việc nhận diện khuôn mặt và duy nhất có thể xác định từng người trong các cặp song sinh giống hệt nhau
Năm 2007, công ty Identix từ Minnesota, đã phát triển một phần mềm là FaceIt FaceIt có thể nhận ra khuôn mặt của một ai đó trong đám đông và so sánh nó với cơ sở dữ liệu trên toàn thế giới để nhận dạng và đặt tên cho một khuôn mặt Phần mềm được viết để phát hiện nhiều đặc điểm trên khuôn mặt người
1.2 Tình hình nghiên cứu trong và ngoài nước về nhận dạng
Những năm gần đây, công nghệ sinh trắc học đã vượt qua các rào cản lớn như chi phí, cách thức vận hành, khả năng truy cập, và cùng với độ chính xác cao trong giải pháp xác thực Cũng như bất kỳ công nghệ bảo mật nào, nhận dạng sinh trắc học cũng không phải là giải pháp hoàn hảo Nhưng chắc chắn rằng, nhận dạng sinh trắc học không còn là hình ảnh của tương lai mà đang hiện hữu ngày càng rõ nét trong cuộc sống hiện tại
Mỗi đặc trưng sinh trắc dùng nhận dạng có ưu - nhược điểm và độ chính xác nhất định Tùy từng hoàn cảnh và yêu cầu thực tiễn mà lựa chọn phương pháp phù hợp nhưng phải đảm bảo các yếu tố:
- Tính phổ biến: Mọi người đều có đặc trưng sinh trắc này;
- Tính riêng biệt: Các cá thể khác nhau thì đặc trưng này khác nhau;
- Tính ổn định: Đặc trưng sinh trắc này không thay đổi theo thời gian;
- Tính thu thập: Đặc trưng này có thể đo và lượng hóa được a) Nhận dạng mống mắt b) Nhận dạng mặt người c) Nhận dạng vân tay d) Nhận dạng tĩnh mạch lòng bàn tay Hình 1.1: Một số ví dụ ứng dụng nhận dạng sinh trắc học
Ngoài ra người ta còn xét đến các yếu tố như:
- Hiệu năng: Khả năng nhận dạng chính xác, tốc độ nhận dạng; các tài nguyên cần thiết để đạt được tốc độ và độ chính xác mong muốn; các nhân tố môi trường hoạt động ảnh hưởng đến tốc độ và độ chính xác trong nhận dạng
- Tính chấp nhận: Mọi người vui lòng chấp nhận phương pháp sử dụng các đặc trưng sinh trắc trong đời sống hàng ngày của họ
- Khả năng phá hoại: Là mức độ khó/dễ đánh lừa hệ thống nhận dạng
Một số phương pháp nhận dạng sinh trắc học đang được sử dụng (Hình 1.1) là những phương pháp có độ tin cậy cao Để nhận dạng tăng khả năng chính xác thì hệ thống nhận dạng phải kết hợp nhiều đặc trưng sinh trắc với nhau Ở Việt Nam, nhận dạng vẫn là lĩnh vực khá mới Dù có nhiều nghiên cứu về nhận dạng đã đạt được những thành tựu nhất định, nhưng nhìn chung vẫn chưa đạt được kết quả cần thiết để có thể tạo ra các sản phẩm mang tính ứng dụng cao Có thể kể đến một số công trình nghiên cứu:
- Công trình nghiên cứu của Nguyễn Quang Hoan, Vũ Thị Thềm, Bùi Đình Quân,
"Khả năng nhớ mẫu của mạng nơ ron hồi quy" Tạp chí Khoa học và Công nghệ Đại học
Sư phạm Hưng Yên, 2017, về khả năng nhớ và nhận dạng đối tượng sử dụng mạng hồi quy liên kết hai chiều Đề tài và bài báo chưa có ứng dụng phần cứng [5]
- Công trình nghiên cứu của Lê Hoài Bắc cùng một số cộng sự đã xây dựng thành công “Hệ thống hỗ trợ quyết định trên mạng nơron và logic mờ” Tích hợp trong hệ hỗ trợ ra quyết định, xây dựng một số hệ thống hỗ trợ quyết định phục vụ trong lĩnh vực khoa học, giáo dục, kinh tế, môi trường, quốc phòng, an ninh…
- Công trình nghiên cứu của Nguyễn Sĩ Dũng, Lê Hoài Quốc “Một số thuật toán về huấn luyện Neural Network trên cơ sở phương pháp Conjugate Gradient”, Đại học Công nghiệp Thành phố Hồ Chí Minh và Đại học Bách khoa Thành phố Hồ Chí Minh
Trên thế giới có rất nhiều hệ thống nhận dạng đã và đang được ứng dụng rất hiệu quả như: Via Voice của IBM, Speech Recognition Engine của Microsoft, Hidden Markov Model Toolkit của đại học Cambridge… Ngoài ra, một số hệ thống nhận dạng khác cũng khá phát triển và đều hướng tới người dùng trong tất cả các lĩnh vực như: Khoa học hình sự, Kinh doanh, Quản lý, Multimedia…
TỔNG LUẬN
Bài toán nhận mẫu khuôn mặt người là một bài toán yêu có cầu độ chính xác cao Để nhận mẫu khuôn mặt người thì cần phải có chương trình cần huấn luyện (học) với nhiều đặc điểm, kích thước khác nhau Trong giới hạn của luận văn thạc sĩ, học viên đã đưa ra đề bài còn đơn giản (06 bit), nhưng đã khẳng định được một phần cơ bản về cách sử dụng mạng nơron BAM để nhận dạng khuôn mặt người
Qua tính toán thử nghiệm nhận dạng mặt người dựa trên mạng nơron liên kết nhớ hai chiều (BAM), học viên nhận định có thể sử dụng mạng BAM áp dụng cho lớp các bài toán xác thực như bảo mật, tìm kiếm, quản lý nhân sự cho các tổ chức, đơn vị cơ quan Sau đây là những kết quả đạt được và những hạn chế của luận văn:
- Nh ữ ng đ i ể m mà lu ậ n v ă n này đ ã đạ t đượ c:
+ Minh họa được khả năng nhớ mẫu của mạng BAM
+ Tính toán thử nghiệm khả năng ghi nhớ cả hai chiều các mẫu đã học
+ Thiết kế thử nghiệm mạng nơron với kích thước 6 × 5 nơron và sau này hoàn toàn có thể thiết kế mạng với kích thước lớn hơn
+ Có mô hình điều khiển động lực học để áp dụng vào ngôi nhà thông minh
- Nh ữ ng đ i ể m còn h ạ n ch ế c ủ a lu ậ n v ă n:
+ Kích thước mạng nơron đầu vào/ra còn nhỏ (06 bit/05 bit)
+ Số lượng đặc trưng đầu vào dùng thử nghiệm nhận dạng còn ít (06 đặc trưng) + Mỗi đặc trưng có giá trị ghi nhớ còn đơn giản (02 giá trị)
- Nh ữ ng đ i ể m mà lu ậ n v ă n này ch ư a đạ t đượ c:
+ Phần mềm lập trình còn đơn giản
+ Mô hình điều khiển còn đơn giản khi áp dụng vào ngôi nhà thông minh
2 Hướng phát triển của đề tài
Tiếp tục nghiên cứu sâu hơn về mạng nơron để giải quyết các bài toán với dữ liệu lớn hơn, phức tạp hơn để cho khả năng nhận dạng chính xác cao hơn
Luận văn chỉ mới thử nghiệm mạng BAM kích thước 6 × 5 với các giá trị nhị phân, có nghĩa là 2 = 32 mẫu thực nghiệm Khi ứng dụng cho thực tế thì dữ liệu cần phải tăng lên về kích thước và độ phức tạp, cụ thể thì lúc đó ta cần phải tăng kích thước mạng nơron
Mặt khác, để hệ thống nhận dạng có thể áp dụng trong thực tế, thì cần phải có nhiều cơ chế chấp hành để điều khiển tự động hóa phức tạp (ví dụ: kích thước mắt thay vì 02 giá trị {To, Nhỏ} thì ta dùng 03 giá trị {To, Vừa, Nhỏ} để mô tả) Khi đó, bài toán trở nên phức tạp và đồng thời thì kho dữ liệu học cũng cần phải lớn hơn.
TÀI LIỆU THAM KHẢO
[1] Nguyen Quang Hoan (1996) “The Stability of the High-Order Hopfield Neural Networks and Their Application Abilities for Robot” PhD Dissertation
[2] Nguyễn Thanh Thủy, Lương Mạnh Bá (2002), Nhập môn xử lý ảnh số, nhà xuất bản Khoa học Kỹ thuật
[3] Nguyễn Quang Hoan (2007), Mạng nơron nhân tạo, Học viện Công nghệ Bưu chính Viễn thông
[4] Nguyễn Quang Hoan, Đoàn Hồng Quang (2014), “Dự báo chỉ số giá chứng khoán bằng mạng nơron hồi quy”, Tạp chí Khoa học và Công nghệ, Trường Đại học Sư phạm Kỹ thuật Hưng Yên ISSN: 2354-0575, 1/2014
[5] Nguyễn Quang Hoan, Vũ Thị Thềm, Bùi Đình Quân, "Khả năng nhớ mẫu của mạng nơ ron hồi quy," Tạp chí Khoa học và Công nghệ Đại học Sư phạm Hưng Yên, vol 13, no
[6] Đoàn Hồng Quang et al (2020) “Nhận dạng khuôn mặt trong video bằng mạng nơron tích chập” Tạp chí Khoa học và Công nghệ, Trường Đại học Sư phạm Kỹ thuật Hưng
[7] Xiaomei Wang, Shouming Zhong (2010), Globall Exponential Stability of Periodic Solution of BAM Neural Network with Distributed Time Delays and Impulses, 2010
International Conference on Computer and Computational Intelligence (ICCCI 2010)
[8] Weibo Liu, Zidong Wang et al (2017) “A Survey of Neural Network Architectures and
[9] Tasneem Gorach (2018)“Deep Learning Neural Networks-A Review” IRJET Vol 05 Issue:07 July-2018 e-ISSN 2395-0056; p-ISSN 2395-0072
[10] https://vi.wikipedia.org/wiki/H%E1%BB%87_th%E1%BB%91ng_nh%E1%BA% ADn_d%E1%BA%A1ng_khu%C3%B4n_m%E1%BA%B7t
[11] https://eparking.vn/cong-nghe-nhan-dien-khuon-mat-la-gi-ung-dung-trong-quan- ly-bai-do-xe/
[12] https://medium.com/@cerendumen/most-common-machine-learning-engineer- interview-questions-689123a08c7b
[13] https://b.vjst.vn/index.php/ban_b/article/view/10/3
[14] https://vigneshs4499.medium.com/face-detection-and-landmarks-using-dlib-and- opencv-8c824f50cc78
[15] https://aws.amazon.com/vi/what-is/python/
[16] https://dientutuonglai.com/mach-boost-la-gi.html
PHỤ LỤC
TT Tên Ảnh TT Tên Ảnh
Ph ụ l ụ c 2: Các m ẫ u đượ c hu ấ n luy ệ n
STT Tên Ảnh Đầu vào Đầu ra Đặc trưng
Mã hóa đặc trưng Nhãn Mã hóa nhãn
Ph ụ l ụ c 4: Gi ớ i thi ệ u s ơ b ộ v ề ngôn ng ữ Python
Python là một ngôn ngữ lập trình được sử dụng rộng rãi trong các ứng dụng web, phát triển phần mềm, khoa học dữ liệu và máy học (ML) Các nhà phát triển sử dụng Python vì nó hiệu quả, dễ học và có thể chạy trên nhiều nền tảng khác nhau Phần mềm Python được tải xuống miễn phí, tích hợp tốt với tất cả các loại hệ thống và tăng tốc độ phát triển
*) Python có lịch sử như thế nào?
Guido Van Rossum, một lập trình viên máy tính ở Hà Lan, đã tạo ra Python Ông bắt đầu phát triển ngôn ngữ này vào năm 1989 tại Centrum Wiskunde & Informatica (CWI), ban đầu chỉ là một dự án tiêu khiển để giúp ông giết thời gian trong dịp Giáng sinh Tên gọi của ngôn ngữ này được lấy cảm hứng từ chương trình truyền hình Monty Python's Flying Circus của đài BBC vì Guido Van Rossum là một “fan cứng” của chương trình này
*) Lịch sử các phiên bản Python:
Guido Van Rossum cho ra mắt phiên bản đầu tiên của ngôn ngữ Python (phiên bản 0.9.0) vào năm 1991 Ngôn ngữ này đã bao gồm các tính năng hữu ích như một số kiểu dữ liệu và hàm để xử lý lỗi
Python 1.0 đã được ra mắt vào năm 1994 với các hàm mới để dễ dàng xử lý danh sách dữ liệu, chẳng hạn như ánh xạ, lọc và lược bỏ
Python 2.0 đã được ra mắt vào ngày 16 tháng 10 năm 2000, với các tính năng hữu ích mới cho lập trình viên, chẳng hạn như hỗ trợ ký tự Unicode và cách xử lý chi tiết một danh sách nhanh chóng hơn
Python 3.0 đã được ra mắt vào ngày 3 tháng 12 năm 2008 Phiên bản này bao gồm các tính năng như hàm in và hỗ trợ nhiều hơn cho việc phân chia số và xử lý lỗi
*) Python mang lại những lợi ích gì?
Các nhà phát triển có thể dễ dàng đọc và hiểu một chương trình Python vì ngôn ngữ này có cú pháp cơ bản giống tiếng Anh
Python giúp cải thiện năng suất làm việc của các nhà phát triển vì so với những ngôn ngữ khác, họ có thể sử dụng ít dòng mã hơn để viết một chương trình Python
Python có một thư viện tiêu chuẩn lớn, chứa nhiều dòng mã có thể tái sử dụng cho hầu hết mọi tác vụ Nhờ đó, các nhà phát triển sẽ không cần phải viết mã từ đầu
Các nhà phát triển có thể dễ dàng sử dụng Python với các ngôn ngữ lập trình phổ biến khác như Java, C và C++
Cộng đồng Python tích cực hoạt động bao gồm hàng triệu nhà phát triển nhiệt tình hỗ trợ trên toàn thế giới
Ph ụ l ụ c 5: Đị nh ngh ĩ a các công th ứ c tính toán b ằ ng ngôn ng ữ Python
# Khai báo th ư vi ệ n s ử d ụ ng: import cv2, math, dlib, numpy as np from scipy.spatial import distance as dist from imutils import face_utils
# Thoát kh ỏ i ch ươ ng trình:
# 1) Ch ọ n tên ả nh c ầ n hu ấ n luy ệ n: def TMA(i): if i == 1: ten = "2_MaiLan" elif i == 2: ten = "7_Hoan" elif i == 3: ten = "16_Dieu" elif i == 4: ten = "23_Hien" dress_img = ("./image/x/" + ten + ".jpg") # Đị a ch ỉ m ở ả nh return dress_img
# 2) Chọn thêm thông tin đầu vào: def TTT(x): if x == 1: x = "2 + Mai Lan + 1981 + N ữ + Qu ố c Oai, Hà N ộ i" elif x == 2: x = "7 + Hoàn + 1960 + Nam + Ch ươ ng M ỹ , Hà N ộ i" elif x == 3: x = "16 + Di ệ u + 2001 + N ữ + Ch ươ ng M ỹ , Hà N ộ i" elif x == 4: x = "23 + Hi ế n + 1985 + Nam + Ch ươ ng M ỹ , Hà N ộ i" return x
# 3) X ử lý ả nh: def XLA(dress_img): x1 = image = cv2.imread(dress_img) # Ả nh g ố c x2 = gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # Ả nh xám x3 = blur = cv2.GaussianBlur(gray, (21, 21), 1) # Ả nh m ờ face_cascade = cv2.CascadeClassifier("D:/BuiTienChien/Learn/Python_LuanVan/Library/haarcasca de_frontalface.xml") facesx = face_cascade.detectMultiScale(image, 1.3, 5) x0 = SKM = len(facesx) if SKM == 1: hog_face_detector = dlib.get_frontal_face_detector() dlib_facelandmark = dlib.shape_predictor("D:/BuiTienChien/Learn/Python_LuanVan/Library/shape_pred ictor_68_face_landmarks.dat") faces = hog_face_detector(blur) for face in faces: face_landmarks = dlib_facelandmark(blur, face) for n in range(0, 68): x = face_landmarks.part(n).x y = face_landmarks.part(n).y cv2.circle(image, (x, y), 1, (0, 255, 0), 2) elif SKM >= 2: for (x,y,w,h) in facesx: cv2.rectangle(image,(x,y),(x+w,y+h),(0,255,0),2) cv2.imwrite('Data/rectang.png', image) # L ư u ả nh return x0, x1, x2, x3
# 4) Đị nh ngh ĩ a và tính toán khuôn m ặ t ng ườ i: def face_point(input): # Đầ u vào
B = dist.euclidean(input[2],input[3]) mar = A*B*10 return mar, input[0] def TTKM(blur): dlib_facelandmark = dlib.shape_predictor("D:/BuiTienChien/Learn/Python_LuanVan/Library/shape_pred ictor_68_face_landmarks.dat") for rect in rects: shape = face_utils.shape_to_np(dlib_facelandmark(blur, rect)) nose_ration, nose_positon = face_point(shape[28:36]) mouth_ration, mouth_positon = face_point(shape[49:68]) face_ration, face_positon = face_point(shape[1:17]) d_eye_ration, d_eye_positon = face_point(shape[37:48]) d_ebr_n_ration, d_ebr_n_positon = face_point(shape[18:36]) d_e_m_ration, d_e_m_positon = face_point(shape[38:68]) xx1 = round(nose_ration, 0) xx2 = round(mouth_ration, 0) xx3 = round(face_ration, 0) xx4 = round(d_eye_ration, 0) xx5 = round(d_ebr_n_ration, 0) xx6 = round(d_e_m_ration, 0)
List = [xx1, xx2, xx3, xx4, xx5, xx6] x0 = np.array(List,dtype=int) if List[0] >= 1600: x1 = 1 else: x1 = 0 if List[1] >= 680: x2 = 1 else: x2 = 0 if List[2] >= 2480: x3 = 1 else: x3 = 0 if List[3] >= 490: x4 = 1 else: x4 = 0 if List[4] >= 1330: x5 = 1 else: x5 = 0 if List[5] >= 600: x6 = 1 else: x6 = 0 xx = [x1, x2, x3, x4, x5, x6] x1 = np.array(xx,dtype=int) x2 = int(xx1 + xx2 + xx3 + xx4 + xx5 + xx6) return x0, x1, x2
# 5) Đị nh ngh ĩ a và tính toán ma tr ậ n vào ra:
# Ma tr ậ n X: def X_new(x): x1_new = np.array([0, 0, 1, 1, 0, 1]) x2_new = np.array([0, 1, 1, 1, 0, 0]) x3_new = np.array([0, 0, 0, 1, 0, 1]) x4_new = np.array([0, 0, 1, 1, 1, 1]) for i in range(1, 5): if i == 1: x_new = x1_new elif i == 2: x_new = x2_new elif i == 3: x_new = x3_new elif i == 4: x_new = x4_new j = 0 x_LC = [0, 0, 0, 0, 0, 0] for x_ in x_new: if x_ == 0: x_ = -1 x_LC[j] = x_ j = j + 1 x_LC = np.array(x_LC) if (x == 1 and i == 1): x0 = x1_new; x1 = x_LC; x2 = "A" elif (x == 2 and i == 2): x0 = x2_new; x1 = x_LC; x2 = "B" elif (x == 3 and i ==3 ): x0 = x3_new; x1 = x_LC; x2 = "C" elif (x == 4 and i == 4): x0 = x4_new; x1 = x_LC; x2 = "D" return x0, x1, x2
# Ma tr ậ n Y: def Y_new(y): y1_new = np.array([1, 0, 0, 0, 1]) y2_new = np.array([0, 1, 1, 0, 1]) y3_new = np.array([1, 0, 0, 1, 1]) y4_new = np.array([1, 0, 1, 1, 1]) for i in range(1, 5): if i == 1: y_new = y1_new elif i == 2: y_new = y2_new elif i == 3: y_new = y3_new elif i == 4: y_new = y4_new j = 0 y_LC = [0, 0, 0, 0, 0] for y_ in y_new: if y_ == 0: y_ = -1 y_LC[j] = y_ j = j + 1 y_LC = np.array(y_LC) if (y == 1 and i == 1): y0 = y1_new; y1 = y_LC; y2 = "K" elif (y == 2 and i == 2): y0 = y2_new; y1 = y_LC; y2 = "L" elif (y == 3 and i ==3 ): y0 = y3_new; y1 = y_LC; y2 = "M" elif (y == 4 and i == 4): y0 = y4_new; y1 = y_LC; y2 = "N" return y0, y1, y2
#) Tính toán ma tr ậ n vào ra: def TTMT(xy):
W = np.array([0, 0, 0, 0, 0, 0]) for i in range(1, 5):
BA = np.transpose([Y_new(i)[1]]) * [X_new(i)[1]]
WT = W.T for i in range(1, 5): x_new = np.array(X_new(i)[0]) y_new = np.array(Y_new(i)[0])
XW = np.array(y_new.dot(W))
YW = np.array(x_new.dot(WT))
YW_new = np.array([0, 0, 0, 0, 0]) j = 0 for xt in XW: if xt < 0: xt = 0 elif xt > 1: xt = 1
XW_new[j] = xt j = j + 1 j = 0 for yt in YW: if yt < 0: yt = 0 elif yt > 1: yt = 1
XW_new = np.array(XW_new)
YW_new = np.array(YW_new) if (xy == 1 and i == 1): x0 = XW ; y0 = YW; x1 = XW_new ; y1 = YW_new
YW_new elif (xy == 3 and i ==3 ): x0 = XW ; y0 = YW; x1 = XW_new ; y1 = YW_new elif (xy == 4 and i == 4): x0 = XW ; y0 = YW; x1 = XW_new ; y1 = YW_new return x0, y0, x1, y1
# 6) Định nghĩa âm thanh: import pyttsx3 def voice_vn (x): engine = pyttsx3.init() voices = engine.getProperty("voices") engine.setProperty("voice", voices[2].id) engine.say(x) engine.runAndWait()
# 7) Ch ọ n ả nh nh ậ n d ạ ng: import cv2, ctypes, os from tkinter import * from tkinter import filedialog from PIL import ImageTk, Image import pyperclip def chose_img(): root = Tk(); root.overrideredirect(1) root.configure(bg="#A9A9A9", padx=3, pady=3) w = 300; h = 400 title = "CH Ọ N Ả NH NH Ậ N D Ạ NG"
L_t = Label(root, text = title, bg="#A9A9A9", fg = "blue")
L_t.pack() canvas = Canvas(root, width = w + 200, height = h + 100, bg = "#C1C1CD") def open_img(): global photo path=filedialog.askopenfilename(filetypes=[("Image File",'.jpg png