1. Trang chủ
  2. » Thể loại khác

BÁO CÁO ĐỒ ÁN CƠ SỞ 5 Đề tài :ỨNG DỤNG HỖ TRỢ CHĂM SÓC KHÁCH HÀNG SỬ DỤNG OPENCV. TS. Nguyễn Văn Lợi

66 3 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 66
Dung lượng 4,86 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trong vấn đề nhận dạng sinh trắc học con người, hiện nay có khá là nhiềuphương pháp để nhận dạng: nhận dạng vân tay, nhận dạng bàn tay, nhận dạng vân mắt,… Các phương pháp trên đã qua mộ

Trang 1

ĐẠI HỌC ĐÀ NẴNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

VIỆT-HÀN KHOA KHOA HỌC MÁY TÍNH

BÁO CÁO ĐỒ ÁN CƠ SỞ 5

Trang 2

LỜI CẢM ƠNTrước tiên, em xin phép bày tỏ lòng biết ơn chân thành và sâu sắc nhất tới Tiến sĩNguyễn Văn Lợi đã tận tình chỉ bảo, hướng dẫn, động viên và giúp đỡ em trong suốtquá trình thực hiện đề tài Em xin gửi lời cảm ơn sâu sắc tới quý thầy cô giáo trongKhoa khoa học máy tính của trường Đại học Công nghệ thông tin và truyền thôngViệt-Hàn – Đại học Đà Nẵng đã truyền đạt kiến thức quý báu cho em trong suốt quátrình thực hiện đồ án

Chúng em xin chân thành cảm ơn!

NHẬN XÉT CỦA CÁN BỘ HƯỚNG DẪN

Trang 3

Trang 4

MỤC LỤC

Chương 1 : GIỚI THIỆU BÀI TOÁN 0

1.1 Giới thiệu bài toán 0

1.2 Vai trò và ý nghĩa bài toán 0

1.3 Tìm hiểu một số hệ thống tương tự 1

Chương 2: NHẬN DIỆN KHUÔN MẶT TRONG OPENCV 2

2.1 Giới thiệu về OpenCV 2

2.2 Công nghệ và ngôn ngữ sử dụng 2

2.2.1 Ngôn ngữ Python 2

2.2.2 Thư viện PyQt5 2

2.2.3 Thư viện Pandas 2

2.2.4 Thư viện PIL 2

2.2.5 Thư viện NumPy 2

2.2.6 Cơ sở dữ liệu SQL Server 2

2.3 Thuật toán nhận diện khuôn mặt 6

2.3.1 EigenFaces Face Recognizer 18

2.3.2 FisherFaces Face Recognizer 18

2.4 Quy trình sử dụng khuôn mặt sử dụng OpenCV 18

2.4.1 Thu thập và tách mặt người trong ảnh 18

2.4.2 Tiền xử lý 18

2.4.1 Trính chọn đặc tính 18

2.4.2 Phân loại, nhận dạng 18

Chương 3: PHÂN TÍCH THIẾT KẾ HỆ THỐNG 27

3.1 Tổng quan về hệ thống 27

3.2 Tầng giao diện người dùng 27

3.2.1 Tổng quan tầng giao diện 18

3.2.2 Các module phía client 18

3.3 Tầng cơ sở dữ liệu 27

3.3.1 Tổng quan tầng cơ sở dữ liệu 18

3.3.2 Các module tầng cơ sở dữ liệu 18

Trang 5

3.4 Server 27

3.5 Tầng cơ sở dữ liệu 27

3.5.1 Bảng Customer 18

3.5.2 Bảng Employee 18

3.5.3 Bảng Item 18

3.5.4 Bảng Invoice_detail 18

3.5.5 Bảng Invoice_header 18

Chương 4: CÀI ĐẶT VÀ KIỂM THỬ ỨNG DỤNG 34

4.1 Cách thức cài đặt hệ thống 27

4.1.1 Pycharm Community Edition 18

4.1.2 SQL Server Management Studio 18

4.1.3 Python 3.6.4 18

4.1.4 OpenCV 3.4.1 18

4.1.5 Cài đặt các thư viện liên quan đến chương trình hỗ trợ Python và OpenCV 18

4.2 Demo một số hình ảnh từ hệ thống 27

4.2.1 Màn hình Config Customer 18

4.2.2 Màn hình Config Employee 18

4.2.3 Màn hình Config Item 18

4.2.4 Màn hình hiển thị giới thiệu về sản phẩm 18

4.2.5 Màn hình tổng quan 18

4.3 Kết quả kiểm thử một số chức năng 28

4.3 Sử dụng chương trình 28

4.4 Đánh giá chương trình 33

Chương 5: KẾT LUẬN 39

TÀI LIỆU THAM KHẢO 40

Trang 6

DANH SÁCH HÌNH VẼ

Hình 0 1 Nhận diện cơ thể con người thông qua các thuật toán 4

Hình 1 1: Nhận diện khuôn mặt con người sử dụng OpenCV khi nhìn thẳng 6 Hình 1 2: Nhận diện khuôn mặt con người sử dụng OpenCV khi theo các hướng khác nhau 7

Hình 1 3: Mô tả hệ thống Workforce Attendance 9

Hình 2 1: Kiến trúc và sự phát triển của OpenCV 14

Hình 2 2: Một số module trong OpenCV 15

Hình 2 3: Thành phần chính của khuôn mặt(Principal Components) 19

Hình 2 4: Hình ảnh mô tả thuật toán Fisher Faces 20

Hình 2 5: Tỉ lệ nhận dạng khi sử dụng thuật toán Eigenfaces và Fisherfaces 23

Hình 2 6: Mô tả giải thuật LBP 24

Hình 2 7: Hình ảnh sử dụng thuật toán LBP 25

Hình 2 8: Quy trình nhận diện trong OpenCV 26

Hình 2 9: Hình ảnh huấn luyện sau khi tách khuôn mặt ra khỏi ảnh 26

Hình 2 10: Quy trình tiền xử lý ảnh 27

Hình 2 11: Hình ảnh ví dụ giải thuật PCA 28

Hình 2 12: Hình ảnh nhận diện khách hàng với độ chính xác cao 29

Hình 3 1: Sơ đồ khối tổng quan hệ thống 31

Hình 3 2: Tổng quan tầng giao diện 33

Hình 3 3: Biểu đồ tuần tự mô đun khách hàng 34

Hình 3 4: Biểu đồ tuần tự mô đun nhân viên 37

Hình 3 5: Biểu đồ tuần tự mô đun hàng hóa 39

Hình 3 6: Biểu đồ tuần tự mô đun hóa đơn 41

Hình 3 7: Sơ đồ khối tầng cơ sở dữ liệu 44

Hình 3 8: Các thư mục chứa dữ liệu 45

Hình 3 9: Tổng quan tầng Server 45

Trang 7

Hình 3 10: Hình ảnh thư mục chứa các tệp dữ liệu txt 47

