پیادهسازی سیستم تشخیص چهره در متلب – راهنمای کاربردی

تاکنون روشهای مختلفی برای پیادهسازی سیستمهای تشخیص چهره ارائه شده است. به طور کلی، نحوه کار سیستمهای تشخیص چهره بدین صورت است که ابتدا «ویژگیهای خاص مرتبط با چهره» (Facial Features) از تصاویر چهره افراد استخراج میشود. سپس سیستمهای تشخیص چهره، ویژگیهای استخراج شده و تصاویر مرتبط با آنها را با تصاویر چهرههای موجود در یک «پایگاه داده» (Database) و ویژگیهای آنها مقایسه میکنند. از آنجایی که سیستمهای تشخیص چهره قادر هستند بر اساس ویژگیهای «شکل» (Shape) و «بافت» (Texture) چهره افراد، یک شخص را تشخیص دهند، به آنها سیستمهای «بیومتریک مبتنی بر هوش مصنوعی» (Artificial Intelligence-based Biometrics) نیز گفته میشود.

اگرچه سیستمهای تشخیص چهره در ابتدا به عنوان یکی از کاربردهای سیستمهای کامپیوتری معرف شدند، ولی هم اکنون در بسیاری از «پلتفرمهای موبایل» (Mobile Platforms) و دیگر فناوریها نظیر «روباتیک» (Robotics) نیز مورد استفاده قرار میگیرند. معمولا از سیستمهای تشخیص چهره به عنوان واسطهای «کنترل دسترسی» (Access Control) در «سیستمهای امنیتی» (Security Systems) استفاده میشود. همچنین، سیستمهای تشخیص چهره را میتوان با دیگر سیستمهای «بیومتریک» (Biometric) نظیر سیستمهای «تشخیص یا بازشناسی اثر انگشت» (Fingerprint Recognition | Fingerprint Detection) و سیستمهای «تشخیص یا بازشناسی عنبیه» (Iris Recognition | Iris Detection) مقایسه کرد.
با اینکه «دقت» (Accuracy) سیستمهای تشخیص چهره از دیگر سیستمهای بیومتریک کمتر است، ولی به دلیل ویژگیهای مهمی نظیر عدم نیاز به وجود تماس فیزیکی با سیستم (Contactless) و طبیعت «غیر تهاجمی» (Non-Invasive) آن، به صورت گسترده توسط شرکتهای امنیتی و آزانسهای اجرای قانون مورد استفاده قرار میگیرند. در سالهای اخیر، سیستمهای تشخیص چهره در حوزه «بازاریابی» (Marketing) نیز به کار گرفته شدهاند؛ سیستمهای تشخیص چهره، به عنوان ابزارهای محبوبی در حوزه «شناسایی و بازاریابی تجاری» (Commercial Identification and Marketing) محسوب میشوند.
از دیگر کاربردهای مهم سیستمهای تشخیص چهره میتوان به مواردی نظیر «تعامل پیشرفته انسان-کامپیوتر» (Advanced Human-Computer Interaction)، «نظارت ویدئویی» (Video Surveillance)، «نمایهگذاری خودکار تصاویر» (Automatic Indexing of Images) و «نمایهگذاری خودکار پایگاههای داده ویدئویی» (Automatic Indexing of Video Databases) و سایر موارد اشاره کرد.

سیستمهای تشخیص چهره

با این حال در تصاویر سهبُعدی، اطلاعات پیکسلی در دسترس نیستند و تنها اطلاعات مکانی (Y ،X و Z) «نقاط» (Points) که متناظر با پیکسلهای تصویر هستند، در اختیار سیستم قرار داده شده است. چنین توصیفی از نقاط موجود در تصاویر (سهبُعدی)، کار سیستم تشخیص چهره، در پیدا کردن الگو در تصاویر سهبُعدی را مشکل میکند.
در این مطلب، گامهای «پیشپردازشی» (Pre-Processing) لازم برای توسعه سیستمهای تشخیص چهره سهبُعدی نمایش داده خواهد شد. چنین کاری به کاربر یا برنامهنویس اجازه میدهد تا بتواند به راحتی مدل یادگیری ماشین (یا یادگیری عمیق) لازم برای تشخیص چهره را پیادهسازی و اجرا کند.
خواندن دادههای تصاویر سه بُعدی عمق در متلب
تصویر سهبُعدی یک «شیء» (Object) حاوی مقادیر «ارتفاع» (Height)، «عرض» (Width) و «عمق» (Depth) هر نقطه در شیء مورد نظر خواهد بود (منظور از شیء، تصاویر دیجیتال سهبُعدی است). به طور کلی، در مجموعههای داده خام سهبُعدی نظیر مجموعه داده چهره FRGC یا (FRGC 2.0 Face Database)، مجموعه داده Collection F و مجموعه داده Collection G 3D ear و سایر موارد، فایلهای تصاویر سهبُعدی با «پسوند» (Extension) خاص abs. ذخیره شدهاند.
شکل زیر، نمایی از تصاویر سهبُعدی موجود در مجموعه داده FRGC 2.0 Face Database را نشان میدهد.

تصاویر موجود در این مجموعه داده، در اصل فایلهای متنی فشرده شده در کدبندی ASCII هستند. هر فایل تصویری موجود در این مجموعه داده، یک «هدر یا سرآمد» (Header) سه خطی دارد که تعداد سطرها و ستونهای موجود در تصویر را مشخص میکند. بلافاصله پس از آن، چهار تصویر در فایل قرار داده شده است. تصویر اول که به آن تصویر «نشانه» (Flag) نیز گفته میشود، تصویری است که در آن پیکسلها مقادیر 0 یا 1 به خود میگیرند. مقادیر پیکسلی 1 بدین معنی است که مقادیر (Y ،X و Z) متناظر در آن پیکسل «معتبر» (Valid) هستند. در صورتی که مقدار نشانه (Flag) صفر باشد، از مؤلفههای (Y ،X و Z) آن پیکسل چشم پوشی میشود.
پس از تصویر نشانه، به ترتیب تصویر مختصات X یا X-coordinates، تصویر مختصات Y یا Y-coordinates و تصویر مختصات Z یا Z-coordinates قرار داده شدهاند. برنامهنویس از دو طریق قادر به مدلسازی تصاویر و استفاده از آنها در سیستم تشخیص چهره خواهد بود:
- استفاده از مختصات سهبُعدی (مختصات Y ،X و Z) هر کدام از نقاط موجود در تصاویر جهت مدلسازی و تشخیص چهره.
- دور انداختن مختصات X یا X-coordinates و مختصات Y یا Y-coordinates و استفاده از مختصات Z یا Z-coordinates نقاط موجود در تصاویر، به تنهایی، جهت مدلسازی و تشخیص چهره.
از قطعه کد زیر برای خواندن مختصات Y ،X و Z و همچنین مقادیر نشانه (Flag) استفاده میشود.
کاربران میتوانند با استفاده از تابع imshow()، تصویر مختصات X یا X-coordinates، تصویر مختصات Y یا Y-coordinates و تصویر مختصات Z یا Z-coordinates را در خروجی نمایش دهند؛ نمایش هر کدام از موارد فوق در خروجی، «تصویر ضبط شده» (Captured Image) را زمانی که دوربین ضبط کننده به ترتیب به سمت محور X، محور Y و محور Z قرار داده شده است، نشان میدهد. از «الحاق» (Concatenate) نقاط (منظور، مقادیر این نقاط) موجود در تصویر مختصات X یا X-coordinates، تصویر مختصات Y یا Y-coordinates و تصویر مختصات Z یا Z-coordinates، تصویر زیر حاصل خواهد شد.

در مرحله بعد، «نقاط ابری» (Cloud Points) استخراج، نقاط استخراج شده به فایل ply. تبدیل و فایل تولید شده نمایش داده میشود تا شکل سهبُعدی تصویر بالا «مصورسازی» (Visualize) شود. شکلهای زیر، نمای سهبُعدی متناظر با تصویر بالا را نشان میدهند. نکتهای که باید در مورد تصویر حاصل در شکل زیر به آن توجه شود این است که «تصویر خام» (Raw Image) حاصل شده، حاوی ویژگیهای چهره یک شخص از جمله گردن و شانه است؛ وجود ویژگیهای مرتبط با گردن و شانه یک شخص، برای تشخیص چهره ضروری نیست. بنابراین، در مرحله بعد نیاز است تا تصویر خام سهبُعدی حاصل «برش» (Crop) داده شود تا تنها نواحی مرتبط با صورت شخص، در تصویر سهبُعدی خام مشخص شود.


