133
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 GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Bao Cao Khoa Luan

Embed Size (px)

Citation preview

Page 1: Bao Cao Khoa Luan

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

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 2: Bao Cao Khoa Luan

3.1 Thiết kế mạng.........................................................................................................31

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

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 3: Bao Cao Khoa Luan

TỔNG QUAN

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ặt

ngườ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ận

dạ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ặt

ngườ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.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 4: Bao Cao Khoa Luan

DANH MỤC CÁC HÌNH

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.1 Ảnh gốc.

Hình 2.2 Ảnh đen trắng

Hình 2.3 Ảnh chưa cân bằng sáng.

Hình 2.4 Ảnh đã cân bằng sáng.

Hình 2.5. Ảnh chưa làm nổi.

Hình 2.6 Ảnh đã làm nổi.

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

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 5: Bao Cao Khoa Luan

1/92

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ác

nghiê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ìn

thẳng vào thiết bị thu hình và đầu ở tư thế thẳng đứng trong ảnh đen trắng. Đến

nay 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ôi

trường xung quanh rất phức tạp (như trong tự nhiên) nhằm đáp ứng nhu cầu

thự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ố.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Quả bóng rổ

Chiếc xe đạp

Không biết

Page 6: Bao Cao Khoa Luan

2/92

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á

trình học) hoặc là người lạ.

Có rất nhiều thuật toán đã được phát triển nhằm cải thiện quá trình

nhận dạng khuôn mặt người ngày càng tốt hơn. Với cơ sở dữ liệu so sánh lớn,

thuật toán phức tạp, sự hỗ trợ từ phần cứng hay chíp xử lý riêng, hệ thống nhận

diện có thể nhận diện ngay cả khi mặt người quay ngang hay nhìn lên, nhìn

xuống, chuyển động hay đứng yên, thậm chí mặt chỉ chiếm một phần rất nhỏ

trong toàn bộ khung hình.

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 được

nhiều nhà nghiên cứu trên thế giới quan tâm. Đây là một vấn đề lớn trong

ngành thị giác máy tính (Computer Vision – viết tắt CV).

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 7: Bao Cao Khoa Luan

3/92

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.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

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

Bin Laden

Obama

Ảnh Inputs Ảnh Outputs

Page 8: Bao Cao Khoa Luan

4/92

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 đặc

trư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.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

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

Hình/videoPhâ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)

Page 9: Bao Cao Khoa Luan

5/92

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ều

nhóm nghiên cứu trong thời gian dài. Các ứng dụng liên quan đến nhận dạng

mặ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ông

cộ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ề cho

trung 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ệc

nhậ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ủa

từ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ủa

mì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 định

thô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ân

hà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ười

rú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ôn

mặ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ãng

truyền hình, …. Ví dụ tìm các đoạn video có tổng thống Bush phát biểu, tìm

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 10: Bao Cao Khoa Luan

6/92

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ần

trê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ữa

Camera 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éo

bê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ác

nhau, 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ột

phần hoặc thậm chí khuất hết.

a) b)

a) b)

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

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 11: Bao Cao Khoa Luan

7/92

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ện

hoặ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ác

thô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.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

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

Page 12: Bao Cao Khoa Luan

8/92

Sự che khuất

Ảnh khuôn mặt có thể bị che khuất bởi các đối tượng khác hoặc các

khuôn mặt khác.

Hướng của ảnh

Các ảnh của khuôn mặt có thể biến đổi rất nhiều với các góc quay khác

nhau của trục Camera. Chẳng hạn chụp với trục máy ảnh nghiêng làm cho khuôn

mặt bị nghiêng so với trục của ảnh.

Đ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ất

Camera (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.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

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

Page 13: Bao Cao Khoa Luan

9/92

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ốn

hướ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ên

cò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ành

phầ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áp

nà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ên

nào khuôn mặt người, Sahbi và Boujemaa [7] sử dụng mạng neural học để ước

lượ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ác

khó 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ộ (chi

tiế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

người để tìm ứng viên, nhưng ông không xử lý cho từng điểm ảnh theo cách

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 14: Bao Cao Khoa Luan

10/92

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óc

mắt, miệng và tâm mắt [10]. Ông xây dựng thuật toán SVM (Support Vector

Machine) đã được học trước đó để xác định các vị trí ứng viên có phải là góc

mắ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ĩa

bằ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 đồng

cho 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ến

dạ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ên

gia định nghĩa trước, phương pháp này sử dụng những mẫu được rút trích qua

mộ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].

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 15: Bao Cao Khoa Luan

11/92

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ạng

mẫ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ùng

mạ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ôn

mặ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 .

1.4.1 Giới thiệu

Thuật toán sử dụng mạng nơron[1] để nhận dạng mẫu khuôn mặt người

trong một bức ảnh gồm bốn bước sau:

1. Đưa vào một ảnh để nhận dạng, ảnh được chụp thẳng hoặc

nghiêng không quá 10o , chụp trong điều kiện ánh sáng bình thường.

2. Xác định cửa sổ (Window) có khuôn mặt theo từng tỷ lệ co

ảnh gốc, đây còn gọi là bước phát hiện khuôn mặt.

3. Tiền xử lý cửa sổ ảnh: chuyển cửa sổ ảnh từ màu sang đen

trắng, cân bằng sáng, làm nổi ảnh.

4. Cửa sổ ảnh thu được sau giai đoạn tiền xử lý ở bước 3 sẽ đưa

vào mạng nơron đã được huấn luyện để xác định đây có phải là mẫu

khuôn mặt người hay không.

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

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 16: Bao Cao Khoa Luan

12/92

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ác

thiế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ìm

xem có mẫu khuôn mặt trong cửa sổ hay không.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 17: Bao Cao Khoa Luan

13/92

- Để 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 (Histogram

Equalization). Kết quả ảnh ở giai đoạn này trung thực với ảnh gốc, có độ chứng

thự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ước

25x25 điểm ảnh và xuất ra một giá trị trong khoảng từ -1 đến 1. Khi đưa vào

mộ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ẫu

khuô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ày

chứ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ả 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.

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 được

cà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 ảnh

hưở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.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 18: Bao Cao Khoa Luan

14/92

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 áp

dụ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ưởng

bở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

1.5.1 Mục đích

Ứng dụng nền tảng mạng nơron đã nghiên cứu và cài đặt [phụ lục] vào

một vào một ứng dụng lớn mang tính thực tế.

Cài đặt thành công cơ sở lý thuyết phát hiện khuôn mặt dựa theo nghiên

cứu [1].

Á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ông

quá 100).

Ảnh được chụp trong điều kiện ánh sáng bình thường (không chụp

ngượ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).

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 19: Bao Cao Khoa Luan

15/92

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ạng

neuron nhân tạo. Ba vấn đề đã được nêu ra để xử lý trong quá trình tìm khuôn

mặt:

Một là ảnh khuôn mặt có nhiều chi tiết khác nhau, phụ thuộc vào

nguồ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 quan

trọ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ững

khá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ụng

duy 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éo

dãn một chiều, phóng đại, hay tạo một hình ảnh của khuôn mặt qua

gươ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ảng

cá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 trong

các môi trường có cường độ sáng khác nhau sẽ tạo ra những bức ảnh

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 20: Bao Cao Khoa Luan

16/92

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

nhiễ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 hay

nó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ếu

dù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ắc

khác nhau trên khuôn mặt. Chính vì vậy mà ta phải chuyển ảnh sang đen trắng

sau đó 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.

2.2.1 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

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 21: Bao Cao Khoa Luan

17/92

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ắc

khá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ọn

lạ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.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 22: Bao Cao Khoa Luan

18/92

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.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

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

Page 23: Bao Cao Khoa Luan

19/92

Mã hàm chuyển ảnh đen trắng :

Public Void GrayScale()

{//biến lấy giá trị màu sắc của pixel trong ảnh màu

Color col;

//biến chứa giá trị màu sắc sau khi chuyển sang //trắng đen

int gray;

//Tính toán và cập nhật lại toàn bộ pixel.

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

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

{

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

{

col = img.GetPixel(l,c);

gray = (int)(0.32f * col.R + 0.5f * col.G + 0.18f*

col.B);

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

}

}

}

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 24: Bao Cao Khoa Luan

20/92

2.2.2 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 ánh

sáng chiếu vào khuôn mặt khi chụp ảnh. Vì khi chụp ảnh ở các tư thế, thời gian

khác nhau sẽ cho ảnh có chất lượng khác nhau về độ chiếu sáng ở từng phần

trê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.int n;//Biến chứa giá trị của pixel khi duyệt theo //hàng. float p;// Duyệt theo dòng :for(int l=0; l<w;l++) {

n=0; sx = 0; sy = 0; sxy = 0; sxx = 0;for(int c=0; c<h;c++) {

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

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Hình 2.3. Ảnh chưa cân bằng sáng

Hình 2.4.Ảnh đã cân bằng sáng

Page 25: Bao Cao Khoa Luan

21/92

sx += c; sxx += c * c;p = img.GetPixel(l,c).R; sy += p;

sxy += p*c;n++;

}}ra[l] = (n*sxy - sx*sy)/(n*sxx - sx*sx);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) {

sx += l; sxx += l * l;p = ra[l] * c + rb[l]; // c ou l ?sy += p;

sxy += p*l;n++;

}}ca[c] = (n*sxy - sx*sy)/(n*sxx - sx*sx);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++) {

g = img.GetPixel(l,c).R;g = g - (int)(ca[c] * l + cb[c])+128;

if (g<0) g = 0;if (g>255) g = 255; img.SetPixel(l,c,Color.FromArgb(g, g, g));

}}

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ìm

hiểu và sử dụng. Nếu cần biết thêm chi tiết tham khảo [1].

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 26: Bao Cao Khoa Luan

22/92

2.2.3 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 cho

nhữ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

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 27: Bao Cao Khoa Luan

23/92

độ 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 = new int[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);

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Hình 2.5. Ảnh chưa làm nổi

Độ tương phản giữa những vùng sáng và vùng tối không rõ rệt.

Hình 2.6. Ảnh được làm nổi

