1
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Vũ Minh Đức
XÂY DỰNG HỆ THỐNG TÌM KIẾM ẢNH THEO NỘI DUNG
Ngành: Công nghệ thông tin
Chuyên ngành: Hệ thống thông tin
Mã số: 60480104
TÓM TẮT LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
HÀ NỘI - 2015
CHƯƠNG 1: TỔNG QUAN
1.1. Đặt vấn đề
Trong các chủ đề thuộc lĩnh vực xử lý nhận dạng hình ảnh, tìm
kiếm ảnh theo nội dung là một bài toán được đặt ra để thay thế cho
phương pháp tìm kiếm ảnh thông thường dựa trên các từ khóa hoặc các
mô tả của ảnh.
Khác với phương pháp tìm kiếm ảnh bằng từ khóa, tìm kiếm theo
nội dung tức là bản thân bức ảnh sẽ được phân tích để phục vụ cho việc
tìm kiếm. Nội dung của bức ảnh ở đây có thể là các đối tượng, kết cấu,
hoặc các đặc trưng khác được trích xuất từ chính bức ảnh.
1.2. Mục tiêu đề tài
Nội dung của một bức ảnh được đề cập trong luận văn này sẽ
xoay quanh khuôn mặt trực diện của người và các động vật có vú. Để
trích rút được các nội dung trên bức ảnh liên quan đến khuôn mặt, luận
văn sẽ nghiên cứu về thuật toán cho phép xác định vị trí của một khuôn
mặt chính diện của người hoặc động vật có vú. Luận văn cũng nghiên
cứu thuật toán học máy cho phép nhận diện danh tính của các khuôn
mặt (đã được xác định vị trí trước).
Từ cơ sở giải quyết được hai bài toán đó, luận văn xây dựng một
hệ thống tìm kiếm ảnh có thể tìm được các bức ảnh của người và động
vật có vú, các bức ảnh trực diện của cùng một người hoặc một con vật
thuộc loài có vú, tìm được các bức ảnh có cùng số lượng người hoặc số
lượng động vật có vú, tìm được các ảnh có người và các động vật có vú
giống hệt nhau nhưng khác biệt về kích thước và màu sắc.
2
1.3. Đối tượng và phương pháp nghiên cứu
Đối tượng nghiên cứu của luận văn là nghiên cứu các đặc trưng
của khuôn mặt người và các động vật có vú thể hiện trên các bức
Phương pháp nghiên cứu là dựa vào bộ công cụ xử lý ảnh
OpenCV có sẵn để xây dựng một hệ thống tìm kiếm ảnh xoay quanh
khuôn mặt người và động vật có vú.
CHƯƠNG 2: CÁC THUẬT TOÁN NHẬN DẠNG KHUÔN MẶT ÁP
DỤNG TRONG HỆ THỐNG TÌM KIẾM ẢNH THEO NỘI DUNG.
2.1. Thuật toán xác định vị trí khuôn mặt
2.1.1. Một số thuật toán xác định vị trí khuôn mặt thường gặp
Xác định vị trí của một vật thể nói chung và khuôn mặt nói riêng
là một chủ đề đã được nghiên cứu rất nhiều trên thế giới.
Turk và Pentland đã đề xuất sử dụng PCA để huấn luyện các ảnh
khuôn mặt và sử dụng eigenfaces làm các mẫu.
Viola và Jones đề xuất phương pháp sử dụng một đại diện ảnh
mới và một tập các đặc trưng gọi là các đặc trưng Haar.
Lienhart et al. đề xuất mở rộng các đặc trưng Haar, thêm vào các
thuộc tính bị xoay một góc 45 độ.
2.1.2. Đặc trưng theo mẫu nhị phân cục bộ (LBP)
2.1.2.1. Mẫu nhị phân cục bộ nguyên bản
Mẫu nhị phân cục bộ nguyên bản sẽ tính toán chuỗi nhị phân cho
mỗi điểm ảnh của bức ảnh bằng 8 điểm ảnh lân cận xung quanh nó
Công thức tính toán như sau:
3
Công thức 2.1: Công thức tính LBP của một ðiểm ảnh
Với i
c
là giá trị độ xám của (x
c
, y
c
), i
n
là giá trị độ xám của điểm
ảnh (x
n
, y
n
) lân cận của (x
c
, y
c
).
Hàm s(x) được định nghĩa như sau:
2.1.2.2. Mẫu nhị phân từng vùng cục bộ (MB-LBP)
Để giải quyết vấn đề với nhiễu, khác với LBP nguyên bản, MB-
LBP không sử dụng trực tiếp giá trị cấp độ xám của từng điểm ảnh.
Thay vào đó, các điểm ảnh được chia thành từng vùng. Trong đó mỗi
vùng có một giá trị cấp độ xám đại diện là giá trị trung bình của tất cả
các điểm ảnh trong vùng đó. Tiếp theo, ta coi mỗi vùng này là một điểm
ảnh như trong phương pháp tính LBP nguyên bản. Giá trị LBP bây giờ
sẽ đại diện cho từng vùng ảnh chứ không đại diện cho từng điểm ảnh
như trước nữa
Các chuỗi nhị phân tính theo công thức trên có 8 bit. Tổng số
lượng các chuỗi nhị phân có thể xuất hiện là 2
8
= 256.
Liao đã chứng minh được rằng 63 cột cao nhất trong biểu đồ
tần xuất của các mã nhị phân tương ứng với N = 63 chuỗi nhị phân
đồng nhất có ý nghĩa trong việc phân lớp khuôn mặt.
Theo đó ta chỉ cần để ý tới LBP của các chuỗi nhị phân l sau:
4
Trong đó Rank[H(l)] là thứ tự của giá trị tần xuất xuất hiện của
l trong biểu đồ tần xuất. N = 58.
2.1.3. Các bộ phân lớp yếu và huấn luyện chồng tầng
2.1.3.1. Các bộ phân lớp yếu
Một bộ phân lớp yếu h
p
(x) chứa một bảng 63 giá trị là trọng số
của các chuỗi nhị phân tương ứng. 63 giá trị này có liên kết với vùng
ảnh có vị trí p. Cho một ảnh là đầu vào của bộ phân lớp yếu h
p
(x), tại vị
trí p, đầu ra của h
p
(x) là giá trị của trọng số tương ứng với mã nhị phân
x. H
n
(X) là bộ phân lớp tổng hợp của tầng n:
Công thức 2.2: Công thức của bộ phân lớp yếu
Trong đó, W
n
là tập các điểm ảnh của tầng n.
2.1.3.2. Huấn luyện chồng tầng
Ý tưởng của huấn luyện và phân lớp chồng tầng là bộ phân lớp
sẽ là tổng hợp của nhiều bộ phân lớp yếu (nhiều tầng). Tuy vậy kết quả
cuối cùng vẫn cho một kết quả rất chính xác.
Thuật toán bộ phân lớp này như sau:
Với mỗi bộ phân lớp yếu (tầng) n, số lượng P
n
của tập các vùng
ảnh thuộc W
n
là cố định. Số vòng lặp huấn luyện T
n
cũng cố định.
Với mỗi vòng lặp t, bảng
Lp
pos
và L
p
neg
được gán cho mỗi vùng
ảnh của W
n
. Sau đó, với mỗi vị trí vùng ảnh p, toán tử MB-LBP sẽ được
thực hiện trên tập các ảnh khuôn mặt mẫu. Với mỗi ảnh mẫu, mã nhị
phân MB-LBP được tính trên mỗi vùng ảnh tương ứng với vị trí p.
Bảng L
p
được tính theo công thức:
5
Công thức 2.3: Công thức tính bảng các trọng số của các mã nhị phân
tại ðiểm ảnh p
Tới cuối cùng, mỗi mã nhị phân x tại điểm ảnh có vị trí p sẽ có
trọng số là tổng giá trị trọng số của L
p
[x] tại mỗi vòng lặp.
2.2. Thuật toán học bán giám sát Bootstrapping
Thuật toán học máy có giám sát để xác định khuôn mặt ở trên cần
một số lượng rất lớn các dữ liệu là tập ảnh các khuôn mặt và tập ảnh
không phải khuôn mặt được lọc và xử lý trước thủ công. Việc chuẩn bị
bộ dữ liệu đó rất tốn công sức và thời gian. Luận văn để xuất một
phương pháp cho phép chỉ cẩn chuẩn bị một tập nhỏ các dữ liệu huấn
luyện được lọc và xử lý trước mà vẫn có thể huấn luyện được một bộ
phân lớp xác định vị trí khuôn mặt khá chính xác gọi là thuật toán
Bootstrapping.
6
Hình 2.6: Thuật toán huấn luyện bán giám sát bootstrapping
7
2.3. Thuật toán nhận diện khuôn mặt theo biểu đồ tần suất của mẫu
nhị phân cục bộ (LBPH)
Nhận diện khuôn mặt là bài toán tiếp theo cần giải quyết trong
hệ thống tìm kiếm ảnh theo nội dung. Ta sẽ cần tìm các đặc trưng để có
thể huấn luyện được một bộ phân lớp có thể nhận diện được danh tính
của các khuôn mặt.
2.3.1. Sơ lược về thuật toán Eigenfaces (các khuôn mặt đặc biệt)
Eigenfaces được phát triển để sử dụng trong nhận dạng bởi
Sirovich và Kirby. Sau đó nó được Mattheww Turk và Alex Pentland sử
dụng vào nhận dạng khuôn mặt. Tuy vậy eigenfaces sẽ có thể gặp vấn
đề khi gặp các điều kiện ánh sáng khác nhau chiếu lên khuôn mặt của
cùng một người .
2.3.2. Thuật toán nhận dạng khuôn mặt sử dụng biểu đồ tần suất
của mẫu nhị phân cục bộ
Thuật toán nhận dạng khuôn mặt sử dụng biểu đồ tần xuất của
mẫu nhị phân cục bộ (LBPH) do đó hạn chế được việc nhận dạng sai do
ảnh hưởng của ánh sáng lên bức ảnh.
Sử dụng cách tính toán tử nguyên bản LBP và cách loại bỏ các
mã nhị phân không cần thiết như phần trên đã đề cập, ta có cách tính
biểu đồ tần xuất của một ảnh đã gán nhãn f
i
(x, y) như sau
.
8
Công thức 2.4: Công thức tính biểu đồ tần xuất của một ảnh
Với n là số lượng các mã nhị phân khác nhau được tính bởi toán
tử LBP và
Ta có thể chia bức ảnh lớn thành các vùng nhỏ R
0
,…R
m – 1
để đạt
được mục đích giữ được các thông tin về không gian. Khi đó các biểu
đồ tần suất H
i, j
được tính bằng công thức:
Công thức 2.5: Công thức tính biểu đồ tần xuất của một ảnh chia nhỏ
thành các vùng
Để phân lớp, ta có thể sử dụng phương pháp tính khoảng cách
giữa biểu đồ tần suất của mẫu huấn luyện với biểu đồ tần suất của các
ảnh đang cần nhận diện khuôn mặt.
Mức độ tương giao của hai histogram:
Công thức 2.6: Công thức tính độ tương giao của hai biểu đồ tần xuất
Thống kê Chi square
9
Công thức 2.7: Công thức thống kê Chi square của hai biểu đồ tần
xuất
Như vậy, nếu khoảng cách của hai histogram của ảnh hai khuôn
mặt nhỏ hơn một ngưỡng nhất định thì ta có thể kết luận rằng hai khuôn
mặt đó là của cùng một người.
Ta có sơ đồ các bước của thuật toán nhận diện khuôn mặt như
sau:
10
Hình 2.7: các bước của thuật toán nhận diện khuôn mặt
11
CHƯƠNG 3: HỆ THỐNG TÌM KIẾM ẢNH THEO NỘI DUNG.
3.1. Bộ công cụ OpenCV
OpenCV là một thư viện mã nguồn mở phục vụ cho việc nghiên
cứu hay phát triển về thị giác máy tính. Luận văn sử dụng bộ công cụ
này để xây dựng hệ thống tìm kiếm.
3.2. Hệ thống tìm kiếm ảnh theo nội dung của ảnh.
Dựa vào các thuật toán đã nghiên cứu liên quan đến khuôn mặt,
hệ thống tìm kiêms sẽ trích rút được các nội dung như: một bức ảnh có
xuất hiện khuôn mặt hay không, số lượng khuôn mặt xuất hiện trong
bức ảnh là bao nhiêu, danh tính của các khuôn mặt trong bức ảnh và bản
thân toàn bộ bức ảnh cũng coi là một nội dung được trích rút từ bức
ảnh.
3.2.1. Các công cụ chuẩn bị dữ liệu
3.2.1.1. Công cụ chuẩn bị dữ liệu xác định vị trí khuôn mặt thủ công
làm dữ liệu huấn luyện cho bộ phân lớp xác định vị trí mặt người
Các bước chuẩn bị dữ liệu như sau:
12
Hình 3.1: Các bước thực thi chuẩn bị dữ liệu huấn luyện xác định vị trí
khuôn mặt
3.2.1.2. Công cụ huấn luyện bộ phân lớp xác định vị trí khuôn mặt
Sau đây là các bước thực thi của chương trình.
13
Hình 3.3: Các bước thực thi của công cụ huấn luyện mô hình phân lớp
xác định vị trí khuôn mặt
3.2.2. Hệ thống tìm kiếm ảnh theo nội dung
3.2.2.1. Tìm kiếm ảnh xuất hiện khuôn mặt
14
Hình 3.4: Các bước thực thi của tính năng tìm kiếm ảnh xuất hiện
khuôn mặt
3.2.2.2. Tìm kiếm các ảnh giống nhau nhưng khác về kích thước và màu
sắc
15
Tính năng này cho phép tìm kiếm các ảnh giống nhau nhưng
khác về màu sắc hoặc kích thước.
Các bước thực thi của tính năng này như sau
Hình 3.6: Các bước thực thi của tính năng tìm kiếm các ảnh giống
nhau nhưng khác về kích thước và màu sắc
3.2.2.3. Tìm kiếm các ảnh có cùng số lượng người trong ảnh
16
Hình 3.8: Các bước thực thi của tính năng tìm kiếm các ảnh có cùng
số lượng người trong ảnh
3.2.2.4. Tìm kiếm khuôn mặt giống khuôn mặt đã cho
17
18
Hình 3.10: Các bước thực thi của tính năng tìm kiếm khuôn mặt giống
khuôn mặt đã cho.
CHƯƠNG 4: KẾT QUẢ THỰC NGHIỆM
4.1. Thí nghiệm 1:
4.1.1. Mục đích thực nghiệm:
Đo đạc độ chính xác của thuật toán xác định vị trí khuôn mặt sử
dụng bộ phân lớp trên dữ liệu là các khuôn mặt chính diện của con
người. So sánh kết quả với khi kết hợp với thuật toán huấn luyện bán
giám sát bootstrapping.
4.1.2. Bố trí thí nghiệm:
Chuẩn bị bộ dữ liệu đã gán nhãn tọa độ gồm 9996 ảnh chứa
khuôn mặt chụp chính diện hoặc nghiêng nhẹ của mèo thành 2 tập ảnh
A, T lần lượt có số lượng là 8996, 1000: Trong đó:
• A sẽ đóng vai trò tập huấn luyện cho bộ phân lớp;
• T là tập dữ liệu kiểm thử để đánh giá độ chính xác cuối
cùng. Bổ sung 500 ảnh không chứa khuôn mặt của mèo vào
tập T.
Sử dụng bộ dữ liệu G gồm 5070 ảnh không chứa khuôn mặt của
mèo để làm các ảnh nền trong khi huấn luyện.
Tập ảnh A và T được lấy nguyên vẹn từ bộ ảnh khuôn mặt trực
diện của mèo của Microsoft (Microsoft Cat Dataset 2008). Tập ảnh G
được lấy từ các nguồn 450 ảnh dữ liệu khuôn mặt trực diện của Caltech
và bộ ảnh PASCAL VOC 2007 ta tiến hành thí nghiệm như sau:
19
Hình 4.1: các bước thực hiện thí nghiệm 1
4.1.3. Kết quả thí nghiệm:
20
Dữ liệu
Dương tính
- Đúng
Dương tính
- Sai
Âm tính -
Đúng
Âm tính -
Sai
Đủ các góc 170 26 490 314
Đã được
xoay thẳng
270 26 490 214
Bảng 4.1: Kết quả thí nghiệm 1
4.2. Thí nghiệm 2:
4.2.1. Mục đích thực nghiệm:
Đo đạc độ chính xác của thuật toán xác định vị trí khuôn mặt sử
dụng bộ phân lớp chồng tầng dựa trên các đặc trưng MB-LBP trên dữ
liệu là các khuôn mặt chính diện hoặc nghiêng nhẹ của loài mèo. So
sánh kết quả khi huấn luyện bộ phân lớp hoàn toàn bằng dữ liệu huấn
luyện đã xác định vị trí khuôn mặt theo cách thủ công với khi áp dụng
kết hợp với thuật toán huấn luyện bán giám sát bootstrapping.
4.2.2. Bố trí thí nghiệm:
Chia bộ dữ liệu gồm 9996 ảnh chứa khuôn mặt chụp chính diện
hoặc nghiêng nhẹ của mèo thành 3 tập ảnh A
1
, A
2
, B, T lần lượt có số
lượng là 2000, 500, 6996, 500: Trong đó:
o A
1
, A
2
sẽ đóng vai trò tập huấn luyện mồi và tập huấn luyện
kiểm thử trong mỗi vòng lặp của thuật toán bootstapping;
21
o B là tập dữ liệu không xác định vị trí khuôn mặt sử dụng để mở
rộng dữ liệu huấn luyện tự động trong mỗi vòng lặp của thuật
toán bootstrapping
o T là tập dữ liệu kiểm thử để đánh giá độ chính xác cuối cùng.
Bổ sung 500 ảnh không chứa khuôn mặt của mèo vào tập T.
Sử dụng bộ dữ liệu G gồm 5070 ảnh không chứa khuôn mặt
mèo để làm các ảnh nền trong khi huấn luyện.
Tập ảnh A1, A2, B và T được lấy nguyên vẹn từ bộ ảnh khuôn
mặt trực diện của mèo của Microsoft (Microsoft Cat Dataset 2008). Tập
ảnh G được lấy từ các nguồn 450 ảnh dữ liệu khuôn mặt trực diện của
Caltech và bộ ảnh PASCAL VOC 2007
Để so sánh kết quả của việc sử dụng thuần bộ phân lớp chồng
tầng dựa trên các đặc trưng MB-LBP với khi kết hợp với thuật toán
bootstapping, ta tiến hành thí nghiệm như sau.
Ta tiến hành thí nghiệm như sau:
22
23
Hình 4.2: các bước thực hiện thí nghiệm 2
4.2.3. Kết quả thí nghiệm
Vòng
lặp
Số mẫu
gán nhãn
tự động
được
tăng
thêm
Tổng số
mẫu gán
nhãn
Dương
tính -
Đúng
Dương
tính - Sai
Âm tính -
Đúng
Âm tính
- Sai
0 0 2000 28 0 500 0
25 2643 4643 111 11 498 0
Bảng 4.2: Kết quả thí nghiệm 2
4.3. Thí nghiệm 3:
4.3.1. Mục đích thí nghiệm:
Đo đạc độ chính xác của thuật toán nhận diện danh tính khuôn
mặt sử dụng bộ phân lớp LBPH trên dữ liệu là các khuôn mặt chính
diện của loài người.
24
4.3.2. Bố trí thí nghiệm:
Chuẩn bị sẵn một tập 450 khuôn mặt của nhiều người, trong đó
mỗi người sẽ xuất hiện trong nhiều ảnh. Tập ảnh được lấy từ các nguồn
450 ảnh dữ liệu khuôn mặt trực diện của Caltech. Các bước thí nghiệm
như sau:
Hình 4.3: Các bước thí nghiệm 3
4.3.3. Kết quả thực nghiệm
Người Tổng số ảnh
xuất hiện
Dương tính -
Đúng
Dương tính - Sai Âm tính -
Đúng
Âm tính - Sai
1 21 14 6 432 7
2 20 14 26 404 6
3 5 2 0 445 3
25