Hình 3 11: Lược đồ EER Hệ thống 48

Hình 3 12: Hình ảnh thông tin bảng customer 48

Hình 3 13: Hình ảnh thông tin bảng Employee 49

Hình 3 14: Hình ảnh thông tin bảng Item 50

Hình 3 15: Hình ảnh thông tin bảng Invoice_detail 50

Hình 3 16: Hình ảnh thông tin bảng Invoice_header 51

Hình 4 1: Địa chỉ tải về Pycharm 52

Hình 4 2: Hình ảnh giao diện Pycharm 53

Hình 4 3: Địa chỉ tải về SQL Server 54

Hình 4 4: Hình ảnh giao diện SQL Server 55

Hình 4 5: Địa chỉ tải về Python 55

Hình 4 6: Địa chỉ tải về OpenCV 56

Hình 4 7: Màn hình Config Customer 57

Hình 4 8: Màn hình Config Employee 58

Hình 4 9: Màn hình Config Item 59

Hình 4 10: Màn hình Config Invoice 60

Hình 4 11: Màn hình giới thiệu sản phẩm 61

Hình 4 12: Màn hình tổng quan 61

Hình 4 13: Nhận dạng theo khoảng cách Euclide 63

Hình 4 14: Kết quả nhận dạng đúng, trường hợp “dễ nhận dạng” 64

Hình 4 15: Kêt quả nhận dạng đúng, trường hợp: “khó nhận dạng” 64

Hình 4 16: Một số trường hợp nhận sai hoàn toàn: 65

Trang 8

Trong vấn đề nhận dạng sinh trắc học con người, hiện nay có khá là nhiềuphương pháp để nhận dạng: nhận dạng vân tay, nhận dạng bàn tay, nhận dạng vân mắt,

… Các phương pháp trên đã qua một thời gian dài phát triển nên đã đạt được nhữngthành công nhất định, và độ chính xác ngày càng được tăng lên một cách nhanh chóng.Tuy nhiên các phương pháp trên vẫn còn gặp phải một số hạn chế như sau:

Các hệ thống trên đòi hỏi người sử dụng phải tiếp xúc trực tiếp với hệ thống, người đó

ý thức được rằng mình đang được nhận dạng

Nhận dạng dựa vào vân tay, bàn tay, vân mắt,… không phải là cách tự nhiên màcon người sử dụng để nhận biết

Các hệ thống vân mắt, vân tay,… không phải bao giờ chúng ta cũng có thể lấyđược mẫu, số liệu từ đối tượng

Chính vì thế, một trong những bài toán đang rất được quan tâm hiện nay đó lànghiên cứu nhận dạng con người qua khuôn mặt Mặt dù độ chính xác chưa được caonhư các phương pháp đã kể trên(ví dụ nhân dạng qua vân tay, vân mắt), nhưng lạiđang được rất quan tâm hiện nay của các nhà khoa học vì một số lý do sau:

Giám sát các đối tượng một cách kín đáo

Các thuật toán khá phức tạp, nhưng được hỗ trợ một cách nhanh chóng bởi các

hệ máy tính có tốc độ xử lý cao

Trang 9

Với các dữ liệu từ camera số(hình ảnh, video), chúng ta có thể dễ dàng lấy đượcthông tin về đối tượng mà không cần tiếp xúc thực tế.

Một trong những bài toán nhận dạng con người được quan tâm nhất hiện nay đó

là nhận dạng qua khuôn mặt Vì nhận dạng qua khuôn mặt là cách mà con người sửdụng để phân biệt nhau Bên cạnh đó, ngày nay việc thu thập, xử lý thông tin qua ảnh

để nhận biết đối tượng đang được quan tâm và ứng dụng rộng rãi, Với phương phápnày, chúng ta có thể thu nhận được nhiều thông tin từ đối tượng mà lại không cần tácđộng nhiều đến đối tượng nghiên cứu Với sự phát triển của khoa học máy tính, bàitoán nhận dạng mặt người từ ảnh số đang có được môi trường phát triển hết sức thuậnlợi

Hình 0 1 Nhận diện cơ thể con người thông qua các thuật toán

Trong đề tài này, tôi tập trung nghiên cứu về nhận diện khuôn mặt và xác nhậndanh tính của con người tại cửa hàng

Bài toán đặt ra là có thể nhận diện được khách hàng với các thông tin như: têntuổi, nơi sống, số chứng minh thư nhân dân (CMTND) và lịch sử mua hàng Dữ liệu sẽđược tổng hợp và gửi về bộ phận xử quản lý và có sự phục vụ tốt nhất cho khách hàng.Trong bài toán này, các yếu tố như độ chính xác của dữ liệu, thời gian trễ, tần suất gửi

dữ liệu tới người quản lý Bằng các phần mềm trợ giúp, cũng như dữ liệu tìm hiểu, hệthống nhận diện khuôn mặt người còn ảnh hưởng bởi khá nhiều yếu tố:

- Độ tin cậy của dữ liệu

- Số lượng ảnh được huấn luyện (training)

- Khả năng xử lý dữ liệu lớn

Trang 10

- Mức độ ảnh hưởng của độ sáng.

Qua đó có thể đưa ra các đánh giá cũng như các thuật toán tốt hơn cho việc truyxuất và nhận diện khuôn mặt khách hàng Để có thể xử lý được bài toán trên, đồ án đềxuất hướng tiếp cận là sử dụng các kỹ thuật xử lý ảnh số Các ảnh số được thu thậpbằng camera và xử lý thông qua máy tính PC Đây là một hệ thống nhận dạng trựctiếp, nên sẽ yêu cầu độ chính xác cao và thời gian xử lý nhanh Bài toán nhận dạng mặtngười là sự kết hợp của hai bài toán:

- Bài toán xác định mặt người trong camera được trích xuất (Face Detection)

- Bài toán nhận dạng mặt người (Face Recognition)

Bài toán xác định mặt người là bài toán mang tính quyết định tới độ chính xác của hệthống Khuôn mặt được xác định với chất lượng cao sẽ mang lại được kết quả caotrong việc nhận dạng chính xác khách hàng Trong khuôn khổ thời gian cho phép, đồ

án đã hoàn thiện và xử lý được một số vấn đề về xử lý ảnh, và nhận diện khuôn mặt

Đi kèm theo đó, đồ án tìm hiểu về thu thập ảnh, các phương pháp tách mặt người, nhậndạng mặt người

Đồ án được trình bày trong 4 chương và các phụ lục kèm theo Nội dung cụ thểnhư sau:

Chương 1: Giới thiệu bài toán: Giới thiệu bài toán sẽ giải quyết Vai trò của

bài toán được đặt ra Tìm hiểu một số hệ thống tương tự, phân tích ưu và nhược điểmcủa hệ thống này Ý tưởng sẽ giải quyết và sự khác biệt với các hệ thống đã có

Chương 2: Nhận diện khuôn mặt trong OpenCV: Giới thiệu về OpenCV.