Độ tương phản giữa các điểm màu tăng lên đáng kể.

Page 28: Bao Cao Khoa Luan

24/92

//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ùng

mộ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ông

cầ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ày

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

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 29: Bao Cao Khoa Luan

25/92

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ạ

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Rộng 25 pixel

Cao 25

pixel

Độ dời Window

Hình 2.8. Cửa sổ

trước khi áp mặt nạ.

Page 30: Bao Cao Khoa Luan

26/92

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ấu

các điểm ảnh này sẽ không được đưa vào mạng nơron, gán giá trị 0 cho những

phầ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 ma

trậ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ẽ di

chuyển toàn bộ khung ảnh. Mỗi lần di chuyển cửa sổ chương trình sẽ tiến hành

câ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.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

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.

Page 31: Bao Cao Khoa Luan

27/92

Ví dụ :

Min là tỉ lệ căng hình nhỏ nhất.

Max là tỉ lệ căng hình lớn nhất.

N là số lần thực hiện căng hình

Vậy mỗi lần hình sẽ được phóng đại thêm một tỉ lệ: (Max-Min) / N.

Kết quả tạo các cửa sổ (Window) từ các độ căng (Scale) của ảnh được

minh họa như trong hình 2.10. và hình 2.11.

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.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấ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 nhỏ.

Page 32: Bao Cao Khoa Luan

28/92

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.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấ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ạ.

Page 33: Bao Cao Khoa Luan

29/92

Đ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:

//mặt nạ là một ma trận nhị phân 25x25: mask[25][25]

//cửa sổ là một ma trận số nguyên chứa giá trị các điểm ảnh: window[25][25]

//input[] là vector đầu vào của mạng nơron

for (int i = 0; i < 25; i++)

for (int j = 0; j < 25; j++) // nếu giá trị của mặt nạ tại i,j không là 1

if (mask[i][j] != 1)

//thêm giá trị điểm ảnh của cửa sổ tại i,j vào vector đầu vào

input.add(window[i][j])

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, Ni 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ỏ.

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

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 34: Bao Cao Khoa Luan

30/92

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ác

cửa sổ. Nếu giá trị trả về sau khi được đưa qua mạng nơron tính toán vượt qua

mộ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ừng

phần của khuôn mặt,sau đó tiến hành làm nổi ảnh để tăng độ tương

phả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 pixel

không bị che lấp.Đưa tất cả những pixel đó vào mảng nhập một

chiề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àng

lớ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ại

tọ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

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 35: Bao Cao Khoa Luan

31/92

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.

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.

3.1 Thiết kế mạng

Một mạng nơron đã được huấn luyện học (tổng quát hoá) được các

mẫu khuôn mặt là phần quan trọng nhất trong quá trình phát hiện khuôn mặt.

Trong khoá luận này áp dụng mô hình mạng nơron truyền thẳng đa lớp

(Multilayer Feedforward Network) dựa theo lý thuyết được nêu trong [1]. Tuy

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ác

mẫ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.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 36: Bao Cao Khoa Luan

32/92

- Với từng cấu trúc mạng trong tập dự tuyển này, ta tiến hành huấn

luyện với tập khuôn mặt mẫu (đề cập trong 3.2) và kiểm tra chéo trên

cá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 trong

tậ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 cho

việ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].

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

50Hidden(lớp ẩn)

20Input

(lớp nhập)

1Output

(lớp xuất)

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

Page 37: Bao Cao Khoa Luan

33/92

- 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àm

như 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ịch

chuyể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ưu

mộ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ảm

thiể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ết

xem nó có chứa mẫu khuôn mặt hay không. Dựa vào lý thuyết trên, vector đầu

và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ằm

tă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 [24] (trang 112).

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Hàm nén lưỡng cực BipolarSigmoid:

Khỏang trả về: [-1, 1]Đồ thị minh họa hàm

Hình 3.2. Công thức và đồ thị minh hoạ

hàm nén lướng cực (Bipolar Sigmoid)

Page 38: Bao Cao Khoa Luan

34/92

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ấn

luyện để huấn luyện mạng nơron đã được thiết kế ở trên. Tiếp theo là các bước

huấn luyện dùng giải thuật lan truyền ngược chuẩn.

3.2.1 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 khuôn

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

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

Page 39: Bao Cao Khoa Luan

35/92

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ện

tươ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ày

gồm 450 ảnh chụp khuôn mặt nhìn thẳng của khoảng 27 người trong các điều

kiệ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 được

dùng để huấn luyện mạng, phần sau 200 ảnh không trùng với phần đầu được

dù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.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

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

Page 40: Bao Cao Khoa Luan

36/92

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ếp

theo. Đây gọi là quá trình học chủ động (Active learning) được đề cập trong [1] -

trang.32.

3.2.2 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ủa

mẫ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ấn

luyệ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).

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

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

Page 41: Bao Cao Khoa Luan

37/92

Với ý tưởng huấn luyện như trên, khoá luận dùng 2 tập mẫu huấn luyện

đúng và sai để huấn luyện mạng nơron bằng giải thuật lan truyền ngược chuẩn

(Back Propagation). Các bước huấn luyện như sau:

1. Trộn hai tập mẫu đúng và mẫu sai theo thứ tự ngẫu nhiên

thành một tập chung gọi là tập huấn luyện.

2. Với mỗi mẫu huấn luyện đúng trong tập huấn luyện, gán

cho nó một giá trị đích (Target Value) là 1. Với mỗi mẫu sai, gán giá

trị đích là -1.

3. Lần lượt áp mặt nạ cho từng mẫu trong tập huấn luyện rồi

đưa mẫu đó vào mạng nơron để tính giá trị đầu ra (Output Value).

4. Lấy giá trị đích của mẫu trừ cho giá trị đầu ra do mạng

nơron tính toán để tìm ra giá trị sai số (Error).

5. Lan truyền ngược sai số này lại lần lượt từng lớp trong

mạng nơron để tính toán sai số cho từng nơron trong mạng.

6. Từ sai số có được sau quá trình lan truyền ngược, ta tính

toán giá trị thay đổi vector trọng số của từng nơron sao cho lỗi là tối

thiểu.

7. Quay lại thực hiện bước 3 cho đến khi nào giá trị lỗi bình

phương (Mean Square Error) của mạng giảm đến một mức cho phép

định nghĩa trước hoặc số vòng huấn luyện (Epoch) tăng đến mức định

nghĩa trước.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 42: Bao Cao Khoa Luan

38/92

Giải thích hình 3.6:

{a}: Cửa sổ mẫu huấn luyện.{b}: Giá trị đích của cửa sổ mẫu.{c}: Giá trị đầu ra do mạng tính toán.{d}: Sai số của mạng, sẽ được lan truyền ngược lại mạng.

Một số thông số đáng chú ý trong quá trình huấn luyện:

- Vòng lặp huấn luyện (Epoch): là số lần thuật toán huấn luyện duyệt

qua toàn bộ các mẫu huấn luyện có trong tập mẫu huấn luyện.

- Vòng lăp huấn luyện tối đa (Max Epoch): là số vòng lặp tối đa được

định nghĩa trước mà thuật toán huấn luyện sẽ chạy trước khi dừng lại cho dù

lỗi bình phương của mạng có giảm xuống mức cho phép hay không (nhằm

tránh trường hợp vòng huấn luyện chạy mãi khi huấn luyện không đạt hiệu quả

mong muốn).

- Lỗi bình phương (Mean Square Error): là một chỉ số được tính như

sau: E=1/2 * (error)2. Chỉ số này có tác dụng thể hiện mức độ chính xác của

mạng đang được huấn luyện đối với tập huấn luyện hiện tại.

- Lỗi bình phương cho phép: là một chỉ số được định nghĩa trước có tác

dụng dừng quá trình huấn luyện khi mạng đã đạt được một độ chính xác nào

đó trên tập huấn luyện. Đối với quá trình huấn luyện mạng nơron ở trên,

chúng tôi định nghĩa chỉ số này ở mức 0.001.

- Sau quá trình huấn luyện, mạng có thể được dùng để nhận biết một cửa

sổ có chứa mẫu khuôn mặt hay không.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

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

{a}

{b}

{b}

{d}{c}

Page 43: Bao Cao Khoa Luan

39/92

3.2.3 Một ví dụ cụ thể quá trình huấn luyện:

Ta lấy một mẫu cửa sổ ngẫu nghiên trong tập huấn luyện để minh họa

cho quá trình huấn luyện mạng.

- Mẫu cửa sổ 25x25 sau khi đưa ra khỏi tập huấn luyện được áp mặt

nạ có 104 điểm ảnh, vậy cửa sổ sau khi áp mặt nạ còn lại 521 điểm ảnh.

- Vì đây là một mẫu không phải khuôn mặt (mẫu sai) nên có giá trị

đích là -1.

- Đưa các điểm ảnh không bị loại bỏ bởi mặt nạ của mẫu cửa sổ trên

vào một vector 521 phần tử: [163,54,26,79, 210,178…..231,46,25,15,97]

gọi là vector đầu vào của mạng nơron.

- Đưa vector vào lớp nhập của mạng nơron, mạng sẽ tính toán cho ra

giá trị đầu ra, vì nơron lớp xuất dùng hàm truyền Bipolar Sigmod nên đầu ra

có giá trị trong khoảng [-1,1], với trường hợp vector đầu vào cụ thể trên giá

trị đầu ra của mạng là 0.27.

- Lấy giá trị đích của mẫu trừ cho giá trị đầu ra của mạng để ra được

sai số của mạng: trong trường hợp ví dụ trên giá trị đích là -1, giá trị đầu ra

là 0.27, ta được lỗi của mạng là : -1-(0.27)=-1.27

- Giá trị lỗi này sẽ được lan truyền ngược lại từng lớp của mạng nơron

để tính toán sự thay đổi ma trận trọng số (Minh họa trong phục lục C).

- Ta lại lấy mẫu khác trong tập huấn luyện và tiếp tục quá trình trên

với ma trận trọng số mới thay đổi này.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

-1

