تشخیص چهره با استفاده از کتابخانه OpenCV و زبان برنامه نویسی Python
پردازش تصویر برای تشخیص چهره یک تکنیک کامپیوتری است که از الگوریتمهایی برای مکانیابی و تشخیص چهره در یک تصویر استفاده میکند و این فنآوری کاربردهای مختلفی دارد.
آیا تاکنون توجه کردهاید که چگونه فنآوریهای جدید میتوانند از طریق پردازش تصویر چهره انسان را تشخیص دهند و دسترسی به برنامههای کاربردی، خدماتی و شناسایی مختلف را تأیید کنند؟ چگونگی کار این فنآوریها مانند تشخیص چهره با پایتون و opencv در ادامه توضیح داده شده است.
پردازش تصویر برای تشخیص چهره چیست؟
پردازش تصویر برای تشخیص چهره یک تکنیک کامپیوتری است که از الگوریتمهایی برای مکانیابی و تشخیص چهره در یک تصویر استفاده میکند و این فنآوری کاربردهای مختلفی دارد. با اینکه الگوریتمهای مختلف تشخیص چهره در دسترس هستند، اکثر برنامهها از تشخیص لبه یا تشخیص چشم برای مکانیابی چهره استفاده میکنند.
در برنامههای پردازش تصویر برای تشخیص چهره نه تنها یک چهره را پیدا میکند، بلکه اکثر الگوریتمها مکان دقیق پیکسل چهره را در تصویر به کاربر نشان میدهند و پیدا کردن چهره خاصی را در یک تصویر شلوغ یا مات آسانتر میکند. در صنعت سرگرمی، از تشخیص چهره برای ردیابی چهره در تصویربرداری حرکتی استفاده میشود که برای انیمیشنهای واقعیتر استفاده میگردد. یکی دیگر از کاربردهای رایج این تکنیک در صنایع امنیتی است. در این مورد الگوریتمها معمولاً تنها چهرههای خاص را تشخیص میدهند.
روشهای انجام الگوریتم تشخیص چهره
ایجاد یک الگوریتم تشخیص چهره پردازش تصویر را میتوان به روشهای مختلفی انجام داد، اما همه دو جزء متداول، تشخیص لبه و چشم دارند. تشخیص لبه معمولاً یک روش تکمیلی است، زیرا معمولاً به اندازه تشخیص چشم قابل اعتماد نیست. الگوریتم با تشخیص لبه، لبهها و منحنیهایی را که در صورت انسان رایج است جستجو میکند و از طریق تشخیص چشم، به دنبال چشم در تصویر میگردد، اگرچه برخی از الگوریتمها تنها در صورتی قادر به تشخیص آنها هستند که تصویر فردی را نشان میدهد که به جلو نگاه میکند و هر دو چشم او در تصویر باشد.
علاوه بر یافتن چهره، این الگوریتمها معمولاً مختصات مکانی دقیق چهره را به صورت پیکسلی تشخیص میدهند. برای اکثر کاربران، به خصوص در عکسهای واضحی که صورت به راحتی در آنها پیدا میشود، این ممکن است خیلی مهم نباشد. اگر کاربران در حال جستجو در تصاویر مات و نامرتب هستند، دانستن مکان دقیق پیکسل میتواند در یافتن و شناسایی یک فرد در تصویر مهم باشد.
کاربردهای الگوریتم های تشخیص چهره
از کاربردهای الگوریتم تشخیص چهره میتوان به موارد زیر اشاره کرد:
صنایع سرگرمی و انیمیشن سازی
یکی از کاربردهای مهم الگوریتمهای تشخیص چهره، برای سرگرمی و در صنعت انیمیشنسازی بهویژه برای ردیابی حرکت و اجرا در ساخت انیمیشنها است. در این تکنیک، بازیگران و هنرپیشهها هنگام اجرای صحنههای انیمیشن در مقابل صفحه آبی قرار میگیرند. این روش، اجازه میدهد تا حرکات صورت و بدن بازیگران ضبط شود، که مدلسازی حرکات را آسانتر و واقعگرایی را افزایش میدهد. بازیگران و هنرپیشهها الکترودهای خاصی را روی صورت خود میبندند و یک الگوریتم تشخیص چهره تمام حرکات صورت را که برای حالتها استفاده میشود را ردیابی میکند. این الگوریتم تصاویر واقعی چهره را از طریق تصاویر متحرک تخصصی، تشخیص میدهند.
سیستمهای امنیتی
الگوریتمهای تخصصی در زمینه پردازش تصویر برای تشخیص چهره در سیستمهای امنیتی مورد استفاده قرار میگیرند که به افراد با توجه به شناسایی چهره آنها مجوز میدهند. برخلاف سایر الگوریتمها که فقط یک چهره را پیدا میکنند، این الگوریتمها برای یافتن چهرهای خاصی (در مکانهای شلوغ) برنامهریزی شدهاند. به طور معمول، این الگوریتمها باید عناصر مشترک صورت یک فرد خاص مانند چشمها، فک، گوشها و استخوانهای گونه را پیدا کرده و سپس چهره را با یک تصویر مرجع در پایگاه داده تصویر خود مقایسه کنند. اگر چهرهها یکسان باشند، به بازدید کننده اجازه دسترسی داده میشود. کاربردهای زیادی در زمینه فناوری تشخیص چهره در زمینه نظارت و احراز هویت وجود دارد.
گوشی همراه و لپ تاپ
اپل اولین شرکتی است که ویژگیهای پیشرفته تکنیکهای شناسایی چهره و احراز هویت را عرضه کرد. کاربران تلفن همراه به این ویژگیهای جدید علاقه زیادی نشان دادهاند که به آنها اجازه میدهد به دستگاه خود دسترسی داشته باشند و مطمئن شوند که تنها مالک محصول است که میتواند به دستگاه دسترسی داشته باشد. این کار بسیار ساده است، فقط کافی است گوشی همراه خود را در جلوی صورت خود نگه دارید و بدین ترتیب به برنامههای تلفن همراه دسترسی پیدا کنید.
پلتفرمهای رسانههای اجتماعی
پلتفرمهای رسانههای اجتماعی مانند فیس بوک از فناوری تشخیص چهره در بهترین حالت خود استفاده میکند تا بهترین تجربه کاربری را در اختیار شما قرار دهد.
مناطق بسیار محدود و مراکز تجاری
بسیاری از مکانهای دارای امنیت بالا از جمله دفاتر و سازمانهای دولتی و تجاری نیز از این فنآوری استفاده میکنند.
خطوط هوایی و امنیت خروج
فرودگاهها همچنین برای شناسایی افراد از سیستمهای نظارتی استفاده میکنند زیرا فرودگاهها با توجه به تجمع عظیم جمعیت مکان بسیار حساسی هستند و نظارت بر هر ورودی و خروجی برای مقامات فرودگاه بسیار مهم است. تشخیص چهره با شناسایی افراد توسط روشهای خروجی باکیفیت، نیاز آنها را برآورده میکند. تحقیقات بزرگی در این زمینه انجام شده و با کمک این تکنیکها به پیشرفتهای زیادی دست یافتهاند.
Python
پایتون در صنعت تشخیص چهره مسیر بزرگتر و هموارتری را برای کسانی که میخواهند از این تکنیکها در شغل خود بهره ببرند، ایجاد میکند. شما میتوانید به عنوان یک محقق یا مهندس در حیطه پردازش تصویر/تشخیص الگو و یا توسعه دهنده یادگیری ماشین (ML) از پایتون برای پردازش کنید. پایتون برجستهترین و پرکاربردترین زبان برنامهنویسی برای کسانی است که در حال ساخت برنامههای تشخیص چهره و پردازش الگو هستند.
OpenCV چیست؟
OpenCV (Open Source Computer Vision Library) یک کتابخانه بینایی کامپیوتری و یادگیری ماشین است که به صورت منبع باز (Open Source) قابل دسترسی است. کتابخانه OpenCV برای ایجاد یک ساختار مشترک برای کاربردهای بینایی رایانه و برای تفسیر بینایی ماشین در محصولات تجاری مختلف که برای تشخیص چهره ساخته شدهاند، در دنیای امروز به طور گسترده استفاده میشوند.
OpenCV دارای بیش از 2500 الگوریتم بهینه شده است. این الگوریتمها را میتوان برای تشخیص و شناسایی چهرهها، اشیاء، ردیابی اجسام متحرک در یک ویدیو یا در یک تصویر، دنبال کردن حرکات چشم و غیره استفاده کرد.
اپن سی وی به زبان C++ نوشته شده است و دارای رابط قالبی است که با کانتینرهای STL کار میکند (کتابخانه استاندارد: مجموعه ای از کلاسهای قالب C++ برای ارائه ساختار دادهها در برنامهنویسی رایج و توابع مانند لیست، آرایه، پشته و غیره). OpenCV دارای رابطهای C++، Python، Java و MATLAB است و از ویندوز، لینوکس، مک او اس و همچنین اندروید پشتیبانی میکند.
تشخیص چهره با OpenCV
چهرهها از الگوهای مشابه و برخی از ویژگیهای متفاوت تشکیل شدهاند. بنابراین هزاران الگوی کوچک وجود دارد که یک ویژگی یکسان را مشخص میکند. همه این ویژگیها و الگو باید دقیقاً برای رسیدن به یک نتیجه خاص مطابقت داشته باشند. تقریباً برای یک چهره، به طور کلی، به 6000 طبقهبندیکننده نیاز است. همه این طبقهبندی کنندهها باید با ویژگی خاصی از یک چهره مطابقت داشته باشند تا به درستی شناسایی شوند. از آنجایی که چهرهها بسیار پیچیده هستند، تشخیص همسان بودن یا نبودن چهره کار آسانی نیست.
تشخیص از بالا سمت چپ صورت شروع میشود و به تدریج با یک بلوک کوچکتر از دادههای گرفته شده به سمت پایین میرود. هر بلوک کوچک را به طور کامل اسکن و مقایسه میکند که آیا آن عنصر مطابقت دارد یا خیر. از آنجایی که 6000 آزمایش در هر بلوک وجود دارد، بسیار بدیهی است که باید میلیاردها محاسبه انجام شود. رایانه معمولی شما از این جریان محاسباتی خسته میشود، بنابراین به یک کتابخانه از پیش تعریف شده نیاز دارید که به راحتی قابل گسترش و استفاده برای آن سناریوهای تکراری بله و خیر الگوریتم شما باشد.
در نتیجه برای کمک به شما با بهرهگیری از کتابخانه OpenCV و زبان برنامه نویسی پایتون محاسبات تشخیص چهره را به چند مرحله تقسیم میکند و با حفظ سرعت، فرآیندها را به شدت و با دقت بیشتر انجام میشود.