تشخیص چهره
برای استخراج نواحی مرتبط با صورت شخص (برش دادن تصویر و جدا کردن نواحی مرتبط با گردن و شانه) از تصویر سهبُعدی، از اطلاعات مرتبط با «عمق» (Depth) استفاده میشود. اگر به تصویر زیر دقت کنید، کاملا مشخص است زمانی که چهره شخص (Subject) در جهت محور Z قرار دارد، نمای جلوی چهره او توسط «سنسور» (Sensor) در یافت شده است.
در نتیجه، نقطه متناظر با بینی شخص (Nose Tip) کمترین عمق ممکن را در تصویر (دریافت شده از سنسور) خواهد داشت.

اگر به شکل زیر دقت کنید، هر چقدر که از سمت نوک بینی (Nose Point) به سمت گوش (ear) حرکت کنیم، مقدار عمق از 1500 به 1700 افزایش پیدا میکند.

همانطور که در شکل بالا مشهود است، مقدار Z (همان مقدار عمق یا Depth) نوک بینی که در شکل با نقطه سیاه مشخص شده است، بین 1450 تا 1480 است. با فرض این که مقدار عمق نوک بینی (در تصویر بالا) برابر با 1460 باشد، میتوان مرکز تصویر سهبُعدی را تغییر داد و نواحی مرتبط با چهره شخص را جداسازی کرد. برای این کار فرض میشود که نقطه P (نوک بینی)، نقطه مرکز تصویر سهبُعدی باشد. سپس، یک مربع به ابعاد 140x140 واحد (نظیر شکل زیر)، به مرکزیت نقطه P رسم میشود.

تحقیقات محققان نشان داده است که اندازه انتخاب شده برای مربع رسم شده در شکل بالا (140x140)، جهت پوشاندن ناحیه مرتبط با چهره شخص مناسب است. در مرحله بعد، تنها نقاطی که درون مربع قرار میگیرند به عنوان ناحیه مرتبط با چهره شخص در نظر گرفته میشود. در نهایت، با برش دادن ناحیه مرتبط با چهره از تصویر سهبُعدی کامل، به ناحیهای که در آن چهره شخص مدل شده است، دست پیدا میشود.


