1. Trang chủ
  2. » Luận Văn - Báo Cáo

Trình bày các cơ sở lý thuyết và thuật toán dùng mạng nơron vào pháthiện khuôn mặt người trong ảnh số

91 871 2

Đ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 91
Dung lượng 3,22 MB

Nội dung

Có một số nghiên cứu từ rất sớm đã áp dụng phương phápnày như của Kanade 1973 [3], G .Yang 1994 [4], Kotropoulos 1997 [ 5] , Fan [6] phân đoạn ảnh màu để tìm cạnh thông qua thuật toán tă

Trang 1

MỤC LỤC

TỔNG QUAN 6

DANH MỤC CÁC HÌNH 7

Chương 1 GIỚI THIỆU BÀI TOÁN – PHẠM VI NGHIÊN CỨU CỦA KHÓA LUẬN 1 1.1 Giới thiệu bài toán 1

1.1.1 Nhận diện vật thể trong ảnh số, tầm quan trọng và các ứng dụng thực tế 1

1.1.2 Nhận diện khuôn mặt người trong ảnh số 2

1.2 Các khó khăn trong bài toán nhận diện khuôn mặt 6

1.3 Các công trình nghiên cứu và hướng tiếp cận liên quan đến nhận diện khuôn mặt 9 1.4 Thuật toán sử dụng mạng nơron để phát hiện khuôn mặt 11

1.4.1 Giới thiệu 11

1.4.2 Ưu điểm 13

1.4.3 Khuyết điểm 14

1.5 Giới thiệu mục đích và giới hạn phạm vi nghiên cứu của khóa luận 14

1.5.1 Mục đích 14

1.5.2 Giới hạn phạm vi nghiên cứu 14

Chương 2 CÁC CƠ SỞ LÝ THUYẾT VÀ THUẬT TOÁN ÁP DỤNG VÀO PHÁT HIỆN KHUÔN MẶT NGƯỜI 15

2.1 Hướng tiếp cận của khóa luận 15

2.2 Các thuật toán tiền xử lý ảnh : 16

2.2.2 Cân bằng ánh sáng 20

2.2.3 Làm nổi ảnh (Histogram Equalizer) 22

2.3 Giới thiệu khái niệm cửa sổ (Window) và mặt nạ (Mask) 24

2.3.1 Cửa sổ (Window) 24

2.3.2 Mặt nạ (Mask) 25

2.4 Các bước trong quá trình phát hiện khuôn mặt 26

2.4.1 Tạo các cửa sổ (Window) từ các độ căng (Scale) của ảnh 26

2.4.2 Tiền xử lý ảnh nhỏ trong vùng cửa sổ 28

2.4.3 Đưa các điểm ảnh trong cửa sổ không bị che bởi mặt nạ vào mạng, đưa ra kết quả 28

2.5 Mã giả hàm tìm kiếm (Search) 29

Chương 3 THIẾT KẾ MẠNG NƠRON, THU THẬP DỮ LIỆU HUẤN LUYỆN VÀ HUẤN LUYỆN MẠNG 31

Trang 2

3.2 Thu thập dữ liệu huấn luyện và huấn luyện mạng 34

Chương 4 HIỆN THỰC, KẾT QUẢ CHẠY THỬ, CÁC CẢI TIẾN VÀ HƯỚNG PHÁT TRIỂN CỦA KHÓA LUẬN 40

4.1.1 Hiện thực lõi kiến trúc mạng nơron 40

4.1.2 Hiện thực Demo phát hiện khuôn mặt 46

4.2.1 Kết quả chạy Demo chương trình khi chưa cải tiến 52

4.2.2 Các cải tiến 52

4.3 Hướng phát triển của luận văn trong tương lai 56

PHỤ LỤC 58

Phụ lục A: GIỚI THIỆU MẠNG NƠRON NHÂN TẠO 59

1 Từ ý tưởng mạng nơron sinh học 59

2 Đến mạng nơron nhân tạo 60

3 Ứng dụng mạng nơron nhân tạo 62

4 Huấn luyện mạng nơron 63

5 Thu thập dữ liệu huấn luyện mạng nơron 63

Phụ lục B: CƠ SỞ LÝ THUYẾT CỦA MẠNG NƠRON NHÂN TẠO 65

1 Phần tử xử lý 65

2 Kiến trúc mạng nơron nhân tạo 67

3 Huấn luyện mạng nơron truyền thẳng: 70

Phụ Lục C : MINH HỌA GIẢI THUẬT LAN TRUYỀN NGƯỢC TRONG HUẤN LUYỆN MẠNG NHIỀU LỚP 75

DANH MỤC TÀI LIỆU THAM KHẢO 85

Trang 3

Chương 1 Trình bày tổng quan về bài toán nhận diện vật thể trong ảnh số có ứng

dụng quan trọng trong thức tế Và bài toán phát hiện mẫu khuôn mặtngười dùng mạng nơron là một bài toán con đặt biệt của bài toán nhậndạng vật thể Trình bày một số công trình nghiên cứu gần đây vàhướng tiếp cận của khóa luận đến bài toán nhận diện khuôn mặt

Chương 2 Trình bày các cơ sở lý thuyết và thuật toán dùng mạng nơron vào phát

hiện khuôn mặt người trong ảnh số

Chương 3 Trình bày bước thiết kế mạng nơron, thu thập dữ liệu gồm tập ảnh là

mẫu khuôn mặt và và tập ảnh không phải là mẫu khuôn mặt Sau đó làbước huấn luyện cho mạng nhận dạng được đâu là mẫu khuôn mặtngười và không là khuôn mặt người

Chương 4 Hiện thực chương trình, kết quả thu được trước và sau khi cải tiến.

Kết luận và định hướng phát triển của khóa luận

Trang 4

Hình 1.1 Nhận diện vật thể trong ảnh số.

Hình 1.2 Nhận diện khuôn mặt trong ảnh số.

Hình 1.3 Các bước nhận diện khuôn mặt

Hình 1.4 a) và b) :Các tư thế, góc chụp khác nhau.

Hình 1.5 : Ảnh chụp do râu che một số phần khuôn mặt

Hình 1.6 a) và b) : Ảnh chụp phức tạp do biểu cảm.

Hình 1.7 : Ảnh chụp phức tạp do che khuất.

Hình 1.8 a) Ảnh chụp trong nhà b) Ảnh chụp ngoài trời.

Hình 1.9 Sử dụng cấu trúc mạng nơron nhân tạo (Aftificial Neural Network) để

phát hiện các mẫu khuôn mặt và không phải khuôn mặt

Hình 2.7 Định vị cửa sổ (window) trong ảnh số.

Hình 2.8 Cửa sổ trước khi áp mặt nạ.

Hình 2.9. Mặt nạ và cửa sổ sau khi áp mặt nạ

Hình 2.10 Cửa sổ thu được với tỷ lệ scale ảnh gốc lớn.

Hình 2.11 Cửa sổ thu được với tỷ lệ scale ảnh gốc lớn.

Hình 2.12 Cửa sổ mặt nạ.

Hình 2.13 Cửa sổ ảnh sau khi áp mặt nạ.

Hình 3.1 Cấu trúc mạng nơron.

Hình 3.2 Công thức và đồ thị minh hoạ hàm nén lướng cực (Bipolar Sigmoid).

Hình 3.3 Minh hoạ Vectơ đầu vào.

Hình 3.5 Tập mẫu huấn luyện đúng.

Hình 3.6 Tập mẫu huấn luyện sai.

Hình 3.7 Minh hoạ quá trình huấn luyện

Trang 5

Chương 1 GIỚI THIỆU BÀI TOÁN – PHẠM VI NGHIÊN CỨU

CỦA KHÓA LUẬN

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

Hơn một thập kỷ qua có rất nhiều công trình nghiên cứu về bài toán xácđịnh khuôn mặt người từ ảnh đen trắng, đến ảnh màu như ngày hôm nay Cácnghiên cứu đi từ bài toán đơn giản, mỗi ảnh chỉ có một khuôn mặt người nhìnthẳng vào thiết bị thu hình và đầu ở tư thế thẳng đứng trong ảnh đen trắng Đếnnay bài toán mở rộng cho ảnh màu, có nhiều khuôn mặt trong cùng một ảnh, cónhiều tư thế thay đổi trong ảnh Không những vậy mà còn mở rộng cả phạm vi

từ môi trường xung quanh khá đơn giản (trong phòng thí nghiệm) cho đến môitrường xung quanh rất phức tạp (như trong tự nhiên) nhằm đáp ứng nhu cầuthực tiễn của con người

1.1.1 Nhận diện vật thể trong ảnh số, tầm quan trọng và các ứng dụng thực tế

Hệ thống nhận diện vật thể là một hệ thống nhận vào một ảnh hoặc một

đoạn Video (một chuỗi các ảnh) Qua xử lý tính toán hệ thống xác định được vị

trí vật thể trong ảnh (nếu có) và xác định đó là vật thể nào trong số những vật thể hệ thống đã được biết (qua quá trình học) hoặc là vật thể lạ Nhận diện vật thể trong ảnh số được minh họa như hình 1.1