Page 44: Bao Cao Khoa Luan

40/92

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

4.1 Hiện thực

Khoá luận được hiện thực sử dụng ngôn ngữ C# trên nền tảng .Net.

Hiện thực gồm hai phần:

Phần lõi kiến trúc mạng nơron bao gồm cấu trúc phần tử xử lí, các hàm

truyền, cấu trúc mạng truyền thẳng và giải thuật học lan truyền ngược sẽ

được cài đặt hoàn toàn hướng đối tượng để thuận tiện cho quá trình nâng

cấp cải tiến và sử dụng. Mã nguồn xin tham khảo trong thư mục: “CD:\

NEURON SOURCE CODE\NN_Base” trong CD kèm theo khoá luận.

Phần Demo sử dụng và huấn luyện đối tượng mạng nơron đã xây dựng ở

phần lõi để phát hiện khuôn mặt. Mã nguồn xin tham khảo trong thư mục:

“CD:\DEMO SOURCE CODE” trong CD kèm theo khoá luận.

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

Trong phần sẽ trình bày chi tiết cách hiện thực hướng đối tượng các

thành phần cơ bản của mạng nơron nhân tạo như: nơron, lớp, mạng, hàm

truyền.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 45: Bao Cao Khoa Luan

41/92

4.1.1.1 Phần tử xử lí cơ bản – nơron:

Gồm 2 class:

Class trừu tượng Neuron, là class cơ bản cho mọi nơron kế thừa, đóng gói các

thuộc tính và phương thức cơ bản thường dùng như mảng trọng số của nơron,

mảng ngõ vào (input) và ngõ xuất (output), phương thức tạo số ngẫu nhiên cho

mảng trọng số (randomize).

Class ActivationNeuron kế thừa lớp trừu tượng Neuron, đây chính là một

phần tử xử lí cơ bản cho mạng nơron truyền thẳng. Ngoài các thuộc tính cơ bản

kế thừa từ class trừu tượng Neuron, có 2 thuộc tính mới là Hàm phát động

(ActivatonFunction) lưu hàm phát động của nơron và Ngưỡng (Threshold) lưu

giá trị ngưỡng. Phương thức tính ngõ ra của nơron (Compute) sẽ tính tổng toàn

bộ các (trọng số * ngõ vào) + Ngưỡng rồi truyền giá trị này vào Hàm phát động

(sẽ được gán cho nơron lúc khởi tạo) để được giá trị ngõ ra, mã giả:

double Compute (double [] input)

{

double sum=0; //khởi tạo biến tổng

for (i=0; i< input.count; i++)

sum+=weight[i]*input[i]; // trọng số * ngõ vào

sum+=threshold;

return (ActivationFunction(sum));//trả về output

}

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 46: Bao Cao Khoa Luan

42/92

4.1.1.2 Các hàm truyền:

Như đã giới thiệu trong phần lí thuyết (phụ lục B), chúng tôi cài đặt 3 hàm

truyền: Hàm nấc (Threshold), hàm nén đơn cực (Sigmoid) và hàm nén lưỡng cực

(BipolarSigmoid).

Giao diện IActivationFunction có 3 hàm: Function, Derivative và

Derivative2 cho các class hàm truyền kế thừa. Trong đó Function sẽ được cài đặt

cụ thể cho các hàm truyền theo các công thức (3), (4), (5) trong phần lí thuyết (phụ

lục B), Derivative và Derivative2 lần lượt là đạo hàm cấp 1 và cấp 2 của các hàm

truyền này. Riêng 2 class Sigmoid và BipolarSigmoid, khi khởi tạo class ta truyền

vào hệ số góc Alpha.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 47: Bao Cao Khoa Luan

43/92

4.1.1.3 Cấu trúc lớp và mạng:

Cấu trúc lớp nơron thể hiện qua class trừu tượng Layer chứa mảng các ngõ vào

(InputsCount), mảng các Nơron trong lớp và ngõ ra của lớp (Output). Các phương

thức gồm có Compute() gọi lại phương thức Compute() của từng Nơron với tham

số ngõ vào là Input của lớp, Randomize() gọi lại phương thức Randomize() của

từng Nơron để khởi tạo trọng số ngẫu nhiên.

Class ActivationLayer kế thừa từ class Layer, thể hiện một lớp trong mạng

nơron truyền thẳng.

Tương tự, cấu trúc mạng nơron thể hiện qua class trừu tượng Network. Class

trừu tượng này chứa mảng các ngõ vào của mạng, mảng các Lớp trong mạng và

ngõ ra của mạng. Phương thức Compute() của mạng lại gọi lại phương thức

Compute() của từng Lớp thành viên để tính giá trị ngõ ra Output của mạng.

Class ActivationNetwork kế thừa class Network và chính là một mạng nơron

truyền thẳng.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 48: Bao Cao Khoa Luan

44/92

4.1.1.4 Giải thuật học lan truyền ngược (Backpropagation):

Interface ISupervisedLearning tạo một giao diện chung cho tất cả các giải

thuật học có giám sát với hai phương thức Run và RunEpoch.

Class BackPropagationLearning cài đặt Interface ISupervisedLearning. Bao

gồm:

Các thuộc tính:

LearningRate: tốc độ học, càng nhỏ mạng học càng chậm nhưng mịn hơn

và ổn định hơn.

Momentum: bước đà, giúp mạng mau hội tụ và tránh những điểm cực tiểu

cục bộ. Nếu bước đà bằng 1, lần thay đổi trọng số sau hoàn toàn bằng lần

thay đổi trọng số trước bất chấp kết quả sai số mới của mạng.

Network: mạng đang được huấn luyện.

NeuronErrors: ma trận sai số của mạng.

ThresholdUpdates và WeightUpdates là các ma trận thay đổi trọng số của

mạng.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 49: Bao Cao Khoa Luan

45/92

Và các phương thức:

CalculateError: Trả về sai số của mạng.

CalculateUpdates: Tính giá trị delta cập nhật trọng số cho mạng.

UpdateNetwork: Cập nhật trọng số cho toàn mạng.

Run: chạy một vòng lặp học, lấy vào tham số là một vector nhập và một

vector xuất mẫu tương ứng. Tiến hành gọi các phương thức Compute() của

mạng để lấy Output thực, chạy phương thức CalculateError() để trả về sai

số của mạng rồi chạy phương thức CalculateUpdates() để tính giá trị delta

cập nhật trọng số cho mạng, cuối cùng chạy UpdateNetwork() để cập nhật

trọng số cho toàn mạng.Phương thức trả về sai số bình phương chia 2 của

ngõ ra mạng so với vector xuất mẫu.

RunEpoch: chạy vòng lặp học qua toàn bộ các vector nhập và các vector

xuất mẫu trong tập huyấn luyện bằng cách với mỗi vector nhập gọi phương

thức Run() và truyền vào vector nhập và vector xuất mẫu tương ứng.

Phương thức trả về tổng sai số bình phương chia 2 của các ngõ ra mạng so

với tất cả các vector xuất mẫu.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 50: Bao Cao Khoa Luan

46/92

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

Phần hiện thực Demo sẽ giới thiệu các hàm quan trọng trong quá trình

phát hiện khuôn mặt:

Các hàm xử lý, phát hiện: là các hàm tiền xử lý ảnh gốc và hàm dịch

chuyển cửa sổ để đưa vào mạng tìm khuôn mặt.

Các hàm huấn luyện: dùng trong huấn luyện mạng và lưu mạng đã huấn

luyện.

4.1.2.1 Các hàm xử lý, phát hiện:

Theo quy trình xử lý, ảnh gốc đầu tiên sẽ được chuyển thành trắng đen

sử dụng hàm GrayscaleConverter(). Giải thích và mã hàm đã được nêu trong

phần 2.2.1 của khoá luận.

Tiếp theo, hàm search() sẽ tạo một tập ảnh với độ co dãn từ lớn tới nhỏ

từ ảnh gốc, dùng một cửa sổ có kích thước 25x25 điểm ảnh quét qua toàn bộ

các vị trí trong từng ảnh của tập ảnh này, tiền xử lý rồi áp mặt nạ để đưa các giá

trị điểm ảnh không bị mặt nạ che vào mạng nơron xử lý cho ra kết quả cửa sổ

có chứa khuôn mặt hay không. Các hàm tiền xử lý gồm hàm

LinearBestFitAdjust() để cân bằng độ sáng tối và hàm

HistogramEqualization() để làm tăng độ tương phản, giải thích và mã các hàm

này cũng đã được nêu lần lượt trong các phần 2.2.2 và 2.2.3 của khoá luận.

Cách xây dựng và đoạn mã áp mặt nạ đã được nêu trong phần 2.4.3 của khoá

luận.

Giải thích và các bước của hàm tìm kiếm search() đã được nêu trong

phần 2.5 của khoá luận.

Sau đây là mã của hàm search():

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 51: Bao Cao Khoa Luan

47/92

/// <summary>/// Hàm tìm kiếm cửa sổ chứa mẫu khuôn mặt trong ảnh lớn/// </summary>/// <param name="pmimg">Đối tương ảnh đưa vào</param>/// <returns>Trả về danh sách những cửa sổ chứa khuôn mặt</returns>

public ArrayList search(PMImage pmimg) {

//Mảng đầu vào của mạng, có kích thước bằng kích thước mảng những //vị trí không bị mặt nạ che trong cửa sổ 25x25 điểm ảnh.

float[] ins = new float[key_points.Count];

KeyPoint p;float s;Bitmap img;ArrayList result = new ArrayList();pmimg.setClipSize(win_W,win_H,Mask);int done, found, remaining;done = 0;found = 0;remaining = 0;

//Tính toán tổng số cửa sổ cần kiểm trafor (float scale = Min_Scale; scale <= Max_Scale; scale +=

(Max_Scale-Min_Scale)/((float)Nb_Scale)) {

pmimg.Scale = scale;for (int i = 0; i<pmimg.MaxOriginX-Windows_Gap+1;

i+=Windows_Gap) for (int j = 0; j<pmimg.MaxOriginY-Windows_Gap+1;

j+=Windows_Gap) remaining++;

}

//Bắt đầu quá trình tìm kiếm //Vòng lặp tạo tập ảnh co dãn và duyệt tập này

for (float scale = Min_Scale; scale <= Max_Scale; scale +=(Max_Scale-Min_Scale)/((float)Nb_Scale))

{pmimg.Scale = scale;

//với mỗi ảnh co dãn, dùng 2 vòng lặp lồng nhau //dịch chuyển cửa sổ 25x25 đi khắp ảnh, mỗi lần dịch chuển //một khoảng là window_gap = 2 điểm ảnhfor (int i = 0; i<pmimg.MaxOriginX-Windows_Gap+1;

i+=Windows_Gap) {

for (int j = 0; j<pmimg.MaxOriginY-Windows_Gap+1;j+=Windows_Gap)

{done++;remaining--;

//với mỗi lần dịch chuyển //cắt phần ảnh nhỏ tạo bởi cửa sổ //áp dụng các thuật toán tiền xử lýimg = pmimg.getClipedImage(i,j);

//Đưa giá trị màu của những điểm ảnh không bị //mặt nạ che vào mảng đầu vào ins[]của mạngfor (int ip=0; ip<key_points.Count; ip++) {

p = (KeyPoint)key_points[ip];ins[ip] = img.GetPixel(p.X, p.Y).R;

}

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 52: Bao Cao Khoa Luan

48/92

//đưa mảng ins[] vào hàm Compute() của đổi tượng //mạng nơron để tính toán giá trị đầu ra,

//lưu giá trị đầu ra vào biến ss = n.Compute(ins)[0];

//nếu giá trị đầu ra lớn hơn ngưỡng phát hiện//thêm cửa sổ đang xét vào tập kết quả tìm được.if (s > Detect_Threshold) {

result.Add(new PatternMatch((Bitmap)img.Clone(),s,i,j,scale));

found++;}

if (!Continue()) break;}

if (!Continue()) break;}if (!Continue()) break;

}return result;

}

4.1.2.2 Các hàm huấn luyện:

Đối tượng mạng nơron được huấn luyện theo quy trình sau:

Đầu tiên, thu thập dữ liệu huấn luyện gồm tập các cửa sổ mẫu đúng –

goods[] và tập các cửa sỏ mẫu sai bads[] như đã nêu trong phần ..

Kế đến, trộn hai tập này thành tập huấn luyện - ins[][], tạo một mảng giá trị

đích chứa giá trị ứng với mỗi mẫu huấn luyện (1 cho mẫu đúng -1 cho mẫu

sai) – outs[][].

Cuối cùng, đưa 2 mảng này vào hàm huấn luyện Lan truyền ngược (back

propagation) để huấn luyện đối tượng mạng nơron.

Mạng nơron sau khi huấn luyện xong có thể được lưu xuống ổ cứng dưới dạng

file *.nnet

Sau đây là mã hàm huấn luyện learn():

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 53: Bao Cao Khoa Luan

49/92

/// <summary>/// Hàm huấn luyện mạng. Tóm tắt:/// Đầu tiên, khai báo 2 mảng số thực đầu vào(ins) và đầu /// ra đích (outs) có độ dài bằng tổng các mẫu học.

/// Trộn ngẫu nhiên các mẫu học khớp và không khớp.

/// Với mỗi mẫu huấn luyện đã trộn, áp dụng mặt nạ,/// đưa thông số màu của những pixel không bị mặt nạ che vào mạng để/// huấn luyện./// </summary>

public void learn() { double[][] ins; double[][] outs;

ins = new double[bads.Count + goods.Count][]; outs = new double[bads.Count + goods.Count][]; int nb = 0; KeyPoint p;

// Trộn ngẫu nhiên toàn bộ các mẫu học ArrayList org = new ArrayList(); ArrayList rand = new ArrayList(); Random r = new Random((int)System.DateTime.Now.Ticks); foreach (object o in goods) org.Add(o); foreach (object o in bads) org.Add(o); object ob; int index; while (org.Count > 0) { index = r.Next(org.Count); ob = org[index]; rand.Add(ob); org.RemoveAt(index); }

// bắt đầu xử lý Mặt nạ và đưa từng mẫu vào mảng đầu vào foreach (Bitmap b in rand) { ins[nb] = new double[key_points.Count]; outs[nb] = new double[1];

// mẫu của tập đúng đích =1, ngược lại -1 outs[nb][0] = (goods.Contains(b)) ? 1 : -1;

// đưa giá trị màu của các điểm ảnh không bị mặt nạ che // vào tập ins[][]

for (int i = 0; i < key_points.Count; i++) { p = (NN_XacDinhMau.KeyPoint)key_points[i]; ins[nb][i] = b.GetPixel(p.X, p.Y).R; } nb++; }

// gọi hàm huấn luyện để huấn luyện mạng theo mảng đầu vào và // mảng đầu ra

BackPropagationLearning teacher;

teacher=new BackPropagationLearning(n);

teacher.LearningRate = this.learningRate;

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 54: Bao Cao Khoa Luan

50/92

teacher.Momentum = this.momentum;

BipolarSigmoidFunction bsF;

// gán lại hệ số góc alpha cho toàn bộ nơron trong mạng for (int i = 0; i < n.LayersCount; i++) { for (int j = 0; j < n[i].NeuronsCount; j++) {

bsF = (BipolarSigmoidFunction)n[i][j].ActivationFunction; bsF.Alpha = this.sigmoidAlphaValue; } }

// số vòng huấn luyện với tập huấn luyện epoch = 0;

// tổng lỗi bình phương của vòng huấn luyện squareError=0f;

do {

// đưa ins và outs vào để chạy vòng huấn luyện squareError = teacher.RunEpoch(ins, outs); epoch++; LearnProgress(); if (!LearnContinue()) break; }

// quá trình huấn luyện chỉ dừng lại khi số vòng huấn luyện đạt// ngưỡng maxEpoch hoặc tổng lỗi bình phương giảm xuống dưới// ngưỡng lỗi maxSqareError

while (epoch < maxEpoch && squareError > maxSquareError);

}

Hàm lưu toàn bộ class chứa hàm tìm kiếm search(), huấn luyện learn() và đối

tượng mạng nơron xuống ổ cứng theo dạng nhị phân:

public void save(string file) { IFormatter binFmt = new BinaryFormatter(); Stream s = File.Open(file, FileMode.Create);

// ghi class hiện tại xuống file dưới dạng nhị phân binFmt.Serialize(s, this); s.Close();

}

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 55: Bao Cao Khoa Luan

51/92

4.2 Kết quả chạy Demo

Môi trường hoạt động:

- Hệ điều hành:

Window Vista.

- Phần cứng:

CPU Core 2 Due 2GHz.

Bộ nhớ RAM 2GB..

Tất cả các hình được kiểm tra với thông số hay thay đổi của mạng

nơron và cấu hình máy tính dùng để chạy thử :

Mạng nơron được huấn luyện để kiểm tra : nơron _2_good

Khoảng cách các Window : 2

Ngưỡng xác định đúng là khuôn mặt : 0.92

Tỉ lệ scale nhỏ nhất : 0.05

Tỉ lệ scale lớn nhất : 0.35

Số lượng mẫu đúng : 118

Số lượng mẫu sai : 449

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 56: Bao Cao Khoa Luan

52/92

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

Tốc độ: Khi chưa cải tiến thì thời gian để chương trình duyệt xong một

bức ảnh sẽ là một hằng số đối với những bức ảnh có cùng kích cỡ. Kiểm tra và

chạy thử với 100 hình ảnh có cùng kích cỡ: 269 x 177 ta được trung bình thời

gian chạy chương trình khi duyệt xong một hình khoảng 18.5 giây.

Kết quả duyệt 100 hình:

Tổng số hình kiểm tra: 100<=>100%

Tổng thời gian: 18.5 *100=1850s

Số hình được tìm đúng khuôn mặt: 68<=>68%

Tổng thời gian tìm kiếm: 68*18.5=1258s

Số hình bị tìm sai khuôn mặt: 19<=>19%

Tổng thời gian tìm kiếm: 19*18.5=351.5s

Số hình không tìm được khuôn mặt: 13<=>13%

Tổng thời gian tìm kiếm: 13*18.5=240.5s

Độ chính xác là : 68%.

4.2.2 Các cải tiến

Cải tiến bằng cách loại bỏ các cửa sổ đã đươc xác định là có khuôn mặt.

Theo thuật toán này chúng ta sẽ sử dụng các tọa độ cửa sổ đã được phát

hiện khuôn mặt cùng với tỉ lệ căng hình để mà xác định xem các cửa sổ đang

xét có thuộc phạm vi đó không. Nếu thuộc thì có 2 cách để giải quyết :

Cửa sổ này sẽ nhảy qua khỏi vùng chứa khuôn mặt để xét tiếp. Tất

nhiên vị trí đó sẽ được xét xem có phù hợp không (khung ảnh nhỏ vẫn thuộc

khung ảnh lớn) rồi mới thực hiện nhảy. Khi nhảy qua rồi chương trình vẫn tiếp

tục xét xem tại tọa độ mới đó có thuộc các vị trí khuôn mặt khác hay không.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 57: Bao Cao Khoa Luan

53/92

Chương trình sẽ kết thúc việc xử lý như vậy cho đến khi hết các khuôn mặt đã

được lưu trữ.Và chuyển cửa sổ phù hợp cho mạng nơron xử lý.

Khung hình vẫn tiếp tục di chuyển như bình thường nhưng không đưa

vào mạng nơron để mà xử lý và xác định đó không phải là khuôn mặt. Cho đến

khi xác định được một vị trí hợp lệ chương trình sẽ xử lý bình thường. Chương

trình được cài đặt theo kiểu này.

Chú ý khi cài đặt chúng ta cần chú ý đến mỗi khi phóng đại hình. Vì ở

những tỉ lệ phóng đại khác nhau tọa độ của những khuôn mặt đã được tìm kiếm

sẽ khác nhau.Vì vậy những tọa độ này sẽ được xử lý bằng cách nhân với độ