Quy trình nhận diện khuôn mặt sử dụng OpenCV Một số thuật toán phổ biến dùngtrong nhận diện khuôn mặt, ưu điểm và nhược điểm Thuật toán sẽ được sử dụng trong

hệ thống

Chương 3: Phân tích, thiết kế ứng dụng: Tổng quan về hệ thống, vẽ hình,

mô tả các chức năng và sự tương tác giữa các module chính Các chức năng phía máykhách và máy chủ, vẽ hình, cách thức phát triển các module và sự tương tác giữa cácmodule Mô tả cơ sở dữ liệu (CSDL) theo mô hình thực thể liên kết

Chương 4: Cài đặt và kiểm thử ứng dụng: Cách thức cài đặt hệ thống, demo

một số hình ảnh của ứng dụng và kết quả kiểm thử một số chức năng

Trang 11

Chương 1: GIỚI THIỆU BÀI TOÁN 1.1 Giới thiệu về bài toán

Hiện nay, vấn để kiểm soát anh ninh đang là một trong những vấn đề rất đượcquan tâm Bài toán nhận dạng vì vậy được quan tâm rất nhiều Một trong nhiều ứngdụng cụ thể liên quan tới xử lý thông tin qua hình ảnh là nhận diện khuôn mặt kháchhàng thông qua camera Việc phát hiện và truy xuất được dữ liệu của các khách hàngmột cách tự động giúp giảm thiểu thời gian thống kê, tính toán của con người Hệthống nhận diện khuôn mặt là một hệ thống có khả năng phân tích hình ảnh, phát hiệnkhách hàng và trích xuất thông tin lịch sử mua hàng của khách hàng một cách nhanhchóng

Chương này của đồ án sẽ giới thiệu bài toán nhận diện khuôn mặt, lên ý tưởngthực hiện và nêu ra ý nghĩa thực tiễn của bài toán Đồ án thực hiện tìm hiểu và xâydựng hệ thống nhận diện khuôn mặt dựa trên thư viện mã nguồn mở OpenCV1 Một sốyếu tốt ảnh hưởng đến kết quả nhận dạng đó là:

- Ánh sáng: Ảnh kỹ thuật số biểu diễn cường độ sáng của đối tượng, do đó khi ánh

sáng thay đổi, thông tin về đối tượng sẽ bị ảnh hưởng [15]

- Cự ly của đối tượng so với camera: khoảng cách đối tượng so với camera sẽ

xác định số pixel ảnh quy định nên khuôn mặt [15]

- Cảm xúc biểu cảm trên khuôn mặt: các nét biểu cảm cảm xúc trên khuôn mặt

gây ra nhiễu, việc loại nhiễu này vẫn chưa có phương pháp hiệu quả [15]

- Tư thế đứng của đối tượng (nghiêng, xoay,…): tư thế của đối tượng sẽ xác

định thông tin của đối tượng đó Việc tư thế thay đổi quá lớn sẽ làm thay phần lớnthông tin về đối tượng, dẫn đến kết quả nhận dạng sai [15]

- Trang phục của đối tượng: Kết quả nhận dạng có thể bị ảnh hưởng lớn nếu như

đối tượng có các trang phục khác biệt so với mẫu như đeo kính, đội mũ,… [15]

Trang 12

Hình 1 1: Nhận diện khuôn mặt con người sử dụng OpenCV khi nhìn thẳng

Hình 1 2: Nhận diện khuôn mặt con người sử dụng OpenCV khi theo các hướng khác nhau

Bài toán đặt ra như sau:

Tự động xác nhận những khách hàng đã đến cửa hàng dựa trên sự huấn luyên

dữ liệu hình ảnh đã có sẵn(training) dựa trên thư viện OpenCV và hệ thống có thể tìm kiếm thông tin, dữ liệu khách hàng Từ đó cửa hàng sẽ phân công các nhân viên liên quan đến để hỗ trợ khách hàng một cách nhanh chóng và chính xác Hệ thống có thể

Trang 13

hoạt động với số lượng lớn khách hàng từ 10 người trở lên đến cùng lúc, độ chính xác tương đối cao và an toàn.

Yêu cầu của ảnh đầu vào:

- Video hình ảnh khách hàng vào cửa hàng được lấy từ Camera kỹ thuật số, cóchứa hoặc không chứa đối tượng, được truyền về PC để lưu trữ, xử lý và phân tích

- Yêu cầu đối với video hình ảnh:

 Nền không đổi, ánh sáng tương đối ổn định, camera được đặt cố định

 Người cần nhận dạng đứng cách camera không quá xa (~1m), tư thế tươngđối thẳng và ngay ngắn

 Người cần nhận dạng không nên để tóc phủ mắt, không đeo kính (Yêu cầunày được đặt ra khi hệ thống sử dụng phương pháp tìm mắt để định vịkhuôn mặt)

Yêu cầu đầu ra:

- Nếu ảnh không chứa đối tượng, hoặc là người chưa có trong cơ sở dữ liệu(CSDL) (tương ứng với hệ số phần trăm chính xác) thì kết quả sẽ trả ra là không nhận

ra được người dùng

- Nếu ảnh chứa đối tượng và người đó có trong cơ sở dữ liệu, hệ thống đưa ra mànhình hình ảnh và thông tin, dữ liệu mua sắm của người dùng

Thời gian thực hiện:

Hệ thống này đang được dự kiến triển khai với các hệ thống cảnh báo tại các cửa

ra vào, trong đó khách hàng ra vào sẽ được chụp ảnh tại các cửa và so sánh với các ảnh

đã có trong cơ sở dữ liệu để đưa ra các cảnh báo cần thiết Với yêu cầu này, khi lượngngười ra vào không lớn thì ta có thể cho phép quá trình thu thập và nhận dạng diện ratrong khoảng thời gian tối đa <=3s Và trong hướng phát triển của đồ án, chúng tôi sẽnâng cao tốc độ xử lý và xử lý các thông báo, dữ liệu cho khách hàng một cách cụ thể

và chi tiết nhất

Trang 14

1.2 Vai trò và ý nghĩa bài toán

Hệ thống nhận diện khuôn mặt khách hàng có nhiều đóng góp quan trong việcgiải quyết các bài toán về quản lý nhân viên, khách hàng và hàng hóa trong cửa hàng.Đồng thời, nếu kết hợp được với hệ thống nhận dạng vân tay thì có thể xây dựng thànhcác hệ thống có ứng dụng thực tiễn trong đời sống con người như: Hệ thống xác nhậndanh tính tại các ngân hàng, hệ thống điểm danh tại các công ty… Các hệ thống nhưthế đã và đang được phát triển, ứng dụng ngày càng phổ biến ở Việt Nam và trên thếgiới

Việc xây dựng một hệ thống nhận khuôn mặt với độ chính xác cao mang lạinhững ý nghĩa sâu sắc Có thể kể đến là:

