Professional Documents
Culture Documents
BÁO CÁO
HỆ CƠ SỞ DỮ LIỆU ĐA PHƯƠNG TIỆN
ĐỀ TÀI
Xây dựng hệ CSDL lưu trữ và tìm kiếm ảnh nhân vật
hoạt hình
NHÓM BTL: 04
1
MỤC LỤC
1. Trình bày về dữ liệu (Kết quả sưu tầm).................................................................................................... 3
Đặc trưng các ảnh ........................................................................................................................................... 6
2. Hãy tìm hiểu các kỹ thuật xử lý và tìm kiếm ảnh hiện hành. ................................................................. 8
Elasticsearch và quá trình phân tích dữ liệu ................................................................................................ 8
Ưu điểm và nhược điểm của Elasticsearch ................................................................................................. 12
3. XÂY DỰNG HỆ THỐNG NHẬN DẠNG VÀ TÌM KIẾM ẢNH NHÂN VẬT HOẠT HÌNH ........................ 14
4. Trình bày các thuộc tính được sử dụng để nhận dạng ảnh nhân vật hoạt hình trong hệ thống, cùng
các kỹ thuật để trích rút các thuộc tính đó. ............................................................................................ 15
5. Trình bày cách lưu trữ và quản lý các thuộc tính ảnh nhân vật hoạt hình và cách nhận dạng, tìm
kiếm các ảnh trong CSDL dựa trên các thuộc tính đó. ......................................................................... 19
1. Trình bày về dữ liệu (Kết quả sưu tầm)
o Jujutsu Kaisen : 1
o Dragon Ball : 1
o Bleach : 1
o Naruto : 3
o Conan : 1
o Hunter X Hunter : 1
o One Piece : 1
o Fairy Tail : 1
o Dr.Stone : 1
o Haikyuu!! : 1
o Toriko : 1
o Shokugeki no Soma : 1
15 Toriko 10 Toriko
Link: https://drive.google.com/drive/folders/13RQBFJcABu6fJPTRLJrwtlRuwrwEWlTN
Đặc điểm:
Đặc trưng các ảnh
- Về đối tượng:Nhân vật hoạt hình.
+ Hình dạng: hình dáng tư thế, chân dung , cận mặt của nhân vật
+ Màu sắc: Ảnh nhân vật hoạt hình thì có 1 vài màu sắc chủ đạo và là màu cơ bản và tách
biệt rõ ràng về màu sắc trên đối tượng
- Nền:
Ảnh của các nhân vật hoạt hình đã được tách nền, chỉ còn để lại chủ thể là các nhân vật
hoạt hình
- Kết cấu ảnh:
Giống nhau : Mỗi bức ảnh đều có 1 đối tượng là 1 nhân vật hoạt hình
Về hình dáng và màu sắc của nhân vật kết cấu trong mỗi bức ảnh có thể giống nhau.
Ví dụ
Về màu sắc: Một số nhân vật hoạt hình có màu sắc phân bố khá giống nhau
Khác nhau:
Hình dáng đặc trưng và màu sắc đặc trưng của mỗi nhân vật hoạt hình khác nhau
Ví dụ
Kid có màu tóc đen và luôn mắc vest trong khi Senku có màu tóc trắng
Màu sắc chủ đạo của bức ảnh (màu sắc đặc trưng của nhân vật hoạt hình),
Ví dụ :
Khác nhau ở kết cấu của bức ảnh ( độ tương phản, entropy, độ đồng nhất, tổng trung bình
xác suất của các mức xám, …)
→ Do các nhân vật có những đặc trưng về màu sắc riêng nên ma trận màu, véc-tơ màu
của các nhân vật cũng sẽ khác nhau→ Bọn em sử dụng thuộc tính màu sắc cho bài toán
này
2. Hãy tìm hiểu các kỹ thuật xử lý và tìm kiếm ảnh hiện hành.
Về nguyên tắc sử dụng thì hệ thống của bạn sẽ gửi các dữ liệu cần search lên server
Elasicsearch thông qua http request, các dữ liệu này sẽ được lưu dưới dạng các
documents, đồng thời dữ liệu sẽ được đánh index giống các database khác để tăng tốc độ
tìm kiếm, nhưng khác với các database khác, Elasticsearch , sử dụng một cấu trúc được
gọi là inverted index - khác với Btree của Mysql, dữ liệu sẽ được tách ra thành các token
và được lưu lại,
Analysis là gì?
Analysis là một quá trình được tự động thực hiện để phân tích dữ liệu trước khi lưu vào
inverted index trong Elasticsearch sử dụng các analyzer. Ví dụ khi phân tích một đoạn
text, quá trính này sẽ thực hiện các bước sau:
Trước khi đi vào chi tiết của từng bước, hình dưới đây sẽ mô tả tổng quan quá trình phân
tích của đoạn text có nội dung "share your experience with NoSql & big data
technologies" sử dụng một analyser gồm một chararacter filter, một tokenizer, và 3
token filters
Bước 1: Character filtering
Đây là bước đầu tiên của quá trình analysis, ở bước này, các ký tự sẽ được chuyển đổi
thành dữ liệu cho phù hợp với yêu cầu search của bạn sử dụng các Character filters , quá trình
nãy sẽ giúp bạn xử lý cho các trường hợp như muốn loại bỏ các thẻ/ký tự của HTML trong
đoạn text, chuyển các ký tự thành từ có nghĩa như “I love u 2” thành “I love you too”. Ở ví
dụ trên charater filter đã chuyển đổi ký tự "&" thành từ "and", vì vậy khi bạn tìm kiếm với từ
khóa "and" thì dữ liệu chứa ký tự "&" sẽ được liệt kê ra, một điều khó có thể thực hiện khi
search với các câu lệnh sql
Sau khi đoạn text đã được xử lý chuyển đổi các ký tự xong, nó sẽ được phân tách
thành các tokens độc lập sử dụng các tokenizers. Elasitcsearch cung cấp rất nhiều tokenizers
để phục vụ cho yêu cầu bài toán của bạn, ví dụ như whitespace tokenizer sẽ tách đoạn text
thành các tokens dựa váo các khoảng trắng whitespace: "artic region" sẽ output ra 2
token artic, region, hoặc letter tokenizer sẽ tách đoạn text thành các token dựa vào
whitespace và các ký tự đặc biệt: "sun-asterisk company" sẽ có output là 3 tokens sun,
asterisk, company
Sau khi đoạn text được tách và cho ra output là các tokens, các tokens này sau đó sẽ
được đưa vào một hoặc nhiều các Token filters, tại đây các tokens sẽ được xóa bợt, thêm
hoặc chỉnh sửa tùy vào loại token filter. Các token này sẽ hữu ích trong trường hợp bạn muốn
chuyển các token về dạng lowercase và ngược lại, hoặc có thể thêm token mới "tools" như ở
ví dụ trên. Một analyzer có thể có không hoặc nhiều token filters
Sau khi các token đã đi qua 0 hoặc nhiều token filters chúng đã được gửi tới Lucene để
được lập đánh index. Một analyzer sẽ bao gồm không hoặc nhiều character filters, một
tokenizer, và không hoặc nhiều token filters
Tùy thuộc vào loại query bạn sử dụng, analyzer này cũng có thể được áp dụng cho tìm kiếm
văn bản trước khi search được thực hiện. Đặc biệt, các query chứa các truy vấn match và
match_phrase thực hiện analysis trước khi thực hiện tìm kiếm, để xử lý dữ liệu trước, nhờ
vậy thì kết quả tìm kiếm trả về sẽ chính xác hơn và việc tìm kiếm cũng nhanh hơn.
Ưu điểm và nhược điểm của Elasticsearch
• Elasticsearch được thiết kế cho mục đích tìm kiếm là chính. Do đó, đối với những
nhiệm vụ, chức năng khác, Elasticsearch sẽ đáp ứng kém hơn so với những phần mềm,
công cụ chuyên dụng khác.
• Đối với một số truy vấn nặng, độ trễ của Elasticsearch sẽ tăng rất nhiều lần.
• Để khai thác được chức năng của Elasticsearch một cách tối ưu nhất, bạn sẽ cần:
• Có rất nhiều kiến thức chuyên môn
• Thông thạo ngôn ngữ lập trình Java
• Một trong những điểm đáng lưu tâm khác: Elasticsearch không có khái niệm
database transaction. Vì thế, tính toàn vẹn của dữ liệu sẽ không được đảm bảo và bạn
không nên sử dụng vào database chính của mình.
Nếu ứng dụng, hệ thống của bạn cần phải thường xuyên cập nhật dữ liệu, Elasticsearch
sẽ bộc lộ nhược điểm gây tốn kém tài nguyên cho việc index dữ liệu
3. XÂY DỰNG HỆ THỐNG NHẬN DẠNG VÀ TÌM KIẾM ẢNH NHÂN VẬT
HOẠT HÌNH
3.1 Sơ đồ khối của hệ thống và quy trình thực hiện yêu cầu
3.1.1 Sơ đồ khối
+ Trích xuất đặc trưng của từng bức ảnh trong kho dữ liệu ảnh nhân vật hoạt hình
+ Lưu các đặc trưng được trích xuất thành các vector
+ Trích xuất đặc trưng của ảnh đó và lưu vào một vector
c. Luồng so sánh
+ So sánh độ tương đồng hoặc khoảng cách giữa vector của ảnh cần truy vấn với các
vector được trích xuất ra từ kho dữ liệu
4. Trình bày các thuộc tính được sử dụng để nhận dạng ảnh nhân vật hoạt hình trong
hệ thống, cùng các kỹ thuật để trích rút các thuộc tính đó.
- Thuộc tính được sử dụng là màu sắc
- Các bước để trích rút thuộc tính là:
+ Bước 1: Tiền xử lý
+ Bước 2: Trích rút đặc trưng và lập chỉ mục hình ảnh
4.1 Tiền xử lý
- Như đã trình bày ở trên, thay vì sử dụng mô hình màu RGB sẽ sử dụng mô hình
màu HSV để tăng độ chính xác cho bài toán nhận diện ảnh dựa trên màu sắc. Vậy
nên, chuyển đổi ảnh RGB sang HSV.
- Ban đầu ảnh thuộc hệ RGB. Nhóm thực hiện chuyển đổi tuyến tính từ RGB sang
HSV theo công thức dưới đây:
Tính Hue:
Tính Saturation:
Tính Value:
4.2 Trích rút đặc trưng và lập chỉ mục hình ảnh
Thực hiện tính toán biểu đồ màu dạng xác suất cho ảnh đầu vào:
- Chọn số lượng bin cho biểu đồ màu (khi ta chia miền giá trị thành các phần,mỗi
phần là 1 bin)
+ Nếu chọn ít bin, thì biểu đồ sẽ có ít thành phần hơn và không thể phân
biệt giữa hình ảnh với sự phân bố màu sắc khác nhau đáng kể.
+ Còn nếu chọn quá nhiều bin, biểu đồ sẽ có nhiều thành phần và hình ảnh
có nội dung khác nhau mặc dù ở thực tế chúng là giống nhau.
Chọn 8 bins trên kênh Hue, 12 bins trên kênh Saturation, 3 bins trên kênh Value
=> Vectơ đặc trưng có 3 x 12 x 8 = 288 phần tử.
- Chia vùng ảnh: Nhận thấy khu vực trung tâm của hình ảnh là khu vực quan trọng
nhất của nhiếp ảnh. Chúng ta thường tập trung các bức ảnh của mình vào đối
tượng để làm cho bức ảnh trở nên thẩm mỹ nhất có thể. Vậy nên, chia hình ảnh
thành 5 vùng: góc trên trái, góc trên phải, góc dưới phải, góc dưới trái và trung tâm
của hình ảnh.
- Sử dụng mặt nạ cho từng vùng ảnh vừa được chia. Mặt nạ che đi những phần không
muốn tính toán. Tại các điểm ảnh có giá trị 255 (màu trắng) thì mới được đưa vào
tính toán biểu đồ, các điểm ảnh có giá trị 0 (màu đen) thì bỏ qua.
- Trích xuất biểu đồ màu theo thứ tự 1, 2, 3, 4, 5 như cách chia ở trên bằng cách: sử
dụng hình ảnh muốn trích xuất đặc trưng làm đối số đầu tiên, mặt nạ đại diện cho
vùng muốn mô tả làm đối số thứ 2. Biểu đồ trả về là biểu đồ biểu diễn cho vùng
hiện tại và bình thường hóa biểu đồ màu và lưu vào danh sách vectơ đặc trưng.
+ Bình thường hóa biểu đồ màu: Chuyển biểu đồ màu từ dạng tần xuất
sang xác xuất. Để mỗi biểu đồ được biểu thị bằng tỷ lệ phần trăm tương
đối cho một bin cụ thể chứ không phải số nguyên cho mỗi bin. Và các
hình ảnh có nội dung tương tự nhưng kích thước khác nhau đáng kể vẫn
sẽ là tương tự nhưmột khi chúng ta áp dụng chức năng tương tự.
Vectơ đặc trưng biểu diễn cho mỗi vùng trong 5 vùng hình ảnh đã chia.
Mỗi phần được biểu thị bằng 1 biểu đồ với 8 x 12 x 3 = 288 phần tử (tương
ứng với vector đặc trưng cho từng vùng với 288 chiều). Nối 5 vector đặc
trưng trên lại với nhau ta thu được vectơ đặc trưng của hình ảnh với 288 x
5 = 1440 chiều.
Vậy mỗi hình ảnh biểu diễn bằng 1 vector đặc trưng 1440 chiều.
- Từ vectơ đặc trưng, nhóm xây dựng chỉ mục phục vụ cho nhận diện ảnh gồm
có id_image và vectơ đặc trưng.
5. Trình bày cách lưu trữ và quản lý các thuộc tính ảnh nhân vật hoạt hình và cách
nhận dạng, tìm kiếm các ảnh trong CSDL dựa trên các thuộc tính đó.
5.1 Lưu trữ và quản lý các thuộc tính
- Sau khi trích xuất đặc trưng thì dữ liệu của mỗi bức ảnh sẽ được lưu vào một
vector và các vector này được lưu và xuất ra files csv
5.2 Truy vấn ảnh
5.2.1 Bước 1: Nhập ảnh đầu vào mà cần truy vấn
5.2.2 Bước 2: Trích xuất xuất đặc trưng về màu sắc của bức ảnh đó
5.2.3 Bước 3: Lưu cái đặc trưng vừa được trích xuất vào một vector
5.2.4 Bước 4: So sánh độ tương đồng giữa 2 vector đặc trưng ảnh truy vấn và ảnh
trong CSDL
- Để kiểm tra độ tương đồng giữa ảnh truy vấn và các ảnh sẵn có trong CSDL
thì nhóm tính bình phương khoảng cách giữa vectơ đặc trưng của ảnh truy vấn
và ảnh trong CSDL.
Trong đó: 𝑎𝑖, 𝑏𝑖 lần lượt là từng giá trị của vectơ đặc trưng A ,
Beps = 1e-10 để tránh việc chia cho 0
n số chiều của vector đặc trưng (trong bài n = 1440)
Giải thích: Công thức dựa trên thống kê kiểm tra chi bình phương của Pearson
được sử dụng để so sánh phân phối xác suất rời rạc. Do đang so sánh biểu đồ
màu theo phân phối xác suất xác định nên hàm chi bình phương sẽ cho kết
quả tốt hơn cả
+ Khi khoảng cách bằng 0 thì 2 ảnh được coi là giống hệt nhau
+ Khi khoảng cách càng lớn hơn 0 thì độ tương tự càng ít và 2 ảnh ít giống
nhau hơn
- Sắp xếp kết quả theo thứ tự tăng dần (hình ảnh càng giống với ảnh truy vấn ở
đầu danh sách)
Bước 5: Đưa ra những bức ảnh có khoảng cách là thấp nhất (khoảng cách giữa 2 vector)