THỬ NGHIỆM, ĐÁNH GIÁ VÀ KẾT LUẬN

Một phần của tài liệu Phát triển khuôn mặt nghiêng trên ảnh và video (Trang 58)

3.3.1. Cơ sở dữ liệu

3.3.1.1. Dữ liệu huấn luyện

Trong luận văn này, tôi sử dụng tập ảnh cơ sở dữ liệu nhƣ sau:

 Dữ liệu chứa khuôn mặt:

Dữ liệu chứa khuôn mặt gồm 3198 ảnh khuôn mặt của 41 chủ thể khác nhau đƣợc chụp bằng điện thoại Samsung Omnia i900 5.0Mp và máy ảnh Canon 12MP trong nhiều điều kiện ánh sáng và phông nền khác nhau: dƣới ánh sáng đèn neon, ánh sáng tự nhiên vào các thời điểm khác nhau, các tƣ thế khuôn mặt và cảm xúc khác nhau. Khoảng cách chụp tới chủ thể trong khoảng từ 1- 4m để đảm bảo sự đa dạng về khoảng cách. Trong đó: - 799 ảnh nghiêng trái 30 đến 60 độ - 800 ảnh nghiêng phải 60-90 độ - 799 ảnh nghiêng phải 30-60 độ - 800 ảnh nghiêng trái 60-90 độ Hình 23 Ảnh chụp các chủ thể khác nhau

57

Hình 24 Ảnh trước khi cắt

Hình 25 Ảnh sau khi cắt

Tiếp đến, trong tất cả các mẫu cắt đƣợc sẽ tính tỉ lệ giữa chiều rộng và chiều cao trung bình của tất cả các mẫu, sau đó chuẩn hóa tất cả các mẫu theo tỉ lệ trung bình này. Cuối cùng, chuyển tất cả các mẫu về cùng kích thƣớc để tiến hành huấn luyện.

 Dữ liệu không chứa khuôn mặt:

Dữ liệu không chứa khuôn mặt là dữ liệu không chứa đối tƣợng cần phát hiện. Các ảnh không chứa khuôn mặt đƣợc tải về từ Internet.

http://tutorial-haartraining.googlecode.com/svn/trunk/data/negatives/

Trong cơ sở dữ liệu ảnh này gồm 3024 ảnh xám ở định dạng JPG với kích thƣớc 640x480. Thƣờng số ảnh không chứa khuôn mặt gấp 1.5-2 lần số ảnh chứa khuôn mặt, do đó với mỗi tƣ thế chụp ảnh chứa khuôn mặt ở trên, chúng ta sử dụng 1500 ảnh không chứa khuôn mặt trong cơ sở dữ liệu ảnh trên.

58

Hình 26 Ảnh không chứa khuôn mặt

3.3.1.2. Dữ liệu thử nghiệm

Dữ liệu thử nghiệm: Là dữ liệu dùng cho việc kiểm tra tỉ lệ phát hiện của một hệ phát hiện khuôn mặt. Tập dữ liệu này phải không trùng với tập dữ liệu huấn luyện. Tỉ lệ phát hiện đúng các mẫu trong tập thử nghiệm nói lên tính hiệu quả của hệ thống phát hiện khuôn mặt, bởi vì các dữ liệu này không tham gia và quá trình huấn luyện của hệ thống, nếu hệ thống phát hiện khuôn mặt vẫn phát hiện đúng chứng tỏ các đặc trƣng đã đƣợc trích rút ra thật sự là các đặc trƣng của khuôn mặt.

3.3.1.3. Hoạt động của bộ phát hiện một tư thế khuôn mặt

Khi đƣa một ảnh vào phát hiện, bộ phát hiện sẽ phải xét tất cả các vùng ảnh với kích thƣớc khác nhau trích ra đƣợc từ ảnh để có thể đƣa ra kết quả. Kích thƣớc khởi đầu của vùng ảnh sẽ là một cửa sổ bằng với kích thƣớc của mẫu chứa khuôn mặt trong quá trình huấn luyện, ví dụ ảnh khuôn mặt nghiêng trái (từ 60 đến 90 độ) là 32x24. Các cửa sổ này sẽ đƣợc dịch theo chiều ngang và dọc 1 lƣợng từ 1 đến 2 điểm ảnh cho đến khi phủ kín ảnh cần phát hiện. Sau đó, cửa sổ sẽ đƣợc mở ra với tỉ lệ (giá trị này ngƣời dùng đƣợc phép thay đổi khi tiến hành phát hiện) và tiếp tục quá trình duyệt ảnh nhƣ trên cho đến khi cửa sổ đƣợc mở ra bằng kích thƣớc ảnh.

