OpenCV được xây dựng để cung cấp một cơ sở hạ tầng chung cho các ứng dụng thị giác máy tính và để đẩy nhanh việc sử dụng nhận thức máy trong các sản phẩm thương mại.. Các thuật toán này
Trang 1GVHD: Ths Nguyễn Đình Hiển Nhóm Sinh Viên:
BÁO CÁO ĐỀ TÀI
FACERECOGNITION - OPENCV
MÔN: TRÍ TUỆ NHÂN TẠO
Trường Đại Học Sư Phạm Thành Phố Hồ Chí Minh
KHOA CÔNG NGHỆ THÔNG TIN
TP.Hồ Chí Minh, 2018
Trang 2LỜI NÓI ĐẦU
Trí tuệ nhân tạo (AI) được xem như một ngành của khoa học máy tính liên quan đến việc tự động hóa các hành vi thông minh AI là một bộ phận của khoa học máy tính và do đó nó phải được đặt trên những nguyên lý lý thuyết vững chắc, có khả năng ứng dụng được của lĩnh vực này Những nguyên lý này bao gồm các cấu trúc dữ liệu dùng cho biểu diễn tri thức, các thuật toán cần thiết để áp dụng những tri thức đó, cùng các ngôn ngữ và kỹ thuật lập trình dùng cho việc cài đặt chúng Cho đến nay, trí tuệ nhân tạo vẫn còn là một ngành khoa học trẻ, những mối quan tâm và những phương pháp của nó chưa được rõ ràng so với tất cả các ngành khoa học đã trưởng thành trước đó Song, một trong những mục tiêu trọng tâm của nó là quan tâm đến việc mở rộng khả năng của khoa học máy tính hơn là tìm cách định nghĩa những giới hạn của nó
Ngày nay, những thực thể thông minh sẽ đóng một vai trò vô cùng quan trọng trong cuộc sống cũng như sự phát triển của nền văn minh nhân loại Với khả năng làm việc không mệt mỏi và khả năng học tập nhanh chóng, AI sẽ sớm trở thành đối tượng được con người sử dụng cho nhiều mục đích hoạt động khác nhau nhằm thõa mãn nhu cầu trong cuộc sống hiện đại Hiện nay, AI được ứng dụng trong việc phát triển các hệ thống tự động hóa như : Smart Home, trợ lý ảo ( Cortana , Siri, Bixby,v.v) và siêu bảo mật
Việc bảo mật thông tin từ lâu đã được con người chú tâm đến, con người luôn tìm cách cải tiến các cách thức bảo mật để ngày càng đảm bảo sự an toàn thông tin Việc ứng dụng AI vào cơ chế bảo mật đã được con người quan tâm và chú trọng thông qua các hình thức như fingerprint, iris recognition và face recognition
Chính vì thế nhóm chúng em đã chọn đề tài “FACERECOGNITION
-OPENCV” để tìm hiểu về ứng dụng AI trong việc bảo mật thông tin nhận diện
khuôn mặt Chúng em nhận thức được tầm quan trọng trong việc bảo mật thông tin nên chúng em đã tìm hiểu và nghiên cứu bảo mật thông tin
Nhóm chúng em rất mong được sự giúp đỡ góp ý của thầy và các bạn để sản phẩm ngày càng hoàn thiện
Trang 3MỤC LỤC
Trang 4I GIỚI THIỆU OPENCV
1 Opencv là gì?
OpenCV viết tắt của Open Source Computer Vision được xem là một trong những thư viện mã nguồn mở hàng đầu cho việc xử lý ảnh theo thời gian thực OpenCV (Thư viện hình ảnh máy tính nguồn mở) là thư viện phần mềm máy tính học tập và máy tính nguồn mở OpenCV được xây dựng để cung cấp một cơ sở
hạ tầng chung cho các ứng dụng thị giác máy tính và để đẩy nhanh việc sử dụng nhận thức máy trong các sản phẩm thương mại Là một sản phẩm được cấp phép BSD, OpenCV giúp các doanh nghiệp dễ dàng sử dụng và sửa đổi
Thư viện có hơn 2500 thuật toán được tối ưu hóa, bao gồm một tập hợp toàn diện các thuật toán máy học và tầm nhìn máy tính tiên tiến và hiện đại Các thuật toán này có thể được sử dụng để phát hiện và nhận diện khuôn mặt, xác định đối tượng, phân loại hành động của con người trong video, theo dõi chuyển động của camera, theo dõi đối tượng chuyển động, trích xuất mô hình 3D của đối tượng, tạo
ra các đám mây điểm 3D từ camera stereo, ghép ảnh lại với nhau để tạo ra độ phân giải cao hình ảnh của toàn cảnh, tìm hình ảnh tương tự từ cơ sở dữ liệu hình ảnh, xóa mắt đỏ khỏi hình ảnh được chụp bằng flash, theo dõi chuyển động của mắt, nhận diện phong cảnh và thiết lập điểm đánh dấu để che phủ nó bằng thực tế mở rộng, v.v Thư viện được sử dụng rộng rãi trong các công ty, các nhóm nghiên cứu
và các cơ quan chính phủ
Cùng với các công ty có uy tín như Google, Yahoo, Microsoft, Intel, IBM, Sony, Honda, Toyota sử dụng thư viện, có nhiều công ty khởi nghiệp như Applied Minds, VideoSurf và Zeitera, sử dụng rộng rãi OpenCV Các ứng dụng được triển khai của OpenCV mở rộng phạm vi từ khâu hình ảnh đường phố, phát hiện xâm nhập trong video giám sát ở Israel, giám sát thiết bị mỏ ở Trung Quốc, giúp robot điều hướng và nhận đồ vật tại Willow Garage, phát hiện tai nạn chết đuối ở châu
Âu Tây Ban Nha và New York, kiểm tra đường băng cho các mảnh vỡ ở Thổ Nhĩ
Kỳ, kiểm tra nhãn trên các sản phẩm tại các nhà máy trên khắp thế giới để phát hiện khuôn mặt nhanh chóng ở Nhật Bản
Nó có giao diện C ++, Python, Java và MATLAB và hỗ trợ Windows, Linux, Android và Mac OS OpenCV dựa chủ yếu vào các ứng dụng thị giác thời gian thực
và tận dụng các hướng dẫn MMX và SSE khi có sẵn Một giao diện CUDA và OpenCL đầy đủ tính năng đang được tích cực phát triển ngay bây giờ Có hơn 500 thuật toán và khoảng 10 lần so với nhiều chức năng soạn hoặc hỗ trợ các thuật toán
đó OpenCV được viết tự nhiên trong C ++ và có một giao diện templated hoạt động liền mạch với các container STL
Trang 52 Ứng dụng của opencv:
- Giám sát tự động
- Tìm kiểm, phục hồi, xử lý ảnh
- Nhận dạng khuôn mặt, cử chỉ
- Nhận dạng chữ viết, con số, ký tự.
- Kiểm soát dân số trung quốc bằng cách nhận diện khuôn mặt qua opencv
- Kiểm soát bãi giữ xe
- Nhận dạng ảnh
- Xử lý hình ảnh
- Phục hồi hình ảnh/video
- Thực tế ảo
- Các ứng dụng khác
II KHẢO SÁT MỘT SỐ ỨNG DỤNG HIỆN TẠI:
1 FACE2GENES:
1.1 Giới thiệu:
- Face2Gene là một ứng dụng hấp dẫn cho người đam mê di truyền trong tất cả chúng ta Ứng dụng này cho phép các nhà cung cấp dịch vụ chăm sóc sức khỏe chụp ảnh bệnh nhân được phân tích các đặc điểm khuôn mặt cụ thể có thể liên quan đến rối loạn di truyền Được phát triển bởi FDNA, một công ty có trụ sở
tại Boston, công nghệ này được gọi là Phân tích tiểu thuyết hình thái mặt Ý tưởng là tải lên ảnh bệnh nhân được đánh giá bởi ứng dụng cho các tính năng khuôn mặt bên ngoài độ lệch chuẩn bình thường và tham chiếu chéo tới cơ sở dữ liệu về điều kiện di truyền liên quan đến các tính năng này
- Ứng dụng này miễn phí và được thiết kế để sử dụng độc quyền bởi các nhà cung cấp dịch vụ chăm sóc sức khỏe Nhà cung cấp phải đăng ký trong ứng dụng và được xác minh trước khi có toàn quyền truy cập
Trang 6Ưu điểm
- Di truyền kiểu hình niết bàn cho hội chứng kết hợp với các đặc điểm khuôn mặt cụ thể
- Dễ sử dụng
- Chú ý đến sự riêng tư của các trường hợp của bệnh nhân
Nhược điểm - Thông tin nhà phát triển không khả dụng trong ứng dụng.- Ứng dụng hẹp trong các chuyên ngành về y tế khác nhau.
Thiết bị - Android, iPhone, iPad
Khả năng ứng
dụng thực tế
- Ứng dụng tuyệt vời cho những người nhìn thấy một số lượng hợp lý các điều kiện liên quan đến di truyền hoặc có thể trong một môi trường nhi khoa, nhưng không thực sự áp dụng trên tất cả các cài đặt thực hành
Tầm nhìn
chung
- Ứng dụng thực sự hấp dẫn, nhưng có thể hạn chế sử dụng tại các trung tâm y tế đại học, mặc dù các bác sĩ khác có thể tìm thấy một số ứng dụng trong thực tế trong từng thời kỳ Ứng dụng này có thể được thực sự thú vị như nhiều trường hợp được nói thêm rằng sự giúp đỡ móng tay xuống một số các đặc điểm khuôn mặt dysmorphic đến hội chứng cụ thể FDNA hiện có vẻ đặc biệt quan tâm đến sự hợp tác và phát triển cơ sở dữ liệu vì lý do khoa học
Trang 72 FINDFACE:
2.1 Giới thiệu:
- Nhận dạng khuôn mặt có thể là một tính năng tuyệt vời cho nền tảng và thiết bị: Bạn có thể mở khóa máy tính của mình với nó, tự động sắp xếp ảnh theo người trong đó và thậm chí trao đổi khuôn mặt của bạn với chú chó trong Snapchat Nhưng điều gì sẽ xảy ra khi nhận dạng khuôn mặt tốt đến nỗi nó gần như loại bỏ hoàn toàn tiềm năng giấu tên ở nơi công cộng?
- Đó chính xác là câu hỏi được hỏi về FindFace, một ứng dụng nhận dạng khuôn mặt mới sử dụng ảnh hồ sơ của mạng xã hội hàng đầu của Nga để tìm danh tính của bất kỳ ai trong ảnh với tỷ lệ thành công 70% một cách vô lý
- Chìa khóa cho toàn bộ hoạt động là việc sử dụng mạng xã hội Vkontakte của Nga với sự hợp tác với một thuật toán tìm kiếm độc quyền được phát triển bởi những người đồng sáng lập, Alexander Kabakov (29 tuổi) và Artem Kukharenko (26 tuổi) của FindFace
- Sử dụng ảnh hồ sơ của 200.000 người dùng của Vkontakte, thuật toán của FindFace có thể tìm kiếm thông qua một cơ sở dữ liệu hơn một tỷ bức ảnh chỉ trong vài giây, chỉ sử dụng bốn máy chủ tiêu chuẩn
- NTech Lab, đã tạo ra FindFace, “upstaged” hơn 100 thuật toán nhận dạng khuôn mặt khác trong thách thức MegaFace của Đại học Washington bằng cách đạt được độ chính xác 73,3% trên một triệu khuôn mặt ; nó thậm chí còn đánh bại
“FaceNet” của Google mà trước đây đã đạt đến mức độ chính xác 99,63% ( pdf ) trong các thử nghiệm khác nhau
Trang 82.2 Ứng dụng:
Nó như con dao 2 lưỡi: Giúp chúng ta nhiều thứ nhưng vô tình nó sẽ dẫn đến một thảm họa vô cùng lớn đó là thảm họa bảo mật
Vài tháng trước tại Nga, một người đàn ông có tên Egor Tsvetko đã chụp hình những người lạ trên tàu điện ngầm St.Petersbug Sau đó, ông đã sử dụng một ứng dụng FindFace để nhận diện khuôn mặt của họ
Ông dùng những bức ảnh chụp từ tàu điện ngầm khớp với những khuôn mặt trên VK (phiên bản Nga của Facebook) rồi đưa vào album có tên "Khuôn mặt của bạn là dữ liệu lớn"
Ông cho biết: "Ông sẽ cảm thấy rất xấu hổ khi một người không quen biết có thể biết thông tin cá nhân của mình"
Một nhà phát triển phần mềm khác cũng đã sử dụng các ứng dụng để tìm tên của hai người phụ nữ mà ông đã chụp một bức ảnh sáu năm trước
FindFace được sử dụng rộng rãi ở Nga và cộng đồng đã thực hiện hơn 3 triệu tìm kiếm với hơn 100 triệu hồ sơ VK cùng những hình ảnh công khai, tỷ lệ tương thích thành công hơn 70%
III NHẬN DẠNG KHUÔN MẶT (FACE RECOGNITION - OPENCV):
1.Tìm hiểu chung:
Nhận dạng mặt người (Face recognition) là một lĩnh vực nghiên cứu của ngành Computer Vision, và cũng được xem là một lĩnh vực nghiên cứu của ngành Biometrics (tương tự như nhận dạng vân tay – Fingerprint recognition, hay nhận
Trang 9dạng mống mắt – Iris recognition) Xét về nguyên tắc chung, nhận dạng mặt có sự tương đồng rất lớn với nhận dạng vân tay và nhận dạng mống mắt, tuy nhiên sự khác biệt nằm ở bước trích chọn đặt trưng (feature extraction) của mỗi lĩnh vực Trong khi nhận dạng vân tay và mống mắt đã đạt tới độ chín, tức là có thể áp dụng trên thực tế một cách rộng rãi thì nhận dạng mặt người vẫn còn nhiều thách thức và vẫn là một lĩnh vực nghiên cứu thú vị với nhiều người So với nhận dạng vân tay và mống mắt, nhận dạng mặt có nguồn dữ liệu phong phú hơn (bạn có thể nhìn thấy mặt người ở bất cứ tấm ảnh, video clip nào liên quan tới con người trên mạng) và ít đòi hỏi sự tương tác có kiểm soát hơn (để thực hiện nhận dạng vân tay hay mống mắt, dữ liệu input lấy từ con người đòi hỏi có sự hợp tác trong môi trường
có kiểm soát)
Hiện nay các phương pháp nhận dạng mặt được chia thành nhiều hướng theo 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(still image based FR) là phổ biến nhất, tuy nhiên tương lai có lẽ sẽ là 3D FR (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 2 hướ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 hay chia 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ên các đặc điểm cục bộ (local feature based, như LBP, Gabor wavelets) và phương pháp lai (hybrid, là sự kết hợp của hai phương pháp toàn cục và local feature) Phương pháp dựa trên các đặc điểm cục bộ đã được chứng minh là ưu việt hơ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 (A never ending story) là sự phát triển của các phương pháp trích chọn đặc trưng (feature extractrion methods) được sử dụng trong các hệ thống dựa trên feature 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ận dạng: identification (xác định danh tính, bài toán 1-N), và verification (xác thực danh tính, bài toán 1-1) Trong bài toán identification, ta cần xác định danh tính của ảnh kiểm tra, còn trong bài toán verification ta cần xác định 2 ảnh có cùng thuộc về một người hay không
2 Các bước cơ bản của quá trình nhận dạng khuôn mặt:
- Trong quy trình xử lý và đưa ra kết quả của việc nhận diện khuôn mặt cần có nhiều bước, nhưng các bước cơ bản có thể giới thiệu như sau:
+ Bước 1: Face detection, tức là phát hiện phần ảnh mặt trong dữ liệu input (CSDL ảnh, video …) và cắt lấy phần ảnh mặt để thực hiện nhận dạng (face cropping)
+ Bước 2: Tiền xử lý ảnh (preprocessing) bao gồm các bước căn chỉnh ảnh (face image alignment) và chuẩn hóa ánh sáng (illumination normalization)
+ Bước 3: Trích chọn đặc điểm (feature extraction), ở bước này 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 –
Trang 10LBP, 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
+ Bước 4: , Kết quả là mỗi ảnh sẽ được biểu diễn dưới dạng một vector đặc điểm (feature vector), bước tiếp theo là bước nhận dạng (recognition) hay phân lớp (classification), tức là xác định danh tính (identity) hay nhãn (label) của ảnh – đó là ảnh của ai Tùy theo yêu cầu của dự án, vấn đề cần giải quyết mà chúng ta có phương án sử dụng thuật toán phù hợp Ví dụ: Nhận dạng giới tính, nhận dạng cảm xúc, độ tuổi,…
IV SẢN PHẨM CỦA NHÓM THỰC HIỆN
1 Cài đặt thư viện.
Chú thích: Trong source code của nhóm sử dụng 2 thư viện đó là
using Emgu.CV.Structure:
Một thư viện xử lý hình ảnh mạnh dành riêng cho ngôn ngữ C# Cho phép gọi được chức năng của OpenCV là từ NET
Có thể chạy trên mọi hệ điều hành như windown, linux, mac os, ios, android, windows phone
Các bước cài đặt thư viện :
B1: Cài đặt các tools
Trang 11B2: Thiết lập trong project
chọn tớiEmguCV\emgucv-windows-universal_version\bin\Emgu.CV.UI.dll > Open
Trang 12using System.Diagnostics: là một đường dẫn file không cần thư viện
2 Giải thích một số chức năng của các hàm chính trong chương trình:
Lấy các vecto riêng để tạo thành không gian riêng
Get hoặc set cho hình ảnh tương ứng
Trang 13Get or set đăt ngưỡng khoảng cách riêng
Lấy hình ảnh trung bình
Nhận các đặc điểm riêng của từng hình ảnh
Tạo một trình nhận dạng đối tượng bằng cách sử dụng dữ liệu tranning cụ thể và các tham số, nó sẽ luôn trả về đối tượng giống nhất, gần nhất
Trang 14Sắp xếp các hình ảnh riêng cho hình ảnh training cụ thể
Phân tách hình ảnh thành các đặc điểm riêng, sử dụng các vecto riêng cụ thể
Trang 15Cho giá trị riêng, tái tạo lại ảnh chiếu.
Lấy khoảng cách đặc trưng
Kiểm tra, tìm trong cơ sở dử liệu đối tượng gần nhất
Trang 16Cố gắng nhận ra hình ảnh và trả lại dãn nhãn của nó
3.SOURCE CODE:
Trang 174.Demo sản phẩm: