Hệ Thống Phát Hiện Và Nhận Diện Mặt Người Sử Dụng
Mô Hình SQUEEZENET Và SSD
Lê Hà Nguyên(1*), Lê Đức Hùng (1**)
(1) Phòng thí nghiệm DESLAB, Khoa Điện tử - Viễn thông,
Trường Đại học Khoa học Tự nhiên, Đại học Quốc gia TP.HCM
Email: (*)lehanguyen97@gmail.com, (**)ldhung@hcmus.edu.vn
Abstract — Trong bài báo này, chúng tôi đề xuất hệ thống phát
hiện và nhận diện khuôn mặt sử dụng mạng nhân chập sâu. Các
phương pháp gần đây chú trọng vào việc nâng cao độ chính xác,
trong khi có rấ
6 trang |
Chia sẻ: huong20 | Ngày: 20/01/2022 | Lượt xem: 426 | Lượt tải: 0
Tóm tắt tài liệu Hệ thống phát hiện và nhận diện mặt người sử dụng mô hình Squeezenet và Ssd, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
t nhiều mô hình mạng nhân chập sâu có thể đạt
được độ chính xác có thể chấp nhận được. Hệ thống đề xuất sử
dụng các phương pháp, mô hình mạng nhân chập nhỏ, tập trung
vào tốc độ trong khi vẫn giữ được độ chính xác cần thiết. Cụ thể
chúng tôi sử dụng mô hình SqueezeNet và Single Shot Multibox
Detector (SSD). Việc sử dụng các mạng nhỏ giúp dễ huấn luyện,
triển khai và ứng dụng. Mô hình phát hiện khuôn mặt sử dụng
TinySSD, kết hợp giữa SSD và SqueezeNet, có AP 85% và đạt tốc
độ 110 fps, gấp đôi so với mô hình SSD gốc sử dụng mạng VGG16
trong khi yêu cầu 2.5% số lượng tham số. Mô hình nhận diện
khuôn mặt sử dụng SqueezeNet độ chính xác 98% trên tập dữ liệu
FDDB, ngang ngửa với con người, trong khi chỉ sử dụng 1% số
lượng tham số so với các mô hình như VGGFace, Facenet.
Keywords – Mạng nhân chập sâu, SSD, SqueezeNet.
1. GIỚI THIỆU
Phát hiện và nhận diện khuôn mặt là một trong những công
nghệ thiết yếu trong thời đại hiện nay.
Nhận diện khuôn mặt là một kỹ thuật nhận diện sinh học được
sử dụng rộng rãi, và luôn là một trong những vấn đề được nghiên
cứu kĩ lâu dài vào kĩ lưỡng nhất. Về cơ bản, các phương pháp
truyền thống thường dựa vào một hoặc hai tầng biểu diễn ví dụ
như đáp ứng của bộ lọc, biểu đồ thống kê tần số của các đặc
trưng, Các phương pháp này thường tập trung vào việc tối ưu
từng thành phần như tiền xử lý, biến đổi đặc trưng, dẫn đến
việc không có đột phá trong độ chính xác. Hơn nữa, các phương
pháp truyền thống chỉ tập trung vào một thay đổi với hình ảnh
như độ sáng, hướng nghiêng khuôn mặt, biểu cảm, Kết quả
dẫn đến độ chính xác của các phương pháp “nông” truyền thống
không vượt qua con người và không phù hợp với các ứng dụng
thực tế. AlexNet [1] với phương pháp học sâu đã mở ra một cách
tiếp cận mới trong việc nhận diện vật thể nói chung và khuôn
mặt nói riêng.
Học sâu, cụ thể là mạng nhân chập sâu (Deep Convolutional
Neural Network – Deep CNN), sử dụng một tập hợp nhiều lớp
xử lý để trích xuất cũng như biến đổi đặc trưng. Các lớp đặc
trưng được học tương ứng với các mức độ trừu tượng khác nhau,
cho độ chính xác bất kể các hướng khuôn mặt, điều kiện ngoại
cảnh, Các đặc trưng được học ở các lớp đầu tương ứng với
các đặc trưng được con người thiết kế (như đường thẳng,
góc,), và các lớp phía sau mang tính trừu tượng cao mang lại
độ chính xác tương đương hoặc tốt hơn con người.
Phát hiện khuôn mặt là tiền đề cho những ứng dụng liên quan
đến khuôn mặt. Các phương pháp truyền thống sử dụng các thuật
toán đề xuất khu vực kết hợp với mô hình để nhận diện khuôn
mặt. Về mô hình nhận diện, với sự đa dạng của hình dáng khuôn
mặt, kèm theo các vật cản, điều kiện ánh sáng, khiến cho việc
phát hiện khuôn mặt trong thực tế gặp nhiều khó khăn. Có nhiều
thuật toán phát hiện khuôn mặt, điển hình là Viola – Jones [2],
sử dụng các đặc trưng Haar và huấn luyện bằng AdaBoost, đã
đạt được hiệu năng tốt, đáp ứng được thời gian thực. Tuy nhiên,
khả năng phát hiện của Viola – Jones bị hạn chế với biến đổi
tương đối của khuôn mặt mặc dù có tăng số lượng lẫn độ phức
tạp của bộ phân loại. Một số thuật toán sử dụng mô hình với
thành phần có thể biến đổi (Deformable Part Model [3] – DPM)
đạt độ chính xác cao, tuy nhiên lại yêu cầu nhiều sức mạnh tính
toán, cùng với dữ liệu và quá trình huấn luyện đặc biệt. Các mô
hình mạng nhân chập sâu đạt khả năng cao trong việc nhận diện,
khiến cho việc xác định khuôn mặt trở nên chính xác hơn nhiều,
trong khi dữ liệu huấn luyện lại đơn giản. Hơn nữa, đã có một
số cách tiếp cận gộp chung thuật toán đề xuất khu vực và mô
hình nhận diện, điển hình như Faster RCNN [4], YOLO [5] và
SSD [6]. Các cách tiếp cận này giúp tăng tốc độ của các mô hình
phát hiện khuôn mặt dựa trên mạng nhân chập sâu lên mức có
thể đáp ứng trong thời gian thực.
Các mạng nhân chập sâu đã giúp cho vấn đề phát hiện và nhận
diện khuôn mặt có được độ chính xác cực kỳ cao. Tuy nhiên
điểm hạn chế của mạng nhân chập sâu chính là số phép tính toán
và số lượng tham số lớn, tương ứng với độ sâu của mạng. Điều
này làm giảm khả năng ứng dụng của các mạng nhân chập sâu.
Đa số các ứng dụng về phát hiện và nhận diện khuôn mặt
không thể sử dụng trực tiếp các mạng nhân chập mà phải sử dụng
các phương pháp với độ chính xác thấp hoặc sử dụng các máy
chủ thông qua mạng, dẫn đến độ trễ cao. Vì vậy, chúng ta cần
một hệ thống với độ chính xác cao, trong khi vẫn duy trì số lượng
138
phép tính toán cũng như số lượng tham số thấp cho các ứng dụng
với bộ nhớ và khả năng tính toán thấp.
Trong bài báo này, chúng tôi đề xuất một hệ thống sử dụng
SqueezeNet [7], một mô hình mạng nhân chập sâu với độ chính
xác tương đương AlexNet với số lượng tham số thấp, điều này
cũng đồng nghĩa với số lượng phép tính toán giảm và tốc độ
được cải thiện tương đối. Với vấn đề nhận diện khuôn mặt,
chúng tôi sử dụng SqueezeNet để trích xuất dữ liệu, cho ra một
vector nhúng 128 chiều để phân loại hai khuôn mặt, lấy ý tưởng
từ FaceNet [8] và VGGFace [9].
Sau đó, chúng tôi sử dụng thuật toán k-lân cận gần nhất để
phân loại nhiều khuôn mặt. Đối với vấn đề phát hiện khuôn mặt
(face detection), chúng tôi sử dụng TinySSD, bản chất là
SqueezeNet làm mạng cơ sở cho SSD (Single Shot Multibox
Detector), với việc tối ưu số lượng bộ lọc ở từng lớp, cùng với
đó là việc giảm số lượng bộ phân loại với tỷ lệ khung hình không
phù hợp với khuôn mặt.
Phần còn lại của bài báo được tổ chức như sau: Phần 2 mô tả
cụ thể mô hình của hệ thống nhận diện khuôn mặt và hệ thống
phát hiện khuôn mặt, ý tưởng của từng mô hình. Phần 3 sẽ mô
tả hàm mất mát và quá trình huấn luyện các mô hình này. Phần
4 sẽ là kết quả thực nghiệm của hệ thống. Cuối cùng, chúng tôi
kết luận bài báo ở Phần 5.
2. MÔ HÌNH HỆ THỐNG
2.1. Hệ thống nhận diện khuôn mặt
Chúng tôi sử dụng mô hình SqueezeNet 1.1 để trích xuất đặc
trưng. Để đầu ra của mạng là một vector nhúng, lớp fully-
connected (Dense_l2) được thêm vào sau lớp Global Average
Pooling (GAP). Chúng tôi không giảm số lượng bộ lọc lớp
Conv10 thành 128 (để lớp GAP ra được vector nhúng trực tiếp)
vì điều này có thể làm giảm số lượng đặc trưng cần thiết, và lớp
Dense_l2 có thể kết hợp các đặc trưng này lại. Ngoài ra, để dễ
huấn luyện, các lớp BatchNorm được thêm vào sau các lớp nhân
chập và fully-connected trước các hàm phi tuyến, trừ lớp
Conv10 vì đầu ra sẽ được lấy trung bình bởi lớp GAP. Chúng tôi
còn sử dụng thêm lớp Dropout sau lớp Conv10 với tỷ lệ giữ lại
80% để giúp mạng không bị quá khớp.
Chúng tôi sử dụng ảnh 160×160 để giảm số phép tính toán.
Ảnh đầu vào được chuẩn hóa bằng cách trừ 127.5 và chia cho
128. Vector nhúng có độ dài 128 là cân bằng giữa độ chính xác
và tốc độ tính toán cho bộ phân loại sau này. Tuy VGGFace [9]
sử dụng vector nhúng dài 4096 nhưng độ chính xác chỉ tương
đương FaceNet [8] sử dụng vector nhúng với độ dài 128.
Lớp L2 chia các phần tử của vector đầu vào cho L2 Norm của
vector đó. Việc này để chuẩn hóa các số trong vector nhúng để
các khoảng cách giữa các vector nằm trong khoảng [0,4] giúp
việc chọn khoảng cách phân biệt những cặp khuôn mặt khác
nhau dễ hơn.
Hình 1. Mô hình hệ thống nhận diện khuôn mặt.
Hình 2. Mô hình SqueezeNet 1.1 dùng trong hệ thống nhận diện
khuôn mặt.
Bảng 1. Số lượng thông số của hệ thống nhận diện khuôn mặt
dựa trên SqueezeNet.
Tên lớp/
loại
Kích thước
đầu ra
Kích
thước bộ
lọc/bước
Độ
sâu
× × ×
#thông
số
Ảnh đầu
vào
160 × 160 × 3
Conv1 79 × 79 × 64 3 × 3 / 2 1 64 1,792
Max
pooling 1
39 × 39 × 64 3 × 3 / 2 0
Fire2 39 × 39 × 128 2 16 64 64 11,408
Fire3 39 × 39 × 128 2 16 64 64 12,432
Max
pooling 3
19 × 19 × 128 3 × 3 / 2 0
Fire4 19 × 19 × 256 2 32 128 128 45.344
Fire5 19 × 19 × 256 2 32 128 128 49,440
Max
pooling 8
9 × 9 × 256 3 × 3 / 2 0
Fire6 9 × 9 × 384 2 48 192 192 104,880
Fire7 9 × 9 × 384 2 48 192 192 111,024
Fire8 9 × 9 × 512 2 64 256 256 188,992
Fire9 9 × 9 × 512 2 64 256 256 198,184
Conv10 9 × 9 × 1000 1 × 1 / 1 1 1000 513,000
GAP 1 × 1 × 1000 9 × 9 / 1 0
Dense_l2 128 1 128,128
Các lớp
BN
12,288
Tổng cộng
1,375,
912
Bảng 2. So sánh số lượng tham số của mô hình đề xuất sử dụng
SqueezeNet và các mô hình khác.
Mô hình Số tham số Tỷ lệ
SqueezeNet 1.1 1,375,912
FaceNet 1,600,000,000 0.086%
VGGFace 138,000,000 0.997%
2.2. Hệ thống phát hiện khuôn mặt
Sử dụng TinySSD [10] là mô hình dựa trên SSD, sử dụng
SqueezeNet 1.1 làm mạng cơ sở và tinh chỉnh số lượng bộ lọc
cho các lớp nhân chập. Với nhận diện khuôn mặt, việc chúng tôi
sử dụng ít tỷ lệ khung hình hơn (1:1, 1:2 và 2:1), cùng với số
lượng loại vật thể chỉ có 1 (khuôn mặt), dẫn đến số lượng bộ lọc
trong bộ dự đoán giảm. Chúng tôi sử dụng Batch Norm cho các
Fire Module và nhân chập (không có trong bộ dự đoán) từ lớp
giãn nở của Fire9.
139
Hình 3. Mô hình hệ thống phát hiện khuôn mặt sử dụng TinySSD.
Hình 4. Mô hình mạng cơ sở SqueezeNet 1.1 cho TinySSD.
Bảng 3. Kiến trúc mạng và số lượng thông số của hệ thống
phát hiện khuôn mặt dựa trên TinySSD.
Tên lớp/
loại
Kích thước
đầu ra
Kích
thước bộ
lọc/bước
Độ
sâu
× × ×
#thông
số
Đầu vào 300 × 300 × 3
Conv1 149 × 149 × 57 3 × 3 / 2 1 57 1,596
Max
pooling 1
74 × 74 × 57 3 × 3 / 2 0
Fire2 74 × 74 × 102 2 15 49 53 8,862
Fire3 74 × 74 × 106 2 15 54 52 9,481
Max
pooling 3
37 × 37 × 106 3 × 3 / 2 0
Fire4 37 × 37 × 186 2 29 92 94 30,491
Fire5 37 × 37 × 173 2 29 90 83 29,869
Max
pooling 5
18 × 18 × 173 3 × 3 / 2 0
Fire6 18 × 18 × 327 2 44 166 161 79,043
Fire7 18 × 18 × 301 2 45 155 146 81,166
Fire8 18 × 18 × 334 2 49 163 171 98,530
Fire9 18 × 18 × 83 2 25 29 54 21,333
Max
pooling 9
9 × 9 × 83 3 × 3 / 2 0
Fire10 9 × 9 × 101 2 37 45 56 23,522
Max
pooling 10
4 × 4 × 101 3 × 3 / 2 0
Fire11 4 × 4 × 85 2 38 41 44 20,567
Conv12_1 4 × 4 × 51 3 × 3 / 1 1 51 4,335
Conv12_2 2 × 2 × 46 3 × 3 / 2 1 46 21,114
Conv13_1 2 × 2 × 55 3 × 3 / 1 1 55 2,530
Conv13_2 1 × 1 × 85 3 × 3 / 2 1 85 42,075
Bộ dự
đoán
3 × 3 / 1 123,912
Các lớp
BN
3,016
Tổng cộng 601,442
Bảng 4. So sánh số lượng tham số của mô hình đề xuất sử dụng
TinySSD và SSD truyền thống (SSD300).
Mô hình Số thông số Tỷ lệ
TinySSD 601,442
SSD 23,745,908 2.533%
3. HÀM MẤT MÁT VÀ HUẤN LUYỆN
3.1. Hệ thống nhận diện khuôn mặt
Hàm mất mát trung tâm [11] là hàm mất mát giúp tăng cường
tính tách biệt giữa các đặc trưng đã được học, bằng cách tối thiểu
hóa sự khác nhau trong cùng một loại, kết hợp với hàm mất mát
softmax, giúp giữ các đặc trưng của các loại khác nhau tách biệt.
Hàm mất mát trung tâm được cho bởi:
=
1
2
−
(1)
Với ∈ ℝ
là trung tâm của các đặc trưng của loại thứ
với ví dụ đầu vào . Thay vì sử dụng toàn bộ tập dữ liệu huấn
luyện để cập nhập các trung tâm, chúng tôi cập nhập dựa trên
từng mini-batch: tại mỗi lần lặp, các trung tâm sẽ được tính bằng
cách lấy trung bình các đặc trưng của từng loại tương ứng (một
vài trọng tâm sẽ không được cập nhập). Và để tránh các nhiễu từ
các ví dụ sai, chúng tôi sử dụng một biến để kiểm soát tốc độ
học của các trung tâm
= − Δ
.
Kết hợp với hàm mất mát softmax, hàm mất mát tổng cộng là
(chúng tôi huấn luyện với bằng 0.03):
= +
= −
∑
+
2
−
(2)
Chúng tôi sử dụng tập dữ liệu VGGFace2 [12] với 3.31 triệu
khuôn mặt của 9,131 người. Chất lượng của bộ dữ liệu này rất
tốt, dẫn đến kết quả tốt và thời gian huấn luyện thấp (dưới 30
giờ, so với khoảng 1000-2000 giờ để huấn luyện FaceNet [8]).
Các bức ảnh được cắt sát khuôn mặt và không sử dụng các
phép biến đổi quang học nào, chỉ sử dụng các phép biến đổi kích
thước, vị trí và lật theo chiều dọc. Chúng tôi sử dụng Adam để
tối ưu với tốc độ học giảm 10 lần mỗi 3 lần đi qua hết bộ dữ liệu
(epoch), bắt đầu từ 0.001.
3.2. Hệ thống phát hiện khuôn mặt
Chúng tôi sử dụng hàm mất mát tương tự như của SSD [6].
Hàm mất mát này là tổng có hệ số của hàm mất mát khi xác định
vị trí và hàm mất mát của xác suất của loại vật thể có trong viền
bao.
( , , , ) =
1
( , ) + ( , , ) (3)
Trong đó:
( , , ) =
ℎ
−
∈{ , , , )
∈
(4)
=
−
/
,
=
−
/
(5)
=
,
=
(6)
Và:
( , ) = −
̂
∈
− ̂
∈
(7)
̂
=
∑
(8)
Chúng tôi sử dụng bộ dữ liệu WIDER Face Training [12] để
huấn luyện. Với mô hình (tương đối nhỏ) này việc sử dụng tăng
cường dữ liệu (Data Augmentation) tương tự như SSD không
140
đem lại khả năng phát hiện tốt hơn, thậm chí có trường hợp cho
độ chính xác thấp hơn, trong khi làm cho quá trình huấn luyện
lâu hội tụ hơn rất nhiều. Chúng tôi chỉ sử dụng ảnh nguyên gốc
hoặc một phần ảnh có IoU > 0.5 so với khuôn mặt, hoặc phần
ảnh không có khuôn mặt để huấn luyện.
Chúng tôi sử dụng Adam để tối ưu với thông số tương tự như
hệ thống nhận diện khuôn mặt.
4. KẾT QUẢ
Các kết quả được đo trên máy tính với CPU i5-3470 4 lõi ở
tốc độ 3.2 GHz, GPU Nvidia GTX 1070, 8GB RAM, Kubuntu
18.04, Nvidia driver 390.116, CUDA 9.0, cuDNN 7.5.0.
4.1. Hệ thống nhận diện khuôn mặt
Chúng tôi sử dụng bộ dữ liệu LFW [13] (Labeled Face in the
Wild) để đánh giá. LFW gồm hơn 13,000 ảnh khuôn mặt. Các
bức ảnh này khá rõ nét và các khuôn mặt được chụp chính diện.
Độ chính xác và đường ROC của mô hình trong hệ thống so với
các mô hình khác được mô tả ở Bảng 5 và Hình 5.
Về mặt tốc độ, chúng tôi đo đạc bằng cách cho mô hình cho
ra vector nhúng của một khuôn mặt 100 lần sau khi chạy 100 lần
khởi động. Thời gian mô hình yêu cầu là 6.08 ms và 12.72 ms
cho mỗi khuôn mặt, tương ứng khi chạy trên GPU và CPU.
4.2. Hệ thống phát hiện khuôn mặt
Chúng tôi sử dụng tập dữ liệu FDDB [14] với 5171 khuôn mặt
trong 2845 bức ảnh để đánh giá. Tập dữ liệu FDDB đo theo
precision và số lượng FP. Vì một số lý do, chúng tôi không sử
dụng được công cụ đo đạc của FDDB. Thay vào đó, chúng tôi
sử dụng cách đo sử dụng do việc phát hiện vật thể nói chung
bằng AP theo Recall và Precision. Hệ thống đạt 84.1% Average
Precision (AP). Để so sánh, AP của TinySSD [10] trên tập dữ
liệu nhận diện vật thể PASCAL VOC 2007 là 61.3%. Cũng lưu
ý rằng tập dữ liệu này chứa khá nhiều ảnh với tỷ lệ khung hình
không tối ưu với đầu vào của hệ thống (1:1), vì vậy, kết quả có
thể thấp hơn khả năng thật sự.
Về mặt tốc độ, mô hình đề xuất sử dụng TinySSD đạt tốc độ
gấp đôi SSD truyền thống. Chúng tôi đo đạc bằng cách cho mô
hình nhận và trả kết quả 100 lần ảnh liên tục sau khi đã chạy
trước 100 lần khởi động.
Chi tiết về đường ROC và tốc độ của mô hình TinySSD sử
dụng trong hệ thống được mô tả ở Bảng 6 và Hình 6.
Bảng 5. So sánh độ chính xác của các mô hình nhận diện khuôn mặt
trên bộ dữ liệu LFW
Mô hình
Độ chính xác với bộ dữ
liệu LFW
SqueezeNet 1.1 98.05 ± 0.568%
FaceNet 99.55 ± 0.342%
EigenFace 60.02 ± 0.79%
Con người (với ảnh sát khuôn mặt) 97.53%
Hình 5. Đường ROC của các mô hình nhận diện khuôn mặt trên
bộ dữ liệu LFW.
Hình 6. Đường ROC của TinySSD trên bộ dữ liệu FDDB.
Bảng 6. So sánh tốc độ của TinySSD và các mô hình khác.
Mô hình
Tốc độ trên CPU
(fps)
Tốc độ trên GPU
(fps)
TinySSD 37.91 110.04
SSD300 1.96 53.15
Viola – Jones* 8.7 /17.3
*Sử dụng ảnh 960×720 để có độ chính xác cao, với ảnh 640×480 đạt 17.3 fps.
141
4.3. Hệ thống phát hiện và nhận diện khuôn mặt
Hệ thống này là sự kết hợp giữa hệ thống phát hiện khuôn mặt
và hệ thống nhận diện khuôn mặt: sau khi có được các vị trí
khuôn mặt từ hệ thống phát hiện khuôn mặt với ảnh 300×300,
hệ thống lấy mẫu lại từng vùng ảnh có khuôn mặt với độ phân
giải 160×160, sau đó cho qua hệ thống nhận diện khuôn mặt.
Việc sử dụng riêng hai hệ thống là để tận dụng tốc độ của việc
phát hiện khuôn mặt với ảnh độ phân giải thấp và độ chính xác
của việc nhận diện khuôn mặt với ảnh có độ phân giải cao.
Chúng tôi chạy hệ thống với một bức ảnh (có 3 khuôn mặt)
100 lần, sau khi chạy 100 lần để khởi động. Tốc độ của hệ thống
khi chạy với GPU là 35.51 fps và với CPU là 10.15 fps.
5. KẾT LUẬN
5.1. Nhận xét
Hệ thống nhận diện khuôn mặt tuy chỉ sử dụng chưa đến 1%
số lượng tham số của FaceNet [8] và VGGFace [9] nhưng đã đạt
được độ chính xác là 98% ngang ngửa độ chính xác của con
người (97.5%). Tuy nhiên, các hình ảnh được sử dụng có chất
lượng khá tốt, ít bị nhiễu, sáng và khuôn mặt thường được chụp
trực diện. Đối với các ảnh thường thấy trong thực tế (bị nhiễu
hoặc tối), độ chính xác sẽ không được như vậy.
Việc sử dụng SqueezeNet có thể được thay thế bởi các mạng
như MobileNet hoặc ShuffleNet với số phép tính toán thấp hơn,
tuy nhiên SqueezeNet có số lượng tham số và độ trễ thấp hơn
trong thực tế [15].
Đối với các hệ thống ưu tiên bảo mật, việc nhận diện khuôn
mặt phải đạt độ chính xác cao hơn nữa. Chính vì vậy, các mô
hình phức tạp thường được ưu tiên, mặc dù số lượng tham số và
phép tính toán cần thiết là rất lớn.
Hệ thống phát hiện khuôn mặt sử dụng TinySSD [10] giảm
đáng kể số lượng tham số và tăng gấp đôi tốc độ so với SSD [6]
nguyên gốc. Điều này phù hợp với số lượng loại vật thể ít như
việc nhận diện khuôn mặt. Tốc độ của hệ thống đã đạt ngưỡng
có thể sử dụng thời gian thực, trong khi độ chính xác cao hơn
mô hình Viola – Jones truyền thống.
TinySSD dựa trên mô hình SSD nên sẽ bị một số khuyết điểm
từ mô hình này:
- Mô hình SSD tuy sử dụng nhiều lớp nhân chập để phát hiện
nhiều tỷ lệ kích thước khác nhau nhưng kết quả nhận diện giữa
các lớp giữa mạng và cuối mạng sẽ khác nhau. Mặc dù các lớp
nhân chập ở phía đầu mạng có trường tiếp nhận nhỏ giúp cho
việc nhận diện các vật thể nhỏ, nhưng điều này tương đương
với việc các giá trị ở các lớp nhân chập này sẽ mang ít ý nghĩa
biểu diễn vật thể. Trong khi đó các lớp nhân chập phía sau sẽ
kết hợp các thông tin từ các lớp phía trước giúp phát hiện các
vật thể phức tạp hơn như khuôn mặt. Tóm lại, các vật thể phức
tạp nhỏ hoặc ở xa sẽ không được phát hiện bởi các lớp nhân
chập trong các bộ phát hiện ở phía đầu mạng.
- SSD sử dụng ảnh kích thước đầu vào nhỏ để tăng tốc độ, tuy
nhiên, với các vật thể nhỏ như khuôn mặt khi ở xa, ảnh sau khi
thu nhỏ lại sẽ khó phát hiện được khuôn mặt. Tuy nhiên nếu
tăng kích thước ảnh đầu vào từ 300×300 lên 512×512, tốc độ
mạng sẽ giảm khoảng 3 lần.
- Số lượng khuôn mặt bị giới hạn bởi số viền mặc định. Tuy
nhiên, số lượng viền mặc định hiện tại cũng khá đủ với kích
thước ảnh đầu vào của mạng.
- Hệ thống sử dụng ảnh đầu vào vuông, làm cho các hình ảnh từ
camera góc rộng sẽ không sử dụng được.
Chúng tôi huấn luyện sử dụng tập dữ liệu WIDER FACE [12]
với nhiều khuôn mặt nhỏ, không phù hợp với các mô hình dựa
trên SSD, làm mô hình phát hiện khuôn mặt hội tụ chậm.
So với YOLO [5], SSD [6] tận dụng kết quả từ các lớp nhân
chập ở giữa mạng thay vì chỉ một lớp cuối cùng để phát hiện các
vật thể có kích thước tương đối. Tuy YOLOv3 đã cải thiện điều
này, TinyYOLO với tốc độ cao hơn chỉ sử dụng lớp cuối cùng.
RetinaNet [16] sử dụng một thêm một mạng để kết hợp kết
quả từ các lớp phía sau vào các lớp phía trước để tăng độ chính
xác với các vật thể nhỏ. Tuy nhiên, các khuôn mặt quá nhỏ lại
có độ chính xác thấp khi nhận diện khuôn mặt. Chính vì vậy,
việc giảm tốc độ để thêm vào một mạng nhận chập không phù
hợp với mục tiêu của bài báo này.
5.2. Kết luận
Bài báo này đã trình bày hệ thống phát hiện khuôn mặt và hệ
thống nhận diện khuôn mặt dựa trên nền tảng của mạng nhân
chập sâu giúp cải thiện độ chính xác so với các cách tiếp cận
truyền thống. Hai hệ thống trên dựa vào mạng SqueezeNet 1.1
và mô hình SSD (TinySSD) làm nền tảng cho việc cải thiện tốc
độ, đáp ứng được thời gian thực.
TÀI LIỆU THAM KHẢO
[1] Krizhevsky, A., Sutskever, I., and Hinton, G. E. “ImageNet classification
with deep convolutional neural net-works.” In NIPS, pp. 1106–1114,
2012.
[2] Viola, P., Jones, M. “Rapid object detec-tion using a boosted cascade of
simple features.” In Proceedings, IEEE Conference on ComputerVision
and Pattern Recognition, 2001.
[3] P. Felzenszwalb, R. Girshick, D. McAllester, and D. Ra-manan. “Object
detection with discriminatively trained partbased models” .TPAMI, 2010.
[4] Ren, S., He, K., Girshick, R., Sun, J.: Faster R-CNN: Towards real-time
object detectionwith region proposal networks. In: NIPS, 2015.
[5] Redmon, J., Divvala, S., Girshick, R., Farhadi, A.: “You only look once:
Unified, real-timeobject detection”. In: CVPR, 2016.
[6] W. Liu et al., “SSD: Single Shot MultiBox Detector,” arXiv:1512.02325
[cs], vol. 9905, pp. 21–37, 2016.
142
[7] F. N. Iandola, S. Han, M. W. Moskewicz, K. Ashraf, W. J. Dally, and K.
Keutzer, “SqueezeNet: AlexNet-level accuracy with 50x fewer
parameters and <0.5MB model size,” arXiv:1602.07360 [cs], Feb. 2016.
[8] F. Schroff, D. Kalenichenko, and J. Philbin, “FaceNet: A Unified
Embedding for Face Recognition and Clustering,” 2015 IEEE Conference
on Computer Vision and Pattern Recognition (CVPR), pp. 815–823, Jun.
2015.
[9] Omkar M. Parkhi, Andrea Vedaldi, Andrew Zisserman, “Deep Face
Recognition,” 2015.
[10] Wong, M. J. Shafiee, F. Li, and B. Chwyl, “Tiny SSD: A Tiny Single-shot
Detection Deep Convolutional Neural Network for Real-time Embedded
Object Detection,” arXiv:1802.06488 [cs], Feb. 2018.
[11] Yandong Wen, Kaipeng Zhang, Zhifeng Li, and Yu Qiao, “A
Discriminative Feature Learning Approachfor Deep Face Recognition,”
CCV 2016, Part VII, LNCS 9911, pp. 499–515, 2016.
[12] Yang, Shuo and Luo, Ping and Loy, Chen Change and Tang, Xiaoou,
“WIDER FACE: A Face Detection Benchmark”, IEEE Conference on
Computer Vision and Pattern Recognition (CVPR), 2016.
[13] Huang, G., Ramesh, M., Berg, T., Learned-Miller, E.: “Labeled facesin
the wild: A database for studying face recognition in unconstrained
environments”. In: University of Massachusetts, Amherst, Technical
Report 07-49, 2007.
[14] V. Jain and E. Learned-Miller, “FDDB: a benchmark for facedetection in
unconstrained settings”. Technical Report UM-CS-2010-009, University
of Massachusetts, Amherst, 2010.
[15] Simone Bianco, Remi Cadene and Luigi Celona and Paolo Napoletano,
“Benchmark Analysis of Representative Deep Neural Network
Architectures”, CoRR, 2018.
[16] T.-Y. Lin, P. Goyal, R. Girshick, K. He, and P. Doll ́ar. “Focalloss for
dense object detection”. InICCV, 2017.
Hình 7. Một số ảnh ví dụ kết quả của hệ thống phát hiện và nhận diện khuôn mặt đề xuất. Các khuôn mặt được đánh tên là các
khuôn mặt đã được đưa vào bộ khuôn mặt có sẵn để nhận diện.
143
Các file đính kèm theo tài liệu này:
- he_thong_phat_hien_va_nhan_dien_mat_nguoi_su_dung_mo_hinh_sq.pdf