Ghép hình ảnh mới từ tính toán SVD / PCA


16

Tôi đang cố gắng sao chép các ý tưởng từ trang Eigenface trên wikipedia. Từ một trăm hình ảnh mẫu được biểu thị bằng ma trận dữ liệu (trong đó mỗi hình ảnh được làm phẳng thành một vectơ có độ dài , do đó là ma trận by ), tôi đã tính toán phân tách SVD:XnX100n

X=UΣVT

vì thế:

XXT=UΣ2UT

Bằng cách lấy một tập hợp con của các mã nguồn lớn nhất , tôi có thể tính gần đúng ma trận (let ):qσ1σ2

Xσ1u1v1T+σ2u2v2T++σquqvqT

Ngay bây giờ cho một vector mới , đại diện cho một hình ảnh không trong , làm thế nào để xác định trọng số của vector riêng đại diện tốt nhất hình ảnh mới của tôi ? Ngoại trừ các trường hợp bệnh lý, đại diện này là duy nhất?yXqUy

Nói tóm lại, điều tôi muốn làm là điều này (từ trang wiki):

Các không gian riêng này hiện có thể được sử dụng để thể hiện cả khuôn mặt hiện tại và khuôn mặt mới : chúng ta có thể chiếu hình ảnh mới (bị trừ trung bình) trên không gian riêng và từ đó ghi lại khuôn mặt mới đó khác với khuôn mặt trung bình như thế nào.

Làm thế nào để tôi thực hiện chiếu đó?


1
Độc giả tương lai có thể thấy việc thực hiện này có giá trị.
Emre

Câu trả lời:


11

"Phép chiếu" được gọi là phép chiếu vectơ . Để tính toán hình chiếu của vectơ lên vectơ , bạn sử dụng sản phẩm bên trong của hai vectơ:ab

aproj=a,bb

aproj trong trường hợp này là thành phần vectơ của nằm cùng hướng với . Trong không gian Euclide, toán tử sản phẩm bên trong được định nghĩa là sản phẩm chấm của chúng :ab

a,b=ab=i=1naibi

Trong đó là số thành phần trong các vectơ và và và là thành phần thứ của vectơ và . Theo trực giác, bằng cách tính tích bên trong của hai vectơ, bạn tìm thấy "bao nhiêu" vectơ đi theo hướng của vectơ . Lưu ý rằng đây là đại lượng đã ký, vì vậy giá trị âm sẽ có nghĩa là góc giữa hai vectơ lớn hơn 90 độ, như được minh họa bằng một định nghĩa thay thế cho toán tử chiếu:nabaibiiabab

aproj=|a|cos(θ)b

trong đó là góc giữa hai vectơ.θ

Vì vậy, với một vectơ và một loạt các vectơ cơ sở , người ta có thể tìm thấy "bao nhiêu " đi theo mỗi hướng của mỗi vectơ cơ sở. Thông thường, các vectơ cơ sở đó sẽ là trực giao lẫn nhau. Trong trường hợp của bạn, SVD là một phân tách trực giao, vì vậy điều kiện này cần được thỏa mãn. Vì vậy, để thực hiện những gì bạn mô tả, bạn sẽ lấy ma trận của hàm riêng và tính sản phẩm bên trong của vectơ ứng cử viên với mỗi cột của ma trận:abiaUy

pi=yui

Giá trị vô hướng mà bạn nhận được từ mỗi sản phẩm bên trong thể hiện mức độ của vectơ "xếp hàng" với trình xác định thứ . Vì các hàm riêng là trực giao , nên sau đó bạn có thể xây dựng lại vectơ gốc như sau:piyiy

y=i=1npiui

Bạn hỏi liệu đại diện này là duy nhất; Tôi không chắc chính xác ý của bạn là gì, nhưng nó không phải là duy nhất theo nghĩa là một vectơ đã cho có thể bị phân tách bằng cách chiếu lên bất kỳ số lượng cơ sở trực giao nào. Các hàm riêng có trong ma trận là một ví dụ như vậy, nhưng bạn có thể sử dụng bất kỳ số lượng nào khác. Chẳng hạn, việc tính toán biến đổi Fourier rời rạc của có thể được xem như chiếu nó lên một cơ sở trực giao của các vectơ hàm mũ phức tạp có tần số khác nhau.yUy


Câu trả lời tuyệt vời cảm ơn! Đối với "duy nhất", tôi có nghĩa là duy nhất theo nghĩa cơ sở được đưa ra bởi SVD. Tôi đoán rằng đã đưa ra một cơ sở trực giao, thì bạn tính toán phải là duy nhất - nhưng nếu cơ sở không trực giao thì có thể không (vì nếu chúng không trực giao, thì chúng ta có thể tìm thấy một cơ sở nhỏ hơn )? y
Hooked

Vẫn không chắc chắn những gì bạn đang nhận được. là vectơ mà bạn đã chưng cất hình ảnh mới của mình xuống, do đó, nó chỉ duy nhất như hình ảnh gốc và quá trình bạn sử dụng để xác định vectơ tương ứng. Một cơ sở không gian vectơ theo định nghĩa bao gồm các vectơ độc lập tuyến tính, bắt buộc tính chất của tính trực giao lẫn nhau. Bạn lưu ý chính xác rằng nếu bạn chiếu lên một tập các vectơ không đối xứng, bạn có thể đưa ra một biểu diễn nhỏ gọn hơn nếu không gian được kéo dài bởi các vectơ có chiều hướng bên dưới ít hơn (cơ sở nhỏ hơn). yyy
Jason R
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.