دو تصویر بالا، تصویر سهبُعدی برش داده شده و متناظر با چهره شخص را از زوایای مختلف نمایش میدهند. پس از مشخص شدن ناحیه مرتبط با چهره شخص (در تصویر سهبُعدی)، لازم است تعدادی فرایند «پیشپردازشی» (Pre-Processing) نظیر de-spiking، «پر کردن حفره» (Hole Filling) و «از بین بردن نویز» (De-Noising) روی تصویر اعمال شود.
فرایندهای پیشپردازشی در تشخیص چهره
پس از مشخص شدن ناحیه مرتبط با چهره شخص در تصویر سهبُعدی، برای اینکه یک مدل سهبُعدی کامل و مناسب جهت استفاده در سیستمهای تشخیص چهره به دست آید، نیاز است تا مجموعهای از فرایندهای پیشپردازشی روی تصویر اعمال شود.
مهمترین فرایندهای پیشپردازشی قابل اعمال روی تصاویر سهبُعدی حاصل عبارتند از:
- فرایند de-spiking: فرایندی است که در آن دادهها به نحوی دستخوش تغییر میشوند که «اسپیکهای یا جهشهای» (Spikes) موجود در آنها، کاهش یافته و یا از بین بروند؛ با این که در طول این دسته از فرایندهای پیشپردازشی، دادهها دچار تغییر میشوند ولی اطلاعات موجود در تصویر حفظ میشود. از آنجایی که تصاویر سهبُعدی چهره، حاوی نویز و اسپیک (جهش) هستند، بنابراین نیاز است تا از تکنیکهای de-spiking برای رفع این نقیصه استفاده شود. در این مطلب، با گسترش مفهوم «فیلتر میانه وزندار دوبُعدی» (2D Weighted Median Filter) و تعمیم آن به تصاویر سهبُعدی چهره، تکنیک de-spiking روی تصاویر سهبُعدی اجرا میشود. در این تکنیک، با استفاده از «فیلتر میانه وزندار مِش» (Mesh Weighted Median Filter)، تصاویر سهبُعدی فیلتر میشوند تا نویزها و اسپیکهای (جهشهای) موجود در تصاویر کاهش پیدا کنند یا از بین بروند.
- فرایند «پر کردن حفره» (Hole Filling): از بین بردن نویزها و اسپیکهای (جهشهای) موجود در تصاویر، سبب ایجاد حفره در تصاویر سهبُعدی میشود. بنابراین پیش از استفاده از مدل سهبُعدی تصاویر در کاربردهای تشخیص چهره لازم است تا با استفاده از فرایندهای پیشپردازشی، حفرههای ایجاد شده در تصاویر ترمیم شوند. برای چنین کاری از یک روش «درونیابی سهبُعدی» (3D Interpolation) به نام «درونیابی مکعبی» (Cubic Interpolation) استفاده شده است. در روش دورنیابی مکعبی، مقدار درونیابی شده در یک نقطه مورد نظر (نقاطی که در آنها حفره ایجاد شده است)، بر اساس درونیابی مکعبی مقادیری که در نقاط همسایگی آن نقطه، در هر بُعد (Dimension) تصویر قرار دارند، مشخص میشود.
- «حذف نویز» (Noise Removal): تصاویر دیجیتال به انواع مختلف «نویز» (Noise) حساس هستند. نویز در نتیجه اشتباهات رخ داده شده هنگام «اکتساب تصاویر» (Image Acquisition) به وجود میآید. رخ دادن نویز در تصاویر دیجیتالی سبب میشود تا مقادیری در پیکسلها یا نقاط تصویر ایجاد شوند که مقادیر آنها، مقادیر واقعی «شدت» (Intensity) پیکسلها یا نقاط تصویر را نمایش ندهند. روشهای زیادی برای از بین بردن نویز در تصویر وجود دارد. در این مطلب، از روش «فیلتر سهبُعدی گاوسی» (3D Gaussian Filter) برای حذف نویز استفاده شده است.
پس از پایان فرایند پیشپردازش تصاویر، مدل سهبُعدی تولید شده از چهره، که برای استفاده در سیستمهای تشخیص چهره مناسب است، به شکل زیر خواهد بود:

در ادامه، کدهای منبع برای پیادهسازی سیستم تشخیص چهره، برش چهره، فرایند de-spiking، پر کردن حفره و حذف نویز از تصاویر سهبُعدی نمایش داده شده است:
پس از انجام تمامی این مراحل، خروجی نهایی یک تصویر مِش (Mesh) خواهد بود. تصویر Mesh حاصل را میتوان برای استخراج ویژگیهای متناسب با کاربردهای تشخیص چهره مورد استفاده قرار داد.
به عنوان نمونه، به راحتی میتوان از تصویر Mesh حاصل شده برای استخراج ویژگیهای «تحلیل مؤلفه اساسی» (Principal Component Analysis | PCA)، ویژگیهای خط، نقطه و «ناحیه» (Region) و سایر موارد استفاده کرد.
اگر نوشته بالا برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای داده کاوی و یادگیری ماشین
- آموزش اصول و روشهای داده کاوی (Data Mining)
- مجموعه آموزشهای هوش مصنوعی
- نقشه دانش فناوریهای هوش مصنوعی و دستهبندی آنها — راهنمای جامع
- تفسیر مدلهای یادگیری عمیق در بینایی کامپیوتر — راهنمای جامع
- بینایی کامپیوتر چیست؟ — به زبان ساده
- پیادهسازی سیستم تشخیص و ردیابی خودرو در پایتون — راهنمای جامع
^^
مطالب مجله فرادرس را در جستجوی گوگل سریعتر ببینید














با سلام من به یک برنامه کامل تعیین و تایید هویت با متلب نیاز دارم . آیا شما کمکی در این زمینه می توانید به من بکنید؟
سلام، وقت شما بخیر؛
از اینکه با مجله فرادرس همراه هستید از شما بسیار سپاسگزاریم.