- Nhận dạng người A có phải là tội phạm truy nã hay không? Giúp cơ quan an ninhquản lý tốt con người Công việc nhận dạng có thể ở trong môi trường bình thườngcũng như trong bóng tối (sử dụng camera hồng ngoại) [10]

- Hệ thống quan sát, theo dõi và bảo vệ Các hệ thống camera sẽ xác định đâu làcon người và theo dõi con người đó xem họ có vi phạm gì không, ví dụ xâm phạm khuvực không được vào [11] …

- Lưu trữ (rút tiền ATM, để biết ai rút tiền vào thời điểm đó), hiện nay có tìnhtrạng những người bị người khác lấy mất thẻ ATM hay mất mã số PIN và những người

ăn cắp này đi rút tiền, hoặc những người chủ thẻ đi rút tiền nhưng lại báo cho ngânhàng là mất thẻ và mất tiền Các ngân hàng có nhu cầu khi có giao dịch tiền sẽ kiểmtra hay lưu trữ khuôn mặt người rút tiền để sau đó đối chứng và xử lý [12]

1.3 Tìm hiểu một số hệ thống tương tự

Phần này của đồ án sẽ đi tìm hiểu hệ thống nhận dạng khuôn mặt để điểm danh,chấm công nhân viên tại các trung tâm, phòng ban của công ty Hệ thống này đã đượctriển khai và ứng dụng trong thực tế

Đầu tiên, đồ án sẽ đi tìm hiểu giải pháp công nghệ nhận diện nhân viên, chấm công tạicác phòng ban… gọi là Workforce Attendance do tập đoàn FPT nghiên cứu và triểnkhai [16] Đây là một giải pháp hoàn hảo cho các doanh nghiệp muốn quản lý và giámsát các nhân viên, thời gian nghỉ, thời gian đi làm

Trang 15

Nguyên tắc hoạt động

Xác nhận là con người:

− Camera hỗ trợ chụp hình và ghi hình các góc cạnh của nhân viên

− Phần mềm Workforce Attendance sẽ giúp đào tạo lại dữ liệu nhân viên

Xác nhận danh tính nhân viên:

− Camera hỗ trợ chụp hình và ghi hình lại quá trình xác nhận thời gian đi làm

− Phần mềm Workforce Attendance giúp đếm chính xác thời gian đi làm và xácnhận đó là nhân viên nào

Mô tả hệ thống

Hình 1 3: Mô tả hệ thống Workforce Attendance

Chức năng chính

- Đếm chính xác số lượng nhân viên ra vào

- Quản lý hệ thống Camera từ xa, quản lý tập trung không giới hạn số lượngcamera

- Báo cáo tổng hợp điểm danh nhân viên vào/ra theo thời gian ngày/ tháng/ năm

- Quản lý thời gian vào/ra của từng nhân viên

- Chụp hình, quay clip tại thời điểm các nhân viên vào/ra để làm bằng chứng

Trang 16

Ưu điểm của hệ thống

- Giải pháp Đếm nhân viên hoàn toàn tự động

- Chụp hình camera tự động

- Ghi hình và xem lại theo từng sự kiện

- Quá trình nhận diện khuôn mặt được thực hiện trên máy chủ của công ty, và phầnmềm vẫn hỗ trợ hoạt động offline khi có sự cố về mạng Dữ liệu luôn được đồng bộtập trung về máy chủ để lưu trữ và backup [15]

Trong khuôn khổ thời gian cho phép, dựa trên những tìm hiểu về các hệ thống đã

có sẵn trước đó, đồ án đã xây dựng một hệ thống nhận diện khuôn mặt khách hàng Hệthống này ở mức cơ bản và còn hạn chế về tốc độ xử lý và độ chính xác ảnh trong nhận diện Trong phần tiếp theo, nội dung đồ án sẽ tóm tắt ý tưởng xây dựng hệ thống này

Các hệ thống trên đây đều có khả năng nhận diện khuôn mặt, nhưng ở môi

trường ánh sáng và huấn luyện (training) ảnh không quá nhiều Ảnh được dùng trong

hệ thống Workforce Attendance cũng là ảnh màu, thế nên sẽ xử lý kém hơn trong

trường hợp thiếu ánh sáng (Ảnh kỹ thuật số biểu diễn cường độ sáng của đối tượng, do

đó khi ánh sáng thay đổi, thông tin về đối tượng sẽ bị ảnh hưởng)

Đề tài nghiên cứu một hướng tiếp cận khác trong nhận diện khuôn mặt người: nhận diện và thống kê khách hàng dựa trên kỹ thuật LBP(Local Binary Patterns) [19]

Kỹ thuật này sẽ chụp ảnh khách hàng lại, và chuyển về dạng ảnh trắng đen, sau đó sẽ tích hợp và chuyển thành các đoạn mã dựa trên khuôn mặt khách hàng Chính vì thế,

dù chụp trong điều kiện thiếu sáng, hệ thống vẫn có thể nhận diện khách hàng một cách chính xác hơn

Vì thời gian có hạn, nên hệ thống còn nhiều hạn chế, cụ thể là chưa làm được ứng dụng trên mobile để có thể truyền thông tin đến nhân viên một cách nhanh nhất, giao diện còn chưa được tối ưu, chưa tự gửi email cảm ơn khách hàng sau mỗi lần đến mua sắp tại cửa hàng

Tóm tắt:

Trong chương 1 này, chúng tôi đã giới thiệu sơ qua về tổng quan hệ thống, vai trò, ý nghĩa đến thực tế, phân tích ưu, nhược điểm của một số hệ thống tương tự, và ý tưởng sẽ giải quyết trong đề tài

Trang 17

Trong chương tới, chúng tôi sẽ giới thiệu tổng quan về OpenCV, về quá trình nhận diện khuôn mặt trong OpenCV như thế nào, và về ưu nhược điểm của OpenCV.

Trang 18

CHƯƠNG 2 NHẬN DIỆN KHUÔN MẶT TRONG OPENCV

Trong chương này, chúng tôi sẽ giới thiệu tổng quan về OpenCV, các quy trìnhnhận diện gương mặt có sử dụng OpenCV và một số thuật toán được áp dụng vàotrong việc nhận diện khuôn mặt

2.1 Giới thiệu về OpenCV

Thị giác máy tính (Computer Vision) là một lĩnh vực bao gồm các phương phápthu nhận, xử lý ảnh kỹ thuật số, phân tích và nhận dạng các hình ảnh và, nói chung là

dữ liệu đa chiều từ thế giới thực để cho ra các thông tin số hoặc biểu tượng, ví dụ trongcác dạng quyết định Việc phát triển lĩnh vực này có bối cảnh từ việc sao chép các khảnăng thị giác con người bởi sự nhận diện và hiểu biết một hình ảnh mang tính điện tử

Sự nhận diện hình ảnh có thể xem là việc giải quyết vấn đề của các biểu tượng thôngtin từ dữ liệu hình ảnh qua cách dùng các mô hình được xây dựng với sự giúp đỡ củacác ngành lý thuyết học, thống kê, vật lý và hình học