Nhờ có cấu trúc tầng phân loại, các vùng ảnh không liên quan bị loại nhanh từ những tầng đầu tiên.

59

Hình 27 Các vùng không liên quan sẽ bị loại ngay từ những tầng đầu tiên

Trong quá trình trích vùng ảnh, sẽ có các vùng có vị trí và kích thƣớc tƣơng tự nhau. Các vùng này có thể đều đƣợc bộ phát hiện trả về cho là có khuôn mặt, khiến cho 1 tƣ thế khuôn mặt đƣợc phát hiện nhiều hơn một lần.

Hình 28 Khắc phục trường hợp nhiều vùng ảnh kế cận nhau bằng cách lấy vùng ảnh trung bình

Để khắc phục điều này, trên các vùng ảnh đƣợc bộ phát hiện đánh giá là khuôn mặt, hệ thống sẽ tìm và nhóm các vùng ảnh tƣơng tự nhau bằng cách thay chúng bằng 1 vùng ảnh duy nhất có đƣợc bằng cách lấy trung bình của các vùng ảnh này.

Qua thực nghiệm, ta thấy số lƣợng vùng ảnh tƣơng tự nhau cũng có tác dụng trong việc điều chỉnh giữa tỉ lệ phát hiện đúng nhỏ nhất và tỉ lệ phát hiện sai. Do tỉ lệ

60

phát hiện không phải 100% nên khi tiến hành phát hiện khuôn mặt, có thể có vài mẫu nền sẽ bị nhầm là khuôn mặt. Trong khi khuôn mặt trong hình đƣa vào luôn có nhiều hơn 1 vùng ảnh chứa nó đƣợc bộ phát hiện đánh giá là khuôn mặt, các mẫu không phải đối tƣợng bị phát hiện sai thƣờng nằm tách biệt. Do đó, hệ thống phát hiện khuôn mặt sử dụng khái niệm „„láng giềng tối thiểu‟‟ (min neighbor), tức là số vùng tƣơng tự nhau tối thiểu phải có để một vùng ảnh có thể đƣợc phân loại là khuôn mặt. Giá trị này đƣợc ngƣời dùng xác lập khi tiến hành phát hiện. Trong hình 28, với „„ láng giềng tối thiểu‟‟ là 2, vùng ảnh cửa sổ trên tƣờng sẽ bị loại, tức là giảm false alarm. Tuy nhiên, cần phải thận trọng trong việc sử dụng „„láng giềng tối thiểu‟‟, vì nếu chỉnh láng „„láng giềng tối thiểu‟‟ quá lớn, có thể làm giảm luôn cả tỉ lệ phát hiện đúng. Rõ ràng với hình 28 nếu xác lập „„láng giềng tối thiểu‟‟ là 3 thì không chỉ có vùng nền mà cả khuôn mặt cũng bị loại vì nó chỉ có 2 vùng ảnh. Với các bộ phát hiện khuôn mặt xây dựng thì giá trị „„láng giềng tối thiểu‟‟ là 5 cho kết quả tốt nhất.

Bên cạnh đó, có thể trong việc phát hiện còn tồn tại vấn đề các vùng ảnh lồng vào nhau.

Hình 29 Vùng ảnh lồng nhau

Đối với các trƣờng hợp này, chƣơng trình chỉ cần đơn giản là loại bỏ tất cả các vùng ảnh ở bên trong, chỉ giữ lại vùng ảnh ngoài.

3.3.2. Xây dựng chƣơng trình

Chƣơng trình phát hiện khuôn mặt nghiêng trên ảnh và video đƣợc xây dựng trên môi trƣờng VisualStudio.Net, sử dụng thƣ viện mã nguồn mở OpenCV với các cải tiến sau :

