چهره های ویژه ( به انگلیسی: Eigenface ) به یک سری از بردارویژه ها گفته می شود که برای حل مسئله تشخیص چهره در بینایی ماشین استفاده می شوند. [ ۱] این روش توسط Sirovich and Kirby ابداع شده است. [ ۲] [ ۳] بردار ویژه های استفاده شده در این روش با استفاده از ماتریس کوواریانس داده های در ابعاد بالا تولید می شوند. این روش به ما کمک می کند تا داده ها را از بعد بالا به یک بعد پایین تر بیاوریم.
برای تولید بردار ویژه های کافی که فضای مسئله را توصیف کنند نیاز به داده های چهره های انسان داریم که از نظر شرایط نوری و زاویه دید و محل قرارگیری چهره و اجزای آن مانند بینی و چشم شرایط مشابهی داشته باشند. ما از روش بررسی مولفه های اصلی ( به انگلیسی: : Principal Component Analysis ) یا PCA استفاده می کنیم. [ ۴]
در واقع چهره های به دست آمده از PCA یک سری پایه برای فضای تمامی چهره ها می توان در نظر گرفت به طوری که تمامی چهره ها را به صورت ترکیب خطی مولفه های اصلی می نویسیم. این روش ها قابل استفاده در کاربرد های دیگر همچون لب خوانی، تشخیص صوت و تشخیص دست نوشته نیز است.
درواقع اگر بخواهیم پنچ گام اصلی به دست آوردن چهره های ویژه را توصیف کنیم به صورت زیر است:
• آماده کردن یک مجموعه از داده که شرایط ذکر شده ( نوری، زاویه دید و. . . ) را داشته باشند
• میانگین داده ها را صفر میکنیم. ( با کم کردن عکس میانگین از تمامی عکس های مجموعه داده ها )
• بردار ویژه و مقدار ویژه های ماتریس کوواریانس را حساب می کنیم.
• مولفه های اصلی به ترتیب مربوط به بزگرترین مقادیر ویژه هستند و آن ها را با مرتب سازی به دست می آوریم. جمع مقادیر ویژه را ν {\displaystyle \nu } می نامیم.
• k را پیدا می کنیم به طوری که ( λ 1 + λ 2 + . . . + λ k ) v > ϵ {\displaystyle {\displaystyle {\frac { ( \lambda _{1}+\lambda _{2}+. . . +\lambda _{k} ) }{v}}> \epsilon }} بیشتر شود. اپسیلون بستگی به مقدار دقت ما قابل تنظیم است.
import numpy as np import math #gamma_v is the dataset images mean_vector = np. mean ( gamma_v, axis = 1 ) phi = for i in range ( OBSERVATION ) : phi. append ( gamma_v - mean_vector ) phi = np. array ( phi ) . T gram = phi. T @ phi v, s_2, v_T = np. linalg. svd ( gram ) indices = s_2. argsort ( ) v = v] #A = u s vT => u = A v sT u = phi @ v @ np. linalg. inv ( np. diag ( np. sqrt ( s_2 ) ) ) eigen_face = u print ( eigen_face ) نمونه کد متلب clear all; close all; load yalefaces = size ( yalefaces ) ; d = h * w; % vectorize images x = reshape ( yalefaces, ) ; x = double ( x ) ; % subtract mean mean_matrix = mean ( x, 2 ) ; x = bsxfun ( @minus, x, mean_matrix ) ; % calculate covariance s = cov ( x' ) ; % obtain eigenvalue & eigenvector = eig ( s ) ; eigval = diag ( D ) ; % sort eigenvalues in descending order eigval = eigval ( end: - 1:1 ) ; V = fliplr ( V ) ; % show mean and 1st through 15th principal eigenvectors figure, subplot ( 4, 4, 1 ) imagesc ( reshape ( mean_matrix, ) ) colormap gray for i = 1:15 subplot ( 4, 4, i + 1 ) imagesc ( reshape ( V ( :, i ) , h, w ) ) end محسابه بهینه بردار ویژه خیلی از اوقات محسابه بردارویژه ها هزینه بر و عملا غیر ممکن است. زیرا اندازه ماتریس کوواریانس برابر با n 2 که n تعداد پیکسل های عکس است می شود. برای حل این مشکل از رویکرد زیر استفاده می کنیم.

