Tải bản đầy đủ (.docx) (17 trang)

FACERECOGNITION OPENCV trí tuệ nhân tạo

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (862.48 KB, 17 trang )

Trường Đại Học Sư Phạm Thành Phố Hồ Chí Minh
KHOA CÔNG NGHỆ THÔNG TIN


BÁO CÁO ĐỀ TÀI

FACERECOGNITION - OPENCV
MÔN: TRÍ TUỆ NHÂN TẠO

GVHD: Ths. Nguyễn Đình Hiển
Nhóm Sinh Viên:

TP.Hồ Chí Minh, 2018

1


LỜ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.

2


MỤC LỤC

3


I. 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.
4



-

2. Ứ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.

5


Ư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.

6


2. 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.

7


2.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

8


dạ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 –

9


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.
+ 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

10


B2: Thiết lập trong project

chọn tớiEmguCV\emgucv-windows-universal_version\bin\Emgu.CV.UI.dll >
Open

11


using 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

12


Get 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

13




Sắ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ể.

14


Cho 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.

15



Cố gắng nhận ra hình ảnh và trả lại dãn nhãn của nó
3.SOURCE CODE:

16


4.Demo sản phẩm:

---HẾT---

17



×