61

 Thƣ viện OpenCV ứng dụng cho một tƣ thế khuôn mặt thẳng và chính diện. Trong luận văn này, tôi đã đƣa vào 5 tƣ thế khuôn mặt đã đề xuất ở trên và chỉnh sửa mã nguồn của thƣ viện OpenCV kết hợp 5 tƣ thế khuôn mặt để hệ thống có thể phát hiện đƣợc các tƣ thế khuôn mặt của ảnh đầu vào và chỉ ra tƣ thế đang đƣợc phát hiện là tƣ thế nào.

 Khoanh vùng ảnh chứa khuôn mặt của OpenCV là vòng tròn đƣợc sửa thành khoanh vùng hình chữ nhật, phù hợp với ảnh cắt hình chữ nhật trong tập huấn luyện và thử nghiệm.

 Để đơn giản việc xây dựng hệ thống và thử nghiệm, các tƣ thế nghiêng phải 30 đến 60 độ, nghiêng phải 60 đến 90 độ đƣợc lấy ánh xạ từ tƣ thế nghiêng trái 30 độ đến 60 độ và nghiêng trái 60 đến 90 độ.

Giao diện chƣơng trình :

62

Hình 30b Phát hiện mặt nghiêng phải 30 đến 60 độ- khung chữ nhật

63

Hình 31a Phát hiện mặt nghiêng phải 60 đến 90 độ- khung tròn

64

Hình 32a Phát hiện mặt thẳng và chính diện – khung tròn

Hình 32b Phát hiện mặt thẳng và chính diện- khung chữ nhật

3.3.3. Đánh giá kết quả

Bất kỳ một hệ thống phát hiện đối tƣợng nào để đánh giá ƣu nhƣợc điểm thì đều cần phải đánh giá thông qua những tiêu chí chung: độ chính xác, thời gian phát hiện, tính thích nghi... Tùy vào từng yêu cầu cụ thể đối với mỗi hệ thống mà ta có thể đánh giá tiêu chí nào là quan trọng cũng nhƣ hệ thống nào là nào là tốt hơn.

65

3.3.3.1. Một số độ đo đánh giá

Một trong những tiêu chí quan trọng nhất của một hệ thống phát hiện đối tƣợng đó là độ chính xác hay tỉ lệ phát hiện. Để kiểm tra tỉ lệ phát hiện của của hệ thống, tác giả sử dụng độ đo Dice theo công thức D1 và F-Score do ETISEO [30] đƣa ra.

D1 đƣợc định nghĩa nhƣ sau:

D1=2 Card(RD C) / ( Card(RD) + Card(C))

Trong đó:

RD là tổng số đối tƣợng trong tập dữ liệu test. C là tổng số đối tƣợng mà hệ thống phát hiện đƣợc.

F-Score đƣợc định nghĩa nhƣ sau:

F-Score = 2(Precision * Sensitivity )/( Precision + Sensitivity )

Trong đó:

- Precision= (GD/OD)

- Sensitivity = (GD/RD)

- GD là tổng số đối tƣợng mà hệ thống phát hiện đúng - OD là tổng số đối tƣợng mà hệ thống phát hiện đƣợc - RD là tổng số đối tƣợng trong tập dữ liệu thử nghiệm.

3.3.3.2. Kết quả huấn luyện

Lần huấn luyện 1: Thử nghiệm với 2751 ảnh chứa khuôn mặt không chia các

tƣ thế chụp, 3024 ảnh không chứa khuôn mặt.

Đánh giá

o Độ chính xác: Phát hiện khuôn mặt kém, tỉ lệ phát hiện < 20% cho mặt nghiêng <=30 độ, khoanh vùng phát hiện mặt bị chồng chéo.

o Thời gian xử lý: nhanh o Tính thích nghi: kém

66

Lần huấn luyện 2: Thử nghiệm với 192 ảnh chụp góc nghiêng trái, 400 ảnh

không chứa khuôn mặt

Đánh giá

o Độ chính xác: Phát hiện khuôn mặt kém, tỉ lệ phát hiện đúng < 40% cho mặt nghiêng <=30 độ, không phát hiện đƣợc mặt nghiêng >=45 độ

o Thời gian xử lý: nhanh

