احراز هویت بر اساس چهره

تغییرات پروژه از تاریخ 1394/04/10 تا حالا
هدف از انجام این پروژه طراحی و پیاده سازی یک سیستم است که تصویر دو چهره ورودی که برای احراز هویت به آن داده میشود را با هم مقایسه کرده و عددی را به عنوان میزان تشابه آن دو چهره برگرداند. سپس برای پذیرش احراز هویت، یک آستانه را برای میزان شباهت تعیین کند که اگر میزان شباهت از آن مقدار بیشتر بود، سیستم آن مقایسه را به عنوان تطبیق بپذیرد و در غیر اینصورت آن را رد کند. این حد آستانه باید به گونه ای باشد که خطا روی پایگاه داده آزمون، کمترین میزان باشد. منظور از خطا، جمع مقدار FAR[^False Accept Rate] و FRR[^False Reject Rate] می‌باشد. 

* برای دریافت داده‌های آموزش و آزمون لطفا به آزمایشگاه دکتر آنالویی مراجعه نمایید. 



----------
##1.مقدمه
تشخیص هویت انسان بر اساس چهره [^face recognition]یکی از مسایل مهمی  است که از  پنجاه سال گذشته ذهن بشر را به خود مشغول کرده است.ما هر روز این کار را بار ها و بار ها تکرار می کنیم و از این روند در تشخیص اطرافیانمان استفاده می کنیم.
امروزه با پیشرفت روز افزون فناوری اطلاعات [^IT] و گسترش آن در بین مردم نیاز به روشی برای تشخیص هویت افراد توسط یک ماشین به جای انسان و با استفاده از ویژگی های بیومتریک[^biometric] به امری حیاتی تبدیل شده است.اساس این روش ها یکتا بودن بعضی ویژگی های انسان مثل چهره , اثر انگشت , طرز راه رفتن , نحوه تایپ کیبورد , DNA و  بسیاری از صفات دیگر است.اما فراگیر بودن استفاده از چهره برای تشخیص هویت به این علت است که ما نسبت به روش های دیگر داده های مورد نیازمان را به مراتب راحت تر بدست می آوریم, و عموم روش های تشخیص چهره از دقت نسبتا مناسبی برخوردارند.[1]
##1.1تعریف مساله
ما در پژوهش قصد داریم برنامه ای  را پیاده سازی کنیم تا با استفاده از آن میزان شباهت دو تصویر ورودی را دریافت کنیم و با تست داده های یک مجموعه داده[^data set] مقدار آستانه شباهت  برای اینکه دو تصویر متعلق به یک نفر باشد را تعیین کنیم.همچنین سرعت این برنامه نیز برای ما معیار نسبتا مهمی است چراکه ممکن است روی مجموعه داده ی بزرگی تست شود.[2]
![سیستم باید در ازای دو تصویر پاسخ دهد که آیا این تصاویر متعاق به یک نفر است؟!](http://doi.ieeecomputersociety.org/cms/Computer.org/dl/mags/co/2011/03/figures/mco20110300841.gif)
##1.2کاربرد ها
احراز هویت هر فرد توسط یک ماشین میتواند  کاربرد های زیادی در زمینه های امنیتی داشته باشد.
با استفاده از این روش  مشکلاتی از قبیل دزدیده شدن کلمه عبور یا فراموشی آن [3]  و یا سرقت تلفن همراه [4] کمتر به وجود می آیند.همچنین قابلیت مدل کردن یک چهره ی خاص و تمیز دادن آن از یک تعداد فراوان از مدل های چهره ی ذخیره شده ،فرآیند شناسایی مجرمان را به صورت گسترده ای بهبود خواهد بخشید.[5]
##1.3 چالش های پیش رو [6]
1.امکان ثابت نبودن بعضی از عناصر  چهره مثل مو , عینک , ریش و ...   می تواند فرآیند تشخیص را با مشکل مواجه کند.
2.یکسان نبودن نور در محیط های مختلف یکی از مهم ترین مشکلات تشخیص است.
![تفاوت نور در تصاویر](http://upload7.ir/imgs/2014-11/69324157479422818725.png)
3.تفاوت اندازه تصاویر ضبط شده و همچنین متفاوت بودن نسبت چهره به کل اندازه تصویر یکی از چالش های قبل از پردازش است.
4.متفاوت بودن زاویه چهره در  تصاویر  گرد آوری شده یکی از چالش های اجتناب ناپذیر است.
![تفاوت زاویه صورت در تصاویر مختلف](http://upload7.ir/imgs/2014-11/37629542209988154676.png)
5.فراهم کردن یک مجموعه داده مناسب می تواند زمان نسبتا  زیادی را از ما  بگیرد.
##2.کارهای مرتبط
در ادامه به چند مورد از روش هایی که هم اکنون وجود دارد اشاره می کنیم:
Eigenface:از تبدیل Karhunen_Loeves's جهت تولید یکسری بردار ویژه ولی با بعد بسیار کمتر از بعد ماتریس کوواریانس اصلی استفاده می شود.هدف اصلی 
تعریف تصاویر اولیه با یک ترکیب خطی از ماتریس های Eigenface ها از Projection تصاویر اصلی بر روی بردار های ویژه انتخاب شده بدست می آیند.قابلیت 
مهم سیستم سرعت اجزا و پیچیدگی پیاده سازی می باشد ولی در مورد تغییرات شدت نور و زاویه چهره بسیار ضعیف است.
[8,7]
LDA (Linear Discriminant Analysis) : در این روش با استفاده از ساخت ماتریس پراکندگی درون کلاسی اقدام به یکپارگی درون کلاسی و بیرون کلاسی و کاهش فاصله درون کلاسی و افزایش فاصله بین کلاسی اقدام به یکپارچه سازی توزیع داده در زیر فضای بدست آمده نسبت به حالت Eigenfaceانجام می شود از مزیت های این سیستم به توانایی یادگیری دامنه تغییرات درون کلاسی با مهیا سازی تصاویر با تغییرات ویژگی متناظر نام برد ولی برای پیاده سازی یک سیستم متناسب بر این اساس احتیاج به حجم وسیعی از تصاویر بوده که همواره نمی توان تمامی تغییرات را ثبت کرد.
[12]
ICA(Independent Comparative Study): در این مدل اقدام به یافتن بردار پایه ای نموده که تصاویر پس از projection بر روی آنها از لحاظ آماری بی اشتراک بوده که این امر با ماکسیمم سازی
وابستگی درجه دوم و درجه های بالاتر بدست می آید.
[10]
 EBGM: چهره با یک گراف نمایش داده شده که نقاط آن با استفاده از ضرایب wavelet گابور آن نقطه تعریف می گردند.
[10]
AAM(Active Appearance Model):
یک مدل دستی از نقاط مهم و ویژگی های مهم تصویر چهره ساخته شده  و سیستم برای شناسایی اقدام به Fit کردن مدل ساخته شده بر روی تصاویر 
ورودی می کند.مدل ساخته شده با استفاده از تصاویر درون گروه آموزش Deform شده و ویژگی نهایی برای کلاس بندی فاصله و دقت در مرحله Fit و سوار کردن 
مدل بر روی چهره می باشد.از مدل معروف Lucas canade برای این مرحله استفاده می شود.
[10]
LEM(Line Edge Map) :  این الگوریتم یک تکنیک جدید را بر روی نقشه های لبه خط برای انجام تشخیص چهره توضیح می دهد. از ویژگی های فیزیکی دهان, بینی  و چشم ها 
به عنوان کاراکتر های ویژه استفاده می کنند.
[10]
EP(Evolutionary Pursuit):از ویژگی های برجسته چهره فرد مانند گوش بزرگ , ابرو شکسته و ... برای شناسایی استفاده می کند. شبکه عصبی:هویت چهره را با استفاده از الگوریتم های 
شبکه عصبی از جمله MLP و RBF شناسایی می کند.
[10]
ماشین ارتجاعی[^SVM]:ابتدا یک تصویر شناخته شده را درخواست می کند.تصویر باید به اندازه کوچک نرمال شود.از چشم ها و دهان که در جایش واقع شده به عنوان نقاط مرجع برای نرمال کردن استفاده می شود و یک تصویر به صورت استاندارد حاصل می شود.
[11]
##3.مراحل انجام آزمایش
روشی که در اینجا برای احراز هویت استفاده می کنیم روش چهره ویژه ها [^Eigenface] با استفاده از الگوریتم تحلیل مولفه های اصلی [^PCA] است.].چهره ویژه ها  در واقع همان بردارهای ویژه هستند که در مسایل احراز هویت با این نام شناخته می شوند[14].
روش استفاده از چهره ویژه ها برای تشخیص هویت ابتدا توسط کیربی[^Kirby] و سیروویچ[^Sirovich] در سال ۱۹۸۷ توسعه یافت و توسط پنتلند[^Pentland] و تورک [^Turk] جهت کلاسبندی چهره ها به کار رفت.[13]
در این روش ابتدا  مراحل پیش پردازش را  روی تصاویر اجرا می کنیم و ماتریس تصاویر را می سازیم.سپس  کوواریانس[^Covariance] ماتریس تصاویر را بدست آورده و با کمک آن مقادیر ویژه[^Eigenvalues] و بردارهای ویژه[^Eigenvectors] را تعیین می کنیم.در مرحله آزمایش هم تصاویر داده شده را با چهره ویژه ها  مقایسه می کنیم تا ببینیم کدام چهره ویژه ها تصویر داده شده را بهتر توصیف می کنند.
قبل از توضیح کامل این روش مختصری درباره داده های آزمایش و آزمون توضیح می دهیم.
##3.1داده های آزمایش
در این آزمایش برای ساخت چهره ویژه ها نیاز به یک مجموعه داده مناسب است که برای اینکار از پایگاه داده FERET استفاده شده است.پایگاه داده FERET یک مجموعه داده مناسب برای سیستم های احراز هویت است.این پایگاه داده در سال های ۱۹۹۳ تا ۱۹۹۶ گردآوری شد[15].
در این پایگاه داده ۵ نوع تصویر وجود دارند : fa و fb و fc و dup1  و dup 2.
معمولا fa را به عنوان کتابخانه تصاویر استفاده میکنند.fb  و fc در شرایطی نسبتا متفاوت جمع آوری شده اند.(مثل نور پردازی متفاوت)اما دو زیر مجموعه dup1 و dup2 در زمانهای متفاوت گردآوری شده اند.(این تفاوت زمانی بیش از ۲ سال است).
ما نیز در این آزمایش ۴۰ تصویر از زیر مجموعه fa را صرفا برای مرحله یاد گیری و ساخت چهره ویژه ها  به کار می بریم و برای تست سیستم از زیرمجموعه های دیگر استفاده می کنیم.
##3.2 توضیح روش انجام آزمایش
##3.2.1 پیش پردازش :
برای اینکه تصاویر اولیه آماده پردازش شوند باید اعمالی روی آنها صورت گیرد.
۱.اندازه تصاویر :‌در گام اول باید کاری کرد تا تمام تصاویر اندازه یکسانی داشته باشند.
۲.هم ترازی تصاویر : به منظور بهبود کیفیت خروجی باید تصاویر هم تراز[^aligned]  باشند.به عنوان مثال چشم ها و دهان در تصاویر مختلف تقریبا در یک موقعیت باشند.
۳.رنگ تصاویر : در پایگاه داده FERET تعدادی از تصاویر رنگی[^colormap] و تعدادی سیاه سفید [^greyscale] هستند.
تصاویری که در اینجا مورد استفاده ما هستند ویژگی های هم ترازی و هم اندازگی را دارند اما همه آنها سیاه-سفید نیستند و باید به تصاویر سیاه-سفید تبدیل شود.
##3.2.2 تحلیل مولفه های اصلی :
تحلیل مولفه‌های اصلی در تعریف ریاضی یک تبدیل خطی متعامد است که داده را به دستگاه مختصات جدید می برد.به طوری که بزرگترین واریانس داده بر روی اولین محور مختصات، دومین بزرگترین واریانس بر روی دومین محور مختصات قرار می‌گیرد و همین طور برای بقیه. تحلیل مولفه‌های اصلی می‌تواند برای کاهش ابعاد داده  مورد استفاده قرار بگیرد، به این ترتیب مولفه‌هایی از مجموعه داده را که  بیشترین تاثیر در واریانس را دارند حفظ می‌کند.
در اینجا ما قصد داریم مولفه های اصلی را با کمک کوواریانس ماتریس تصاویر بدست آوریم.ماتریس تصاویر را با X  نشان می دهیم و قصد داریم ابعاد آن را از M به L  کاهش دهیم تا به ماتریس جدید Y برسیم.
میانگین تجربی و نرمال سازی داده ها : با استفاده از فرمول زیر یک بردار بدست می آید که بردار میانگین X  است‌:
$$ u[m] = \dfrac{1}{N}  \sum_{i = 1} ^{N}{X[m,i]} $$
به وضوح میانگین تجربی روی سطرهای ماتریس اعمال شده است.
حال ماتریس فاصله (‌B ) را به صورت زیر بدست می آوریم : 
$$  B = X - uh  $$
که در آن h برداری 1xN با درایه های یک است.
محاسبه ماتریس کوواریانس :
با استفاده از فرمول زیر ماتریس کوواریانس C با ابعاد MxM حاصل می شود.
$$ C = E[B \otimes B]  =  E [ B .  B^{*} ] = \dfrac{1}{N} [ B . B^{*}]$$که در آن  E میانگین حسابی است و  ‌‌B* ماتریس ترانهاده مزدوج B است که البته در این جا به علت  حقیقی بودن مقادیر با همان ترانهاده بردار B یکسان است.
  محاسبه مقادیر ویژه ماتریس کواریانس و بازچینی بردارهای ویژه:
  در این مرحله مقادیر ویژه  و بردار های ویژه ماتریس کوواریانس ( C ) بدست می آیند.
  $$ V^{-1} C V = D $$
که در آن V ماتریس بردارهای ویژه و D یک ماتریس قطری است که درایه های آن مقادیر ویژه هستند.آن چنان که مشخص است هر بردار ویژه متناظر با یک مقدار ویژه است.به این معنا که ماتریس V ماتریسی M x M است که ستونهای آن بردارهای ویژه می‌باشند.بازچینی بردارهای ویژه بر اساس اندازهٔ مقادیر ویژه متناظر با آنها صورت  می‌گیرد. یعنی بر اساس ترتیب کاهشی مقادیر ویژه، بردارهای ویژه بازچینی  می‌شوند. یعنی :
$$  q \leqslant   p \Rightarrow     \lambda  _{q} \leqslant   \lambda _{p}  $$
 انتخاب زیرمجموعه‌ای از بردارهای ویژه به عنوان پایه:
 انتخاب زیرمجموعه‌ای از بردارهای ویژه با تحلیل مقادیر ویژه صورت می‌گیرد. زیرمجموعه نهایی با توجه به بازچینی مرحله قبل به صورت V1 ... Vt انتخاب می‌شود. در اینجا می‌توان از انرژی تجمعی استفاده کرد که طبق آن : 
 $$ g[m] = \sum _{q = 1} ^{m} \lambda _{q} $$
 انتخاب l باید به صورتی باشد که حداقل مقدار ممکن را داشته باشد و در عین  حال g مقدار قابل قبولی داشته باشد. به طور مثال می‌توان حداقل l را انتخاب  کرد که :
 $$ g [ m = l ]  \leqslant   90%  $$
 بنابرین خواهیم داشت:
 $$ W [ p , q ] = V [ p , q ]  , p = 1 ... M , q = 1 ... l $$
 بنابرین خواهیم داشت:
 
 انتقال داده ها به فضای جدید : 
برای این کار ابتدا تبدیلات زیر را انجام می دهیم: ماتریس Sm,1 انحراف معیار مجموعه داده است که به صورت زیر تعریف می شود : 
$$  S[i] = \sqrt{ C [ i , i ]} $$
سپس داده به صورت زیر تبدیل می‌شود:
$$ Z = \dfrac{B}{S} $$
که ماتریس های B , C در بالا توضیح داده شده اند. داده‌ها می‌توانند به ترتیب زیر به فضای جدید برده شوند:
$$ Y = W^{*}.Z $$
[۱۶]
اکنون توانسته ایم چهره ویژه ها را از ماتریسمان استخراج کنیم.
##3.2.3 فرآیند تشخیص شباهت دو تصویر با استفاده از چهره ویژه ها
در این مرحله سیستم دو تصویر را دریافت می کند و یک عدد را به عنوان میزان شباهت دو تصویر برمی گرداند.برای این کار سیستم باید فرآیند زیر را روی دو تصویر اجرا کند :
۱.مرحله پیش پردازش : تمام مراحل پیش پردازشی که روی تصاویر کتابخانه اعمال شد باید روی این دو تصویر هم اعمال گردند.
۲.تبدیل به بردار :‌در این مرحله باید دو تصویر را به بردار متناظرشان تبدیل کنیم.(این کار هم دقیقا مانند قبل انجام می شود.).در ادامه این دو بردار را با a و b نشان می دهیم.
۳.تصویر کردن[^Project] بردار ها روی چهره ویژه ها :به طور کلی وقتی با تصویر کردن بردار a روی b می توان فهمید که a چه مقدار از خاصیت b را دارد.ما نیز در اینجا قصد داریم تصاویر ورودی را روی چهره ویژه ها تصویر کنیم تا بفهمیم که تصویرمان چقدر از خاصیت هر چهره ویژه را دارد.
تصویر بردار a روی Vi ( بردار ویژه i ام ) از فرمول زیر محاسبه می شود : 
$$ W_{i} = a. \dfrac{ V_{i}}{| V_{i}|} $$[17]
![تصویر a روی b](http://upload.wikimedia.org/wikipedia/commons/9/98/Projection_and_rejection.png)
اعداد بدست آمده را در بردار Wa و Wb می ریزیم.حال اگر هر یک از این دو بردار را دو نقطه با M بعد در نظر بگیرم فاصله منهتنی آنها می تواند معیار نسبتا خوبی برای تشخیص شباهتشان باشد.
فاصله منهتنی از فرمول زیر محاسبه می شود :
$$ d ( wa , wb )  = \sum _{i = 1} ^{n} | p_{i} - q_{i}| $$
##4. نتایج آزمایش
 حال باید با بررسی شباهت ها و تفاوت ها بین تصاویر مختلف مجموعه داده به یک حد آستانه برسیم تا به وسیله آن بتوان گفت آیا دو تصویر داده شده متعلق به یک نفر هستند یا خیر؟
 برای تعیین این آستانه از معیار های FAR و FRR استفاده می کنیم.
 تعریف معیار FAR  : این معیار میانگین افرادی را که سیستم به اشتباه پذیرفته است نشان می دهد.
 تعریف معیار FRR : این معیار میانگین افرادی را که سیستم به اشتباه نپذیرفته است نشان می دهد.
 ابتدا ۱۰ تصویر را انتخاب کرده و آزمایش را به ازای حدود آستانه مختلف روی آنها انتحان می کنیم‌.
![توضیح تصویر](https://boute.s3.amazonaws.com/172-sampleFERET.png)

پس از انجام آزمایش ها و بررسی نمودار آن نتایج حاکی از آن است که بهترین حد آستانه تقریبا ۶۰۰۰۰ می باشد.بنابراین اگر اختلاف کمتر از ۶۰۰۰۰ باشد این دو تصویر را متعلق به یک نفر حساب می کنیم.
![نمودار](https://boute.s3.amazonaws.com/172-chart.png)
کد  برنامه را  هم می توانید در [این](https://bitbucket.org/mohammadagah/face-recognition-with-eigenfaces) قسمت مشاهده کنید.
##5.بهبود نتایج
در قسمت قبل با استفاده از چهره ویژه‌ها و همچنین الگوریتم PCA به نتایج قابل قبولی رسیدیم.اما در این قسمت قصد داریم تا تشخیص برنامه را بهتر از قبل کنیم.
یکی از راهکار هایی که می تواند تاثیر نسبتا بالایی روی نتایج ما داشته باشد استفاده از فیلتر گابور است.برای این منظور باید در مرحله پیش پردازش روی تصاویر( هم تصاویر لازم برای یادگیری و هم تصاویر ورودی) فیلتر گابور را اعمال کنیم.این فیلتر می‌تواند تا حد خوبی معایب PCA (از جمله سازگار نبودن با تغییرات خطی ) را پوشش دهد.همچنین اجزای مهم صورت و شاخصه‌های آن بعد از این فیلتر مشخص‌تر می‌شوند.بنا‌بر این ترکیب روش PCA  و اعمال فیلتر گابور می‌تواند تاثیر بسزایی روی نتایج آزمایش ها داشته باشد.
![تصاویر چهره با اعمال فیلتر گابور](https://boute.s3.amazonaws.com/172-gaborfilter.png)
یکی دیگر از راه‌های ساده‌ای که می‌تواند دقت برنامه را افزایش دهد بالا بردن تعداد تصاویر داده شده برای یادگیری است. به همین منظور این بار تعداد تصاویر را دو برابر می‌کنیم.
در این مرحله برای نمایش دادن نتایج کار از نمودار‌های [^Receiver Operating  Characteristic]ROT  استفاده می‌کنیم.
**نحوه بدست آوردن نمودار ROT** : ابتدا برای سیستم k حد آستانه برای شناسایی در نظر می‌گیریم . سپس برای هر یک از  آنها مقادیر TPR[^True Positive Rate ] و FPR[^False Positive Rate] را بدست می آوریم.حال نقطه (FPR,TPR) را روی نمودار مشخص می‌کنیم و در آخر نقاط را به هم وصل می‌کنیم.نکته دیگری که باید به آن توجه کرد برعکس بودن محور x است یعنی به جای نقطه صفر مقدار یک قرار می‌گیرد. در آخر یک خم به وجود می‌آید که هرچه x آن به سمت صفر  و y آن به یک نزدیکتر باشد بهتر است.
![توضیح تصویر](http://sonoworld.com/images/FetusItemImages/article-images/Technique/ROC_curves/4.jpg)
با توجه به مطالب گفته شده یک نمودار ROT رسم می‌کنیم تا اختلاف کیفیتمان را نسبت به قبل نشان دهیم.
![توضیح تصویر](https://boute.s3.amazonaws.com/172-axis.png)

##6.کار‌های آینده
برای بالا بردن دقت برنامه می‌توانیم از الگوریتم‌هایی  جهت آشکارسازی بعضی اجزا صورت مانند چشم و بینی استفاده کرد.مثلا برای پیدا کردن چشم از تفاوت رنگ محسوس بین مردمک چشم و سفیدی آن استفاده می‌شود.در نهایت فرآیند تشخیص را بیشتر روی این اجزا که بدست آوردیم انجام می دهیم.

##مراجع
[1] مهندس محمد اسلامی "روش های تشخیص هویت بیومتریک" خرداد ماه 87
[2]  Face Recognition Vendor Test 2002  P. Jonathon Phillips, Patrick Grother, Ross Micheals, Duane M. Blackburn, Elham Tabassi, Mike Bone
[3]  Face Recognition Methods & Applications Divyarajsinh N. Parmar1, Brijesh B. Mehta
[4]  Security Management for Mobile Devices by Face Recognition Yoshihisa Ijiri, Miharu Sakuragi and Shihong Lao Sensing & Control Technology Laboratory
[5]  Goldstein, A. J., Harmon, L. D., and Lesk, A. B., Identification of human faces
[6]  Overview Of Face Recognition System Challenges Ambika Ramchandra, Ravindra Kumar  
[7]  Turk, M., and Pentland, A., "Eigenfaces for recognition", Journal of Cognitive Neuroscience, Vol. 3,
[8]  Ilker Atalay , " Face recognition using eigenfaces ", M. Sc. THESIS , (January, 1996).
[9]  روشی جدید برای آشکارسازی چهره با استفاده از ماشین بردار پشتیبان   قاسم میر جلیلی مجید روحی و محمد تقی صادقی
[10] Jorge Orts   "Face recognition techniques" Afsaneh Esmailzadeh
[11] William A.barrett " A Survey of face Recognition Algorithms and Testing Result"" Afsaneh esmailzadeh
[12] Johnny NG and Humphrey CHEUNG " Dynamic Local Feature Analysis for Face Recognition "
" Afsaneh esmailzadeh "
[13]1.  M. Kirby and L. Sirovich (1990). "Application of the Karhunen-Loeve procedure for the characterization of human faces"
[14] L. Sirovich and M. Kirby (1987). "Low-dimensional procedure for the characterization of human faces"
[15] P. Jonathon Phillips, Harry Wechsler, Jeffrey Huang, Patrick J.  Rauss: The FERET database and evaluation procedure for face-recognition  algorithms. Image Vision Comput. 
[16] http://fa.wikipedia.org/wiki/ تحلیل_مولفه های_اصلی
[17]G. Perwass, 2009  Geometric Algebra With Applications in Engineering
[18] تشخیص چهره با استفاده از PCA  و فیلتر گابور. حمیدرضا قجر , محسن سریانی و عباس کوچاری