Lập chỉ mục và tìm kiếm dữ liệu

Một phần của tài liệu Xây dựng hệ thống nhận dạng khuôn mặt sử dụng phương pháp học trực tuyến (Trang 42 - 46)

Lập chỉ mục

Sau khi thu được cáctokendạng chuỗi từ giai đoạn mã hóa trước đó, việc lưu trữ chúng trở nên cần thiết để phục vụ cho quá trình truy xuất khuôn mặt trong tương lai. Quá trình truy xuất thông tin nhận dạng khuôn mặt từ biểu diễn dạng chuỗi được đánh giá là nhanh hơn nhiều so với việc sử dụng các vector số có số chiều cao. Vì vậy, để đạt được một cơ

chế so khớp chuỗi tối ưu, khái niệm về công cụ tìm kiếm dựa trên chỉ mục đảo ngược của Elasticsearch (ES) đã được tận dụng.

Để lập chỉ mục dữ liệu vào Elasticsearch, một định dạng JSON đã được xây dựng, bao gồm các vector số, cáctokendạng chuỗi, cùng với một số thuộc tính khác như tên, tuổi, địa chỉ, đường dẫn hình ảnh, giới tính, email và nhiều thông tin khác. Mỗi khuôn mặt được biểu diễn dưới dạng một tài liệu JSON riêng biệt, với tổng cộng 1020 lớp khác nhau. Định dạng của JSON được trình bày dưới đây:

body = {

"user_id": user_id,

"user_name": user_name,

"image_url": image_url,

"embed_vector": embed_vector,

"string_token": string_tokens,

"address": address,

"gender": gender,

"email": email, ...

}

Kết quả là, ta có được một mảng các đối tượng JSON với số lượng tương đương với tập dữ liệu huấn luyện. Tiếp theo, ta chỉ cần sử dụng các hàm API có sẵn của Elastic- search để lập chỉ mục dữ liệu vào máy chủ Elasticsearch.

Tìm kiếm dữ liệu

Trong bước này, cần phải tiến hành theo các bước triển khai mà Cun (Matthew) Mu [34]

đã thực hiện trong bài báo của anh ấy, nhưng thay vì áp dụng cho dữ liệu tổng quát, ta sẽ áp dụng cho dữ liệu khuôn mặt.

Đối với mỗi hình ảnh truy vấn, cần phải áp dụng chính xác các bước như trong quá trình huấn luyện đã được trình bày ở phần trước để thu được một chuỗi ký tựs; sau đó, sử dụng chuỗi này cho quá trình tìm kiếm. Các khuôn mặt tương tự nhất trong toprđược xác định dựa trên mức độ chồng lấp giữa tập chuỗi ký tựs và các tập chuỗi ký tự được

lưu trữ trên máy chủ ES{s1,s2, . . . ,sn}:

i1,i2, . . . ,ir=arg max

i∈{1,2,...,n}|s∩si| (2.2)

Elasticsearch (ES) cung cấp cho ta một RESTful API giúp việc tìm kiếm trở nên thuận tiện hơn; do đó, tất cả những gì cần làm là xây dựng một nội dung yêu cầu được mã hóa dưới dạng JSON để hướng dẫn máy chủ ES thực hiện tính toán, giống như ví dụ bên dưới:

string_tokens_chunks = list() for i in range(num_positions):

sub_field = {

"filter": {

"term": {

"string_token": string_tokens[i]

} },

"weight": 1 }

string_tokens_chunks.append(sub_field)

request_body = {

"size": r,

"query": {

"function_score": {

"functions": string_tokens_chunks,

"score_mode": "sum",

"boost_mode": "replace"

} },

"rescore": {

"window_size": 5,

"query": {

"script_score": {

"script": {

"lang": "custom_scripts",

"source": "euclidean_distance",

"params": {

"vector_field": "image_actual_vector",

"query_vector": [0.0212, 0.0512, 0.0337, ...]

} } },

"boost_mode": "replace"

} },

"query_weight": 0,

"rescore_query_weight": 1 }

}

Trong định dạng JSON ở trên, đã được thiết lập hai thành phần chính để thu được kết quả sắp xếp từ ES một cách hiệu quả. Phần thứ nhất,"query", là một truy vấn tính điểm hàm số, chịu trách nhiệm truy xuấtr khuôn mặt có các token chuỗi tương tự nhất với s. Phần thứ hai, "rescore", là một hàm rescore tuỳ chỉnh do ES cung cấp. Nó giúp cải thiện độ chính xác bằng cách sắp xếp lại chỉ các kết quả hàng đầurtừ phần thứ nhất bằng cách sử dụng khoảng cách Euclid, thay vì phải áp dụng thuật toán tốn kém này cho tất cả các khuôn mặt trong cơ sở dữ liệu.

Bằng cách kết hợp hai phần này, ta có thể tối ưu hóa quá trình tìm kiếm và sắp xếp, đảm bảo rằng kết quả không chỉ chính xác mà còn được truy xuất một cách nhanh chóng và hiệu quả. Điều này đặc biệt quan trọng khi làm việc với các cơ sở dữ liệu lớn, nơi mà hiệu suất và độ chính xác là những yếu tố then chốt.

Hơn nữa, việc sử dụng hàm rescore tuỳ chỉnh cho phép thử nghiệm linh hoạt trong việc điều chỉnh các tham số tìm kiếm theo nhu cầu cụ thể của ứng dụng. Điều này giúp cải thiện trải nghiệm người dùng và tăng khả năng mở rộng của hệ thống.

Một phần của tài liệu Xây dựng hệ thống nhận dạng khuôn mặt sử dụng phương pháp học trực tuyến (Trang 42 - 46)

Tải bản đầy đủ (PDF)

(61 trang)