Hình 1.1 Nhận diện vật thể trong ảnh số.

Quả bóng rổ

Chiếc xe đạp

Không biết

Trang 6

1.1.2 Nhận diện khuôn mặt người trong ảnh số

1.1.2.1 Giới thiệu nhận diện khuôn mặt.

Phát hiện khuôn mặt người (Face Detection) là một kỹ thuật máy tính

để xác định các vị trí và các kích thước của các khuôn mặt trong các ảnh bất kỳ (ảnh kỹ thuật số) Kỹ thuật này nhận biết các đặc trưng của khuôn mặt và bỏ

qua những thứ khác, như: tòa nhà, cây cối, cơ thể, … Nói chính xác hơn là khu

biệt hóa khuôn mặt (khả năng tìm và nhận biết đâu là khuôn mặt trong toàn bộ

một khung hình)

Ở hệ thống này, từ một đầu vào là bức ảnh hoặc một đoạn Video (một

chuỗi các ảnh), máy tính có thể khu biệt hóa khuôn mặt nằm ở vị trí nào Qua

xử lý tính toán hệ thống xác định được vị trí mặt người trong ảnh (nếu có) vàxác định là người nào trong số những người hệ thống đã được biết (qua quá

Bài toán nhận dạng mặt người là bài toán con đặc biệt của nhận dạng vật thể Tuy nhiên, đây là một bài toán khó nên những nghiên cứu hiện tại vẫn

chưa đạt được kết quả mong muốn Chính vì thế vấn đề này vẫn đang đượcnhiều nhà nghiên cứu trên thế giới quan tâm Đây là một vấn đề lớn trongngành thị giác máy tính (Computer Vision – viết tắt CV)

Trang 7

Hệ thống nhận diện mặt người trong ảnh số được minh họa như hình 1.2:

1)

2)

3)

Hình 1.2 Nhận diện khuôn mặt trong ảnh số

1.1.2.2 Bốn bước nhận diện mặt người trong ảnh số

Một hệ thống nhận dạng mặt người thông thường bao gồm bốn [1] bước

xử lý sau: phát hiện khuôn mặt (face detection), phân đoạn khuôn mặt (face alignment hay segmentation), rút trích đặc trưng (feature extraction) và phân lớp khuôn mặt (face classification) Các bước nhận diện mặt người trong ảnh số được minh họa như hình 1.3.

Không biết

vì khuôn mặt không

có trong cơ

sở dữ liệu

Hệ thống nhận dạng khuôn

mặt

BinLaden

Obama

Trang 8

Hình 1.3 Các bước nhận diện khuôn mặt.

Phát hiện khuôn mặt dò tìm và định vị những vị trí khuôn mặt xuất hiện trong ảnh hoặc trên các Frame Video Phân đoạn khuôn mặt sẽ xác định vị trí mắt, mũi, miệng, và thành phần khác của khuôn mặt và chuyển kết quả này cho bước rút trích đặc trưng Từ những thông tin về các thành phần trên khuôn mặt,

chúng ta có thể dễ dàng tính được véc-tơ đặc trưng trong bước rút trích đặctrưng Những véc-tơ đặc trưng này sẽ là dữ liệu đầu vào cho một mô hình đãđược huấn luyện trước để phân loại khuôn mặt Bên cạnh những bước chính

nêu trên, chúng ta còn có thể áp dụng thêm một số bước khác như tiền xử lý, hậu xử lý nhằm làm tăng độ chính xác cho hệ thống Do một số thông số như:

tư thế khuôn mặt, độ sáng, điều kiện ánh sáng… phát hiện khuôn mặt được

đánh giá là bước khó khăn và quan trọng nhất so với các bước còn lại của hệ

thống Trong khóa luận này, chúng tôi tập trung chủ yếu vào bước phát hiện khuôn mặt.

Phát hiện khuôn mặt ( tìm kiếm )

Hình/video

Phân đoạn khuôn mặt

Vị trí khuôn mặt

Rút trích đặc trưng

Khuôn mặt đã phân đoạn

Phân lớp khuôn mặt

Vec-tơ đặc trưng

Chỉ số khuôn mặt (Face ID)

Trang 9

1.1.2.3 Các ứng dụng của nhận diện khuôn mặt.

Bài toán nhận diện mặt người có thể áp dụng rộng rãi trong nhiều ứng

dụng thực tế khác nhau Đó chính là lý do mà bài toán này hấp dẫn rất nhiềunhóm nghiên cứu trong thời gian dài Các ứng dụng liên quan đến nhận dạngmặt người có thể kể như:

- Hệ thống phát hiện tội phạm: Camera được đặt tại một số điểm côngcộng như: siêu thị, nhà sách, trạm xe buýt, sân bay, v.v Khi phát hiện được sựxuất hiện của các đối tượng là tội phạm, hệ thống sẽ gởi thông điệp về chotrung tâm xử lý Ví dụ nhận dạng người A có phải là tội phạm đang truy nãhay không? giúp cơ quan an ninh thực hiện tốt chức năng của mình Công việcnhận dạng có thể ở trong môi trường bình thường cũng như trong bóng tối (sửdụng camera hồng ngoại)

- Hệ thống theo dõi nhân sự trong một đơn vị: Giám sát giờ ra vào củatừng nhân viên và chấm công Điều khiển vào ra: văn phòng, công ty, trụ sở,máy tính, Palm, … Kết hợp thêm vân tay và mống mắt Cho phép nhân viênđược ra vào nơi cần thiết, hay mỗi người sẽ đăng nhập máy tính cá nhân củamình mà không cần nhớ tên đăng nhập cũng như mật khẩu mà chỉ cần xác địnhthông qua khuôn mặt

- Kiểm tra trạng thái người lái xe có ngủ gật, mất tập trung hay không,

và hỗ trợ thông báo khi cần thiết

- Lưu trữ (rút tiền ATM, để biết ai rút tiền vào thời điểm đó) Các ngânhàng có nhu cầu khi có giao dịch tiền sẽ kiểm tra hay lưu trữ khuôn mặt ngườirút tiền để sau đó đối chứng và xử lý

- Hệ thống giao tiếp người máy: Thay thế việc tương tác giữa người và

máy theo những cách truyền thống như: bàn phím, chuột,v.v Thay vào đó là

sử dụng các giao tiếp trực quan: biểu cảm khuôn mặt, dấu hiệu, cử chỉ bằng tay(Visual Input, Visual Interaction)

- Tìm kiếm và tổ chức dữ liệu liên quan đến con người thông qua khuônmặt người trên nhiều hệ cơ sở dữ liệu lưu trữ thật lớn, như internet, các hãngtruyền hình, … Ví dụ tìm các đoạn video có tổng thống Bush phát biểu, tìm

Trang 10

các phim có diễn viên Lý Liên Kiệt đóng, tìm các trận đá banh có cầu thủRonaldo …

- An ninh sân bay, xuất nhập cảnh (hiện nay cơ quan xuất nhập cảnh

Mỹ đã áp dụng) Dùng để xác thực người xuất nhập cảnh và kiểm tra có phải lànhân vật khủng bố không

- Các thệ thống bảo mật dựa trên thông tin trắc sinh học: Mặt người,vân tay,v.v thay vì xác nhận mật khẩu, khóa

1.2 Các khó khăn trong bài toán nhận diện khuôn mặt

Đây là một bài toán khó nên những nghiên cứu hiện tại vẫn chưa đạtđược kết quả mong muốn Chính vì thế vấn đề này vẫn đang được nhiều nhóm

trên thế giới quan tâm nghiên cứu Khó khăn của bài toán nhận diện mặt người

có thể kể như là tư thế, góc chụp, sự xuất hiện hoặc thiếu một số thành phầntrên khuôn mặt, sự biểu cảm, sự che khuất, hướng của ảnh, điều kiện ảnh[1]

Tư thế, góc chụp

Ảnh chụp khuôn mặt có thể thay đổi rất nhiều bởi vì góc chụp giữaCamera và khuôn mặt Chẳng hạn như: chụp thẳng, chụp xéo bên trái 450 hay xéobên phải 450, chụp từ trên xuống, chụp từ dưới lên, v.v ) Với các tư thế khácnhau, các thành phần trên khuôn mặt như mắt, mũi, miệng có thể bị khuất mộtphần hoặc thậm chí khuất hết

Hình 1.4 a) và b) :Các tư thế, góc chụp khác nhau.

Trang 11

Sự xuất hiện hoặc thiếu một số thành phần của khuôn mặt

Các đặc trưng như: râu mép, râu hàm, mắt kính, v.v có thể xuất hiệnhoặc không Vấn đề này làm cho bài toán càng trở nên khó hơn rất nhiều

Sự biểu cảm của khuôn mặt

Biểu cảm của khuôn mặt người có thể làm ảnh hưởng đáng kể lên cácthông số của khuôn mặt Chẳng hạn, cùng một khuôn mặt một người, nhưng cóthể sẽ rất khác khi họ cười hoặc sợ hãi,v.v

a) b)