phóng đại của hình hiện tại và hình được lưu trữ.

Ví dụ : Tại tỉ lệ phóng đại scale_i ta xác định được điểm A(x,y) là góc

trên phía trái của khung ảnh là khuôn mặt.

Vậy tại độ phóng đại hiện tại là scale_j thì tọa độ của khuôn mặt hiện

tại sẽ là điểm:

A(x*(scale_j / scale_i) , y*(scale_j / scale_i))

Gọi W, H lần lượt là chiều rộng và cao của cửa sổ chứa

khuôn mặt.

Lúc này chiều rộng (W’) và chiều cao (H’) mới của khuôn mặt sẽ là :

W’=W*(scale_j / scale_i)

H’=H*(scale_j / scale_i)

Và công thức này áp dụng với các tỉ lệ Scale trong suốt quá trình tìm

kiếm.

Vậy khi khung hình đang xét có các điểm thuộc vào vị trí đã được xác

định là khuôn mặt thì chương trình không xét khung đó nữa. Gọi B(x1,y1) là tọa

độ của đỉnh của khung hình đang được kiểm tra trước khi đưa vào mạng nơron

để xử lý. Công thức để xác định có sự vi phạm hay không là :

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 58: Bao Cao Khoa Luan

54/92

x1 > x * (scale_j / scale_i ) -W và

x1< (x+W) * (scale_j / scale_i) và

y1> y * (scale_j / scale_i) và

y1<(y1+H) * (scale_j / scale_i)

Nếu tất cả các điều kiện trên đều thỏa thì cửa sổ cần xét vi phạm.

Sau khi chương trình được cải tiến ta nhận thấy rằng tốc độ của chương

trình tăng rất nhanh sau khi đã tìm kiếm được khuôn mặt. Đặc biệt là trong

trường hợp những bức ảnh có nhiều khuôn mặt được nhận diện thì tốc độ cực kì

cao do có thể bỏ qua rất nhiều vị trí không phải xét đến.

Gọi W, H lần lượt là chiều rộng và chiều cao của toàn bức ảnh.

Gọi w, h lần lượt là chiều rộng và chiều cao của cửa sổ.

Ta thấy số cửa nhỏ nhất mà chương trình sẽ không phải xét đến khi một

khuôn mặt được nhận diện là : 0 khi khung ảnh ở vị trí cuối cùng của khung ảnh

(A(W - w, H-h)). Kết quả này đúng cho một lần căng ảnh.

Gọi dpd là độ phóng đại giữa tỉ lệ căng ảnh hiện tại (scale_i) và

tỉ lệ căng ảnh khi tìm được khuôn mặt (scale_j).Và khoảng cách giữa 2 cửa là

w_g

Vậy số khung ảnh lớn nhất có thể bỏ qua sẽ là :

Max=(w + w * dpd)(h + h * dpd) / w_g * w_g

Và đây cũng là số lượng khung hình trung bình được bỏ qua.tại vì

thông thường khuôn mặt sẽ ở giữa bức ảnh hoặc ở 2/3 khung ảnh.

Đối với giải thuật này thì độ chính xác khi thiết lập cho mạng nơron

phải cao (>92%) thì mạng sẽ ít bị nhầm khu vực không phải khuôn mặt. Nếu

không chương trình sẽ đánh dấu khu vực đó là khuôn mặt nhưng lại loại bỏ khu

vực có khuôn mặt thật sự.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 59: Bao Cao Khoa Luan

55/92

Các kết quả sau khi chạy thử chương trình :

Kết quả kiểm tra tốc độ :

Tổng số lượng ảnh kiểm tra : 100 <=>100%

Tổng thời gian tìm kiếm : 1126.74

Số ảnh tìm được khuôn mặt : 79<=>79%

Tổng thời gian : 736.23s

Số ảnh không tìm được khuôn mặt : 17<=>17%

Tổng thời gian : 354.4s

Số ảnh tìm sai vị trí khuôn mặt : 4<=>4%

Tổng thời gian : 36.11s

Độ chính xác là : 79%.

So sánh giữa 2 chương trình cải tiến và không cải tiến:

Chương trình

chưa cải tiến

Chương trình

đã cải tiến

Tổng số ảnh kiểm tra 100 100

Thời gian tìm kiếm 1850s 1126.74s

Tổng số ảnh được nhận diện đúng 68 79

Thời gian tìm kiếm 1258s 736.23s

Tổng số ảnh bị nhận diện sai 19 4

Thời gian tìm kiếm 351.5s 36.11s

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 60: Bao Cao Khoa Luan

56/92

Tổng số ảnh không nhận diện được 13 17

Thời gian tìm kiếm 240.5s 354.4s

Ta thấy khi sử dụng giải thuật loại bỏ khu vực đã phát hiện khuôn mặt

thì những hình được phát hiện ra khuôn mặt sẽ cho kết quả cuối cùng rất nhanh.

Kể cả phát hiện đúng lẫn phát hiện sai. Còn khi không phát hiện được khuôn

mặt chương trình sẽ phải duyệt tuần tự các cửa sổ cho đến hết vì vậy thời gian

cho việc tìm kiếm những hình này là một hằng số.

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

Tăng tốc và cải tiến giải thuật, có nhiều phương pháp cải tiến giải thuật

như :

i. Khoanh vùng tìm kiếm khuôn mặt dựa trên việc xác định

các tọa độ có màu sắc giống với màu da của con người.Sau đó tập

trung tìm kiếm khu vực đã được đánh dấu. Lee đã phát triển ý tưởng

này cho xác định khuôn mặt trong ảnh màu. Ông dùng mô hình màu da

người bằng Gauss để xác định các ứng viên, sau đó loại bớt những ứng

viên nào không thỏa mãn tính chất hình dáng gần giống hình ellipse.

Cuối cùng ông dùng một mạng neural đã được huấn luyện để xác định

khuônmặt người. Tỷ lệ xác định chính xác là 88.9%, còn tỷ lệ xác định

sai là 11.1%.Tài liệu được trích từ báo cáo [1].

ii. Dựa trên đặc trưng lồi lõm của khuôn mặt. Từ đó mới xác

định tọa độ để tìm kiếm khuôn mặt.Vì ảnh khuôn mặt (trắng, đen) là

một tập hợp các điểm ảnh trong không gian 3 chiều.Những nơi có màu

đen như là mắt,lỗ mũi,khóe miệng sẽ có tọa độ thấp và tạo ra những

vùng lõm trên đồ thị.Còn những nơi nhô cao và nhận nhiều ánh sáng

như sống mũi,gò má thì sẽ có tọa độ cao hơn tạo nên các vùng lồi ra.

iii. Để chương trình có thể tìm được những khuôn mặt

nghiêng chúng ta có thể quay các khung cửa sổ theo các góc độ khác

nhau để tìm kiếm.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 61: Bao Cao Khoa Luan

57/92

Hoàn thiện thêm 2 bước nhận dạng:

iv. Chúng ta sẽ dùng kết quả của chương trình này để làm

đầu vào cho chương trình xác định khuôn mặt.Ý tưởng là chúng ta sẽ

dùng một mạng neuron khác được huấn luyện với mục đích là xác định

khuôn mặt đó là của ai trong cơ sở dữ liệu.

v. Ngoài ra chúng ta có thể dùng phương pháp rút trích

những nét đặc trưng của khuôn mặt như vị trí,tọa độ của mắt,mũi,

miệng nhằm xác định đó là ai.

Tạo ra môt Framework có thể dễ dàng tích hợp vào các thiết bị điện

tử và di động: Chúng ta có thể chuyển mã C# của chương trình qua các

ngôn ngữ chạy đa nền như Java để tích hợp lên các thiết bị di động.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 62: Bao Cao Khoa Luan

58/92

PHỤ LỤCLÝ THUYẾT MẠNG NƠRON NHÂN TẠO

Phụ lục A

Trình bày về ý tưởng sinh học, mô hình mạng nơron nhân tạo và các vấn đề

chung của mạng như sử dụng mạng, huấn luyện mạng và thu thập dữ liệu huấn

luyện.

Phụ lục B

Trình bày cấu trúc toán học của một nơron nhân tạo cơ bản, cấu trúc mạng

nơron truyền thẳng đa lớp và các thuật toán của giải thuật học lan truyền

ngược.

Phụ lục C

Minh họa quá trình lan truyền tiến mẫu học và tính kết quả để tìm sai số; quá trình lan truyền ngược điều chỉnh tín hiệu lỗi và cập nhật trọng số của mạng.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 63: Bao Cao Khoa Luan

59/92

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

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

Mạng Nơron nhân tạo phát triển từ nghiên cứu về trí tuệ nhân tạo; đặc

biệt cố gắng bắt chước hoạt động cơ bản về khả năng học và chấp nhận sai của

hệ thống nơron sinh học.

Bộ não con người gồm một số rất lớn nơron (khoảng 10.000.000.000

nơron) kết nối với nhau (trung bình mỗi nơron kết nối với hàng chục ngàn

nơron khác). Mỗi nơron là một tế bào đặc biệt, có thể truyền các tín hiệu điện.

Nơron có cấu trúc rễ ngõ vào(các sợi nhánh), rễ ngõ ra(sợi trục thần kinh) và

thân tế bào. Các sợi thần kinh của một tế bào kết nối với các tế bào khác thông

qua synapse (khớp nối). Khi một nơron kích hoạt, não tạo ra xung điện hóa học

dọc theo sợi thần kinh. Tín hiệu này đi qua các synapse đến các nơron khác, và

tiếp tục bị kích hoạt. Nơron hoạt động chỉ khi tất cả các tín hiệu nhận được ở

thân tế bào thông qua rễ ngõ vào vượt qua một mức nào đó (ngưỡng hoạt

động).

Hình 0.1. Mô hình cấu trúc 2 nơron sinh học

Cường độ tín hiệu thu được của nơron phụ thuộc vào độ nhạy của

synapse. Chỉ có việc học làm thay đổi cường độ kết nối synapse. Ví dụ như

theo thí nghiệm có điều kiện Pavlovian cổ điển, gõ chuông trước khi cho chó ăn