Thị giác máy tính cũng được mô tả là sự tổng thể của một dải rộng các quá trình

tự động và tích hợp và các thể hiện cho các nhận thức thị giác Nếu như bằng cặp mắtcủa mình, con người có thể thu nhận hình ảnh từ môi trường xung quanh, biết đượcmàu sắc của vật, hình dáng của vật và vô số thông tin khác để có những phản ứng,hành động trong môi trường sống thì thị giác máy tính cũng vậy, chỉ có điều cặp mắtcủa máy tính giờ đây được thay bằng những thiết bị điện tử khác như camera, sensorhồng ngoại chẳng hạn Bằng hệ thống cảm biến này, máy sẽ thu thập thế giới đachiều và lưu trữ những gì thu tập được dưới dạng ảnh số Những ảnh này sau đó được

xử lý, phân tích và trích chọn ra những thông tin cần thiết giúp máy hiểu được nó đangnhìn thấy gì, cần phải làm gì

OpenCV (OpenSource Computer Vision) là một thư viện mã nguồn mở Dự án

về OpenCV được khởi động từ những năm 1999, đến năm 2000 nó được giới thiệutrong một hội nghị của IEEE về các vấn đề trong thị giác máy và nhận dạng, tuy nhiênbản OpenCV 1.0 mãi tới tận năm 2006 mới chính thức được công bố và năm 2008 bản1.1 pre-release) mới được ra đời OpenCV có khả năng nhúng vào trong các chươngtrình có khả năng nhận diện hình ảnh của máy tính Nó bao gồm khả năng tiên tiến nhưphát hiện khuôn mặt, theo dõi khuôn mặt, nhận diện khuôn mặt… Ngoài ra, nó cung

Trang 19

cấp rất nhiều các thuật toán xử lý ảnh thông qua các hàm API OpenCV là sản phẩm đãđược cấp phép BSD, chính vì thế nên OpenCV giúp các doanh nghiệp có dễ dàng sửdụng và sửa đổi mã OpenCV được thiết kế cho hiệu quả tính toán và tập trung mạnh

mẽ vào các ứng dụng thời gian thực(real-time) OpenCV được phát triển nhờ vào tínhnăng xử lý nhiều lõi của hệ thống Thư viện OpenCV cung cấp cho người dùng cáccấu trúc dữ liệu, đối tượng và hàm bằng cách khai báo nguyên mẫu (prototype) củachúng trong các tập tin thư viện C/C++ và định nghĩa chi tiết trong các tập tin mãnguồn [20]

Hình 2 1: Kiến trúc và sự phát triển của OpenCV

Tháng 10 năm 2009, bản OpenCV thế hệ thứ hai ra đời thường gọi là phiên bản2.x), phiên bản này có giao diện của C++ (khác với phiên bản rước có giao diện của C)

và có khá nhiều điểm khác biệt so với phiện bản thứ nhất Thư viện OpenCV ban đầuđược sự hỗ trợ từ Intel, sau đó được hỗ trợ bở Willow Garage , một phòng thí nghiệmchuyên nghiên cứu về công nghệ robot Cho đến nay, OpenCV vẫn là thư viện mở,được phát triển bởi nguồn quỹ không lợi nhuận (none -profit foundation) và được sự

hư ởng ứng rất lớn của cộng đồng [20] Được viết bằng tối ưu hóa C/C++, thư viện cóthể tận dụng lợi thế của xử lý đa lõi Hiện nay, OpenCV được sử dụng trên khắp thếgiới với cộng đồng hơn 47 nghìn người dùng và số lượng download vượt quá 6 triệulần OpenCV hỗ trợ đa nền tảng Nó hỗ trợ cả Windows và Linux, và gần đây hơn là

Trang 20

MacOSX Phạm vi sử dụng mở rộng từ nghệ thuật tương tác, cho đến lĩnh vực khaithác mỏ, bản đồ trên web hoặc công nghệ robot.

OpenCV bao gồm nhiều module khác nhau, mỗi module có các chức năng riêngbiệt và bổ sung cho nhau, sau đây là một số module chính hay được sử dụng [21]:

- Core: cung cấp cho người dùng cấu trúc dữ liệu cơ sở và các tính năng, trong khithành phần "Imgproc" có tính năng xử lý hình ảnh, bao gồm lọc ảnh (cả tuyến tính vàphi tuyến tính), cũng như các tuỳ chọn chỉnh sửa ảnh khác (thay đổi kích thước, biếndạng ) và chuyển đổi không gian màu

- Highgui: Đây là một module cho phép tương tác với người dùng trên UI (User

Interface) như hiển thị hình ảnh, video capturing

- Calib3d: bao gồm nhiều thuật toán hình học đa chiều (multiple-view), cung cấpmột số tính năng chẳng hạn như hiệu chỉnh camera hoặc xây dựng lại đồ hoạ 3D

- Features2d: Module tìm các đặc trưng (feature) của hình ảnh Trong module có

kế thừa các thuật toán rút trích đặc trưng như PCA…

- Video: Module phân tích video gồm ước lượng chuyển động, theo dõi đối tượng,phương pháp tách cảnh nền , và các thuật toán theo dõi đối tượng (object tracking)

- Objdetect: Module cho việc phát hiện các đối tượng như khuôn mặt, đôi mắt,cốc, người, xe hơi, … trong hình ảnh

- GPU: Tăng tốc độ CUDA (Compute Unified Device Architecture - Kiến trúc

thiết bị tính toán hợp nhất)

- Imgproc: Module các chức năng xử lý hình ảnh.

Hình 2 2: Một số module trong OpenCV

Trang 21

2.2 Công nghệ và ngôn ngữ sử dụng

2.2.1 Python

Python là một ngôn ngữ lập trình hướng đối tượng rất thông dụng dùng để viếtcác tiện ích hệ thống và các đoạn mã trên Internet Nó cũng được sử dụng như ngônngữ kết dính đóng vai trò tích hợp C và C++ Được tạo ra bởi Guido van Rossum tạiAmsterdam năm 1990 Python hoàn toàn tạo kiểu động và dùng cơ chế cấp phát bộnhớ tự động Python được phát triển trong một dự án mã mở, do tổ chức phi lợi nhuậnPython Software Foundation quản lý Phiên bản mới nhất của Python hiện tại (thờiđiểm viết bài) là bản 3.4.x

Python là ngôn ngữ có hình thức khá đơn giản và rõ ràng, do đó tạo nên sự dễdàng tiếp cận cho những lập trình viên mới bắt đầu Ban đầu, Python được phát triển

để chạy trên nền Unix Nhưng rồi theo thời gian, nó đã phát triển sang mọi hệ điềuhành từ MS-DOS đến Mac OS, OS/2, Windows, Linux và các hệ điều hành khác thuộc

họ Unix

Ưu điểm:

- Đơn giản: Cú pháp đơn giản giúp cho người lập trình dễ dàng đọc và tìm hiểu.

