Mô hình lập chỉ mục PSVQ

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu cải tiến kỹ thuật phát hiện và thay thế đối tượng trong video (Trang 72 - 76)

6. Cấu trúc luận án

2.2.1. Mô hình lập chỉ mục PSVQ

Tập ảnh tư thế huấn luyện của một đối tượng sau khi truyền qua mạng YOLO-Adv cho ra một tập dữ liệu gồm vector đặc trưng trong không gian vector đặc trưng D (D=4096) chiều 𝑅(𝐷) được ký hiệu là tập X. Ký hiệu 𝑥 ∈ 𝑋

là một vector hay điểm dữ liệu trong tập dữ liệu X. Ngoài ra, ký hiệu 𝑥(𝑗) ∈ 𝑅(𝑚𝐷)

là vector con thứ j của x với j=1,2, … m.

Như đã được trình bày chi tiết trong mục 1.2, với phương pháp lượng tử hóa tích đề các (PQ), không gian dữ liệu gốc X trước hết được chia thành m

không gian con phân biệt tách rời nhau. Như vậy, một vector 𝑥 ∈ 𝑋 được chia thành m vector con: 𝑥(1), 𝑥(2), … 𝑥(𝑚), mỗi vector con này có số chiều là D/m. Tiếp theo VQ được áp dụng cho các vector con trong từng không gian con này một cách rời rạc để tạo ra cho mỗi không gian con này một codebook. Gọi 𝐶𝑗

𝑘 ≤ 𝐾, một bộ lượng tử thấp 𝑞𝑗(𝑥(𝑗)) ánh xạ một vector đầu vào 𝑥(𝑗) ∈ 𝑅(𝑚𝐷)

trong codebook 𝐶𝑗 được định nghĩa như sau :

𝑞𝑗(𝑥(𝑗)) = argmin 𝑐𝑗,𝑘∈𝐶𝑗

𝑑(𝑥(𝑗), 𝑐𝑗,𝑘) (2.8)

Trong đó 𝑐𝑗,𝑘 là codeword thứ k của 𝐶𝑗 và d(,) là khoảng cách Euclid giữa hai điểm dữ liệu. Nói cách khác, lượng tử hóa vector con 𝑥(𝑗) bởi bộ lượng tử thấp 𝑞𝑗 là đưa ra chỉ số của codeword trong 𝐶𝑗 mà gần với y nhất theo khoảng cách Euclid.

Để giải quyết vấn đề còn hạn chế về mối tương quan dữ liệu giữa các không gian con không được xem xét dẫn tới sự dưa thừa các codeword trong PQ, Hierarchical product quantization (HPQ) là giải pháp nhóm tất cả các tập vector con sau khi được phân hoạch thành các không gian con khác nhau thành một nhóm trước khi phân hoạch lần 2 thành m nhóm bằng các giải thuật phân cụm (như Kmeans). Lúc này mới lượng tử hóa từng nhóm con tạo ra m

codebook khác nhau. Như vậy tất cả các điểm dữ liệu tương tự nhau được dồn vào cùng một nhóm và có một codeword đại diện cho nó.

Dựa trên ý tưởng của HPQ, PSVQ được phát triển. Ý tưởng chính của PSVQ là sau khi phân hoạch không gian vector đặc trưng gốc thành m không gian vector con thì gom các vector con trong h không gian liền kề nhau thành các nhóm không gian lớn hơn sau đó áp dụng phép lượng tử hóa vector cho các không gian con này. Cụ thể kết hợp h (1 ≤ ℎ ≤ 𝑚) không gian liền kề nhau tạo thành _𝑚 = 𝑚/ℎ không gian con và thực hiện lượng tử hóa riêng biệt trên _𝑚

tập con vừa hình thành này với _𝑚 bộ lượng tử thấp. Như vậy, mỗi không gian con lúc này có _𝐾 = ℎ × 𝐾 tâm cụm. Do đó, sẽ có một vài không gian con chia sẻ cùng một bộ lượng tử, vì vậy tạo ra các phân rã mịn hơn trên dữ liệu ban đầu trong khi không làm gia tăng số lượng các codeword (vì chỉ có tất cả _𝑚 × _𝐾 = 𝑚 × 𝐾 codeword). Lượng tử hóa một vector con 𝑥(𝑗) thuộc không gian thứ j

(0 ≤ 𝑗 < 𝑚) lúc này được xử lý bởi 𝑞𝑖(∗)(𝑥(𝑗)), với 𝑖 = ⌊𝑗/ℎ⌋ + 1 và (1 ≤ 𝑖 ≤ 𝑚(∗)) được định nghĩa như sau :

𝑞𝑖(∗)(𝑥(𝑗)) = argmin 𝑐𝑖,𝑘∈𝐶𝑖∗

𝑑(𝑥(𝑗), 𝑐𝑖,𝑘) (2.9)

Trong đó 1 ≤ 𝑘 ≤ _𝐾, _𝐶𝑖 là codebook con được huấn luyện trên tập dữ liệu với 𝑛 × ℎ điểm dữ liệu được nhóm từ không gian con thứ (𝑠 + 1) đến không gian con (𝑠 + ℎ) với 𝑠 = (𝑖 − 1) × ℎ.

Tất cả các tiến trình tạo ra bộ codebook được mô tả trên có thể được biểu diễn qua thuật toán 2.4. Thuật toán có đầu vào là tập vector đặc trưng X, và một số tham số khác, thực thi tiến trình huấn luyện và tạo ra _m {_𝐶𝑖 } codebook, mỗi codebook này chứa _K codeword con.

Thuật toán 2.4. TrainPSVQ(m, X, h, K)

Đầu vào:m là số lượng codebook, X là tập dữ liệu gốc, h là số không gian con được gộp với nhau, K là số tâm cụm trong mỗi codebook.

Đầu ra: Danh sách m/h codebook 1: _m ← m/h 2: _K←h x K 3: L←Ø 4: Chia X thành m tập con: X1, X2, …, Xm 5: fori:=1to _mdo 6: s←(i-1) x h

7: Y ← gộp h không gian con liền kề nhau {Xs+1, Xs+2, …, Xs+h}

8: _𝐶𝑖 Kmeans(Y, _K) {áp dụng Kmeans trên tập con Y tạo ra _K tâm cụm, và _𝐶𝑖 là một codebook con chứa _K tâm cụm này}

9: L← Append (L, _𝐶𝑖 ) {nối _𝐶𝑖 vào danh sách L} 10: end for

11: return L {L là một mảng chứa _m codebook, một codebook chứa _K

codeword}

Vì đây là quá trình huấn luyện thực hiện offline nên thời gian thực thi không phải là vấn đề được quan tâm nhiều, do đó nó không được phân tích và đánh giá trong luận án này.

Sau khi các codebook {_𝐶𝑖 } được tạo ra, tiến trình lượng tử hóa một vector x thuộc không gian R(D)được tiến hành như sau:

Chia x thành m vector con x(j) với 0 ≤ j < m giống như trong PQ. Với mỗi vector con x(j):

Tìm chỉ số của codeword trong codebook {_𝐶𝑖 }(𝑖 = ⌊𝑗/ℎ⌋ + 1) gần với

xj nhất theo khoảng cách Euclidean:

𝑘 ← argmin 1≤𝑗≤𝑚

𝑑(𝑥(𝑗), _𝐶𝑖 ) (2.10)

k được xem là một mã lượng tử của 𝑥(𝑗):

qj(𝑥(𝑗)) ← k (2.11) Nối các chỉ số tạo ra một mã lượng tử đầy đủ của x:

q(x) {q1(𝑥(1)), q2(𝑥(2)), …, qm(𝑥(𝑚))} (2.12)

Chi tiết các bước tạo ra một mã lượng tử cho vector 𝑥 trên được mô tả bằng thuật toán 2.5. Đầu tiên vector đầu vào được chia thành 𝑚 vector con. Với mỗi vector con, khoảng cách Euclid được tính từ mỗi vector con đến tất cả các codeword con của codebook tương ứng. Tâm cụm có khoảng cách bé nhất được chọn như là mã lượng tử con. Cuối cùng nối tất cả các mã lượng tử con này lại hình thành một vector lượng tử đầy đủ của 𝑥.

Thuật toán 2.5. GenPQCode(𝑥, ℒ)

Đầu vào: Vector 𝑥 ∈ 𝑅𝐷 và một danh sách các codebook (ℒ)

Đầu ra: Mã lượng tử của 𝑥

1: m ← length (ℒ) {số lượng không gian con} 2: Chia x thành m vector con: a1(x), a2(x), …, am(x)

3: fori:=1tom do

4: 𝑆 ← ℒ𝑖 {codebook con thứ i của ℒ}

5: k ← length (𝑆) {số lượng codeword trong S} 6: 𝑞𝑖(𝑥) ← argmin

1≤𝑖≤𝑚

𝑑(𝑎𝑖(𝑥), 𝑆𝑖) {theo phương trình 2.10, 𝑆𝑖 là codeword con thứ i của Sd(,) là khoảng cách Euclidean}

7: end for

8: q(x) {q1(x), q2(x), …, qm(x)} {theo phương trình 2.12} 9: returnq(x)

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu cải tiến kỹ thuật phát hiện và thay thế đối tượng trong video (Trang 72 - 76)

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

(138 trang)