Hình 1.6 a) và b) : Ảnh chụp phức tạp do biểu cảm.

Hình 1.5 : Ảnh chụp do râu che một số phần khuôn mặt

Trang 12

Điều kiện của ảnh

Ảnh được chụp trong các điều kiện khác nhau về: chiếu sáng, về tính chấtCamera (máy kỹ thuật số, máy hồng ngoại,v.v ) ảnh hưởng rất nhiều đến chất

lượng ảnh khuôn mặt

Hình 1.8 a) Ảnh chụp trong nhà Hình 1.8 b) Ảnh chụp ngoài trời.

Hình 1.7 : Ảnh chụp phức tạp do che khuất.

Trang 13

1.3 Các công trình nghiên cứu và hướng tiếp cận liên quan đến nhận diện khuôn mặt

Có rất nhiều hướng tiếp cận trước đây đã thực hiện liên quan đến vấn

đề phát hiện mặt người Theo Ming-Hsuan Yang [2], có thể phân loại thành bốnhướng tiếp cận chính: dựa trên tri thức (knowledge-based), đặc trưng bất biến(feature invariant), đối sánh mẫu (template matching), và dựa vào diện mạo(appearance-based) phương pháp này thường dùng một mô hình máy học nêncòn được gọi là phương pháp dựa trên máy học (machine learning-based)

Các phương pháp dựa trên tri thức:

Hướng tiếp cận này chủ yếu dựa trên những luật được định nghĩa trước

về khuôn mặt người Những luật này thường là các mối quan hệ giữa các thànhphần trên khuôn mặt Có một số nghiên cứu từ rất sớm đã áp dụng phương phápnày như của Kanade 1973 [3], G Yang 1994 [4], Kotropoulos 1997 [ 5] , Fan [6]

phân đoạn ảnh màu để tìm cạnh thông qua thuật toán tăng vùng để xác định cácứng viên.Dùng đặc tính hình ellipse của khuôn mặt người để xác định ứng viênnào khuôn mặt người, Sahbi và Boujemaa [7] sử dụng mạng neural học để ướclượng các tham số cho mô hình Gauss, mục đích để tìm ứng viên trên sắc màu

da của người Sau khi có ứng viên, hai ông chiếu lên hai trục: đứng và ngang đểxác định khuôn mặt người

Hướng tiếp cận dựa trên các đặc trưng bất biến:

Hướng tiếp cận này cố gắng tìm kiếm những đặc trưng độc lập – nhữngđặc trưng không phụ thuộc vào tư thế khuôn mặt, điều kiện chiếu sáng, và cáckhó khăn khác Các đặc trưng như thế được gọi là bất biến và được sử dụng đểphát hiện khuôn mặt Những công trình sử dụng hướng tiếp cận này có thể kểnhư: K C Yow và R Cipolla 1997 [11], T K Leung 1995 [12]

Gần đây có nhiều nghiên cứu sử dụng các đặc trưng toàn cục như: màu

da người, kích thước, và hình dáng để tìm các ứng viên khuôn mặt, rồi sau đó sẽxác định ứng viên nào là khuôn mặt thông qua dùng các đặc trưng cục bộ (chitiết) như: mắt, lông mày, mũi, miệng, và tóc[8], Kruppa [9] dùng sắc màu của da

Trang 14

thông thường, mà ông dùng mô hình màu da người trên từng phần nhỏ rồi xử lýphân đoạn trên đó Sau khi có ứng viên khuôn mặt, ông dùng một số đặc tính vềhình dáng để xác định khuôn mặt người, Park dùng Gaze để tìm ứng viên gócmắt, miệng và tâm mắt [10] Ông xây dựng thuật toán SVM (Support VectorMachine) đã được học trước đó để xác định các vị trí ứng viên có phải là gócmắt, miệng, và tâm mắt hay không để phân lớp ảnh.

Phương pháp đối sánh mẫu:

Trong hướng tiếp cận này, một mẫu khuôn mặt chuẩn được định nghĩabằng tay trước hoặc được tham số hóa bằng một hàm số Mẫu này được sử dụng

để phát hiện khuôn mặt bằng cách quét nó qua ảnh và tính toán giá trị tương đồngcho mỗi vị trí Việc xuất hiện một khuôn mặt tại một vị trí nào đó trong ảnh phụthuộc vào giá trị tương đồng của điểm đó so với mẫu chuẩn I Craw 1992 [15]đã

áp dụng một mẫu cứng trong khi A Lanitis 1995 [14] sử dụng một mẫu có thể biếndạng trong bước phát hiện khuôn mặt

Phương pháp dựa trên máy học:

Ngược với phương pháp đối sánh mẫu sử dụng các mẫu được các chuyêngia định nghĩa trước, phương pháp này sử dụng những mẫu được rút trích quamột quá trình học Nói cách khác, các thuật toán dựa trên máy học dùng các kỹthuật phân tích thống kê và máy học để xấp xĩ một hàm phân lớp tuyến tính Cónhiều mô hình máy học được áp dụng trong hướng tiếp cận này: Eigenface (M.Turk và A Pentland 1991 [16]), Mô hình dựa trên phân phối (K K Sung and T.Poggio 1998 [20]), Mạng Nơ-ron (H Rowley 1998 [1]), Support Vector Machine(E Osuna et al 1997 [17] ), các mô hình tăng cường (AdaBoost của P Viola)[18] [19].

Trang 15

1.4 Thuật toán sử dụng mạng nơron để phát hiện khuôn mặt

Mạng nơron được áp dụng khá thành công trong các bài toán nhận dạngmẫu Xác định khuôn mặt người có thể xem là bài toán nhận dạng hai loại mẫu(mẫu là mặt người và mẫu không phải là mặt người) Một thuận lợi khi dùngmạng nơron để xác định khuôn mặt là tính khả thi của hệ thống học khi có sựphức tạp trong lớp của các mẫu khuôn mặt

Theo đánh giá các phương pháp dùng mạng nơron để xác định khuônmặt người của nhiều tác giả, thì nghiên cứu của Rowley [1] được xem là tốt nhấtđối với ảnh xám Một mạng đa tầng được dùng để học các mẫu khuôn mặt vàkhông phải khuôn mặt từ các ảnh tương ứng

Thuật toán được minh họa như hình 1.9.

Trang 16

Hình 1.9 Sử dụng cấu trúc mạng nơron nhân tạo (Aftificial Neural

Network) để phát hiện các mẫu khuôn mặt và không phải khuôn mặt.

Ảnh đầu vào

Ảnh có thể được thu nhận bằng máy quét Scanner, Webcam, hoặc cácthiết bị thu nhận ảnh thông dụng khác

Phát hiện khuôn mặt

- Dùng một cửa sổ (Window) có kích thước 25x25 điểm ảnh quét cửa

sổ đó qua toàn bộ ảnh gốc Với mỗi khung hình con được tạo bởi cửa sổ trênảnh gốc, đưa khung hình đó qua một mạng nơron đã được huấn luyện để tìmxem có mẫu khuôn mặt trong cửa sổ hay không

Trang 17

- Để xác định khuôn mặt có kích thước lớn hơn 25x25 điểm ảnh, ta co ảnh gốc theo nhiều tỷ lệ khác nhau (biến thiên tỷ lệ này do người xây dựng quyết định) rồi dùng cửa sổ quét qua toàn bộ các tỷ lệ ảnh này để tìm tất cả các

vị trí tương đối của các khuôn mặt ở các tỷ lệ khác nhau này.

Tiền xử lý ảnh

Chuyển đổi khung hình con trong cửa sổ từ ảnh màu thành ảnh trắngđen (Grayscale) Sau đó thực hiện cân bằng ánh sáng(Linear BestFit Adjust) đểtránh những vùng quá sáng hay quá tối, làm tăng độ tương phản (HistogramEqualization) Kết quả ảnh ở giai đoạn này trung thực với ảnh gốc, có độ chứngthực bởi mạng nơron chính xác cao

Nhận dạng ảnh bằng mạng nơron

Để xác định vùng ảnh trong cửa sổ nào có chứa mẫu khuôn mặt người,dùng một mạng nơron đã huấn luyện để nhận một vùng ảnh có kích thước25x25 điểm ảnh và xuất ra một giá trị trong khoảng từ -1 đến 1 Khi đưa vàomột vùng ảnh, nếu kết quả gần -1 thì nghĩa là vùng ảnh này không chứa mẫukhuôn mặt người, nhưng nếu kết quả gần 1 thì nhiều khả năng vùng ảnh nàychứa mẫu khuôn mặt người

1.4.2 Ưu điểm

 Một thuận lợi khi dùng mạng nơron để xác định khuôn mặt là tính khả thicủa hệ thống học khi có sự phức tạp trong lớp của các mẫu khuôn mặt

Ngoài ra khả năng phát hiện mặt người của mạng nơron là rất tốt Mặt

khác các phương pháp ra quyết định trong nhận dạng truyền thống đượccài đặt tĩnh trong chương trình, khi muốn bổ sung thêm các mẫu học mới

phải thiết kế lại chương trình Trong khi với mạng nơron, chỉ cần cung cấp