- Tốc độ: Python có tốc độ xử lý nhanh hơn so với ngôn ngữ PHP.

- Tương tác: Chế độ tương tác cho phép người lập trình thử nghiệm tương

tác sửa lỗi của các đoạn mã

- Chất lượng: Thư viện có tiêu chuẩn cao, Python có khối cơ sở dữ liệu khá lớn

nhằm cung cấp giao diện cho tất cả các CSDL thương mại lớn

- Thuận tiện: Python được biên dịch và chạy trên tất cả các nền tảng lớn

hiện nay

- Mở rộng: Với tính năng này, Python cho phép người lập trình có thể thêm hoặc

tùy chỉnh các công cụ nhằm tối đa hiệu quả có thể đạt được trong công việc

- GUI Programming: Giúp cho việc thực hiện ảnh minh hoạ di động một cách tự

nhiên và sống động

Nhược điểm:

Trang 22

Tất cả chúng ta đều biết không có một sản phẩm nào là hoàn hảo tuyệt đối 100%,

nó luôn luôn tồn tại những nhược điểm và Python cũng không ngoại lệ Mặc dù là mộtngôn ngữ được giới lập trình yêu thích nhưng nó vẫn có những mặt hạn chế nhất địnhnhư sau:

- Python không có các thuộc tính như: protected, private hay public, không có

có thể phân tích dễ dàng hơn

2.2.4 PIL

PIL thiết lập chất lượng được sử dụng để xây dựng sự lượng tử hóa table Tronglibjpeg chất lượng số "quy mô" các giá trị table mẫu (từ đặc điểm kỹ thuật JPEG phầnK.1) Trong librairies khác đó là khác nhau bàn gán cho phẩm chất khác nhau (ví dụ:Photoshop, các máy ảnh kỹ thuật số)

Vì vậy, trong những người khác điều kiện, chất lượng tương đương với bảng sựlượng tử hóa, do đó, nó là phức tạp hơn sau đó chỉ cần một số Nếu bạn muốn lưu thayđổi hình ảnh của bạn với cùng một "chất lượng", bạn chỉ cần sử dụng cùng một bảng

sự lượng tử hóa May mắn thay, sự lượng tử hóa table là embeded trong mỗi JPEG.Thật không may, nó không phải là không thể chỉ định một table sự lượng tử hóa khitiết kiệm trong PIL cjpeg, một tiện ích dòng command đi kèm với libjpeg, có thể làmđiều đó

Trang 23

2.2.5 NumPy

Numpy (viết tắt của Nummerical Python) là một thư viện không thể thiếu khi chúng ta xây dựng các ứng dụng máy học trên Python Numpy là một package chủ yếucho việc tính toán khoa học trên Python Vì Numpy hỗ trợ mạnh mẽ việc tính toán với matrix, vector và các các hàm đại số tuyến tính cơ bản nên nó được sử dụng nhiều trongviệc implement các thuật toán Machine Learning

Trong numpy, chiều của mảng gọi là axes; trong khi số chiều gọi là rank Thư viện chính trong numpy là các đối tượng mảng (array) Mảng (array) tương tự như list

ở Python với điều kiện là mọi phần tử trong array phải có cùng kiểu dữ liệu Array có

thể thao tác với số lượng lớn dữ liệu số, thường là float hay int, và hiệu quả hơn trên danh sách rất nhiều Lớp thường dùng trong numpy là ndarray (n-dimentional array).

2.2.6 SQL Server

SQL Server là một hệ quản trị CSDL quan hệ(Relational Database Management System) sử dụng câu lệnh SQL(Transact-SQL) để trao đổi dữ liệu giữa máy client và máy cài SQL Server Một RDBMS bao gồm các CSDL(databases), database engine vàcác ứng dụng dùng để quản lý dữ liệu và các bộ phân khác trong RDBMS[15]

SQL Server được tối ưu để có thể chạy trên môi trường CSDL rất lớn lên đến Tera-Byte và có thể phục vụ cùng lúc cho hàng ngàn người dùng SQL Server có thể kết hợp ăn ý với các server khác như Microsoft Internet Information Server(IIS), E-Commerce Server, Proxy Server

Lý do chọn SQL Server cho hệ thống: do cấu trúc dữ liệu và công thức tính toán phức tạp, SQL Server cùng ngôn ngữ SQL có thể đáp ứng được yêu cầu về hiệu suất tính toán Ngoài ra SQL Server cung cấp nhiều giải pháp tạo và hiển thị báo cáo từ những dữ liệu đã được tính toán, điển hình là SQL Server Reporting Service (SSRS) – công cụ chuyên biệt cho việc tạo báo cáo dữ liệu Bên cạnh đó SQL Server phù hợp cho việc quản trị dữ liệu cho doanh nghiệp cỡ vừa và nhỏ

2.3 Thuật toán dùng trong nhận diện khuôn mặt

Kể từ phiên bản OpenCV 2.4, hiện nay OpenCV đã được hỗ trợ với lớp

FaceRecognizer để có thể nhận diện khuôn mặt, vì vậy chúng ta có thể bắt đầu sử dụngcác thuật toán để có thể nhận diện khuôn mặt Các thí nghiệm trong [4] đã chỉ ra rằng

Trang 24

ngay cả trẻ từ một đến ba ngày tuổi cũng có thể phân biệt được các gương mặt mà chúng đã tiếp xúc Vì vậy, làm thế nào để có thể huấn luyện được cho một máy tính làm những điều như vậy? Các tính năng bên trong (mắt, mũi, miệng) hoặc các tính năng bên ngoài (đầu, chân tóc) có được sử dụng để nhận dạng khuôn mặt thành công không? Làm cách nào để phân tích hình ảnh và bộ não mã hóa nó như thế nào? Một sốnghiên cứu của David Hubel và Torsten Wiesel [2] đã chỉ rằng bộ não của chúng ta cócác tế bào thần kinh chuyên biệt có thể phân biệt các đặc điểm cụ thể của một địa điểm, chẳng hạn như đường kẻ, cạnh, góc hoặc chuyển động Vì chúng ta không thấy thế giới như những mảnh phân tán, vỏ não thị giác của chúng ta bằng cách nào đó phảikết hợp các nguồn thông tin khác nhau thành các mẫu hữu ích Nhận diện khuôn mặt

tự động là việc trích xuất các đặc điểm cụ thể từ một hình ảnh, đưa chúng vào một đại diện hữu ích và thực hiện một số loại phân loại trên chúng