tối, con chó nhanh chóng học được rằng rung chuông gắn liền với ăn. Kết nối

synapse giữa phần vỏ não thính giác và tuyến nước bọt đã nhạy hơn, vì thế khi

rung chuông vỏ não thính giác bị kích thích, con chó bắt đầu tiết nước bọt.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 64: Bao Cao Khoa Luan

60/92

Do đó, từ một số rất lớn các đơn vị xử lý rất đơn giản này (mỗi đơn vị

thực hiện tổng trọng số các ngõ vào sau đó kích hoạt một tín hiệu nhị phân nếu

tổng ngõ vào vượt quá ngưỡng), bộ não điều khiển để hoạt động những công

việc cực kì phức tạp. Dĩ nhiên, sự phức tạp trong hoạt động của bộ não không

thể mô phỏng hết, nhưng một mạng trí tuệ nhân tạo có thể đạt được kết quả

đáng chú ý với mô hình mô phỏng hoạt động bộ não một cách đơn giản.

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

Suốt những năm 1960 – 1980 các nhà nghiên cứu về trí tuệ nhân tạo đã

tìm ra Expert Systems dựa trên mô hình cấp cao về xử lý lý luận của bộ não.

Mặc dù mô hình đã rất thành công trong một vài lĩnh vực, nhưng vẫn chưa bắt

chước được trí tuệ con người. Do đó, để tái tạo trí thông minh, chúng ta cần

phải xây dựng những hệ thống có cấu trúc giống bộ não con người.

Nơron nhân tạo được định nghĩa như sau:

Nơron nhân tạo nhận một số các ngõ vào - input (từ dữ liệu gốc,

hay từ ngõ ra các nơron khác trong mạng). Mỗi kết nối đến ngõ vào có

một cường độ (hay trọng số - weight), những trọng số này tương ứng

với tác dụng synapse trong nơron sinh học. Mỗi nơron cũng có một

giá trị ngưỡng.

Tín hiệu được truyền qua hàm kích hoạt (hay còn gọi là hàm

truyền - activation function) tạo giá trị ngõ ra – output của nơron.

Hình 0.2. Cấu trúc 1 nơron nhân tạo – 1 phần tử xử lý

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Trọng sốX1

X2

Xj

Xn

….Wij

Wi2

Win

Wi1Giá trị ngõ ra

yi

fi

∑ f(fi)

bi

Hàm truyền tín tín

Giá trị ngưỡng

Giá trị ngõ vào

Page 65: Bao Cao Khoa Luan

61/92

Xj : giá trị ngõ vào thứ j

Wij: Trọng số kết nối giữa ngõ vào thứ j với nơron i

( fi gọi là hàm tổng trọng hóa)

f( fi ): Hàm truyền hay còn gọi là hàm tác động

yi=f(fi) : Ngõ ra của nơron thứ i

Trên đây mô tả các nơron đơn lẻ. Trong thực tế các nơron được kết nối

với nhau. Khi mạng hoạt động, chúng phải có ngõ vào (mang giá trị hoặc biến

của thế giới thực) và ngõ ra (dùng để dự báo hoặc điều khiển). Trong sinh học,

ngõ vào và ngõ ra tương ứng với các nơron giác quan và vận động, như tín hiệu

đưa vào mắt và điều khiển cánh tay. Tuy nhiên còn có các nơron ẩn đóng vai

trò ẩn trong mạng. Ngõ vào, nơron ẩn và ngõ ra cần được kết nối với nhau.

Một mạng đơn giản có cấu trúc tiến: tín hiệu đi vào ở ngõ vào, qua các

nơron ẩn và cuối cùng đến các nơron ngõ ra. Cấu trúc như thế chạy ổn định.

Tuy nhiên, nếu mạng có cấu trúc hồi quy (chứa các kết nối ngược trở về các

nơron trước đó) mạng có thể chạy không ổn định và dao động rất phức tạp.

Mạng hồi quy rất được các nhà nghiên cứu quan tâm, nhưng cấu trúc tiến đã

chứng minh rất hiệu quả trong việc giải quyết các vấn đề thực tế. Trong phạm

vi của đồ án này, chúng tôi chỉ nghiên cứu về mạng có cấu trúc tiến.

Mạng nơron có cấu trúc tiến cho như hình dưới. Các nơron được sắp

xếp theo cấu trúc liên kết lớp riêng biệt. Lớp ngõ vào không phải là nơron

thực: các nơron này hoạt động đơn giản là giới thiệu các giá trị của các biến

vào. Các nơron lớp ẩn và lớp ngõ ra được kết nối với tất cả các nơron lớp trước

đó.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 66: Bao Cao Khoa Luan

62/92

Hình 0.3. Cấu trúc Mạng Nơron nhân tạo

Khi mạng hoạt động, các giá trị biến ngõ vào được đặt vào các nơron

ngõ vào, và sau đó các nơron lớp ẩn và lớp ngõ ra lần lượt được kích hoạt.

Mỗi nơron tính giá trị kích hoạt của chúng bằng cách lấy tổng các trọng số ngõ

ra của các nơron lớp trước đó, và trừ cho ngưỡng. Giá trị kích hoạt truyền qua

hàm tác động tạo ra giá trị ngõ ra của nơron. Khi toàn bộ mạng đã hoạt động,

các ngõ ra của lớp ngõ ra hoạt động như ngõ ra của toàn mạng.

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

Mạng nơron làm việc từ những ngõ vào khác nhau, đưa ra những ngõ

ra khác nhau. Do đó có thể sử dụng khi biết một vài thông tin và sẽ dự đoán

những thông tin chưa biết.

Ví dụ :

Bài toán phân loại (Classcification): quyết định một giá trị đưa

vào thuộc loại hay nhóm nào.

Bài toán nhận dạng mẫu (Pattern recognizion): nhận dạng cấu

trúc trong các dữ liệu có thể bị nhiễu.

Bài toán dự đoán (Prediction): nếu biết giá cả chứng khoán của

tuần trước và chỉ số FTSE, ta sẽ dự đoán được giá cả chứng khoán

ngày mai.

Bài toán lọc nhiễu (Noise filtering): Nếu ta đưa vào đặc trưng

của tín hiệu thoại hay vô tuyến, ta có thể dùng Mạng nơron lọc các tín

hiệu nhiễu.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 67: Bao Cao Khoa Luan

63/92

Điều kiện quan trọng trong việc sử dụng mạng nơron là phải biết mối

liên hệ giữa ngõ vào và ngõ ra biết trước. Mối quan hệ này có thể kéo theo

nhiều thứ nhưng nó nhất định phải tồn tại.

Tổng quát, ta sử dụng một mạng nơron khi ta không biết chính xác

trạng thái tự nhiên của mối liên hệ giữa ngõ vào và ngõ ra (nếu ta biết mối liên

hệ ta sẽ làm mô hình đó trực tiếp không cần đến mạng nơron). Để sử dụng

mạng nơron, ta phải cho nó học mối liên hệ giữa ngõ vào và ngõ ra thông qua

việc huấn luyện.

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

Có hai loại huấn luyện sử dụng trong mạng nơron là huấn luyện có

giám sát và không giám sát. Với những loại mạng khác nhau thì sử dụng các

loại huấn luyện khác nhau. Huấn luyện có giám sát sử dụng thông dụng nhất.

Trong việc học có giám sát, người sử dụng mạng phải có một tập hợp

dữ liệu cần huấn luyện. Tập hợp này chứa những ngõ vào mẫu với ngõ ra

tương ứng và mạng sẽ huấn luyện để đưa ra mối liên hệ giữa ngõ ra và ngõ vào.

Tập hợp dữ liệu thường được lấy từ những bản ghi chép trước đó.

Mạng nơron sau đó được huấn luyện bằng một trong các thuật toán học

có giám sát (ví dụ backpropagation – lan truyền ngược), sử dụng các dữ liệu để

điều chỉnh trọng số và ngưỡng của mạng sao cho cực tiểu hóa sai số trong việc

dự báo của mạng trên tập huấn luyện. Nếu mạng được huấn luyện chính xác,

nghĩa là nó đã học mô phỏng một hàm chưa biết với mối liên hệ giữa ngõ ra và

ngõ vào, do đó với các tín hiệu vào đến sau, mạng sẽ dự báo tín hiệu ra tương

ứng.

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

Một khi ta quyết định giải quyết một vấn đề sử dụng mạng nơron ta cần

phải thu thập dữ liệu cho mục tiêu huấn luyện. Tập hợp dữ liệu huấn luyện bao

gồm một số các trường hợp, mỗi trường hợp chứa những giá trị của tầm ngõ

vào và ngõ ra khác nhau. Những việc đầu tiên cần làm là: những biến nào sử

dụng, bao nhiêu trường hợp cần thu thập.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 68: Bao Cao Khoa Luan

64/92

Sự lựa chọn các biến do trực giác quyết định. Kiến thức chuyên môn

của ta trong lĩnh vực cần giải quyết sẽ giúp ta những ý tưởng về các biến ngõ

vào phù hợp.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 69: Bao Cao Khoa Luan

65/92

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

Một nơron nhân tạo là một đơn vị tính toán hay đơn vị xử lý thông tin

cơ sở cho hoạt động của một mạng nơron. Chúng ta xác định ba thành phần cơ

bản là các phần tử xử lý, kiến trúc mạng và việc huấn luyện mạng.

1. Phần tử xử lý

Một mạng nơron nhân tạo được kết nối bằng nhiều thân nơron, mỗi

nơron là một phần tử xử lý. Mỗi phần tử xử lý này có nhiều ngõ vào và một ngõ

ra. Để kết hợp các ngõ vào của phần tử xử lý thứ i ta dùng một hàm tổng hợp fi

có chức năng tổng hợp tất cả thông tin từ các nguồn bên ngoài hoặc từ nhiều

phần tử xử lý khác gửi đến và để kết hợp thành ngõ ra của mỗi phần tử xử lý

thứ i ta có một hàm tác động hay còn gọi là hàm truyền.

1.1 Hàm tổng hợp