Lần huấn luyện 3: Thử nghiệm với 942 ảnh nghiêng trái, 942 ảnh nghiêng

phải, 2000 ảnh không chứa khuôn mặt.

Đánh giá

o Tầng 23 tốt hơn tầng 24.

o Độ chính xác: Phát hiện khá tốt cho các tƣ thế khuôn mặt: thẳng, nghiêng trái, nghiêng phải.

o Tỉ lệ phát hiện đúng trên 85%

o Thời gian xử lý: Trung bình 16 ảnh/giây, đảm bảo thời gian thực

Lần huấn luyện 4: Chia các tƣ thế chụp

o 799 ảnh nghiêng trái 30-60 độ, 1500 ảnh không chứa khuôn mặt o 800 ảnh nghiêng trái 60-90 độ, 1500 ảnh không chứa khuôn mặt. o 799 ảnh nghiêng phải 30-60 độ, 1500 ảnh không chứa khuôn mặt o 800 ảnh nghiêng phải 60-90 độ, 1500 ảnh không chứa khuôn mặt.

Đánh giá

o Tầng 23 tốt hơn tầng 24.

o Độ chính xác: Phát hiện khá tốt cho các tƣ thế khuôn mặt: thẳng, nghiêng trái, nghiêng phải.

o Tỉ lệ phát hiện đúng ~ 95%

67

Đánh giá chung

Qua kết quả của 4 lần huấn luyện trên rút ra đƣợc một số nhận xét sau:

o Tỉ lệ phát hiện khuôn mặt phụ thuộc rất nhiều vào các tƣ thế chụp. Các tƣ thế chụp khác nhau cho ảnh khuôn mặt có các đặc trƣng khác nhau. Do đó khi huấn luyện không chia các tƣ thế khuôn mặt ra thành từng tập huấn luyện riêng thì kết quả phát hiện của hệ thống thấp.

o Tỉ lệ phát hiện khuôn mặt cũng phụ thuộc nhiều vào số ảnh và số chủ thể của tập huấn luyện. Số ảnh và số chủ thể không đủ lớn sẽ không đảm bảo đƣợc tính đa dạng của các hình thái khuôn mặt, do đó hệ thống sẽ cho kết quả không cao.

o Kết quả của tầng huấn luyện sau thƣờng tốt hơn kết quả của tầng huấn luyện trƣớc. Tuy nhiên, đến một ngƣỡng nào đó, tỉ lệ phát hiện khuôn mặt của tầng sau sẽ giảm hơn tỉ lệ phát hiện của tầng trƣớc. Do tầng sau thƣờng cho các véc-tơ đặc trƣng với ít đặc trƣng hơn tầng trƣớc, giống nhƣ tập luật ngày càng chặt chẽ. Khi đó tầng huấn luyện sau có thể nhầm các vùng ảnh có chứa khuôn mặt là vùng ảnh không chứa khuôn mặt. Nhƣ trong lần huấn luyện 3 và lần huấn luyện 4 ở trên, tầng huấn luyện thứ 23 cho kết quả tốt hơn tầng huấn luyện thứ 24.

3.3.3.3. Thử nghiệm trên cơ sở dữ liệu ảnh

Tiến hành thử nghiệm cho từng lần huấn luyện bằng hệ thống test tự động của thƣ viện OpenCV đƣợc chỉnh sửa việc lấy đầu vào từ Webcam sang lấy ảnh từ thƣ mục ảnh tĩnh, các bƣớc thử nghiệm đối với từng lần huấn luyện áp dụng theo độ đo D1, F- Score. Ở đây, tôi chỉ trình bày chi tiết các bƣớc thử nghiệm cho lần huấn luyện thứ 4.

Tiến hành thử nghiệm trên tập cơ sở dữ liệu ảnh thử nghiệm 498 ảnh nghiêng trái từ 60 độ đến 90 độ, 496 ảnh nghiêng phải từ 30 độ đến 60 độ, 538 ảnh chụp thẳng và chính diện trên máy tính có cấu hình: CPU core 2 dual E6750 2.66 GHz, RAM 3.24GB. Sau khi thử nghiệm, thời gian phát hiện trung bình tính đƣợc là 16 ảnh/giây.

68

