Xem mẫu
- Giải thưởng Sinh viên Nghiên cứu khoa học Euréka lần thứ XIX năm 2017 Kỷ yếu khoa học
NHẬN DẠNG KHUÔN MẶT NGƯỜI VỚI THÔNG TIN
MẶT NGƯỜI KHÔNG ĐẦY ĐỦ
Võ Hoàng Trọng*
Trường Đại học Khoa học Tự nhiên – Đại học Quốc gia TP. Hồ Chí Minh
*Tác giả liên hệ: hoangtrong2305@gmail.com
TÓM TẮT
Nhận dạng khuôn mặt người có nhiều ứng dụng trong đời sống. Tuy nhiên, bài toán này vẫn
còn một số những thách thức nhất định vì ảnh mặt người thu được đôi khi bị mất hay bị nhiễu
thông tin. Do đó, tôi trình bày một cách giải quyết vấn đề trên. Từ ảnh ban đầu, tôi phát hiện
khuôn mặt và phân vùng mặt theo superpixel, từ đó tách mặt ra thành các vùng riêng biệt.
Sau đó, tôi áp dụng Mạng neural tích chập để huấn luyện trên từng vùng mặt. Khi kiểm tra,
tôi chỉ sử dụng một vài vùng thông tin có trên khuôn mặt để nhận dạng, sau đó, tôi đề xuất
một cách kết hợp trễ các vùng bằng phương pháp bầu chọn, thông qua một hàm tính điểm để
từ đó đưa ra kết luận danh tính của khuôn mặt trong ảnh. Tôi thực nghiệm phương pháp này
dựa trên toàn mặt cũng như chỉ một vài phần trên khuôn mặt người.
Từ khóa: Nhận dạng khuôn mặt người, mạng neural tích chập, superpixel, kết hợp trễ.
FACE RECOGNITION BASED ON INCOMPLETED FACE INFORMATION
Vo Hoang Trong*
University of Science – VNU Ho Chi Minh City
*Corresponding Author: hoangtrong2305@gmail.com
ABSTRACT
Face recognition has many applications in real life. However, this problem still has some
major challenges because face image captured from a camera can be lost or has noise
information. In this paper, I proposed a solution to solve those problems. Given a face image,
first, I detect face on that image and partition face into individual areas by using superpixel.
On testing, I recognize face by using areas that exist on the face, used a late fusion by voting
method and a score function to determine the identification of the face. I experimented on the
frontal face as well as some areas of the face.
Keywords: Face recognition, convolutional neural network, superpixel, late fusion.
TỒNG QUAN thông ở ngoài đường phố. Ngoài ra, các ứng
Nhận dạng khuôn mặt người là một trong dụng liên quan đến nhận dạng khuôn mặt có
những bài toán thu hút nhiều sự quan tâm thể kể như: Hệ thống phát hiện tội phạm, hệ
trong ngành thị giác máy tính qua hơn 4 thập thống theo dõi nhân sự trong một đơn vị, hệ
kỉ. Bài toán này là một phương pháp sinh trắc thống tìm kiếm thông tin trên ảnh, video dựa
học giúp xác định danh tính người sở hữu trên nội dung. Tuy nhiên, bài toán này vẫn
khuôn mặt cần kiểm tra. Thời gian gần đây, còn một số những thách thức nhất định khi
với sự phát triển mạnh mẽ của Máy học, áp dụng vào thực tế vì ảnh mặt người thu
nhiều thuật toán ra đời và giải quyết bài toán được đôi khi bị nhiễu sáng, mặt bị nghiêng
nhận dạng mặt người với độ chính xác cao. hay chỉ chụp được một phần mặt, khiến
Bài toán nhận dạng khuôn mặt người có thể thông tin trên mặt không đầy đủ, do đó
áp dụng rộng rãi trong nhiều lĩnh vực khác những phương pháp áp dụng trên toàn khuôn
nhau. Để bắt kịp ưu thế của Cuộc cách mạng mặt trước đây đạt kết quả không cao khi áp
công nghiệp lần thứ 4 cũng như xây dựng dụng trên một phần khuôn mặt. Do đó, bài
Thành phố thông minh, ta cần ứng dụng bài báo này sẽ trình bày một cách giải quyết bài
toán nhận dạng khuôn mặt người thông qua toán nhận dạng khuôn mặt người với thông
camera giám sát công cộng nhằm phát hiện tin trên mặt người không đầy đủ cũng như
đối tượng trong đám đông như ở sân bay, sân khuôn mặt người bị nghiêng.
vận động hay phát hiện người vi phạm giao Dựa vào đặc điểm thông tin không đầy đủ
124
- Giải thưởng Sinh viên Nghiên cứu khoa học Euréka lần thứ XIX năm 2017 Kỷ yếu khoa học
trên mặt người nên tôi giải quyết bài toán Hiệu chỉnh Gamma để khôi phục nguyên
theo hướng tiếp cận cục bộ trên mặt, cụ thể, trạng của bề mặt khuôn mặt người. Tôi đề
tôi phân vùng mặt ra thành các vùng nhỏ và xuất một phương pháp để tự động xác định 𝛾,
nhận dạng trên từng vùng, sau đó, tuỳ thuộc xét tập các mức xám trong vùng có mặt
vào lượng thông tin có được trên ảnh kiểm người, tôi tính mật độ xác suất, từ đó tính
tra, tôi sẽ lấy kết quả nhận dạng trên từng được giá trị trung vị và mode. Tôi xác định
vùng tương ứng, sử dụng cách kết hợp trễ các tập các điểm ảnh tụ nhiều về vùng tối khi giá
vùng riêng biệt dựa trên phương pháp bầu trị xám trung vị và mode nằm trong vùng tối,
chọn và xây dựng một hàm tính điểm, từ đó còn trung vị và mode nằm trong vùng sáng
đưa ra danh tính của ảnh mặt người kiểm tra thì tôi nói tập các điểm ảnh tụ nhiều về vùng
sáng, ngược lại thì tập các điểm ảnh tụ nhiều
VẬT LIỆU VÀ PHƯƠNG PHÁP về vùng trung bình.
Phát hiện mặt người và phân vùng mặt Trên mặt người có những vùng đặc biệt mà
bằng Superpixel từ đó tôi có thể phân biệt người này với
Cho ảnh ban đầu, tôi sử dụng thuật toán Biểu người kia như mắt, mũi, miệng, làn da, do
đồ độ dốc định hướng (Histogram of đó, tôi sẽ tách mặt thành các vùng riêng biệt
Oriented Gradients – HOG) để phát hiện như mắt, mũi, miệng, má, trán, nên tôi đề
khuôn mặt trong ảnh. Sau khi phát hiện xuất cách chia thành 12 vùng. Tôi thấy rằng
khuôn mặt thì mặt có thể bị nghiêng, điều 12 phân vùng tạm thời có chứa những vùng
này có thể làm nhiễu một số thông tin trên có nhiều thông tin quan trọng trên mặt như
mặt, vì vậy tôi cần phải canh chỉnh lại khuôn miệng (vùng 5), mắt trái (vùng 8), mắt phải
mặt bằng cách phân bố 68 điểm mốc lên (vùng 10) và mũi (vùng 11). Nhận xét rằng
khuôn mặt. Từ 68 điểm mốc, tôi xác định những vùng da quanh mắt, mũi và miệng có
được tâm mắt trái 𝐼mắt trái và tâm mắt phải mức xám tương đương nhau nên tôi sẽ sử
𝐼mắt phải , từ đó, ta có thể canh chỉnh khuôn dụng superpixel trên toàn mặt, mảng
mặt (nếu khuôn mặt bị nghiêng) để đường superpixel nằm trong vùng nào nhiều nhất thì
thẳng đi qua 𝐼mắt trái và 𝐼mắt phải song song với sẽ thuộc về vùng đó, sau đó ở mỗi vùng tôi
cạnh dưới khuôn mặt. Đồng thời, tôi sử dụng lấy biên superpixel là biên của vùng, tôi sẽ
những điểm mốc ở ngoài biên mặt để phân được 12 phân vùng mới. Sau khi xác định
đoạn mặt người. những vùng tương ứng của mỗi superpixel,
Do ảnh mặt người chịu ảnh hưởng bởi nguồn tôi được 12 phân vùng theo biên superpixel.
sáng 𝐿 trong quá trình thu ảnh nên tôi dùng
Hình 2. Cho ảnh vào (ảnh trái), tôi phát hiện khuôn mặt, hiệu chỉnh Gamma và phân vùng
theo superpixel (ảnh giữa), sau đó, tôi thu được 12 phân vùng mới theo biên của superpixel
(ảnh phải)
125
- Giải thưởng Sinh viên Nghiên cứu khoa học Euréka lần thứ XIX năm 2017 Kỷ yếu khoa học
Huấn luyện mỗi vùng bằng CNN học xuống, do đó tôi sử dụng phân rã dạng
Ngoài những đặc trưng nổi trội như hình hàm mũ với giá trị tốc độ học mà tôi khai báo
dạng, màu sắc của vùng, trên vùng còn có ban đầu để có được giá trị tốc độ học mới khi
những đặc trưng nhỏ hơn như nốt ruồi, vết huấn luyện (ban đầu tôi khai báo tốc độ học
sẹo, nếp nhăn. Do đó, tôi mong muốn sau khi là 0.001).
phân vùng, tôi có thể lấy được nhiều đặc CNN học các trọng số trong quá trình huấn
trưng nhỏ trên từng vùng nên tôi sử dụng luyện bằng cách cộng các vector sai số, nhân
Mạng neural tích chập (Convolutional Neural với tốc độ học khi trượt dốc ở bước lan
Network - CNN) để huấn luyện trên từng truyền ngược để tạo ra các ma trận trọng số.
vùng vì CNN có khả năng phát hiện những Khi nhân với tốc độ học, nếu tôi không
đặc trưng nhỏ trên vùng đó một cách hiệu chuẩn hóa dữ liệu thì miền phân phối các giá
quả. Tôi sử dụng kiến trúc CNN dựa trên trị đặc trưng ở mỗi đặc trưng sẽ khác nhau,
kiến trúc của mạng VGG nhưng đơn giản do đó tốc độ học sẽ hiệu chỉnh mỗi chiều
hơn, chủ yếu là lớp CONV CONV khác nhau, do đó tôi muốn mỗi đặc trưng
MAXPOOLING được lặp lại nhiều lần nhằm phải có cùng miền xác định. Tôi tiến hành
tiết kiệm thời gian cũng như có bước đánh chuẩn hóa bằng cách tính trung bình và độ
giá sơ khởi về đề tài (Hình 3). Trong quá lệch chuẩn từng điểm ảnh trên từng kênh trên
trình huấn luyện, tôi dùng softmax kết hợp toàn bộ dữ liệu huấn luyện và kiểm tra, sau
cross entropy để tính toán sai số và Adam để đó, ở từng kênh mỗi ảnh tôi sẽ trừ đi giá trị
tổi thiểu hoá sai số. Ngoài ra, khi huấn luyện trung bình để trung bình kênh và chia cho độ
mô hình, thông thường ta cần giảm tốc độ lệch chuẩn tương ứng của kênh đó.
Hình 3. Kiến trúc CNN sử dụng trong đề tài
Phương pháp phân loại từ nhiều phân loại chính xác. Khi đó, hệ số 𝛼𝑖 bằng 𝛽𝑖 chia cho
khác nhau tổng độ chính xác. Tôi thu được giá trị 𝑃𝑖 (𝑎)
Vì lý do thông tin ở các vùng ít và có thể có trong quá trình huấn luyện trên từng vùng,
vùng không có thông tin nên tôi xây dựng bộ với 𝑃𝑖 (𝑎) là xác suất vùng 𝑖 của đối tượng 𝑎
phân loại kết hợp trễ từ 𝑛 kết quả của 𝑛 bộ giống với vùng 𝑖 trong ảnh kiểm tra.
phân loại trước đó dựa vào trọng số xác suất Sau khi kiểm tra trên 𝑛 vùng, áp dụng biểu
của từng bộ phân loại. Mỗi kết quả của một thức arg max 𝑓(𝑢), đối tượng nào có điểm
𝑢
bộ phân loại xem như là một biến ngẫu
cao nhất thì tôi kết luận ảnh kiểm tra chính là
nhiên.
của đối tượng đó.
Cho ảnh kiểm tra, giả sử tôi chia mặt ra thành
𝑛 vùng, khi đó với mỗi vùng 𝑖, tôi chọn 𝑘 đối KẾT QUẢ VÀ THẢO LUẬN
tượng có vùng 𝑖 trên mặt có xác suất giống Tôi thực nghiệm trên máy sử dụng hệ điều
với vùng 𝑖 trên ảnh kiểm tra nhất, sau đó tôi hành Windows 10 Pro bản 64 bit với RAM
tính điểm 𝑘 đối tượng đấy. Sau 𝑛 vùng, đối 24GB, Intel(R) Core(TM) i7-6700K CPU @
tượng nào có điểm cao nhất, tôi kết luận đó 4.00GHz, huấn luyện bằng GPU NVIDIA
chính là đối tượng thuộc ảnh kiểm tra. Tôi GeForce GTX 980, dung lượng 4 GB. Trong
xác định hệ số vùng bằng cách sau khi huấn quá trình huấn luyện, tôi sử dụng Python kết
luyện từng vùng 𝑖 trên tập huấn luyện, tôi hợp với thư viện mã nguồn mở TensorFlow
đưa vùng 𝑖 trong tập duyệt vào để xác định do Google phát triển.
độ chính xác 𝛽𝑖 , sau đó, tôi tính tổng độ Tôi sử dụng bộ dữ liệu FaceScrub (Hình 4),
126
- Giải thưởng Sinh viên Nghiên cứu khoa học Euréka lần thứ XIX năm 2017 Kỷ yếu khoa học
bộ dữ liệu này sử dụng một số ảnh công khai mỗi đối tượng có 80 ảnh và có đủ 12 vùng
trên mạng, bao gồm 530 người nổi tiếng và trên mặt. Tôi chia ra mỗi đối tượng có 48 ảnh
tổng cộng có 106863 ảnh, trung bình mỗi huấn luyện, 16 ảnh duyệt và 16 ảnh kiểm tra.
người có khoảng 200 ảnh, ảnh trong bộ dữ Để tránh hiện tượng quá khớp khi huấn luyện
liệu này rất đa dạng với nhiều góc nghiêng do dữ liệu trên mỗi đối tượng nhỏ, tôi đã tăng
của mặt, trong cùng một đối tượng, khuôn số lượng ảnh huấn luyện bằng cách ở mỗi
mặt có nhiều đặc điểm khác nhau như đeo ảnh, tôi tạo thêm 30 ảnh khác. Tôi huấn
kính, đa dạng về kiểu tóc, râu, ảnh khi già, luyện trên 12 vùng riêng biện bằng CNN, thu
trẻ cũng như chất lượng ảnh không đồng đều, được độ chính xác trên từng vùng dựa trên
có ảnh bị nhiễu sáng, ảnh bị mờ. Những ảnh tập duyệt. Sau đó, Tôi thực nghiệm bằng
này được lấy từ những cảnh thực ở trên mạng cách tổ hợp toàn bộ 12 vùng trên mặt. Ngoài
với nhiều điều kiện, môi trường lấy ảnh khác ra, tôi còn nhận dạng mặt nhưng chỉ sử dụng
nhau. Bộ dữ liệu FaceScrub được sử dụng một số vùng nhằm đảm bảo tính thiếu thông
làm dữ liệu trong cuộc thi về nhận dạng mặt tin trên mặt người. Khi thực nghiệm, tôi sẽ
người MegaFace do trường Đại học thực nghiệm trên 3 trường hợp: Tập duyệt,
Washington, Hoa kỳ tổ chức. tập kiểm tra và tập kết hợp từ 2 tập duyệt và
Khi thực nghiệm, tôi sử dụng 50 đối tượng, kiểm tra.
Hình 4. Một số ảnh trong bộ dữ liệu FaceScrub
Bảng 1. Một số trường hợp thông tin không đầy đủ trên mặt dùng để thực nghiệm
(1) (2) (3) (4)
127
- Giải thưởng Sinh viên Nghiên cứu khoa học Euréka lần thứ XIX năm 2017 Kỷ yếu khoa học
Bảng 2. Kết quả nhận dạng ở các trường hợp
Độ chính xác trên tập Độ chính xác trên tập Độ chính xác khi ghép
Trường hợp
kiểm tra duyệt tập duyệt và kiểm tra
(1) 85.6250% 86.0000% 85.8125%
(2) 79.0000% 80.8750% 79.9375%
(3) 72.8750% 73.0000% 72.9375%
(4) 64.8750% 63.7500% 64.3125%
KẾT LUẬN VÀ ĐỀ NGHỊ Bảng 1, tôi thấy rằng khuôn mặt nếu có thêm
Công trình này đã đề xuất một phương pháp những vùng chứa nhiều thông tin như mắt,
nhận dạng khuôn mặt người với thông tin mũi, miệng thì kết quả nhận dạng cao hơn so
không đầy đủ trên mặt người. Tôi đề xuất với vùng chứa ít thông tin như trán, má.
phương pháp chia mặt thành 12 vùng theo Hướng phát triển sắp tới, tôi sẽ huấn luyện
superpixel, sau đó áp dụng CNN để nhận với nhiều ảnh hơn cũng như nghiên cứu cách
dạng từng vùng. Khi đưa ảnh kiểm tra để áp dụng thuật toán vào mặt nghiên hẳn một
nhận dạng, tuỳ vào lượng thông tin có trong phía và đề xuất một phương pháp tự phát
ảnh, tôi lấy những vùng tương ứng, sau đó áp hiện vùng thông tin có trên mặt người. Ngoài
dụng cách kết hợp trễ bằng phương pháp bầu ra, do mỗi vùng trên mặt có những đặc điểm
chọn dựa vào vector xác suất, sau tổ hợp kết khác nhau nên cần có những kiến trúc học
quả nhận dạng từng vùng, chọn đối tượng có đặc thù thay vì tôi dùng một kiến trúc mạng
điểm cao nhất, từ đó đưa ra kết luận ảnh VGG cho toàn bộ 12 vùng.
kiểm tra thuộc về đối tượng đấy. Dựa vào
TÀI LIỆU THAM KHẢO
ACHANTA, R. ET AL., (2012): SLIC superpixels compared to state-of-the-art superpixel
methods. IEEE transactions on pattern analysis and machine intelligence, 34(11), pp.
2274-2282.
DALAL, N. & TRIGGS, B., (2005): Histograms of oriented gradients for human detection.
Computer Vision and Pattern Recognition, 2005. CVPR 2005. IEEE Computer Society
Conference on, June, Volume 1, pp. 886-893.
GOOGLE BRAIN TEAM, (2015): TensorFlow: An open-source software library for
Machine Intelligence.
KAZEMI, V. & SULLIVAN, J., (2014): One millisecond face alignment with an ensemble of
regression trees. Proceedings of the IEEE Conference on Computer Vision and Pattern
Recognition, pp. 1867-1874.
KINGMA, D. & BA, J., (2014): Adam: A method for stochastic optimization. arXiv preprint
arXiv:1412.6980.
VISION & INTERACTION GROUP, (2016). FaceScrub: A Dataset With Over 100,000 Face
Images of 530 People.
128
nguon tai.lieu . vn