Nếu xj là ngõ vào từ môi truờng bên ngoài, wij là trọng số kết nối giữa

xj và phần tử xử lý thứ i, bi là giá trị ngưỡng của phần tử xử lý thứ i, thì hàm

tổng hợp fi để kết hợp tất cả các thông tin từ các ngõ vào của phần tử xử lý thứ i

có thể được định nghĩa một trong các dạng sau:

Hàm tổng hợp tuyến tính:

(1)

Hàm tổng hợp tuyến tính bình phương:

(2)

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 70: Bao Cao Khoa Luan

66/92

1.2 Hàm tác động (phát động)

Kết hợp ngõ ra của phần tử xử lý thứ i là một hàm tác động hay còn gọi

là hàm truyền. Hàm này giới hạn phạm vi biên độ cho phép của tín hiệu ngõ ra

trong một khoảng giá trị hữu hạn. Hệ số hiệu chỉnh bi có tác dụng tăng lên hay

giảm đi ngõ vào thực của hàm tác động tùy theo nó dương hay âm.

Các hàm tác động phải có các đặc tính sau:

Hàm bị chặn trên và chặn dưới

Hàm có tính đơn điệu

Hàm phải có tính liên tục và trơn

Các loại hàm tác động thường dùng:

Hàm Threshold hay còn gọi là Hardlimit (hàm nấc):

(3)

Khỏang trả về: [0, 1]

Hàm nén đơn cực sigmoid:

(4)

(4)

Khỏang trả về: [0, 1]

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Đồ thị như sau:

Đồ thị như sau:

1, nếu x>=0f(x)

0, nếu x<0

1f(x) =

1 + e -λf

Page 71: Bao Cao Khoa Luan

67/92

Hàm nén lưỡng cực BipolarSigmoid:

(5)

(5)

Khỏang trả về: [-1, 1]

- Hàm Harlimit ánh xạ bất kỳ giá trị nào từ (-,+) vào tập có hai giá

trị {0,1}, do vậy nó thích hợp cho các mạng thực hiện chức năng phân loại

(multilayer perceptron-MLP).

- Các hàm Sigmoid và BipolarSigmoid, còn được gọi là các hàm nén,

ánh xạ bất kỳ giá trị nào từ (-,+) vào các khoảng [0,1] và [-1,1] tương ứng.

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

Thành phần quan trọng thứ hai của mạng nơron nhân tạo đó là kiến trúc

mạng. Kiến trúc mạng nơron nhân tạo có thể chia làm hai loại đó là mạng

truyền thẳng và mạng truyền lùi.

Mạng truyền thẳng (feedforward network): là mạng được xây

dựng bằng cách ngõ ra của nơron ở lớp đứng trước chính là ngõ vào

của các nơron ở lớp đứng sau nó.

Mạng truyền lùi (feedback network): là mạng được xây dựng có

các ngõ ra được định hướng lùi về làm các ngõ vào cho các nơron ở

cùng lớp hoặc ở lớp đứng trước nó.

Các nơron của mạng được phân bố trên các lớp đan xen nhau. Mỗi

mạng nơron có một lớp nhập, không có hoặc có nhiều lớp ẩn và một lớp xuất.

Số lượng ngõ vào của một mạng nơron bằng với số biến độc lập, số ngõ ra của

mạng tùy thuộc vào bài toán và sẽ xác định số nơron trong lớp xuất. Mạng càng

nhiều lớp ẩn cũng như càng nhiều nơron trong mỗi lớp ẩn thì mạng càng có

khả năng xấp xỉ các hàm phức tạp. Trong phạm vi của đồ án này chúng tôi chỉ

xét tới mạng nơron truyền thẳng.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Đồ thị như sau: 2f(x) = -1

1 + e -λf

Page 72: Bao Cao Khoa Luan

68/92

2.1 Mạng truyền thẳng đơn mức

Hình 0.4. Mô hình mạng truyền thẳng đơn mức“Đơn mức” tức là chỉ có một

mức, chính là mức ngõ ra gồm các nút tính toán (các nơron). Đây là dạng mạng

đơn giản nhất, hình 4 gồm có lớp các nơron ngõ vào, lớp các nơron ngõ ra và

không có lớp nơron ẩn.2.2 Mạng truyền thẳng đa mứcMạng gồm ba lớp: lớp nhập

(input), các lớp ẩn (hidden) và lớp xuất (output).Mỗi nút trong lớp nhập nhận một

giá trị biến độc lập và chuyển vào mạng. Dữ liệu từ tất cả các nút trong lớp nhập được

tích hợp (tổng trọng hóa) và chuyển kết quả cho các nút trong lớp ẩn.

Lớp thứ hai của mạng gồm một hay nhiều lớp ẩn, mà

các nút tính toán của chúng được gọi là các nơron ẩn hay đơn vị

ẩn. Thuật ngữ “ẩn” mang ý nghĩa không tiếp xúc với môi trường

bên ngoài. Các nút trong lớp này chỉ liên lạc với các nút trong lớp

nhập và xuất.

Các nút trong lớp xuất cũng nhận tín hiệu tổng trọng

hóa từ các nút ẩn. Giá trị của các nút xuất chính là giá trị thực cần

xác định cho bài toán.

Các nút nguồn cung cấp các tín hiệu ngõ vào cho các nơron (các nút

tính toán) trong mức thứ hai (mức ẩn thứ nhất). Các tín hiệu ngõ ra của mức

thứ hai được sử dụng như các ngõ vào cho mức thứ ba, và cứ như vậy cho phần

còn lại của mạng. Như vậy, các nơron trong mỗi mức của mạng có các ngõ vào

của chúng là các tín hiệu ngõ ra của mức đứng liền trước nó.

Một nơron được gọi là kết nối đầy đủ với ý nghĩa là tất cả các nút trong

mỗi mức của mạng được kết nối với tất cả các nút trong mức tiếp sau. Một số

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

x1

x2

xn

y1

y2

yn

Nhập Xuất

Page 73: Bao Cao Khoa Luan

69/92

kết nối không tồn tại trong mạng, chúng ta nói rằng là mạng kết nối không đầy

đủ.

Hình 2.2 cho ta thấy rằng mô hình của mạng truyền thẳng nhiều lớp

gồm có các nơron ngõ vào, các lớp ẩn và lớp các nơron ngõ ra. Ngõ ra của

nơron đứng trước chính là ngõ vào của các nơron ở lớp đứng sau.

Hình 0.5. Mô hình mạng truyền thẳng đa mức.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 74: Bao Cao Khoa Luan

70/92

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

Trong phạm vi đồ án này chúng tôi chỉ nghiên cứu giải thuật lan truyền

ngược.

3.1 Giải thuật lan truyền ngược

Giải thuật lan truyền ngược (back propagation algorithm) là một trong

các giải thuật quan trọng lịch sử phát triển của mạng nơron nhân tạo. Giải thuật

được sử dụng để huấn luyện các mạng truyền thẳng với các phần tử xử lý trong

mạng có hàm tác động là hàm phi tuyến.

Mạng truyền thẳng nhiều lớp được kết hợp với giải thuật lan truyền

ngược còn được gọi là mạng lan truyền ngược (back propagation network).

Nếu cho tập các mẫu huấn luyện vào- ra (x(k), d(k)) vói k =1, 2, 3,…, p, giải

thuật sẽ cung cấp một thủ tục cho việc cập nhật các trọng số kết nối trong mạng

lan truyền ngược từ lớp nơron ngõ ra đến các lớp nơron ngõ vào. Giải thuật vận

hành theo hai luồng dữ liệu:

Đầu tiên dữ liệu được truyền từ lớp nơron ngõ vào đến lớp ngõ

ra và cho kết quả thật sự y(k) của lớp nơron ngõ ra.

Sau đó, các tín hiệu sai lệch giữa ngõ ra mong muốn và ngõ ra

thật sự của mạng được truyền ngược từ lớp ngõ ra đến các lớp đứng

trước để cập nhật các trọng số kết nối trong mạng.

Ở bước điều chỉnh sai số: Giải thuật Back propagation được sử dụng để

điều chỉnh các trọng số kết nối sao cho tổng sai số E là nhỏ nhất.

(6)

Trong đó:

d(xj): Tập giá trị mẫu

y(xj) : Tập giá trị xuất

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 75: Bao Cao Khoa Luan

71/92

Trước tiên, ta xét trên 1 nơron và ta phải xác định nơron đó thuộc mức nào

Hình 0.6. Mô tả một nơron j (lớp ẩn) và nơron k (lớp xuất)Trong đó:xl(l=1…m) :

các ngõ vào

- wkm : trọng số kết nối giữa ngõ vào thứ m với nơron k

- yk: ngõ ra thật sự của nơron k

- dk : ngõ ra mong muốn của nơron k

-Giá trị sai số của nơron k tại vòng lặp thứ n là:

ek(n)=dk(n)-yk(n)

-Tổng bình phương sai số của mạng nơron:

(7)

-Tại nơron k với m ngõ vào là các tín hiệu chức năng được tạo bởi mức

nơron ở bên trái, ta có tổng trọng input tại vòng lặp thứ n là:

-Tín hiệu chức năng yk(n) xuất hiện tại ngõ ra của nơron k ở vòng lặp

thứ n là:

yk(n)=f(vk(n))

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Nơron k

Nút xuất

Nơron j

Nút ẩn

wj i-1

wk2

wkm-1

x2

x1 wk1

wkm

xm

yk

dk

yjwj2

wj i

wj1

xi

xi-1

x2

x1

Page 76: Bao Cao Khoa Luan

72/92

-Hiệu chỉnh Δwji của trọng số wji mà nối nơron i với nơron j được xác

định bằng qui tắc delta như sau:

(8) ( với η là hệ số học)

Tuy nhiên ta phải xác định nơron đó thuộc lớp nào (lớp ẩn hay lớp

xuất). Điều này rất quan trọng trong việc tính toán cho từng hệ số hiệu chỉnh

trọng số.

-Nếu nơron k là nút xuất thì bằng tích δj(n) của đạo hàm f’(vk(n)) với tín