một tập mẫu vào, ra của dữ liệu mới cho pha huấn luyện mà không ảnhhưởng đến cấu trúc chương trình ban đầu

 Độ chính xác cao nếu được huấn luyện tốt

Trang 18

1.4.3 Khuyết điểm

 Tuy nhiên, một điều trở ngại là các kiến trúc mạng đều tổng quát, khi ápdụng thì phải xác định rõ ràng số lượng lớp, số lượng nơron mỗi lớp, tỷ lệhọc, …, cho từng trường hợp cụ thể

 Chi phí huấn luyện cực cao, dữ liệu huấn luyện lớn Có thể bị ảnh hưởngbởi nhiễu, thường phải kết hợp với các phương pháp [8],[9],[10],[21],[22],[23] để cókết quả tối ưu

1.5 Giới thiệu mục đích và giới hạn phạm vi nghiên cứu của khóa luận

 Áp dụng được một số cải tiến cho ứng dụng

 Là một nỗ lực tìm hiểu, cài đặt các nghiên cứu, kỹ thuật mới trên thế giới,cung cấp nền tảng, tài nguyên cho các nghiên cứu sâu hơn

1.5.2 Giới hạn phạm vi nghiên cứu

Trong khóa luận này, do giới hạn thời gian, chúng tôi chỉ bàn và nghiên

cứu việc xác định sự xuất hiện và định vị khuôn mặt nếu có trong ảnh Khóa

luận có những giới hạn sau:

Thuật toán giải quyết cho ảnh đơn (chưa xử lý cho ảnh Video)

Ảnh khuôn mặt được chụp thẳng hay góc nghiêng không đáng kể (khôngquá 100)

Ảnh được chụp trong điều kiện ánh sáng bình thường (không chụpngược sáng), ảnh phải được chụp bằng máy ảnh kỹ thuật số, webcam.Ảnh không bị che khuất, chồng lên nhau, có các biểu cảm đặc biệt (1.2)

Trang 19

Chương 2 CÁC CƠ SỞ LÝ THUYẾT VÀ THUẬT TOÁN ÁP DỤNG

VÀO PHÁT HIỆN KHUÔN MẶT NGƯỜI.

2.1 Hướng tiếp cận của khóa luận

Chương trình xử lý ảnh được nhóm chúng tôi tham khảo từ luận án tiến

sỹ của Herry Rowley[1] Trong luận án ông đã trình bày chi tiết về chương

trình phát hiện khuôn mặt trong ảnh số cùng với hướng tiếp cận là dùng mạngneuron nhân tạo Ba vấn đề đã được nêu ra để xử lý trong quá trình tìm khuônmặt:

 Một là ảnh khuôn mặt có nhiều chi tiết khác nhau, phụ thuộc vàonguồn sáng, tư thế, biểu cảm của khuôn mặt Giải thuật chỉ có thể giải

xử lý một số đặc trưng và buộc phải bỏ đi những chi tiết không quantrọng hoặc không thể mô hình hóa

 Hai là một hoặc nhiều mạng neuron được phân chia để xử lý nhữngkhác biệt của khuôn mặt

 Ba là việc gom kết quả trả về của tất cả các mạng neuron để tổng hợp

ra một kết quả duy nhất về đối tượng

Việc xử lý như trên rất phức tạp Chính vì vậy khóa luận chỉ sử dụngduy nhất một mạng neuron để xử lý phát hiện khuôn mặt

Các khó khăn trong quá trình xử lý hình ảnh :

 Sự khác biệt của khuôn mặt ngay trong bức ảnh như: việc quay, kéodãn một chiều, phóng đại, hay tạo một hình ảnh của khuôn mặt quagương Ngoài ra còn các vấn đề về sự chiếu sáng, độ tương phản vàdiện tích bị che lấp của vùng khuôn mặt

 Sự khác biệt về tư thế của khuôn mặt trong ảnh: như việc quay người,cúi xuống hay đang vận động khi chụp ảnh, việc chụp ảnh ở khoảngcách xa sẽ làm mờ ảnh

 Sự khác biệt về ánh sáng và bố cục của bức ảnh: khi chụp ảnh trongcác môi trường có cường độ sáng khác nhau sẽ tạo ra những bức ảnh

Trang 20

có cường độ sáng tối khác nhau Cộng với nền của bức ảnh sẽ gâynhiễu nhiều hay ít.

 Cuối cùng là hình dáng của khuôn mặt như chớp mắt, mở miệng haynói tóm lại là trạng thái của khuôn mặt

Trong luận án cũng đưa ra cách giải quyết các vấn đề trong tìm kiếm khuôn mặt như phương pháp loại bỏ nhiễu ánh sáng (bằng cách xử lý hình ảnh trước khi đưa vào mạng xử lý), tìm những khuôn mặt trong tư thế nghiêng (bằng cách quay khung cửa sổ nhỏ đang xét theo những góc độ khác nhau hay

sử dụng nhiều mạng nơron mỗi mạng tìm khuôn mặt ở những tư thế riêng rồi

sau đó tổng hợp các giá trị của các mạng lại…) Với mức độ khóa luận đại học

chúng tôi chỉ đi sâu vào tìm hiểu nhận diện khuôn mặt nhìn thẳng và cải tiến

thuật toán nhằm tăng tốc ứng dụng

2.2 Các thuật toán tiền xử lý ảnh :

Ảnh màu có 3 thông số màu khác nhau cho các giá trị màu RGB nếudùng cả 3 giá trị này để tính toán thì phải xử lý rất phức tạp Không những thếcác nhiễu phát sinh do việc chụp ảnh như loại máy ảnh,các tư thế chụp hình,màu sắc, cường độ ánh sáng chiếu vào các phần khuôn mặt sẽ tạo ra màu sắckhác nhau trên khuôn mặt Chính vì vậy mà ta phải chuyển ảnh sang đen trắngsau đó cân bằng sáng cho khuôn mặt rồi cuối cùng là dãn màu sắc và tăng độtương phản

Chuyển ảnh thành trắng đen (Grayscale Converter)

Chuyển ảnh màu thành ảnh đen trắng Tại sao chúng ta lại phải làmđiều đó? Bởi vì ảnh màu quá phức tạp để tiến hành xử lý trong khi chúng ta chỉ

cần một ảnh đen trắng cũng có thể nhận diện chính xác một khuôn mặt.

Để hiểu được quá trình chuyển từ một ảnh màu sang một ảnh đen trắng

ta cần phải biết sự tổng hợp 3 màu (đỏ, xanh lá, xanh đậm) trong cấu trúc màu

RGB Các Pixel trong ảnh màu có giá trị của các màu cơ bản nằm trong khoảng

từ 0->255 (8 bit cho một màu hoặc là 24 bit cho 3 màu) Sự tổng hợp màu sắc

Trang 21

do thay đổi các thông số khác nhau của các màu cơ bản sẽ cho các màu sắckhác nhau.

Ví dụ như với các thông số :

(255,0,0) cho màu đỏ.

(0,255,0) cho màu xanh lá.

(0,0,255) cho màu xanh đậm.

(0,0,0) cho màu đen.

(255,255,255) cho màu trắng.

Theo cấu trúc như vậy ta có thể nhận ra được là với một màu sắc mà ta

tiến hành tăng hay giảm cùng một tỉ lệ cho 3 màu cùng một lúc thì ta sẽ nhận

được cùng màu sắc đó nhưng với độ sáng hay tối khác nhau Hay nói tóm gọnlại là thang độ màu sắc từ màu sáng nhất đến màu tối nhất (màu đen) Ví dụ ta

có màu trắng có thông số của 3 màu là (255, 255, 255), ta muốn một màu tối

hơn một chút (màu trắng xám) thì thông số sẽ giảm đi vài đơn vị đối với tất cả

các màu ở đây ta chọn (230, 230, 230) với tỉ lệ giảm là 230 / 255 Với tỉ lệ

giảm càng cao thì màu trắng sẽ chuyển thành màu đen

Vậy vấn đề đặt ra là làm sao để chuyển từ màu sắc bất kì sang thang độmàu đen trắng Để giải quyết vấn đề này ta cần một hàm ánh xạ các màu sắc bất

kì sang màu trong thang độ đen trắng tương ứng Đơn giản nhất là hàm này sẽlấy các thông số của 3 màu cơ bản nhân với các thông số tương ứng x,y,z vớiđiều kiện x+y+z=1 rồi tiến hành cộng các kết quả lại Lấy kết quả đó làm thông

số cho cả 3 giá trị màu Ta sẽ được màu đen trắng tương ứng

Ví dụ : Ta lấy các tỉ lệ 0.32, 0.5, 0.18 này để ánh xạ các màu sang thang màu trắng đen và ta lấy hai màu: tím (140, 120, 240), trắng (255, 255, 255) để ánh xạ.

Tổng các tỉ lệ phải bằng 1: 0.32 + 0.5 + 0.18=1 Nhằm đảm bảo rằng giá trị sau khi tính toán phải thuộc khoảng [0, 255] Giá trị càng gần 0 thì càng đen, càng gần 255 thì càng trắng.