Với thời gian phát hiện nhƣ vậy đã đảm bảo tính thời gian thực và độ chính xác tính theo độ đo D1, F-Score nhƣ sau:

Tƣ thế khuôn mặt Số ảnh huấn luyện positive Số ảnh huấn luyện negative Kích thƣớc ảnh huấn luyện positive Số Stage huấn luyện Số ảnh test Số ảnh phát hiện đúng D1 F- Score Nghiêng trái 60 đến 90 độ 799 1500 21x30 23 500 470 0.94 0.92 Nghiêng trái 30 đến 60 độ 800 1500 21x25 24 500 488 0.97 0.95 Chụp chính diện 1000 1500 24x32 24 538 521 0.98 0.97 Nghiêng phải 30 đến 60 độ 800 1500 21x25 24 500 488 0.94 0.95 Nghiêng phải 60 đến 90 độ 799 1500 21x30 23 500 470 0.97 0.92 Kết hợp các tƣ thế Kết hợp Kết hợp 2538 2411 0.97 0.95

69 Độ chính xác theo D1 và F-Score 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1 Nghiêng trái 60o-90o Nghiêng trái 30o-60o

Chính diện Nghiêng phải 30o-60o Nghiêng phải 60o-90o Tổng hợp D1 F-Score

Hình 33 Biều đồ đánh giá độ chính xác theo D1 và F-Score

Dựa vào biểu đồ trên chúng ta có thể thấy các tƣ thế có đặc trƣng ít thì tỉ lệ phát hiện sẽ không cao. Nhƣ tƣ thế nghiêng trái 60o đến 90o và nghiêng trái 30o đến 60o, đƣợc huấn luyện với kích thƣớc mẫu tƣơng đƣơng nhau, nhƣng tỉ lệ phát hiện tƣ thế nghiêng trái 30o đến 60o cao hơn hẳn so với tỉ lệ phát hiện khuôn mặt nghiêng trái 60o đến 90o. Điều này có thể giải thích nhƣ sau: do đặc thù của khuôn mặt nghiêng trái 60o

đến 90o

có ít đặc trƣng hơn và độ che khuất nhiều hơn, có độ chênh lệch nhiều về mức xám trong khi cấu trúc trên vùng ảnh chứa khuôn mặt nghiêng trái 30o đến 60o đơn giản hơn, không có sự chênh lệch nhiều về mức xám.

70

KẾT LUẬN

Về vấn đề phân lớp đối tƣợng, tác giả trình bày một số thuật toán phân lớp đƣợc sử dụng nhiều trong bài toán phát hiện khuôn mặt nhƣ: SVM, mạng nơ-ron, AdaBoost…trong đó mỗi thuật toán có những ƣu điểm và lợi thế riêng. Tuy nhiên, trong bài toán phát hiện khuôn mặt đòi hỏi thuật toán phân loại phải đạt độ chính xác cao, đồng thời quá trình phát hiện phải nhanh để đáp ứng yêu cầu cho hệ thống hoạt động thời gian thực. AdaBoost là một thuật toán phân loại nhanh và cho độ chính xác cao đã đƣợc Viola và John áp dụng thành công cho bài toán nhận dạng khuôn mặt thẳng và chính diện ; bên cạnh đó thì Mathias Kolsch và Matthew Turk [29] đã áp dụng thuật toán AdaBoost cho bài toán nhận dạng cử chỉ tĩnh cũng thu đƣợc kết quả rất tốt với tỉ lệ nhận dạng đúng 95% trong khi tỉ lệ nhận dạng sai là 10-4. Do đó thuật toán AdaBoost xây dựng trên mô hình Cascade là một lựa chọn phù hợp cho bài toán phát hiện khuôn mặt nghiêng trong luận văn này.

Trong khuôn khổ luận văn này, tác giả đã tìm hiểu về lý thuyết phát hiện mặt ngƣời, từ đó xác định hƣớng tiếp cận tốt cho bài toán phát hiện khuôn mặt là hƣớng tiếp cận dựa trên diện mạo. Ngoài ra, tác giả cũng xác định đƣợc hai vấn đề quan trọng

Một phần của tài liệu Phát triển khuôn mặt nghiêng trên ảnh và video (Trang 58)