Nhận dạng khuôn mặt dựa trên các đặc điểm hình học của khuôn mặt có lẽ là cáchtiếp cận trực quan nhất để nhận diện khuôn mặt Một trong những hệ thống nhận dạng khuôn mặt tự động đầu tiên được mô tả trong [5]: các điểm đánh dấu (vị trí của mắt, tai, mũi, ) được sử dụng để xây dựng một vector đặc trưng (khoảng cách giữa các điểm, góc giữa chúng, ) Quá trình nhận diện khuôn mặt được thực hiện bằng cách tính toán khoảng cách euclide giữa các vector đặc trưng của một đầu dò và hình ảnh tham chiếu Cách làm như vậy sẽ ít ảnh hưởng bởi sự thay đổi ánh sáng, nhưng có mộtnhược điểm lớn: việc tìm và đánh dấu chính xác các điểm đánh dấu là khá phức tạp, ngay cả với các thuật toán hiện đại ngày nay Một số công trình mới nhất về nhận diện khuôn mặt hình học được thực hiện trong [6]

Hiện nay, một số thuật toán nhận diện khuôn mặt đã được hỗ trợ và hoàn thiện có thể kể đến như:

- Eigenfaces

- Fisherfaces

- Local Binary Patterns Histograms

2.3.1 EigenFaces Face Recognizer

Thuật toán này xem xét không phải tất cả các bộ phận của mặt đều quan trọng vàhữu ích như nhau Khi bạn nhìn vào một trong những người cần nhận diện, bạn nhận

Trang 25

ra anh ta bằng các đặc điểm khác biệt như mắt, mũi, má, trán và cách chúng thay đổiđối với những người khác nhau Vì vậy, bạn nên tập trung vào các sự thay đổi củakhuôn mặt Ví dụ, từ mắt đến mũi có một sự thay đổi đáng kể và giống như trường hợp

từ mũi đến miệng Khi bạn nhìn vào nhiều khuôn mặt bạn so sánh chúng bằng cáchnhìn vào các phần của khuôn mặt bởi vì những phần này là những thành phần hữu íchnhất và quan trọng nhất của khuôn mặt Sự thay đổi sẽ giúp bạn phân biệt khuôn mặtnày với mặt khác Đây chính là cách mà thuật toán EigenFaces Face Recognizer sẽhoạt động đối với công việc nhận dạng

Nhận diện khuôn mặt của EigenFaces Face Recognizer xác định các hình ảnhđược đào tạo của những người đã có cơ sở dữ liệu và cố gắng trích xuất các thànhphần quan trọng và hữu ích (các thành phần bắt kịp sự khác biệt / thay đổi tối đa) vàloại bỏ phần còn lại của các thành phần Bằng cách này nó không chỉ trích ra các thànhphần quan trọng từ dữ liệu đào tạo mà còn tiết kiệm bộ nhớ bằng cách loại bỏ cácthành phần ít quan trọng hơn Những thành phần quan trọng sẽ được trích xuất đượcgọi là các thành phần chính Dưới đây là một hình ảnh hiển thị các thành phần chínhtrích ra từ một danh sách các khuôn mặt

Hình 2 3: Thành phần chính của khuôn mặt(Principal Components)

Mô tả thuật toán [17]:

Gọi là một vector ngẫu nhiên với các phần tử

1 Tính trung bình :

Trang 26

2 Tính toán ma trận hiệp phương sai S:

3 Tính toán các giá trị riêng và các giá trị riêng của :

4 Sắp xếp các giá trị riêng biệt giảm dần theo giá trị riêng của chúng Các thành phầnchính của là các eigenvectors tương ứng với giá trị riêng lớn nhất

Các thành phần chính của của vector được tính như sau: với

.Việc tính toán PCA dùng bởi công thức: với Phương thức Eigenfaces sau đó thực hiện nhận dạng khuôn mặt bằng cách:

- Chiếu tất cả các mẫu huấn luyện vào không gian con PCA

- Chiếu hình ảnh truy vấn vào không gian con PCA

- Tìm dữ liệu gần nhất với các hình ảnh được huấn luyện và hình ảnh truy vấn.Hãy tưởng tượng chúng ta có 400 hình ảnh có kích thước 100 x 100 pixel Phântích thành phần chính giải quyết ma trận phương sai , với

trong ví dụ này Chúng ta sẽ phải xử lý 10.000 lần 10000

ma trận(khoảng 0,8 GB dữ liệu) Giải quyết vấn đề này là không khả thi, vì vậy chúng

ta sẽ cần phải áp dụng một mẹo Từ các bài học đại số tuyến tính, ma trận M x N vớiM> N chỉ có thể có các giá trị riêng không phải N - 1 Vì vậy, có thể thực hiện phântích tỷ lệ riêng có kích thước N x N thay thế:

và nhận được các eigenvector gốc của với phép nhân trái của ma trận dữliệu:

Trang 27

Các eigenvectors kết quả là kết quả trực giao, để có được các eigenvectors trựcgiao, chúng cần phải được chuẩn hóa theo chiều dài đơn vị [7].

2.3.2 FisherFaces Face Recognizer

Thuật toán này là một phiên bản cải tiến của thuật toán EigenFaces Face

Recognizer Thuật toán sẽ nhìn vào tổng thể các khuôn mặt của những người sử dụng

cùng một lúc và tìm ra các thành phần chính và quan trọng nhất ra để phân biệt Bằngcách này sẽ giảm thiểu thời gian xác nhận các thành phần bớt quan trọng hơn nhưngvẫn tìm ra những nét đặc trưng nhất

Cách tiếp cận này có một số nhược điểm, ví dụ như các hình ảnh có những thayđổi về sự sắc nét (như thay đổi ánh sáng) dẫn đến ảnh hưởng hình ảnh nhận diện Cuốicùng, các thành phần chính của khuôn mặt bạn sẽ đại diện cho những sự thay đổi nhẹkhông quá quan trọng, FisherFaces Face Recognizer thay vì trích xuất các tính nănghữu ích đại diện cho tất cả các khuôn mặt của tất cả mọi người, nó chiết xuất các tínhnăng hữu ích mà phân biệt một người từ những người khác

Dưới đây là một hình ảnh của các tính năng trích ra bằng cách sử dụng thuật toánFisherfaces

Hình 2 4: Hình ảnh mô tả thuật toán Fisher Faces

Mô tả thuật toán [17]:

Trang 28

Gọi X là một vector ngẫu nhiên với các mẫu được vẽ từ các lớp c:

Các ma trận phân tán SB và SW được tính như sau:

, trong đó là tổng giá trị trung bình:

Và là giá trị trung bình của lớp :

Thuật toán Fisher sẽ tìm kiếm một phép chiếu W, tối đa hóa tiêu chí phân tách lớp:

Theo [8], một giải pháp cho vấn đề tối ưu hóa này được đưa ra bằng cách giải quyết

vấn đề chung về Eigenvalue:

Xếp hạng tối đa , với mẫu và lớp Trong các vấn đề nhận biết mẫu,

số lượng mẫu hầu như luôn luôn là nhỏ hơn so kích thước của dữ liệu đầu vào (sốpixel), do đó ma trận phân tán trở thành số ít Trong [8] điều này đã được giảiquyết bằng cách thực hiện phân tích thành phần chính trên dữ liệu và chiếu các mẫuvào không gian chiều Phân tích tuyến tính sau đó được thực hiện trên dữ liệu