Trang 22

Chuyển từ màu tím sang trắng đen : 0.32*140 + 0.5*120 + 0.18*240=148 Vậy ta có màu trắng đen là (148, 148, 148) tỉ lệ giảm

so với màu trắng là : 148 / 255 Làm tương tự với màu trắng ta được

kết quả sau khi chuyển vẫn là (255, 255, 255) Vậy màu trắng vẫn là

màu trắng không thay đổi sau khi chuyển Áp dụng tương tự với các

màu khác nhau Ta có hàm chuyển sang màu trắng đen :

1 Tạo một mảng đối tượng chứa giá trị của pixel màu (biến Color) Biến này chứa 3 thông số của 3 màu cơ bản (Color (r, g,

b )) Số phần tử trong mảng bằng với số pixel của bức ảnh.

2 Tại mỗi pixel thực hiện chuyển sang thang màu đen trắng

như được giới thiệu ở phần trước (phần chuyển ảnh màu sangđen trắng 2.2.1)

3 Làm lại bước 2 cho đến khi duyệt hết toàn bộ các Pixel

của bức ảnh Kết quả sau khi chuyển từ ảnh màu sang ảnh trắng

đen ta sẽ thấy được như minh họa trong hình 2.1 và hình 2.2.

Hình 2.1 Ảnh gốc Hình 2.2 Ảnh đen trắng

Trang 23