hiệu lỗi ek(n):

δj(n) = f ’(vk(n)) ek(n)

- Nếu nơron j là nút ẩn thì δj(n) bằng tích đạo hàm với tổng các đã

được nhân với các trọng số tương ứng của tất cả các nơron

thuộc mức tiếp theo mà được nơron j nối tới.

δj(n) = f ’(vk(n))

Hình 0.7. Đồ thị luồng tín hiệu khi tín hiệu lỗi phản hồi trở lại

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

wj2

2(n) f2’(v2(n))

m(n) fm’(vm(n))

j(n)

1(n) f1’(v1(n))

wj1

wjm

Page 77: Bao Cao Khoa Luan

73/92

Kế tiếp, ở đây ta chỉ xét một mạng truyền thẳng ba lớp tổng quát đó là:

lớp nơron ngõ vào, lớp nơron ẩn và lớp nơron ngõ ra[25].

- Giả sử lớp nơron ngõ vào của mạng có m ngõ vào đó là x1, x2, …xj…,

xm; lớp ẩn có l phần tử xử lý với các ngõ ra của nó là z1, z2,..zq,…zl và lớp nơron

ngõ ra của mạng có n phần tử xử lý với ngõ ra của nó là y1, y2,…yi,…yn . Ta

cũng giả sử rằng vqj là trọng số kết nối giữa ngõ ra thứ j của lớp nơron ngõ vào

với phần tử xử lý q của lớp nơron ẩn và wiq là trọng số kết nối giữa phần xử lý

thứ q của lớp ẩn với phần tử xử lý thứ i của lớp nơron ngõ ra như trong hình

2.5.

Hình 0.8. Mô tả mạng nơron truyền thẳng gồm một lớp nhập, một lớp ẩn và một

lớp xuất

- Cho cặp mẫu huấn luyện ( x,d ), hàm tổng hợp cho mỗi phần tử xử lý

thứ q của lớp nơron ẩn là:

và ngõ ra của nó là:

zq =f(uq)

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

x1

xj

xm

xj( j= 1,..,m)vqj

Zq (q=1,..l) Wiq

yi (i= 1,…n)

yn

yi

y1

Page 78: Bao Cao Khoa Luan

74/92

- Hàm tổng hợp cho mỗi phần tử xử lý thứ i trong lớp nơron ngõ ra là:

ui=

và ngõ ra của nó là:

yi =f (ui)

- Tổng bình phương sai số của mạng nơron:

- Trọng số kết nối giữa lớp nơron ẩn và lớp nơron ngõ ra là:

Δwiq = qi zq ; với qi = f ’(ui)ei

- Trọng số kết nối giữa lớp nơron ẩn và lớp nơron ngõ vào là:

Δwqj = hq xj ; với η là hệ số học, hq = f ’(uq)

Tóm lại , khi giải quyết bài toán bằng mạng nơron theo thủ tục truyền

ngược có những vấn đề rút ra là:

- Sẽ có bao nhiêu nơron trong mạng, bao nhiêu ngõ vào, bao nhiêu

ngõ ra và bao nhiêu lớp ẩn. Càng nhiều lớp ẩn bài toán trở nên phức tạp

nhưng có thể giải quyết được những vấn đề lớn.

- Thuật toán Back propagation cung cấp một phương pháp “xấp xỉ”

cho việc tìm trong không gian trọng số (nhằm tìm ra những trọng số phù

hợp cho mạng). Chúng ta càng lấy giá trị của tham số học càng nhỏ bao

nhiêu thì sự thay đổi trọng số càng nhỏ bấy nhiêu và quỹ đạo không gian

học sẽ càng trơn. Tuy nhiên điều này lại làm cho tốc độ học chậm đi. Trái

lại, nếu chúng ta chọn tham số tốc độ học quá lớn, sự thay đổi lớn của các

trọng số có thể làm cho mạng trở nên không ổn định. Về mặt ý tưởng, tất cả

các nơron trong mạng nên chọn cùng một tốc độ học, tham số học nên

gán một giá trị nhỏ. Các nơron với nhiều ngõ vào nên chọn một tham số tốc

độ học nhỏ hơn để giữ một thời gian học tương tự cho nhau cho tất cả các

nơron trong mạng.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 79: Bao Cao Khoa Luan

75/92

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

Các hình vẽ dưới đây minh họa quá trình lan truyền ngược của mạng 3 lớp : lớp

nhập, lớp ẩn và lớp xuất.

Quá trình huấn luyện mạng gồm 2 pha :

Lan truyền tiến mẫu học. Tính kết quả để tìm sai số.

Lan truyền ngược gồm 2 bước : 1. Lan truyền ngược lỗi cho toàn mạng.2. Cập nhật ma trận trọng số của mạng.

Pha 1 : Quá trình lan truyền tiến.Trong đó :

- x1, x2 là dữ liệu nhập.- f1(e), f2(e)...fn(e) là hàm lan truyền tiến của nơron thứ n. Có

công thức là f(e)=2/(1+exp(-alpha*e)) -1 ( với hàm exp là hàm lũy thừa cơ số e).

- y là kết quả của quá trình tính toán của mạng.

Mỗi một noron sẽ tính tổng của tích các trọng số với dữ liệu nhập. Sau

đó đưa giá trị này vào hàm truyền f và cho ra giá trị xuất.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 80: Bao Cao Khoa Luan

76/92

Ví dụ:

Trong đó :

e=x1*w1 + x2*w2

f(e)=2/(1+exp-alpha*e) - 1yn=fn(e)

Áp dụng trên toàn mạng :

Lớp nhập :

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 81: Bao Cao Khoa Luan

77/92

Lớp ẩn :

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 82: Bao Cao Khoa Luan

78/92

Lớp xuất :

Kết thúc lan truyền tiến.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 83: Bao Cao Khoa Luan

79/92

Pha 2 : Quá trình lan truyền ngược.Bước 1 : Tính sai số cho các noron của tất cả các lớp.

Trong đó : z là giá trị xuất mong muốn. y là kết quả tính toán của mạng. δ là sai số. yn là giá trị xuất của noron thứ n trong quá trình lan truyền

tiến. e là biến nhận giá trị xuất của noron tương ứng. f’(e)=alpha * (1 - f(e)2) / 2 (với alpha là hệ số góc). Tính đạo hàm theo e và thay giá trị xuất của noron đó vào

e( với f’n(e) ta thay e=yn).

Lan truyền sai số sang lớp ẩn:

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 84: Bao Cao Khoa Luan

80/92

Lan truyền ngược sai số sang lớp nhập :

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 85: Bao Cao Khoa Luan

81/92

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 86: Bao Cao Khoa Luan

82/92

Bước 2: Cập nhật sai số cho các trọng số :Trong đó :

η là tốc độ học.Nhận giá trị trong khoảng [0,1].Tốc độ học tỉ lệ nghịch với độ chính xác và tỉ lệ thuận với thời gian học.

w(x1)1 là trọng số đang xét. xn là giá trị nhập. df1(e)/de là đạo hàm cấp 1 của f1(e). yn là giá trị xuất của noron đang xét.

Cập nhật trọng số cho lớp nhập :

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 87: Bao Cao Khoa Luan

83/92

Cập nhật trọng số cho lớp ẩn :

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 88: Bao Cao Khoa Luan

84/92

Cập nhật trọng số cho lớp xuất :

Kết thúc quá trình lan truyền ngược.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 89: Bao Cao Khoa Luan

85/92

DANH MỤC TÀI LIỆU THAM KHẢO [1] Henry A. Rowley, Neural Network-Based Face Detection, May 1999,

CMU-CS-99-117.

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

[3] T. Kanade, “Picture Processing Computer Complex and

Recognition of Human Faces”, PhD thesis, Kyoto Univ., 1973.

[4] G. Yang, T. S. Huang, “Human Face Detection in

Complex Background”, Pattern Recognition, Vol. 27, No. 1,

pp. 53-63, 1994.

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

[6] Jianping Fan, David K.Y. Yau, Ahmed K.Elmagarmid, an

Walid G. Arref, IEEE Transactionson Image Processing, vol.

10, no. 10, IEEE, 2001.

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

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

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

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 90: Bao Cao Khoa Luan

86/92

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

[11]K. C. Yow, R. Cipolla, “Feature-Based Human Face

Detection”, Image and Vision Computing, Vol. 15, No. 9, pp.

713-735, 1997.

[13] T. K. Leung, M.C. Burl, P. Perona, “Finding Faces in

Cluttered Scenes Using Random Labeled Graph Matching”,

Proc. 5th IEEE Conf. Computer Vision (ICCV’95), pp. 637-644,

1995.

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

[15]. I. Craw, D. Tock, A. Bennett, “Finding Face Features”,

Proc. 2nd European Conf. Computer Vision (ECCV’92), Vol. 2,

pp. 92-96, 1992.

[16]M. Turk, A. Pentland, “Eigenfaces for Recognition”,

Journal of Cognitive Neuroscience, Vol. 3, No. 1, pp. 71-86,

1991.

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

[18]P. Viola, M. Jones, “Robust Real Time Object Detection”,

Proc. IEEE ICCV Workshop on Statistical and Computational

Theories of Vision, Jul 2001.

[19]. P. Viola, M. Jones, “Rapid object detection using a

boosted cascade of

simple features”, Proc. IEEE Conf. Computer Vision and

Pattern Recognition (CVPR’01), pp. 511-518, Dec 2001.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn

Page 91: Bao Cao Khoa Luan

87/92

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

1, pp. 39-51, Jan 1998.

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

[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”.

[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”.

[24] Ts.Nguyễn Đình Thúc, “Mạng nơron Phương pháp và ứng dụng”, Nhà

xuất bản giáo dục 2000.

[25] Nguyễn Thiện Thành,” Trí Tuệ Nhân Tạo”, Nhà xuất bản Đại học quốc gia

Thành phố Hồ Chí Minh 2001, Chương 7.

GVHD: TS.GVC Phạm Văn Chung SVTH : Đào Thị Cẩm Hằng, Trần Quốc Hùng, Vũ Văn Tuấn