Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.87 MB, 67 trang )
2.4.1 Xác định các mẫu trƣớc
Sakai đã cố gắng thử phát hiện mặt ngƣời chụp thẳng trong ảnh. Ông
dùng vài mẫu con về mắt, mũi, miệng, và đƣờng viền khuôn mặt để mô
hình hoá một khuôn mặt. Mỗi mẫu con đƣợc định nghĩa trong giới hạn của
các đoạn thẳng. Các đƣờng thẳng trong ảnh đƣợc trích bằng phƣơng pháp
xem xét thay đổi gradient nhiều nhất và so khớp các mẫu con. Đầu tiên tìm
các ứng viên thông qua mối tƣơng quan giữa các ảnh con và các mẫu về
đƣờng viền. Sau đó, so khớp với các mẫu con khác. Hay nói một cách khác,
giai đoạn đầu xem nhƣ là giai đoạn sơ chế để tìm ứng viên, giai đoạn thứ
hai là giai đoạn tinh chế để xác định có tồn tại hay không một khuôn mặt
ngƣời. Ý tƣởng này đƣợc duy trì cho đến các nghiên cứu sau này.
Craw đƣa ra một phƣơng pháp phát hiện mặt ngƣời dựa vào các mẫu
về hình dáng của các ảnh đƣợc chụp thẳng (dùng vẻ bề ngoài của hình dáng
khuôn mặt). Đầu tiên dùng phép lọc Sobel để tìm các cạnh. Các cạnh này
sẽ đƣợc nhóm lại theo một số ràng buộc. Sau đó, tìm đƣờng viền của đầu,
quá trình tƣơng tự đƣợc lặp đi lặp lại với mỗi tỷ lệ khác nhau để xác định
các đặc trƣng khác nhƣ: mắt, lông mày, và môi. Sau đó Craw mô tả một
phƣơng thức xác định dùng một tập có 40 mẫu để tìm các đặc trƣng khuôn
mặt và điều khiển chiến lƣợc dò tìm.
Govindaraju đề nghị một phƣơng thức phát hiện mặt ngƣời có hai
giai đoạn để phát sinh các giả thuyết khuôn mặt và kiểm tra nó. Một mô
hình khuôn mặt đƣợc xây dựng trong các giai đoạn xác định đặc trƣng bằng
các cạnh. Các đặc trƣng đƣợc mô tả nhƣ các đƣờng cong của phía bên trái,
đƣờng viền tóc, phía bên phải của khuôn mặt đƣợc chụp thẳng. Dùng phép
toán Marr-Hildreth để xác định cạnh. Sau đó dùng một bộ lọc để loại bỏ
các đối tƣợng không tham gia vào xây dựng khuôn mặt. Liên kết các cặp
của các đoạn đƣờng viền trên cơ sở mức độ kề và các hƣớng liên quan. Xác
định các góc để phân đoạn đƣờng viền thành các đƣờng cong đặc trƣng.
Gán nhãn các đƣờng cong đặc trƣng bằng cách kiểm tra thuộc tính hình học
và các vị trí liên quan trong láng giềng của nó. Nối các cặp của các đƣờng
cong đặc trƣng thông qua các cạnh nếu các thuộc tính của nó tƣơng thích.
So sánh các tỷ lệ của các cặp thuộc tính cho một cạnh và ấn định một giá trị
tƣơng ứng. Nếu giá trị của một nhóm của ba đƣờng cong đặc trƣng (với các
nhãn khác nhau) thấp thì nhóm này sẽ trở thành một giả thuyết. Khi phát
hiện mặt trong các bài báo thì thông tin phụ sẽ đƣợc dùng thêm đó là số
44
lƣợng ngƣời trong ảnh để chọn giả thuyết tối ƣu. Tỷ lệ chính xác của
phƣơng pháp này là 70%, tuy nhiên các khuôn mặt phải đƣợc chụp thẳng
và không bị che khuất.
Venkatranman và Govindaraju dùng cách tiếp cận tƣơng tự, nhƣng
dùng wavelet để trích cạnh. Tsukamoto trình bày một mô hình hiệu quả khi
dùng mẫu khuôn mặt (QMF). Trong QMF, mỗi ảnh mẫu đƣợc chia thành
nhiều khối, các đặc trƣng hiệu quả đƣợc ƣớc lƣợng cho mỗi khối. Tham số
hoá một mẫu khuôn mặt theo: lightness và edgeness là các đặc trƣng trong
mô hình. Sau đó dùng các mẫu (đã đƣợc chia thành các khối) để tính giá trị
faceness (mức độ là khuôn mặt) ở tại mọi vị trí của ảnh. Một khuôn mặt
đƣợc xác định khi giá trị faceness vƣợt một ngƣỡng đã đƣợc cho trƣớc.
Hình chiếu đƣợc dùng nhƣ các mẫu để phát hiện mặt ngƣời. Dùng PCA
(phân tích thành phần chính – Principal Component Analysis - PCA) để có
một tập hình chiếu cơ bản từ các mẫu khuôn mặt, hình chiếu đƣợc mô tả
nhƣ một mảng các bit. Dùng đặc trƣng hình chiếu riêng kết hợp biến đổi
Hough để phát hiện mặt ngƣời. Sau đó một phƣơng pháp xác định dựa trên
đa loại mẫu để xác định các thành phần của khuôn mặt đƣợc trình bày.
Phƣơng pháp này định nghĩa một số giả thuyết để mô tả các khả năng của
các đặc trƣng khuôn mặt. Với một khuôn mặt sẽ có một tập giả thuyết, lý
thuyết DepsterShafer. Dùng một nhân tố tin cậy để kiểm tra sự tồn tại hay
không của các đặc trƣng của khuôn mặt, và kết hợp nhân tố tin cậy này với
một độ đo để xem xét có hay không có khuôn mặt trong ảnh.
Sinha dùng một tập nhỏ các bất biến ảnh trong không gian ảnh để mô
tả không gian các mẫu ảnh [24, 25]. Tƣ tƣởng chính của ông dựa vào sự
thay đổi mức độ sáng của các vùng khác nhau của khuôn mặt (nhƣ hai mắt,
hai má, và trán), quan hệ về mức độ sáng của các vùng còn lại thay đổi
không đáng kể. Xác định các cặp tỷ số của mức độ sáng của một số vùng
(một vùng tối hơn hay sáng hơn) cho ta một lƣợng bất biến khá hiệu quả.
Các vùng có độ sáng đều đƣợc xem nhƣ một mẫu tỷ số mà là mẫu thô trong
không gian ảnh của một khuôn mặt với độ thích hợp ít dùng để chọn nhƣ
các đặc trƣng chính của khuôn mặt nhƣ hai mắt, hai má, và trán. Lƣu giữ
thay đổi độ sáng của các vùng trên khuôn mặt trong một tập thích hợp với
các cặp quan hệ sáng hơn – tối hơn giữa các vùng nhỏ. Một khuôn mặt
đƣợc xác định khi một ảnh thoả tất cả các cặp sáng hơn – tối hơn. Ý tƣởng
này xuất phát từ sự khác biệt của cƣờng độ giữa các vùng kề cục bộ, sau
này đƣợc mở rộng trên cơ sở biến đổi wavelet để biểu diễn cho xác định
45
ngƣời đi bộ, xác định xe hơi, phát hiện mặt. Ý tƣởng của Sinha còn đƣợc
áp dụng cho hệ thống thị giác của robot. Hình 2.16 cho thấy mẫu nổi bật
trong 23 quan hệ đƣợc định nghĩa. Dùng các quan hệ này để phân loại, có
11 quan hệ thiết yếu (các mũi tên màu đen) và 12 quan hệ xác thực (các
mũi tên xám). Mỗi mũi tên là một quan hệ. Một quan hệ thoả mãn mẫu
khuôn mặt khi tỷ lệ giữa hai vùng vƣợt qua một ngƣỡng và 23 quan hệ này
vƣợt ngƣỡng thì xem nhƣ xác định đƣợc một khuôn mặt.
Hình 2.16: Một mẫu khuôn mặt, có 16 vùng và 23 quan hệ
(các mũi tên).
Phƣơng pháp so khớp mẫu theo thứ tự để phát hiện mặt ngƣời do
Miao trình bày. Ở giai đoạn đầu tiên, ảnh sẽ đƣợc xoay từ -20o đến 20o với
mỗi bƣớc là 5o và theo thứ tự. Xây dựng ảnh đa độ phân giải, hình 2.17, rồi
dùng phép toán Laplace để xác định các cạnh. Một mẫu khuôn mặt gồm
các cạnh mô tả sáu thành phần: hai lông mày, hai mắt, một mũi, và một
miệng. Sau đó áp dụng heuristic để xác định sự tồn tại của khuôn mặt trong
ảnh, phƣơng pháp này cho phép xác nhiều khuôn mặt, nhƣng kết quả không
tốt bằng xác định một khuôn mặt (chụp thẳng hoặc xoay) trong ảnh xám.
Hình 2.17: (a) Ảnh ban đầu có độ phân giải n=1;
(b), (c), và (d) Ảnh có độ phân giải n=4, 8, và 16.
Wei và Lai [29] dùng bộ lọc để phân đoạn kết hợp thuật toán tìm
láng giềng gần nhất xác định ứng viên khuôn mặt, từ ứng viên này sau đó
so khớp với các mẫu đã xác định trƣớc để biết ứng viên có phải là khuôn
mặt hay không. Tỷ lệ chính xác là 80%.
Darrell [31] dùng phân đoạn đề tìm ứng viên, dùng ứng viên này để
phát hiện mặt ngƣời dựa vào mẫu rồi theo vết chuyển động của ngƣời.
46
Dowdall dùng phổ của màu da ngƣời để xác định ứng viên. Sau đó
chiếu các ứng viên này để so sánh với các mẫu có trƣớc để xác định ứng
viên nào là khuôn mặt ngƣời. Phƣơng pháp này chỉ xác định cho khuôn mặt
chụp thẳng và gần thẳng, góc quay khoảng từ -10o đến 10o.
Holst xây dựng một hệ thống từ các mẫu với các đặc trƣng kép: (1)
thành phần, gồm: mắt, mũi, và miệng; (2) hình dáng khuôn mặt, trên độ
phân giải thấp. Ông dùng hai phƣơng pháp tìm kiếm trong không gian dữ
liệu của mình để phát hiện mặt ngƣời.
Hình 2.18: Phân nhóm dữ liệu khuôn mặt và nhóm dữ liệu không phải
khuôn mặt
Froba và Zink lọc cạnh ở độ phân giải thấp rồi dùng biến đổi Hough
để so khớp mẫu theo hƣớng cạnh để xác định hình dáng khuôn mặt ở dạng
chụp hình thẳng ở dạng xám. Tỷ lệ chính xác trên 91% [5].
Shu và Jain xây dựng ngữ nghĩa khuôn mặt. Ngữ nghĩa theo hình
dáng và vị trí các thành phần khuôn mặt. Hai ông từ bộ ngữ nghĩa này xây
dựng một đồ thị quan hệ để dễ dàng so khớp khi phát hiện mặt ngƣời.
Iwata [20] xây dựng mẫu mỗi đặc trƣng gồm bốn đặc trƣng theo bốn
hƣớng: ngang, bên phải phía trên, đứng, và bên trái phía trên của khuôn
mặt chụp thẳng hoặc gần thẳng trong ảnh xám. Để so khớp từng phần của
mẫu kết hợp xác suất các láng giềng.
Tỷ lệ chính xác của phƣơng pháp này là gần 99%. Keren [7] xây
dựng khái niệm Antifaces để phát hiện mặt ngƣời (tổng quát cho các đối
tƣợng 3-chiều). Dựa trên nhiều loại mẫu kết hợp giả thuyết phân bố xác
suất để tìm những đối tƣợng không có mối tƣơng quan để tìm khuôn mặt
47
ngƣời. Ông cho biết, phƣơng pháp này nhanh hơn eigenface và SVM và
mức độ chính xác gần tƣơng đƣơng.
Feris [27] dùng mạng wavelet thứ nhất để xác định ứng viên khuôn
mặt khi so khớp với các mẫu đã học trƣớc. Sau đó tác giả dùng mạng
wavelet thứ hai để xác định các thành phần nhƣ mắt, mũi, và miệng thông
qua các đặc trƣng góc cạnh. Từ các thành phần này xem xét tính hoà hợp
để có quyết định cuối cùng ứng viên nào là khuôn mặt ngƣời.
2.4.2 Các mẫu bị biến dạng
Yuille dùng các mẫu biến dạng để mô hình hoá các đặc trƣng của
khuôn mặt, mô hình này có khả năng linh hoạt cho các đặc trƣng
khuôn mặt.
Trong hƣớng tiếp cận này, các đặc trƣng khuôn mặt đƣợc mô tả bằng
các mẫu đƣợc tham số hoá. Một hàm năng lƣợng (giá trị) đƣợc định nghĩa
để liên kết các cạnh, đỉnh, và thung lũng trong ảnh để tƣơng ứng với các
tham số trong mẫu. Mô hình này tốt nhất khi tối thiểu hàm năng lƣợng qua
các tham số,
Mặc dù kết quả tốt với mẫu biến dạng trong theo vết đối tƣợng trên
đặc trƣng không mô hình theo lƣới, một hạn chế của hƣớng tiếp cận này là
các mẫu biến dạng phải đƣợc khởi tạo trong phạm vi gần các đối tƣợng để
xác định.
Một hƣớng tiếp cận dựa trên đƣờng gấp khúc (snake) và các mẫu để
phát hiện mặt. Đầu tiên một ảnh sẽ đƣợc làm xoắn lại bởi một lọc làm mờ
rồi dùng phép toán morphology để làm nổi bật cạnh lên. Dùng một đƣờng
gấp khúc có n điểm ảnh (giá trị n nhỏ) để tìm và ƣớc lƣợng các đoạn cong
nhỏ. Mỗi khuôn mặt đƣợc xấp xỉ bằng một ellipse và biến đổi Hough, rồi
tìm một ellipse nổi trội nhất. Một tập có bốn tham số mô tả một ellipse
đƣợc dùng nhƣ ứng viên để phát hiện mặt. Với mỗi ứng viên, một phƣơng
thức tƣơng tự nhƣ phƣơng thức mẫu biến dạng dùng để xác định các đặc
trƣng ở mức chi tiết. Nếu tìm thấy số lƣợng đáng kể các đặc trƣng khuôn
mặt và thỏa tỷ lệ cân đối thì xem nhƣ đã xác định đƣợc một khuôn mặt.
Lam và Yan cũng dùng đƣờng gấp khúc để xác định vị trí đầu với thuất
toán greedy để cực tiểu hóa hàm năng lƣợng [18].
Thay vì dùng đƣờng gấp khúc thì Huang và Su [8] dùng lý thuyết
dòng chảy để xác định đƣờng viền khuôn mặt dựa trên đặc tính hình học.
48
Hai ông dùng lý thuyết tập đồng mức (Level Set) để loang từ các khởi động
ban đầu để có đƣợc các khuôn mặt ngƣời.
Lanitis mô tả một phƣơng pháp biểu diễn khuôn mặt ngƣời với cả hai thông
tin: hình dáng và cƣờng độ. Bắt đầu với các tập ảnh đƣợc huấn luyện với
các đƣờng viền mẫu nhƣ là đƣờng bao mắt, mũi, cằm/má đƣợc gán nhãn.
Dùng một vector các điểm mẫu để mô tả hình dáng. Tác giả dùng một mô
hình phân bố điểm (Point Distribution Model – PDM) để mô tả vector hình
dáng qua toàn bộ các cá thể. Dùng tiếp cận nhƣ Kirby và Sirovich để mô tả
cƣờng độ bề ngoài của hình dáng đã đƣợc chuẩn hoá. Một PDM có hình
dáng nhƣ khuôn mặt dùng để phát hiện mặt bằng mô hình hình dáng tích
cực (Active Shape Model - ASM) để tìm kiếm và ƣớc lƣợng vị trí khuôn
mặt cũng nhƣ các tham số về hình dáng.
Các mảnh của khuôn mặt đƣợc làm biến dạng về hình dáng trung
bình rồi trích các tham số cƣờng độ. Các tham số hình dáng và cƣờng độ
đƣợc dùng để phân loại. Cootes và Taylor áp dụng cách tiếp cận này để
phát hiện mặt. Đầu tiên, hai ông định nghĩa một vùng hình chữ nhật chứa
các đặc trƣng quan tâm. Dùng phân tích nhân tố làm vừa các đặc trƣng
huấn luyện để có một hàm phân bố. Có đƣợc các đặc trƣng là ứng viên nếu
độ đo xác suất vƣợt qua một ngƣỡng khi dùng ASM. Sau khi huấn luyện
xong có thể phát hiện mặt ngƣời.
Hƣớng tiếp cận theo ASM đƣợc mở rộng bằng hai lọc Kalman để
ƣớc lƣợng các tham số về hình dáng và cƣờng độ dùng để theo vết khuôn
mặt ngƣời.
49
CHƢƠNG 3
CHƢƠNG TRÌNH THỬ NGHIỆM
3.1 Bài toán
Phát hiện mặt ngƣời trong ảnh có nhiều ứng dụng trong cuộc sống, tuy
nhiên, trong luận văn này, tôi chỉ xây dựng một chƣơng trình nhỏ để minh
hoạ cho các lý thuyết ở trên. Cụ thể đấy là một chƣơng trình phát hiện mặt
ngƣời trong ảnh đƣợc viết trên nền visual C++ của Microsoft, sử dụng thƣ
viện mã nguồn mở OpenCV.
Bài toán đặt ra từ một bức ảnh đầu vào, có thể có hoặc không có ngƣời
xuất hiện trong đó. Mục tiêu đề ra: Hãy phát hiện mặt ngƣời trong bức ảnh
đó (nếu có) qua các thành phần trên khuôn mặt nhƣ: Hai mắt, mũi, miệng.
Mô hình hệ thống nhƣ sau:
HỆ THỐNG PHÁT HIỆN
MẶT NGƢỜI TRONG ẢNH
Ảnh đầu vào
Phát hiện khuôn mặt theo
hƣớng tiếp cận thành phần
Dựa theo đặc trƣng Haar +
Adaboost
Hiển thị kết quả
(Có thể dùng kết quả,
phục vụ cho hệ thống
nhận dạng ảnh)
Hình 3.1: Mô tả hệ thống phát hiện mặt ngƣời trong ảnh
3.2 Hƣớng nghiên cứu
3.2.1 Phân loại thành phần khuôn mặt
Thành phần trực quan
Là các thành phần có đƣợc dựa trên sự quan sát trực tiếp khuôn mặt,
là các bộ phận dựa trên ý hiểu thông thƣờng của con ngƣời, nhƣ mắt, mũi
miệng..
50
Thành phần cục bộ
Là các vùng có đặc trƣng phân biệt trên khuôn mặt. Các thành phần
này không dựa trên sự quan sát trực tiếp của mắt ngƣời mà đƣợc lựa chọn
qua một bộ trích đặc trƣng, các thành phần này không cố định mà tùy thuộc
vào thuật toán rút đặc trƣng cụ thể.
3.2.2 Cấu trúc các bộ nhận dạng
Về cơ bản, có n thành phần, tƣơng ứng với n bộ nhận dạng thành phần
khác nhau. Việc tổ chức bộ nhận dạng thực ra là xây dựng bộ nhận dạng
thành phần và tổ chức bộ nhận dạng tổng hợp.
Vài cách tổ chức đơn giản:
Qua bộ nhận dạng thành phần thứ nhất, lọc ra n1 kết quả gần nhất,
qua bộ nhận dạng thành phần thứ 2, lọc ra n2 kết quả gần nhất trong
n1 kết quả vừa tìm, làm nhƣ vậy cho đến hết.
Tính kết quả nhận dạng của cả n bộ, sau đó lấy kết quả có %
cao nhất.
3.3 Phân tích, thiết kế
Hƣớng tiếp cận phát hiện khuôn mặt dựa trên thành phần đƣợc xây
dựng dựa trên tri thức khuôn mặt, qua việc phân tích các thành phần khuôn
mặt kết hợp với việc so khớp các mẫu thành phần. Ví dụ: khuôn mặt
thƣờng có hai mắt đối xứng nhau qua trục thẳng đứng giữa khuôn mặt và
nằm ở nửa trên khuôn mặt, ngay dƣới đôi mắt là mũi, mũi nằm ở khoảng
giữa khuôn mặt, dƣới mũi là miệng, miệng nằm ở khoảng nửa dƣới khuôn
mặt và đối xứng qua trục thẳng đứng giữa khuôn mặt.
Để xác định một thành phần nằm trong một vùng chứa nó, ta sử dụng
kỹ thuật Haar + Adaboost.
Dựa vào việc phân tích vị trí các thành phần khuôn mặt một cách
tƣơng đối, ta sẽ xác định đƣợc vùng mà xác suất gần nhƣ chắc chắn sẽ chứa
từng thành phần khuôn mặt nhƣ vùng chứa mắt trái, vùng chứa mắt phải,
vùng chứa mũi,… Trên cơ sở đó ta xác định một vùng ảnh là ảnh khuôn
mặt nếu vùng ảnh đó có đầy đủ các thành phần khuôn mặt.
51
Thuật toán
Ta sử dụng mẫu học dựa trên kỹ thuật Haar + Adaboost cho 6 đối
tƣợng sau: mặt thẳng, đôi mắt, mắt trái, mắt phải, mũi, miệng.
Hình 3.2: Nhận dạng khuôn mặt dựa trên thành phần
Bƣớc 1: Phát hiện thô khuôn mặt trên ảnh bằng mẫu mặt thẳng. Sau
bƣớc này ta sẽ đƣợc một tập các vùng ảnh có khả năng là khuôn mặt.
Bƣớc 2: Phát hiện đôi mắt ở vùng từ 1/6 đến 1/2 ảnh khuôn mặt tính
từ trên xuống. Nếu tìm thấy chuyển qua bƣớc 3.
Bƣớc 3: Phát hiện mắt trái trong vùng từ 1/6 đến 1/2 chiều cao và từ
giữa đôi mắt sang trái. Nếu thấy chuyển bƣớc 4.
Bƣớc 4: Phát hiện mắt phải trong vùng từ 1/6 đến 1/2 chiều cao và từ
giữa đôi mắt sang phải. Nếu thấy chuyển bƣớc 5.
Bƣớc 5: Phát hiện mũi trong vùng từ 1/4 đến 3/4 chiều rộng và từ
giữa đôi mắt đến khoảng 1/8 cận dƣới. Nếu thấy chuyển bƣớc 6.
Bƣớc 6: Phát hiện miệng trong vùng từ 1/8 đến 7/8 chiều rộng và từ
giữa mũi đến khoảng 1/8 cận dƣới. Nếu thấy thì thông báo tìm thấy
khuôn mặt.
52