if (mask[l][c] == 1) {

Trang 24

2.2.1 Cân bằng ánh sáng

Mục đích của việc làm cân bằng sáng là làm giảm bớt nhiễu do ánhsáng chiếu vào khuôn mặt khi chụp ảnh Vì khi chụp ảnh ở các tư thế, thời giankhác nhau sẽ cho ảnh có chất lượng khác nhau về độ chiếu sáng ở từng phầntrên khuôn mặt Kết quả ảnh được cân bằng ánh sáng ta sẽ thấy được như minh

họa trong hình 2.3 và hình 2.4.

Mã hàm LinearBestFitAdjust()

Void LinearBestFitAdjust(Bitmap img)

{

//mảng lưu giá trị duyệt theo dòng

float[] ra = new float[w];

float[] rb = new float[w];

//Mảng lưu giá trị duyệt theo cột

float[] ca = new float[h];

float[] cb = new float[h];

//Các biến trong quá trình xử lý

float sx, sy, sxy, sxx;

//Biến lưu trữ số lượng pixel được xử lý khi //duyệt theo hàng hoặc cột

n=0; sx = 0; sy = 0; sxy = 0; sxx = 0;

for(int c=0; c<h;c++) {

if (mask[l][c] == 1) {

Hình 2.3

Ảnh chưa cân bằng sáng

Hình 2.4.

Ảnh đã cân bằng sáng

Trang 25

rb[l] = sy/n - ra[l] * sx/n;

}//Duyệt theo cột

for(int c=0; c<h;c++) {

n=0; sx = 0; sy = 0; sxy = 0; sxx = 0;

for(int l=0; l<w;l++) {

if (mask[l][c] == 1) {

cb[c] = sy/n - ca[c] * sx/n;

}// Áp dụng lên ảnh

int g;

for(int l=0; l<w;l++) for(int c=0; c<h;c++) {

Vì giải thuật này thuộc nghiên cứu chuyên sâu về ánh sáng và hình ảnh.Nên chúng tôi không đi sâu vào nghiên cứu chi tiết mà chỉ dừng lại ở mức tìmhiểu và sử dụng Nếu cần biết thêm chi tiết tham khảo [1].

Trang 26

2.2.2 Làm nổi ảnh (Histogram Equalizer)

Bước chuyển ảnh màu sang ảnh đen trắng sẽ tạo ra những màu sắc của

những Pixel trong vùng khuôn mặt có cường độ sáng không cao vì màu da của khuôn mặt và sự ánh xạ từ màu da sang màu đen trắng Chính vì vậy mà vùng sáng nhất của màu da cũng chỉ là những giá trị bé thua 255 Để khắc phục điều

này sau khi cân bằng sáng ta tiến hành làm nổi ảnh để tăng cường ánh sáng chonhững vùng có ánh sáng mạnh Những vùng nào có ánh sáng mạnh nhất sẽ đạt

được cường độ tối đa (255) ngược lại những điểm ảnh có cường độ nhỏ nhất sẽ nhận giá trị nhỏ nhất (0) trong thang độ đen trắng.

Các bước làm nổi ảnh :

1 Ta thấy có tất cả 255 màu sắc khác nhau trong thang độ màu trắng đen Ta sẽ cộng tất cả các Pixel có cùng cường độ màu sắc Ta làm như vậy đối với tất cả các Pixel có cường độ từ nhỏ nhất (0) đến cường độ lớn nhất (255) Điều này được cài đặt đơn giản là dùng mảng

255 phần tử tương ứng với thang độ đen trắng Và giá trị của mảng chính là số Pixel giống nhau Việc xử lý tìm kiếm và cộng dồn được thực hiện qua hai vòng for quét toàn bộ Pixel của bức ảnh.

2 Tiếp theo ta sẽ tiến hành cộng số Pixel tại cường độ màu đang xét với số Pixel có cường độ màu thấp hơn nó một đơn vị Làm

như vậy đối với toàn bộ cường độ màu (toàn bộ phần tử của mảng) Gọi giá trị vừa tìm được là H[i]

W, H lần lượt là chiều rộng và chiều cao của khung ảnh đang xét

Vậy màu của Pixel có giá trị là i sẽ nhận được giá trị mới sau khi làm

nổi ảnh là i=(255*H[i]) / (W*H)

Qua công thức này ta dễ dàng thấy rằng i sẽ nhận giá trị lớn nhất (255) khi [i]=(W*H) tức là i là chỉ số màu lớn nhất trong toàn bộ khung hình (lưu ý

là i có thể bé thua 255).Vậy quá trình này thực chất là một quá trình cân đối lại

màu sắc cho màu sắc nhận những giá trị tương ứng của nó trên toàn bộ thang

Trang 27

độ màu đen trắng Đồng thời cũng là việc tăng độ tương phản giữa các điểmảnh

Kết quả làm nổi ảnh ta sẽ thấy được minh họa trong hình 2.5 và hình 2.6.

//Mã hàm HistogramEqualization()

void HistogramEqualization()

{

//256 pixel có giá trị màu bằng nhau

int[] H = newint[256];

//Khởi tạo giá trị ban đầu

for (int i=0; i<256; i++) H[i] = 0;

//Cộng dồn các pixel có giá trị bằng nhau tại //vị trí có chỉ số bằng giá trị pixel

for (int l = 0; l<w; l++)

{for (int c = 0; c<h; c++)H[img.GetPixel(l,c).R]++;

}//Dãn giá trị màu ra toàn thang [0,255]

for (int i=1; i<256; i++) H[i] += H[i-1];

//Tăng độ tương phản cho các pixel

for (int i=0; i<256; i++) H[i] = (255 * H[i])/(w*h);

Trang 28

//Cập nhật lại màu cho toàn bức ảnh.

int g;

for (int l = 0; l<w; l++)

for (int c = 0; c<h; c++) {

g = img.GetPixel(l,c).R;

g = H[g];

img.SetPixel(l,c,Color.FromArgb(g, g, g));

}}

2.3 Giới thiệu khái niệm cửa sổ (Window) và mặt nạ (Mask)

Để tìm được khuôn mặt trong một bức ảnh lớn chúng ta phải dùngmột cửa sổ di chuyển toàn bộ khung hình lớn để lấy những pixel trong cửa sổ

đó để tiến hành xác định khuôn mặt Đồng thời để loại bỏ đi những phần khôngcần xét đến trong cửa sổ(thường là hình nền lẫn với khuôn mặt ở các góc)chúng ta phải dùng đến mặt nạ Chi tiết về cửa sổ và mặt nạ sẽ được trình bàychi tiết trong các mục sau

2.3.1 Cửa sổ (Window)

Trong quá trình tìm kiếm khuôn mặt ta sẽ dùng cửa sổ để quét toàn bộ

khung hình[1] Cửa sổ chiếm một phần nhỏ của khung hình (khoảng 25 x 25 Pixel) Có kích thước gần bằng với kích thước khuôn mặt nhằm giảm bớt các thông số phải tính toán Khung cửa sổ này sẽ duyệt từ trên xuống dưới và từ trái qua phải Mỗi lần duyệt nó sẽ di chuyển một khoảng cách nào đó (WinGap

=2) được qui định trong mạng nơron Và làm như vậy cho đến hết khung ảnh Khung cửa sổ này sẽ quét trên ảnh đã được chuyển sang trắng đen Mỗi cửa sổ

sẽ được cân bằng sáng sau đó là làm nổi ảnh và cuối cùng sẽ được chuyển cho mạng nơron để xác định khuôn mặt.

Trang 29

Kết quả xác định cửa sổ trong ảnh số được minh họa như trong hình 2.7

Hình 2.7 Định vị cửa sổ (Window) trong ảnh số.

2.3.2 Mặt nạ (Mask)

Như đã đề cập ở phần 1.4.3, một yếu điểm của mạng nơron là dễ bị ảnh

hưởng bởi nhiễu Do đó, để đạt được kết quả tốt, đầu vào của mạng cần được

giảm nhiễu một cách tối đa có thể

Qua quan sát thực tế, khuôn mặt người nằm giữa cửa sổ thường códạng hơi tròn bầu, các phần góc của cửa sổ thường là các chi tiết không phải

khuôn mặt (nhiễu) như cổ áo, tóc, cảnh nền v v Giải pháp là tạo một Mặt nạ

Rộng 25 pixel Cao

Trang 30

nhằm cố gắng loại bỏ bớt những điểm ảnh nhiễu này và chỉ đưa những điểm

ảnh thuộc khuôn mặt vào mạng để xử lý[1]

Mặt nạ có thể được hiện thực bằng một ma trận hai chiều kiểu nhị phân

có kích thước bằng với kích thước của cửa sổ, gán giá trị 1 cho những phần tửtrong ma trận mặt nạ ứng với những điểm ảnh ở các góc của cửa sổ để đánh dấucác điểm ảnh này sẽ không được đưa vào mạng nơron, gán giá trị 0 cho nhữngphần tử còn lại ứng với những điểm ảnh sẽ được đưa vào mạng

VD: Khoá luận sử dụng cửa sổ có kích thước 25x25 điểm ảnh nên matrận mặt nạ có kích thước 25x25 phần tử Kết quả áp mặt nạ lên cửa sổ ta sẽ

thấy như minh họa trong hình 2.9:

2.4 Các bước trong quá trình phát hiện khuôn mặt

Sau khi thực hiện chuyển ảnh sang đen trắng Một cửa sổ nhỏ sẽ dichuyển toàn bộ khung ảnh Mỗi lần di chuyển cửa sổ chương trình sẽ tiến hànhcân bằng sáng, làm nổi ảnh và đưa vào mạng neuron để kiểm tra khuôn mặt

2.4.1 Tạo các cửa sổ (Window) từ các độ căng (Scale) của ảnh

Trong mạng nơron qui định mức căng hình nhỏ nhất và lớn nhất cộng

với số lần tiến hành căng hình Từ các thông số này ta hoàn toàn tính toán được

độ phóng đại mỗi lần căng hình

Hình 2.9 Mặt nạ và cửa sổ sau khi áp mặt nạ.

Các điểm ảnh có vị trí tương ứng với các phần tử có giá trị 1 (màu đen) trên ma trận mặt nạ sẽ không được đưa vào mạng.

Trang 31

Giải thích:

Hình 2.10 : Khung màu đỏ là khung cửa sổ nhỏ có kích thước là 25x25

Pixel và sẽ chạy (chạy từ trên xuống và từ trái qua phải) khắp khung ảnh lớn

mỗi lần sẽ dịch chuyển một khoảng vài Pixel Trong hình này ảnh gốc có kích

cỡ lớn (200 x 219) nên cửa sổ sẽ không bao trùm được khuôn mặt (để bao trùm khuôn mặt thì cửa sổ phải có kích thước 80 x 80) Chính vì vậy mà khuôn mặt

sẽ được xác định ở những lần thu nhỏ ảnh

Hình 2.10 : Cửa sổ thu được với tỷ lệ Scale

ảnh gốc lớn.

Hình 2.11:

Cửa sổ thu được với tỷ lệ Scale

ảnh gốc nhỏ.

Trang 32

Hình 2.11 Ảnh được thu nhỏ (bằng 25/80 khung ảnh gốc) nhưng cửa

sổ vẫn giữ nguyên kích thước Vì vậy khung cửa sổ 25x25 bao trùm khuôn mặt Lúc này chương trình sẽ dễ dàng nhận diện được đây là khuôn mặt.

2.4.2 Tiền xử lý ảnh nhỏ trong vùng cửa sổ

Ảnh nhỏ hay là một phần của một ảnh lớn được chứa trong một cửa sổ Ảnh này là ảnh trắng đen được tiến hành cân bằng sáng và bước cuối cùng là làm nổi ảnh Kết quả cuối cùng sẽ được đưa vào mạng nơron để phân tích.

2.4.3 Đưa các điểm ảnh trong cửa sổ không bị che bởi mặt nạ vào mạng, đưa ra

kết quả

Như đã đề cập ở phần mặt nạ, mặt nạ chính là một ma trận hai chiều

đánh dấu những vị trí điểm ảnh nhiễu cần bỏ đi trên cửa sổ Những điểm ảnh

này chủ yếu tập trung ở các góc của các cửa sổ Mạng sẽ xử lý chính xác hơn

khi loại bỏ bớt những điểm ảnh nhiễu này Kết quả được minh họa như trong

hình 2.12 và hình 2.13.

Giải thích:

Hình 2.12 Phần màu trắng là phần không bị che bởi mặt nạ Còn phần

màu đen là phần mặt nạ che đi những chi tiết không thuộc khuôn mặt

Hình 2.13 Khuôn mặt được mặt nạ che đi một phần hình nền mặt.

Trang 33

Đoạn mã đơn giản sau được dùng để đưa giá trị các điểm ảnh không bị mặt nạche vào vector đầu vào của mạng nơron:

2.5 Mã giả hàm tìm kiếm (Search)

Sau khi có các thông số về cửa sổ lớn (tỉ lệ căng nhỏ nhất và lớn nhất, chiều rộng, chiều cao của bức ảnh) và thông số của cửa sổ nhỏ (chiều rộng, chiều cao) ta sẽ tính được số khung cửa sổ nhỏ cần duyệt.

Công thức được dùng để tính toán:

n là số lần căng hình, N i là tỉ lệ căng hình của lần căng hình

thứ i so với ảnh gốc.Với i<=n.

Min, Max lần lượt là tỉ lệ căng hình nhỏ nhất và lớn nhất

W , H là chiều rộng và chiều cao của khung ảnh lớn.

w, h là chiều rộng và chiều cao của khung ảnh nhỏ.

W G là khoảng cách dịch chuyển khung ảnh nhỏ

Vậy tổng số cửa sổ S cần phải xét trong một lần căng ảnh với tỉ lệ N là :

S = ((W * N) – w) * ((H * N) –h)Thực hiện tương tự với n lần căng ảnh và cộng các kết quả lại với nhau

ta sẽ được tổng số cửa sổ cần xét trong n lần căng ảnh Trong đó :

Nj+1 = Nj+((Max-Min)/n)

Các cửa sổ được cân bằng sáng và được làm nổi ảnh để mạng nơron dễdàng nhận biết

Trang 34

Khi thực hiện chức năng tìm kiếm hàm tìm kiếm sẽ duyệt toàn bộ cáccửa sổ Nếu giá trị trả về sau khi được đưa qua mạng nơron tính toán vượt quamột ngưỡng nào đó (khoảng 0.92) thì chương trình sẽ xác định đó là khuôn mặt

và tiến hành lưu giữ lại tọa độ và độ phóng đại của khung hình nhằm hiển thịlại trên khung hình chính sau khi tìm kiếm thành công

Tóm lại, các bước dùng để xác định khuôn mặt là :

1 Chuyển ảnh lớn sang ảnh trắng đen dùng hàm GrayScale() tham khảo phần [2.2.3].

2. Lưu các cửa sổ cần duyệt vào một mảng 1 chiều của một mảng

1 chiều 2 phần tử (chỉ lưu tọa độ của đỉnh có tọa độ x,y nhỏ nhất).Sốlượng cửa sổ được tính bằng công thức trên.Các cửa sổ quét toàn bộkhung ảnh với khoảng cách WinGap được quy định bởi người sử dụng.Chú ý là phải lưu toàn bộ cửa sổ của các lần căng ảnh

3. Tiền xử lý cửa sổ : Tại mỗi cửa sổ được lưu trữ tiến hành cân

bằng sáng dùng hàm LinearBestFitAdjust() tham khảo phần [2.2.2],

để giảm nhiễu do ánh sáng chiếu với các góc độ khác nhau trên từngphần của khuôn mặt,sau đó tiến hành làm nổi ảnh để tăng độ tươngphản và trải đều màu sắc ra toàn thang độ đen trắng dùng hàm

HistogramEqualization() tham khảo phần [2.2.3].

4. Duyệt ảnh : Đưa mặt nạ vào ảnh và chỉ lấy ra những pixelkhông bị che lấp.Đưa tất cả những pixel đó vào mảng nhập mộtchiều(inps) Truyền mảng một chiều đó vào mạng neuron để tiến hành

tính toán dùng hàm Compute() tham khảo phần phụ lục Sau khi tính

toán xong hàm này sẽ trả về giá tri trong khoảng [-1,1] Giá trị cànglớn thì khả năng cửa sổ chứa khuôn mặt càng cao Nếu giá trị trả vềvượt một ngưỡng nào đó được lưu trong mạng thì sẽ tiến hành lưu lạitọa độ cùng tỉ lệ phóng đại hiện tại và xác định đó là khuôn mặt.Sau đóquay trở lại bước 3 và xét cho đến hết ảnh được lưu ở bước 2

Nhận xét: Ta nhận thấy rằng khi tìm kiếm tuần tự tất cả các cửa sổ

trong khung hình sẽ lãng phí tài nguyên.Vì chương trình sẽ tìm kiếm khuôn mặt

ở cả những nơi mà nó đã phát hiện ra khuôn mặt rồi Chính vì vậy để cải tiến

Trang 35

thuật toán chúng ta cần loại bỏ vị trí đã tìm ra khuôn mặt Như vậy sẽ giảmđược một số lượng rất lớn các cửa sổ và kết quả hoàn toàn không bị trùng lặp.

Chương 3 THIẾT KẾ MẠNG NƠRON, THU THẬP DỮ LIỆU HUẤN

LUYỆN VÀ HUẤN LUYỆN MẠNG.

nhiên, mô hình trên đã được đơn giản hoá từ kết hợp nhiều mạng nơron song

song trở thành dùng một mạng duy nhất để phù hợp với thời gian và quy môcủa khoá luận

Việc thiết kế mạng không có một quy chuẩn nào cho số lượng các

nơron và các lớp ẩn, hay nói cách khác chỉ có thể xác định một cấu trúc mạng

này tốt hơn cấu trúc mạng khác qua thực nghiệm, bằng cách kiểm tra mạng trên

những mẫu khuôn mặt nó không được học (còn được gọi là kiểm tra chéo) [24]

(trang 112) Nên lưu ý rằng nếu số lượng lớp ẩn và nơron quá ít, mạng sẽ không

đủ phức tạp để học được các mẫu khuôn mặt [24] (trang 111) Ngược lại, nếu số

nơron và lớp ẩn quá nhiều sẽ tạo ra chi phí tính toán không cần thiết và mạng

có thể học cả nhiễu gây ra tình trạng quá khớp hay học vẹt – đây là tình trạng

mạng học rất tốt các mẫu khuôn mặt huấn luyện nhưng lại không nhận ra cácmẫu không được học [24] (trang 111)

Do các đặc tính trên, khoá luận dùng phương pháp thử sai (Error and Trial) để tìm ra cấu trúc mạng tương đối thích hợp cho việc học mẫu khuôn mặt

như sau:

- Đầu tiên thiết kế một loạt khoảng 20 cấu trúc mạng từ đơn giản đến

phức tạp gọi là tập dự tuyển.

Trang 36

- Với từng cấu trúc mạng trong tập dự tuyển này, ta tiến hành huấnluyện với tập khuôn mặt mẫu (đề cập trong 3.2) và kiểm tra chéo trêncác mẫu khuôn mặt nó chưa được học.

- So sánh độ chính xác khi kiểm tra chéo giữa các cấu trúc mạng trongtập dự tuyển, chọn ra cấu trúc mạng có độ chính xác cao nhất để sửdụng

Với cách này có thể không chọn được một cấu trúc mạng tối ưu choviệc mô hình hoá các mẫu khuôn mặt, nhưng cấu trúc mạng thu được cũng cókết quả tương đối chấp nhận được Trong khoá luận này, mạng được chọn cócấu trúc như sau:

- Mạng được thiết kế gồm một lớp nhập (Input Layer) có 20 nơron, một lớp ẩn (Hidden Layer) có 50 nơron và một lớp xuất (Output Layer) có 1 nơron được minh họa như trong hình 3.1:

- Ma trận trọng số (Weight Matrix) (tức trọng số của các liên kết giữa nơron lớp nhập-lớp ẩn và lớp ẩn – lớp xuất) của mạng sẽ được khởi tạo ngẫu nhiên (Randomize) trong khoảng [-1,1] [1]

50 Hidden (lớp ẩn)

20 Input (lớp nhập)

1 Output (lớp xuất) Hình 3.1 Cấu trúc mạng nơron

Trang 37

- Toàn bộ các nơron trong mạng sử dụng hàm truyền (Activation Function) là hàm nén lưỡng cực (Bipolar Sigmoid)[1] Công thức và đồ thị hàmnhư sau:

Như đã trình bày trong Chương 2, để đưa được toàn bộ các vị trí trong

ảnh gốc vào mạng nơron, khoá luận dùng một cửa sổ ảnh nhỏ (window) dịchchuyển để quét qua ảnh gốc Tại mỗi bước dịch chuyển, cửa sổ ảnh nhỏ này lưumột phần của ảnh gốc tại vị trí của nó, được áp dụng các thuật toán tiền xử lý

để giảm độ phức tạp và tăng độ tương phản, cuối cùng được áp một mặt nạ(mask) nhằm che bớt một phần (bỏ các điểm ảnh) ở các góc của cửa sổ để giảmthiểu nhiễu - do các góc của cửa sổ thường chứa phần nền phía sau khuôn mặt.Cửa số ảnh đã xử lý và áp mặt nạ này sẽ được đưa vào mạng nơron để nhận biếtxem nó có chứa mẫu khuôn mặt hay không Dựa vào lý thuyết trên, vector đầuvào (Input Vector) của lớp nhập và vector đầu ra (Output Vector) của lớp xuất

sẽ được thiết kế như sau:

- Vector đầu vào của mỗi nơron lớp nhập sẽ bằng với số điểm ảnh của cửa số (window) trừ đi số điểm ảnh của mặt nạ (Mask) Như vậy cả 20 nơron

lớp nhập của mạng sẽ nhận cùng một vector đầu vào, thiết kế như vậy nhằmtăng khả năng mô hình hoá của mạng đối với vector đầu vào khá phức tạp này

Trang 38

Ví dụ: Nếu sử dụng cửa sổ có kích thước 25 x 25 điểm ảnh, ta có số điểm ảnh là 625 điểm Sau đó áp mặt nạ có số điểm ảnh là 104 điểm, lúc đó vector đầu vào của mỗi nơron lớp nhập sẽ có kích thước 625-104= 521 phần

tử, mỗi phần tử chứa giá trị của một điểm ảnh không bị loại bỏ bởi mặt nạ

- Vector đầu ra của mạng chỉ có 1 phần tử số thực mang giá trị trong

khoảng từ [-1, 1] Ta quy định nếu giá trị đầu ra của mạng càng gần -1 sẽ thể

hiện mẫu đưa vào càng không phải là khuôn mặt Ngược lại, đầu ra của mạng

càng gần 1 sẽ thể hiện mẫu đưa vào càng có thể là khuôn mặt Như vậy 0 chính

là ngưỡng phân biệt giữa đầu ra là khuôn mặt và đầu ra không là khuôn mặt

3.2 Thu thập dữ liệu huấn luyện và huấn luyện mạng.

Trong phần này khoá luận sẽ trình bày các bước thu thập tập huấnluyện để huấn luyện mạng nơron đã được thiết kế ở trên Tiếp theo là các bướchuấn luyện dùng giải thuật lan truyền ngược chuẩn

Thu thập dữ liệu huấn luyện

Để phát hiện được mẫu khuôn mặt người, mạng nơron đã thiết kế ở trên cần được huấn luyện với một tập lớn các mẫu khuôn mặt và không phải khuôn mặt.

Việc huấn luyện mạng nơron phát hiện khuôn mặt (Facial Detection) trong ảnh tương đối khó khăn hơn so với huấn luyện mạng nhận diện các

Hình 3.3 Minh họa Vector đầu vào.

Trang 39

khuôn mặt khác nhau (Face Identify) Đó là vì nhiệm vụ của mạng không phải phân biệt giữa mẫu khuôn mặt này với mẫu khuôn mặt kia mà là phân biệt giữa mẫu khuôn mặt và mẫu không phải khuôn mặt, trong khi các mẫu không phải khuôn mặt thì có số lượng lớn đến vô cùng.

Để có thể có được nhanh chóng một tập các mẫu khuôn mặt huấn luyệntương đối chuẩn, khoá luận đã sử dụng tập dữ liệu khuôn mặt được lấy từ thưviện ảnh thí nghiệm của đại học Caltech (California Institute of Technology),theo địa chỉ: http://www.vision.caltech.edu/htmlfiles/archive.html Tập nàygồm 450 ảnh chụp khuôn mặt nhìn thẳng của khoảng 27 người trong các điềukiện phông nền, ánh sáng và biểu cảm khác nhau (vui, cười, ngạc nhiên v.v ).Tập ảnh được chia thành hai phần, phần đầu khoảng 100 ảnh ngẫu nhiên đượcdùng để huấn luyện mạng, phần sau 200 ảnh không trùng với phần đầu đượcdùng để đánh giá mạng sau khi huấn luyện

Tạo tập mẫu huấn luyện đúng:

Chúng tôi cắt thủ công từng cửa sổ chứa khuôn mặt trong tập 100 ảnh

huấn luyện Sau đó từng cửa sổ này được co lại theo đúng kích thước 25x25 Pixel của cửa sổ đầu vào và được áp dụng các thuật toán tiền xử lý ảnh.

Hình 3.4 Tập mẫu huấn luyện đúng.

Trang 40

Tạo tập mẫu huấn luyện sai:

Do các mẫu không phải khuôn mặt là vô cùng lớn, chúng tôi chỉ cắt ngẫu nhiên khoảng 400 cửa sổ không chứa khuôn mặt và áp dụng các thuật toán tiền xử lý để đưa vào tập sai Trong quá trình huấn luyện và thử nghiệm mạng, những mẫu cửa sổ bị mạng phát hiện sai – tức trả về giá trị gần 1 cho cửa sổ

không chứa mẫu khuôn mặt, sẽ được thêm vào tập này cho lần huấn luyện tiếptheo Đây gọi là quá trình học chủ động (Active learning) được đề cập trong [1] -trang.32

Huấn luyện mạng

Ý tưởng của quá trình huấn luyện:

- Cho một cửa sổ mẫu đúng (có chứa khuôn mặt) có giá trị đích là 1

- Xử lý, áp mặt nạ và đưa giá trị các điểm ảnh không bị mặt nạ che củamẫu này vào mạng nơron có ma trận trọng số được khởi tạo ngẫu nhiên, mạng sẽcho ra một kết quả ngẫu nhiên thường không gần với giá trị đích của mẫu là 1

- Tính lỗi bằng cách lấy giá trị đích của mẫu trừ đi kết quả của mạng.Lan truyền ngược lỗi này lại toàn mạng để chỉnh sửa ma trận trọng số sao cho khiđưa vào mạng mẫu đúng, mạng phải cho ra một kết quả gần 1

- Tương tự đối với mẫu sai có giá trị đích là -1

- Hoàn thành quá trình huấn luyện khi đưa vào mạng một mẫu huấnluyện đúng, mạng cho ra kết quả rất gần 1 và khi đưa vào một mẫu sai mạng cho

ra kết quả rất gần -1 Hay nói cách khác sai số giữa kết quả đầu ra của mạng vàgiá trị đích của mẫu huấn luyện là rất nhỏ ( thường là nhỏ hơn một ngưỡng đượcđịnh nghĩa trước)

Hình 3.5 Tập mẫu huấn luyện sai.

Ngày đăng: 30/12/2015, 20:28

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[2] Ming-Hsuan Yang, David J. Kriegman, Narendra Ahuja, “Detecting Faces in Images: A Survey”, IEEE Transaction on Pattern Analysis and Machine Intelligence (PAMI), Vol. 24, No 1, pp. 34-47, Jan 2002 Sách, tạp chí
Tiêu đề: Detecting Faces in Images: A Survey”, "IEEE Transaction on Pattern Analysis and Machine Intelligence (PAMI)
[3] T. Kanade, “Picture Processing Computer Complex and Recognition of Human Faces”, PhD thesis, Kyoto Univ., 1973 Sách, tạp chí
Tiêu đề: Picture Processing Computer Complex and Recognition of Human Faces”, "PhD thesis
[4] G. Yang, T. S. Huang, “Human Face Detection in Complex Background”, Pattern Recognition, Vol. 27, No. 1, pp. 53-63, 1994 Sách, tạp chí
Tiêu đề: Human Face Detection in Complex Background”, "Pattern Recognition
[5] C. Kotropoulos, I. Pitas, “Rule-based Face Detection in Frontal Views”, Proc. Int’l Conf. Acoustics, Speech and Signal Processing, Vol. 4, pp. 2637-2540, 1997 Sách, tạp chí
Tiêu đề: Rule-based Face Detection in Frontal Views”, Proc. Int’l Conf. "Acoustics, Speech and Signal Processing
[7] Hichem Sabbi and Nozha Boujemaa, “Coarse to Fine Face Detection Based on Skin Color Adaption”, Biometric Authentication, LNCS 2359, pp. 112-120, Springer-Verlag Berlin Heidelberg, 2002 Sách, tạp chí
Tiêu đề: Coarse to Fine Face Detection Based on Skin Color Adaption
[8] Douglas Chai and Kim N. Ngan, “Locating Facial Region of a Head-and-Shoulders Color Image”, Proc. Third Int’l Conf.Automatic Face and Gesture Recognition, pp. 124-129, 1998 Sách, tạp chí
Tiêu đề: Locating Facial Region of a Head-and-Shoulders Color Image
[9] Hannes Kruppa, Martin A. Bauer, and Bernt Schiele,“ Skin Patch Detection in Real-World Images”, DAGM 2002, LNCS 2449, pp. 109-116, Springer-Verlag Berlin Heidelberg, 2002 Sách, tạp chí
Tiêu đề: Skin Patch Detection in Real-World Images
[10]Kang Ryoung Park, “Gaze Detection System by Wide and Auto Pan/Tilt Narrow View Camera”, DAGM 2003, LNCS 2781, pp. 76-83, Springer- Verlag Berlin Heidelberg, 2003 Sách, tạp chí
Tiêu đề: Gaze Detection System by Wide and Auto Pan/Tilt Narrow View Camera
[11]K. C. Yow, R. Cipolla, “Feature-Based Human Face Detection”, Image and Vision Computing, Vol. 15, No. 9, pp.713-735, 1997 Sách, tạp chí
Tiêu đề: Feature-Based Human Face Detection”, "Image and Vision Computing
[13] T. K. Leung, M.C. Burl, P. Perona, “Finding Faces in Cluttered Scenes Using Random Labeled Graph Matching”, Proc. 5 th IEEE Conf. Computer Vision (ICCV’95), pp. 637-644, 1995 Sách, tạp chí
Tiêu đề: Finding Faces in Cluttered Scenes Using Random Labeled Graph Matching”, "Proc. 5"th "IEEE Conf. Computer Vision (ICCV’95)
[14]. A. Lanitis, C. J. Taylor, T. F. Cootes, “An Automatic Face Identification System Using Flexible Appearance Models”, Image and Vision Computing, Vol.13, No. 5, pp. 393-401, 1995 Sách, tạp chí
Tiêu đề: An Automatic Face Identification System Using Flexible Appearance Models”, "Image and Vision Computing
[15]. I. Craw, D. Tock, A. Bennett, “Finding Face Features”, Proc. 2 nd European Conf. Computer Vision (ECCV’92), Vol. 2, pp. 92-96, 1992 Sách, tạp chí
Tiêu đề: Finding Face Features”, "Proc. 2"nd "European Conf. Computer Vision (ECCV’92)
[16]M. Turk, A. Pentland, “Eigenfaces for Recognition”, Journal of Cognitive Neuroscience, Vol. 3, No. 1, pp. 71-86, 1991 Sách, tạp chí
Tiêu đề: Eigenfaces for Recognition”, "Journal of Cognitive Neuroscience
[17]E. Osuna, R. Freund, F. Girosi, “Training Support Vector Machines: An Application to Face Detection”, Proc. IEEE Conf. Computer Vision and Pattern Recognition (CVPR’97), pp. 130-136, 1997 Sách, tạp chí
Tiêu đề: Training Support Vector Machines: An Application to Face Detection”, "Proc. IEEE Conf. Computer Vision and Pattern Recognition (CVPR’97)
[18]P. Viola, M. Jones, “Robust Real Time Object Detection”, Proc. IEEE ICCV Workshop on Statistical and Computational Theories of Vision, Jul 2001 Sách, tạp chí
Tiêu đề: Robust Real Time Object Detection”, "Proc. IEEE ICCV Workshop on Statistical and Computational Theories of Vision
[19]. P. Viola, M. Jones, “Rapid object detection using a boosted cascade ofsimple features”, Proc. IEEE Conf. Computer Vision and Pattern Recognition (CVPR’01), pp. 511-518, Dec 2001 Sách, tạp chí
Tiêu đề: Rapid object detection using a boosted cascade ofsimple features”, "Proc. IEEE Conf. Computer Vision and Pattern Recognition (CVPR’01)
[20] K. K. Sung, T. Poggio, “Example-based learning for view-based human face detection”, IEEE Transaction on Pattern Analysis and Machine Intelligence(PAMI), Vol. 20, No Sách, tạp chí
Tiêu đề: Example-based learning for view-based human face detection”, "IEEE Transaction on Pattern Analysis and Machine Intelligence(PAMI)
[21] Ths.Trần Lê Hồng Vũ , “Phát hiện khuôn mặt dựa trên đặt trưng lồi lõm”, Luận văn Thạc sỹ, Đại học quốc gia TP. Hồ Chí Minh, 2005 Sách, tạp chí
Tiêu đề: Phát hiện khuôn mặt dựa trên đặt trưng lồi lõm
[22] Phạm Thế Bảo, Nguyễn Thành Nhật, Cao Minh Thịnh , Trần Anh Tuấn, Nguyễn Phúc Dõan, “Tổng quan các phương pháp xác định khuôn mặt người” Sách, tạp chí
Tiêu đề: Tổng quan các phương pháp xác định khuônmặt người
[23] Trần Phúc Trị, “Phát hiện mặt người bằng AdaBoost kết hợp mạng nơron” Sách, tạp chí
Tiêu đề: Phát hiện mặt người bằng AdaBoost kết hợp mạng nơron

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w