Tóm tắt: Học sâu là thuật toán dựa trên một số ý tưởng từ não bộ tới việc tiếp thu
nhiều tầng biểu đạt, diễn tả cả cụ thể lần trừu tượng, từ đó làm rõ nghĩa các loại dữ liệu.
Học sâu được ứng dụng trong nhận diện hình ảnh, giọng nói, xử lý ngôn ngữ tự nhiên.
Convolutional Neural Network (CNNs) là một trong những mô hình của học sâu đem lại
kết quả có độ chính xác cao.
11 trang |
Chia sẻ: thanhle95 | Lượt xem: 569 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Mô hình thống kê học sâu trong nhận dạng khuôn mặt, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
4 TẠP CHÍ KHOA HỌC
QUẢN LÝ VÀ CÔNG NGHỆ
MÔ HÌNH THỐNG KÊ HỌC SÂU
TRONG NHẬN DẠNG KHUÔN MẶT
DEEP LEARNING STATISTIC MODEL IN FACE RECOGNITION
Đỗ Thành Công
Khoa Công nghệ thông tin,
Trường Đại học Kinh doanh và Công nghệ Hà Nội
E-mail: plc1810@gmail.com
Ngày tòa soạn nhận được bài báo: 28/11/2018
Ngày phản biện đánh giá: 18/12/2018
Ngày bài báo được duyệt đăng: 28/12/2018
Tóm tắt: Học sâu là thuật toán dựa trên một số ý tưởng từ não bộ tới việc tiếp thu
nhiều tầng biểu đạt, diễn tả cả cụ thể lần trừu tượng, từ đó làm rõ nghĩa các loại dữ liệu.
Học sâu được ứng dụng trong nhận diện hình ảnh, giọng nói, xử lý ngôn ngữ tự nhiên.
Convolutional Neural Network (CNNs) là một trong những mô hình của học sâu đem lại
kết quả có độ chính xác cao.
Từ khóa:
Summary: Deep learning refers to the number of layers through which the data is
transformed. Deep learning is also known as deep structured learning and a part of a
broader family of neural network methods based on convolutional neural networks (CNN)
s. Deep learning is applied in image recognition, voice, natural language processing. It is
one of the deep learning models that results in high accuracy.
Keywords: Face Detection, Deep Learning, Convolutional Neural Network (CNNs)
I. GIỚI THIỆU
1. Định nghĩa xác định khuôn mặt
Xác định khuôn mặt người (Face Detection) là một kỹ thuật máy tính để xác định các vị trí và
các kích thước của khuôn mặt trong các ảnh bất kỳ (ảnh kỹ thuật số). Kỹ thuật này nhận biết các
đặc trưng của khuôn mặt và bỏ qua các thứ khác như: tòa nhà, cây cối, cơ thể,
2. Ứng dụng nhận dạng khuôn mặt
5TẠP CHÍ KHOA HỌC
QUẢN LÝ VÀ CÔNG NGHỆ
Bài toán nhận dạng khuôn mặt được phát triển từ những năm 1990, đến nay bài toán đã
được ứng dụng trong rất nhiều lĩnh vực khác nhau.
Xác minh tội phạm: Dựa vào ảnh của một người, nhận dạng xem người đấy có phải là tội
phạm hay không bằng cách so sách với các ảnh tội phạm đang được lưu trữ. Hoặc có thể sử
dụng camera để phát hiện tội phạm trong đám đông. Ứng dụng này giúp cơ quan an ninh quản
lý con người tốt hơn.
Camera chống trộm: Các hệ thống camera sẽ xác định đâu là con người và theo dõi xem
con người đó có làm gì phạm pháp không, ví dụ như lấy trộm đồ, xâm nhập bất hợp pháp vào
một khu vực nào đó.
Bảo mật: Các ứng dụng về bảo mật rất đa dạng, một trong số đó là công nghệ nhận dạng
mặt người của máy tính, điện thoại. Công nghệ này cho phép chủ nhân của thiết bị chỉ cần cho
camera chụp hình đúng khuôn mặt là có thể đăng nhập.
Lưu trữ khuôn mặt: Xác định mặt người có thể được ứng dụng trong các trạm rút tiền tự động
(ATM). Lưu trữ được khuôn mặt của người rút tiền, ngân hàng có thể đối chứng và xử lý dễ dàng
các trường hợp rút tiền phạm pháp.
Trong thiết bị di động hay mạng xã hội, lưu trữ khuôn mặt giúp nhận dạng ảnh, phân loại ảnh
bạn bè một cách nhanh chóng.
Tìm kiếm và tổ chức dữ liệu liên quan đến con người thông qua khuôn mặt người trên nhiều
hệ cơ sở dữ liệu lưu trữ thật lớn, như internet, các hãng truyền hình, . ví dụ: tìm các phim có
diễn viên Thành Long đóng, tìm các trận đá bóng có Quang Hải đá,
Trong chụp hình, nhận dạng khuôn mặt để máy chụp hình thế hệ mới để cho kết quả hình
ảnh đẹp hơn, nhất là khuôn mặt người.
Một số hãng xe nhận dạng khuôn mặt để kiểm tra lái xe có ngủ gật hay không để thông báo
khi cần thiết.
3. Các phương pháp tiếp cận:
Để xác định khuôn mặt trong ảnh ta có thể sử dụng theo bốn hướng tiếp cận chính. Ngoài
ra cũng có rất nhiều nghiên cứu mà phương pháp xác định mặt người không chỉ dựa vào một
hướng mà có liên quan đến nhiều hướng.
Hướng tiếp cận tri thức: các đặc trưng của khuôn mặt sẽ được mã hóa thành các luật. Thông
thường các luật thường mô tả các quan hệ của đặc trưng như khuôn mặt thường có hai mắt đối
xứng qua trục thẳng đứng ở giữa khuôn mặt và có một mũi, một miệng. Các quan hệ đặc trưng
có thể được mô tả như quan hệ về khoảng cách và vị trí.
Hướng tiếp cận đặc trưng không thay đổi: xác định khuôn mặt người dựa trên các đặc trưng
không bị thay đổi khi thay đối tư thế khuôn mặt , vị trí quan sát hay điều kiện ánh sáng thay đổi.
Đã có rất nhiều nghiên cứu về hướng tiếp cận này, các đặc điểm không thay đổi được tìm thấy
như màu da, lông mày, mắt, mũi, miệng hay các đường viền trên tóc
Hướng tiếp cận so khớp mẫu: các mẫu chuẩn của khuôn mặt (thường là khuôn mặt được
6 TẠP CHÍ KHOA HỌC
QUẢN LÝ VÀ CÔNG NGHỆ
chụp thẳng) sẽ được xác định trước hoặc được biểu diễn thành một hàm với các tham số cụ
thể. Từ ảnh đầu vào, ta tính các giá trị tương quan so với các mẫu chuẩn về đường viền khuôn
mặt, mắt, mũi và miệng. Thông qua các giá trị tương quan này mà hệ thống sẽ quyết định có hay
không có tồn tại khuôn mặt trong ảnh.
Hướng tiếp cận dựa trên diện mạo: Hướng tiếp cận dựa trên diện mạo trái ngược với hướng
tiếp cận dựa trên so sánh khớp mẫu (các mẫu đã được các nhà nghiên cứu định nghĩa trước),
các mẫu trong hướng tiếp cận này được học từ một tập ảnh mẫu. Có thể nói hướng tiếp cận dựa
trên diện mạo áp dụng các kỹ thuật theo hướng xác suất thống kê và học máy để tìm những đặc
tính liên quan của khuôn mặt và không phải là khuôn mặt.
II. MÔ HÌNH HỌC SÂU (DEEP LEARNING)
Học sâu là phương pháp sử dụng nhiều lớp các đơn vị xử lý phi tuyến để trích trọn các đặc
trưng và chuyển đổi. Trong các lớp này thì giá trị của các lớp đầu ra của lớp trước sẽ là giá trị
đầu vào cho lớp kế tiếp nó. Các thuật toán được sử dụng có thể là thuật toán học có giám sát
hoặc không có giám sát. Học sâu thì thường được áp dụng cho các mô hình nhận dạng mẫu và
các bài toán phân loại thống kê. Các thuật toán học sâu khác so với các thuật toán học nông ở
việc biến đổi các tín hiệu tham số khi nó truyền từ lớp đầu vào cho lớp đầu ra, nơi một tham số
biến đổi là một đơn vị xử lý có khả năng huấn luyện cho các tham số, chẳng hạn như trọng số
và ngưỡng.
1. Giới thiệu về mạng Neuron
Mạng neuron nhân tạo, Artificial Neuron Network (ANN) gọi tắt là mạng neuron, neuron
network, là một mô hình xử lý thông tin phỏng theo cách thức xử lý thông tin của các hệ neuron
sinh học. Nó được tạo lên từ một số lượnglớn các phần tử (gọi là phần tử xử lý hay neuron) kết
nối với nhau thông qua cácliên kết (gọi là trọng số liên kết) làm việc như một thể thống nhất để
giải quyết mộtvấn đề cụ thể nào đó.
Một mạng neuron nhân tạo được cấu hình cho một ứng dụng cụ thể (nhận dạng mẫu, phân
loại dữ liệu ...) thông qua một quá trình học từ tập các mẫu huấn luyện. Về bản chất học chính
là quá trình hiệu chỉnh trọng số liên kết giữa các neuron.
Kiến trúc chung của một mạng nơron nhân tạo (ANN) gồm 3 thành phần đó là: Input Layer,
Hidden Layer và Output Layer
Hình 1. Mô hình mạng Neuron
7TẠP CHÍ KHOA HỌC
QUẢN LÝ VÀ CÔNG NGHỆ
Theo hình trên, lớp ẩn (Hidden Layer) gồm các Nơron nhận dữ liệu input từ các Nơron ở lớp
(Layer) trước đó và chuyển đổi các input này cho các lớp xử lý tiếp theo. Trong một ANN có thể
có nhiều lớp ẩn.
2. Huấn luyện mạng Neuron
Mạng neuron nhân tạo phỏng theo việc xử lý thông tin của bộ não người, do vậy đặc trưng
cơ bản của mạng là có khả năng học, khả năng tái tạo các hình ảnh và dữ liệu khi đã học. Trong
trạng thái học thông tin được lan truyền theo hai chiều nhiều lần để học các trọng số. Có 3 kiểu
học chính, mỗi kiểu học tương ứng với một nhiệm vụ học trừu tượng. Đó là học có giám sát (có
mẫu), học không giám sát và học tăng cường. Thông thường loại kiến trúc mạng nào cũng có
thể dùng được cho các nhiệm vụ.
Học cố giám sát: Là cách huấn luyện một mô hình trong đó dữ liệu học có đầu vào và đầu ra
tương ứng đầu vào đó. Mô hình được huấn luyện bằng cách giảm thiểu sai số lỗi (loss) của các
dự đoán tại các vòng lặp huấn luyện. Sau quá trình huấn luyện. mô hình sẽ có khả năng đưa ra
dự đoán về đầu ra với một đầu vào mới gặp (không có trong dữ liệu học). Nếu không gian đầu ra
được biểu diễn dứới dạng rời rạc, ta gọi đó là bài toán phân loại (classification). Nếu không gian
đầu ra được biểu diễn dưới dạng liên tục, ta gọi đó là bài toán hồi quy (regression).
Học không giám sát: là cách huấn luyện một mô hình trong đó dữ liệu học chỉ bao gồm đầu
vào mà không có đầu ra. Mô hình sẽ được huấn luyện cách để tìm cấu trúc hoặc mối quan hệ
giữa các đầu vào. Một trong những phương pháp học không giám sát quan trọng nhất là phân
cụm (clustering): Tạo các cụm khác nhau với mỗi cụm biểu diễn một đặc trưng nào đó của dữ
liệu và phân các đầu vào mới vào các cụm theo các đặc trưng của đầu vào đó.
Học tăng cường: là phương pháp huấn luyện hệ thống tự động. Phương pháp này không
cần dữ liệu ban đầu mà sẽ thu thập dữ liệu thông qua phép thử đúng hay sai.
3. Mạng neuron tích chập
Convolutional Neuron Network (CNNs – Mạng neuron tích chập) là một trong những mô hình
Deep Learning tiên tiến giúp cho chúng ta xây dựng được những hệ thống thông minh với độ
chính xác cao như hiện nay.
Tích chập là một cửa sổ trên một mặt trận mô tả như hình:
Hình 2. Mô hình tổ hợp tích chập
8 TẠP CHÍ KHOA HỌC
QUẢN LÝ VÀ CÔNG NGHỆ
Ma trận bên trái là một bức ảnh đen trắng. Mỗi giá trị của ma trận tương đương với một điểm
ảnh (pixel), 0 là màu đen, 1 là màu trắng (nếu là ảnh grayscale thì giá trị biến thiên từ 0 đến 255).
Sliding window còn có tên gọi là kernel, filter hay feature detector. Ở đây, ta dùng một ma
trận filter 3×3 nhân từng thành phần tương ứng (element-wise) với ma trận ảnh bên trái. Gía trị
đầu ra do tích của các thành phần này cộng lại. Kết quả của tích chập là một ma trận (convoled
feature) sinh ra từ việc trượt ma trận filter và thực hiện tích chập cùng lúc lên toàn bộ ma trận
ảnh bên trái.
Mạng neuron tích chập bao gồm các lớp sau: lớp Convolutional, lớp RELU, lớp Pooling, lớp
Fully connected. Sự sắp xếp về số lượng và thứ tự giữa các lớp này sẽ tạo ra những mô hình
khác nhau phù hợp cho các bài toán khác nhau.
Lớp Convolutiinal: Lớp này chính là nơi thể hiện tư tưởng ban đầu của mạng nơ-ron tích
chập. Thay vì kết nối toàn bộ điểm ảnh, lớp này sẽ sử dụng một bộ các bộ lọc (filters) có kích
thước nhỏ so với ảnh (thường là 3×3 hoặc 5×5) áp vào một vùng trong ảnh và tiến hành tính
tích chập giữa bộ filter và giá trị điểm ảnh trong vùng cục bộ đó. Bộ filter sẽ lần lượt được dịch
chuyển theo một giá trị bước trượt (stride) chạy dọc theo ảnh và quét toàn bộ ảnh.
Lớp RELU: Lớp này thường được cài đặt ngay sau lớp Convolutional. Lớp này sử dụng hàm
kích hoạt f(x) = max(0,x)f(x)=max(0,x). Nói một cách đơn giản, lớp này có nhiệm vụ chuyển toàn
bộ giá trị âm trong kết quả lấy từ lớp Convolutional thành giá trị 0. Ý nghĩa của cách cài đặt này
chính là tạo nên tính phi tuyến cho mô hình. Tương tự như trong mạng truyền thẳng, việc xây
dựng dựa trên các phép biến đổi tuyến tính sẽ khiến việc xây dựng đa tầng đa lớp trở nên vô
nghĩa. Có rất nhiều cách để khiến mô hình trở nên phi tuyến như sử dụng các hàm kích hoạt
sigmoid, tanh, nhưng hàm f(x) = max(0,x)f(x)=max(0,x) dễ cài đặt, tính toán nhanh mà vẫn
hiệu quả.
Lớp Pooling: Lớp này sử dụng một cửa sổ trượt quét qua toàn bộ ảnh dữ liệu, mỗi lần trượt
theo một bước trượt (stride) cho trước. Khác với lớp Convolutional, lớp Pooling không tính tích
chập mà tiến hành lấy mẫu (subsampling). Khi cửa sổ trượt trên ảnh, chỉ có một giá trị được xem
là giá trị đại diện cho thông tin ảnh tại vùng đó (giá trị mẫu) được giữ lại. Các phương thức lấy
phổ biến trong lớp Pooling là MaxPooling ( lấy giá trị lớn nhất), MinPooling (lấy giá trị nhỏ nhất)
và AveragePooling (lấy giá trị trung bình).
Lớp Fully connected: Lớp này tương tự với lớp trong mạng nơ-ron truyền thẳng, các giá trị
ảnh được liên kết đầy đủ vào node trong lớp tiếp theo. Sau khi ảnh được xử lý và rút trích đặc
trưng từ các lớp trước đó, dữ liệu ảnh sẽ không còn quá lớn so với mô hình truyền thẳng nên ta
có thể sử dụng mô hình truyền thẳng để tiến hành nhận dạng.
III. XÂY DƯNG KIẾN TRÚC MẠNG CNNS NHẬN DẠNG KHUÔN MẶT
1. Xây dựng mạng CNNs
Xây dựng tầng Convolutiinal: sử dụng ảnh có kích thước (32*32*3). Sử dụng 6 bước lọc mỗi
bước lọc có kích thước (5*5*3) ta sẽ được bản đồ kích thước 28.
9TẠP CHÍ KHOA HỌC
QUẢN LÝ VÀ CÔNG NGHỆ
Hình 3. Tầng Convolutiinal
Xây dựng tầng Pooling: Sử dụng 64 bộ lọc filter có kích thước [244*244*64] thực hiện với
thông số F= 2, S=2 ta sẽ thu được đàu ra kích thước [112*112*64]
Hình 4. Mô hình pooling cho ảnh
Xây dựng hàm biến đổi tuyến tính: Về cơ bản, covolution là một phép biển đổi tuyến tính.
Nếu tất cả các neuron được tổng hợp bởi các phép biến đổi tuyến tính thì một mạng neuron đều
có thể đưa về dưới dạng một hàm tuyến tính. Tuy nhiên, các nghiên cứu gần đây chứng minh
được việc sử dụng hàm ReLu (Rectified Linear Unit) là đáng tin cậy nhất.
Kết nối Fully-connected: cách kết nối các neural ở hai tầng với nhau trong đó tầng sau kết
nối đẩy đủ với các neural ở tầng trước nó. Đây cũng là dạng kết nối thường thấy ở ANN, trong
CNN tầng này thường được sử dụng ở các tầng phí cuối của kiến trúc mạng.
Trong bài toán phân lớp ảnh , CNNs sẽ được mô tả như sau:
[[CONV -> RELU]*N -> POOL?]*M -> [FC -> RELU]*K -> FC
Trong đó:
[CONV -> RELU]*N tức là trong kiến trúc này sau tầng CONV là tầng RELU, trong CNN kiến
trúc 2 tầng này có thể lặp N lần.
10 TẠP CHÍ KHOA HỌC
QUẢN LÝ VÀ CÔNG NGHỆ
POOL? là tầng Pooling cho người thiết kế quyết định có thể có hoặc không.
[[CONV -> RELU]*N -> POOL?]*M trong kiến trúc CNN có thể lặp lại M lần kiểu sau tầng
CONV là tầng RELU và kế tới là tầng Pooling.
[FC -> RELU]*K trong CNN có thể lặp K lần cấu trúc kiểu sau tầng FC là tầng RELU nhưng
trước nó phải có tầng [CONV -> RELU].
Như vậy CNNs sẽ cố gắng tìm ra các thông số tối ưu cho các filter tương ứng theo thứ tự
pixel > edges > shapes > facial > high-level features.
Hình 5. Thứ tự các bộ lọc trong mạng CNNs
2. Huấn luyện mạng CNNS
Bài toán áp dụng trong mô hình nhỏ chỉ nhận dạng 10 khuôn mặt người khác nhau. Sử dụng
tập ảnh chụp 10 nghệ sỹ Việt Nam.Sử dụng 80% ảnh để huấn luyện và 20% ảnh để kiểm chứng.
Hình 6. Mô hình mạng huấn luyện.
11TẠP CHÍ KHOA HỌC
QUẢN LÝ VÀ CÔNG NGHỆ
Hình 6: Tập mẫu huấn luyện
Bước 2: Thay đổi kích thước hình ảnh huấn luyện thành cỡ 128 x 128.
a = tf.truncated_normal([16,128,128,3])
sess = tf.Session()
sess.run(tf.initialize_all_variables())
sess.run(tf.shape(a))
Bước 3: Đặt tên cho các lớp và thiết lập số lượng ảnh sử dụng kiểm tra.
validation_size = 0.2
img_size = 128
num_channels = 3
train_path = 'face_train'
Bước 4: Thiết lập các tầng tích chập:
filter_size_conv1 = 3
num_filters_conv1 = 32
filter_size_conv2 = 3
num_filters_conv2 = 32
Bước 1: Xây dựng tập thư viện là hình ảnh khuôn mặt người và được phân loại và lưu vào
thư mục đặt theo tên nghệ sỹ và lưu vào thư mục training_face.
12 TẠP CHÍ KHOA HỌC
QUẢN LÝ VÀ CÔNG NGHỆ
filter_size_conv3 = 3
num_filters_conv3 = 64
Bước 5: Xây dựng tầng Flattening
def create_flatten_layer(layer):
layer_shape = layer.get_shape()
num_features = layer_shape[1:4]
layer = tf.reshape(layer, [-1, num_features])
return layer
Bước 6: Xây dựng kết nối Fully-connected
def create_fc_layer(input, num_inputs, num_outputs, use_relu=True):
weights = create_weights(shape=[num_inputs, num_outputs])
biases = create_biases(num_outputs)
layer = tf.matmul(input, weights) + biases
if use_relu:
layer = tf.nn.relu(layer)
return layer
Bước 7: Thực hiện huấn luyện mạng
Hình 7. Kết quả huấn luyện mạng
Kết quả huấn luyện sau 300 lần huấn luyện kết quả sai số đạt khoảng 68%.
Bước 8: Lưu kết quả huấn luyện.
saver.save(session, 'test/trainningData.xml')
3. Xây dựng mô hình dự đoán:
Hình 8. Mô hình dự đoán
13TẠP CHÍ KHOA HỌC
QUẢN LÝ VÀ CÔNG NGHỆ
Hình 8. Kết quả thử nghiệm
IV. HƯỚNG PHÁT TRIỂN
Với phương pháp sử dụng mạng tích chập để nhận dạng khuôn mặt đem lại tỉ lệ thành công
cao tuy nhiên vẫn còn tồn tại một số khó khăn:
Tỉ lệ nhận dạng còn phụ thuộc vào điều kiện ánh sáng, phản chiếu, khuôn mặt bị che bởi tóc
hay mũ.
Màu sắc của môi trường xung quanh có thể có lẫn với khuôn mặt khiến kết quả không chính
xác.
Trong bức ảnh có nhiều khuôn mặt và có nhiều hướng mặt khác nhau.
Để khắc phục những hạn chế trên ta có thể kết hợp hợp học tăng cường cùng thuật toán.
IV. KẾT LUẬN
Bước 1: Load file huấn luyện
Bước 2: Đọc ảnh đầu vào và tìm ra vùng gần giống dự đoán là khuôn mặt và lưu ảnh xử lý
vào thư mục process.
Bước 3: Đối sánh hình ảnh và so sánh với các lớp đã học được.
Kết quả thử nghiệm với một ảnh không có trong tập huấn luyện. Thu được sai số khoảng
0.97
14 TẠP CHÍ KHOA HỌC
QUẢN LÝ VÀ CÔNG NGHỆ
Bài toán nhận dạng khuôn mặt là một vấn đề hay có nhiều ứng dụng trong thực tế. Dữ liệu
thu thập khi huấn luyện càng lớn sẽ đem kết quả chính xác.
TÀI LIỆU THAM KHẢO
[1] Z. Li, J.-i. Imai and M. Kaneko, "Robust face recognition using block-based bag of
words.,"Pattern Recognition (ICPR), 2010 20th International Conference on. IEEE, pp. 1285-
1288, 2010.
[2] C.-F. Tsai, "Bag-of-words representation in image annotation: A review.," ISRN Artificial
Intelligence 2012,2012.
[3] S. Liao, A. K. Jain and S. Z. Li, "Partial face recognition: Alignment-free approach," IEEE
Transactions on Pattern Analysis and Machine Intelligence 35.5, pp. 1193-1205, 2013.
[4] R. Achanta, A. Shaji, K. Smith, A. Lucchi, P. Fua and S. Süsstrunk, "SLIC superpixels
compared to state-of-the-art superpixel methods," IEEE transactions on pattern analysis and
machine intelligence,vol. 34.11, pp. 2274-2282, 2012. [8] J. Y. Wright, G. A. Y., S. S. S. A. and Y.
Ma, "Robust face recognition via sparse representation," IEEE transactions on pattern analysis
and machine intelligence, vol. 31(2), pp. 210-227, 2009.
[5] D. G. Lowe, "Distinctive image features from scale-invariant keypoints," International
ournal of computer vision, vol. 60.2, pp. 91-110, 2004.
[6] J. Canny, "A computational approach to edge detection, "IEEE Transactions on pattern
analysis and machine intelligence,vol. 6, pp. 679-698, 1986. [7] K. Mikolajczyk, A. Zisserman and
C. Schmid, "Shape recognition with edge-based features, "British Machine Vision Conference
(BMVC'03), vol. Vol. 2, pp. 779-788, 2003.
[8] K. Mikolajczyk and C. Schmid, "Scale & affine invariant interest point detectors,"
International journal of computer vision,vol. 60(1), pp. 63-86, 2004.