این نوشته برگرفته از سایت ویکی پدیا می باشد، اگر نادرست یا توهین آمیز است، لطفا گزارش دهید: گزارش تخلفبرای تولید بردار ویژه های کافی که فضای مسئله را توصیف کنند نیاز به داده های چهره های انسان داریم که از نظر شرایط نوری و زاویه دید و محل قرارگیری چهره و اجزای آن مانند بینی و چشم شرایط مشابهی داشته باشند. ما از روش بررسی مولفه های اصلی ( به انگلیسی: : Principal Component Analysis ) یا PCA استفاده می کنیم. [ ۴]
در واقع چهره های به دست آمده از PCA یک سری پایه برای فضای تمامی چهره ها می توان در نظر گرفت به طوری که تمامی چهره ها را به صورت ترکیب خطی مولفه های اصلی می نویسیم. این روش ها قابل استفاده در کاربرد های دیگر همچون لب خوانی، تشخیص صوت و تشخیص دست نوشته نیز است.
درواقع اگر بخواهیم پنچ گام اصلی به دست آوردن چهره های ویژه را توصیف کنیم به صورت زیر است:
• آماده کردن یک مجموعه از داده که شرایط ذکر شده ( نوری، زاویه دید و. . . ) را داشته باشند
• میانگین داده ها را صفر میکنیم. ( با کم کردن عکس میانگین از تمامی عکس های مجموعه داده ها )
• بردار ویژه و مقدار ویژه های ماتریس کوواریانس را حساب می کنیم.
• مولفه های اصلی به ترتیب مربوط به بزگرترین مقادیر ویژه هستند و آن ها را با مرتب سازی به دست می آوریم. جمع مقادیر ویژه را ν {\displaystyle \nu } می نامیم.
• k را پیدا می کنیم به طوری که ( λ 1 + λ 2 + . . . + λ k ) v > ϵ {\displaystyle {\displaystyle {\frac { ( \lambda _{1}+\lambda _{2}+. . . +\lambda _{k} ) }{v}}> \epsilon }} بیشتر شود. اپسیلون بستگی به مقدار دقت ما قابل تنظیم است.
import numpy as np import math #gamma_v is the dataset images mean_vector = np. mean ( gamma_v, axis = 1 ) phi = for i in range ( OBSERVATION ) : phi. append ( gamma_v - mean_vector ) phi = np. array ( phi ) . T gram = phi. T @ phi v, s_2, v_T = np. linalg. svd ( gram ) indices = s_2. argsort ( ) v = v] #A = u s vT => u = A v sT u = phi @ v @ np. linalg. inv ( np. diag ( np. sqrt ( s_2 ) ) ) eigen_face = u print ( eigen_face ) نمونه کد متلب clear all; close all; load yalefaces = size ( yalefaces ) ; d = h * w; % vectorize images x = reshape ( yalefaces, ) ; x = double ( x ) ; % subtract mean mean_matrix = mean ( x, 2 ) ; x = bsxfun ( @minus, x, mean_matrix ) ; % calculate covariance s = cov ( x' ) ; % obtain eigenvalue & eigenvector = eig ( s ) ; eigval = diag ( D ) ; % sort eigenvalues in descending order eigval = eigval ( end: - 1:1 ) ; V = fliplr ( V ) ; % show mean and 1st through 15th principal eigenvectors figure, subplot ( 4, 4, 1 ) imagesc ( reshape ( mean_matrix, ) ) colormap gray for i = 1:15 subplot ( 4, 4, i + 1 ) imagesc ( reshape ( V ( :, i ) , h, w ) ) end محسابه بهینه بردار ویژه خیلی از اوقات محسابه بردارویژه ها هزینه بر و عملا غیر ممکن است. زیرا اندازه ماتریس کوواریانس برابر با n 2 که n تعداد پیکسل های عکس است می شود. برای حل این مشکل از رویکرد زیر استفاده می کنیم.


wiki: ویژه چهره