bị giảm, bởi vì không còn là số ít nữa

Vấn đề tối ưu hóa sau đó có thể được viết lại như sau:

Trang 29

Ma trận biến đổi W, mà dự án một mẫu vào không gian chiều (c-1) sau đó được chobởi:

2.3.3 Local Binary Patterns Histograms (LBPH) Face Recognizer

Phương pháp Local Binary Patterns Histograms (LBPH) Face Recognizer đã

đượ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 khuôn mặt là sự phát triển của cácphươ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ácthực danh tính, bài toán 1-1) Trong bài toán identification, ta cần xác định danh tínhcủ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

Chúng ta biết rằng Eigenfaces và Fisherfaces đều bị ảnh hưởng bởi ánh sáng và trongthực tế chúng ta không thể đảm bảo điều kiện ánh sáng hoàn hảo Nhận diện khuônmặt LBPH là một cải tiến để khắc phục nhược điểm này Ý tưởng là không nhìn vàohình ảnh như một tổng thể thay vì tìm thấy các đặc điểm của một hình ảnh LBPHalogrithm cố gắng tìm cấu trúc cục bộ của một hình ảnh và nó thực hiện điều đó bằngcách so sánh mỗi pixel với các điểm ảnh lân cận của nó

Bạn không thể đảm bảo cài đặt ánh sáng hoàn hảo trong hình ảnh của bạn hoặc 10 hìnhảnh khác nhau của một người Vậy nếu chỉ có một hình ảnh cho mỗi người thì sao?Phương thức Eigenfaces có tỷ lệ nhận dạng 96% trên cơ sở dữ liệu Facedatabase của

AT & T Vậy chúng ta thực sự cần bao nhiêu hình ảnh để có được ước tính hữu íchnhư vậy? Dưới đây là tỷ lệ nhận dạng hạng 1 của phương pháp Eigenfaces vàFisherfaces trên cơ sở dữ liệu Facedatabase của AT & T:

Trang 30

Hình 2 5: Tỉ lệ nhận dạng khi sử dụng thuật toán Eigenfaces và Fisherfaces

Vì vậy, để có được tỷ lệ nhận dạng tốt, bạn sẽ cần ít nhất 8 (±1) hình ảnh cho mỗingười và phương pháp Fisherfaces không thực sự hữu ích ở đây Thí nghiệm trên làkết quả đã được xác thực qua nhiều lần thử nghiệm [18] Vì vậy, một số nghiên cứutập trung vào việc trích xuất các đặc điểm từ hình ảnh Ý tưởng là không xem toàn bộhình ảnh dưới dạng vectơ, nhưng chỉ mô tả các đặc điểm cục bộ của một đối tượng Ýtưởng cơ bản của mô hình nhị phân cục bộ là tóm tắt cấu trúc cục bộ trong một hìnhảnh bằng cách so sánh từng pixel với vùng lân cận của nó Lấy một điểm ảnh làmtrung tâm và so sánh với điểm ảnh lân cận Nếu cường độ của điểm ảnh trung tâm lớnhơn hàng xóm của nó, thì biểu thị nó bằng 1 và bằng 0 nếu ngược lại Mỗi pixel sẽđược biểu hiện thành một chuỗi nhị phân, giống như 11001111 Vì vậy, với 8 pixelxung quanh bạn sẽ kết thúc với 2 ^ 8 kết hợp có thể, được gọi là mô hình nhị phân cục

bộ hoặc đôi khi được gọi là mã LBP Toán tử LBP đầu tiên được mô tả đã sử dụngvùng lân cận 3 x 3 cố định giống như sau:

Trang 31

Hình 2 6: Mô tả giải thuật LBP

Mô tả thuật toán [17]:

Công thức tổng quát của toán tử LBP:

, với (xc, yc) làm pixel trung tâm với cường độ ic và in là cường độ của pixel lân cận s

là hàm ký hiệu được định nghĩa:

Mô tả này cho phép bạn chụp các chi tiết có kích thước rất nhỏ trong hình ảnh

Đối với một điểm cho trước (xc, yc) với vị trí lân cận (xp, yp), p P có thể được tínhbằng công thức như sau:

Trong đó R là bán kính của đường tròn và P là số điểm mẫu

Toán tử là phần mở rộng của các mã LBP ban đầu, vì vậy nó đôi khi được gọi làExtended LBP Nếu một điểm tọa độ trên vòng tròn không tương ứng với tọa độ hìnhảnh, điểm của điểm sẽ được nội suy Khoa học máy tính có một loạt các lược đồ nộisuy thông minh, việc triển khai OpenCV thực hiện một phép nội suy song tuyến:

Theo định nghĩa, toán tử LBP rất chặt chẽ so với các phép biến đổi thang độ xám đơnđiệu Chúng ta có thể dễ dàng xác minh điều này bằng cách nhìn vào hình ảnh sau khi

đã áp dụng thuật toán LBP

Trang 32

Hình 2 7: Hình ảnh sử dụng thuật toán LBP

2.4 Quy trình nhận diện gương mặt sử dụng OpenCV

Do yêu cầu ngày càng tăng của các hệ thống nhận dạng dữ liệu, Face Recognitiongần đây đã trở thành một lĩnh vực nghiên cứu rất phổ biến Một loạt các thuật toán đểnhận diện khuôn mặt đã được đề xuất và một số phương pháp đánh giá cũng đã được sửdụng để đánh giá các thuật toán này Tuy nhiên, các hệ thống hiện tại vẫn cần phảiđược cải tiến để có thể thực hiện được trong thực tế Thuật toán khi nhận diện khuônmặt được sử dụng trong đồ án của chúng tôi sẽ thực hiện theo quy trình như sau:

Hình 2 8: Quy trình nhận diện trong OpenCV

Trang 33

2.4.1 Thu thập và tách mặt người trong ảnh

Bước đầu tiên cần thực hiện là tạo cơ sở dữ liệu ảnh của khách hàng: Thu thập vàtách mặt người trong ảnh thành các ảnh huấn luyện

Hình 2 9: Hình ảnh huấn luyện sau khi tách khuôn mặt ra khỏi ảnh

2.4.2 Tiền xử lý

- Nhiệm vụ chính: Tách mặt ra khỏi ảnh và chuẩn hóa ảnh

- Đầu vào: Chuẩn hóa ảnh đầu vào, là các ảnh được trích xuất trực tiếp từ camera,webcam (có độ phân giải là 600x600 pixel)

- Đầu ra: Ảnh mặt được tách khỏi nền và được chuẩn hóa

- Chức năng của bước tiền xử lý:

 Tách mặt người ra khỏi ảnh

 Chuẩn kích thước ảnh về 230x230 pixel

 Căn tư thế thẳng đứng (xoay ngang theo hai đường nối mắt)

 Chuẩn ánh sáng

 Chuẩn mức xám

 Lọc nhiễu

Ngày đăng: 27/11/2021, 08:40

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w