شناسایی فعالیتهای انسان با استفاده از بینایی ماشین، زمینه تحقیقاتی بسیار جذابی است که در چند سال اخیر اهمیت قابل ملاحظه ای در کاربردهایی نظیر خانه های هوشمند، سامانه های نظارتی و امنیتی، رابطهای کاربری واکنش گرا، آموزش و مراقبتهای بهداشتی و استخراج اطلاعات از ویدیو، پیدا کرده است. در این میان فناوریهای مبتنی بر تشخیص اشیا، در حال محکم کردن جای پای خود در دنیای فناوری و «گجتهای» (Gadgets) دیجیتال هستند. اگر شما جزء آن دسته از کاربرانی هستید که برای باز کردن گوشی تلفن همراه خود از دوربین تلفن و امکاناتی نظیر Face Unlock استفاده میکنید، در واقع در حال استفاده از فناوریهای مبتنی بر تشخیص اشیا هستید. در صورتی که کاربران شبکههای اجتماعی برای گرفتن «سلفی» (Selfie) یا تماس تصویری، از «جلوههای» (Effect) خاصی نظیر قرار دادن عینک آفتابی روی صورت استفاده کنند، فناوریهای مبتنی بر تشخیص اشیا را در تعاملات روزمره خود مورد استفاده قرار دادهاند.
فناوریهای پیشرفته دیگری نظیر «واقعیت افزوده» (Augmented Reality) نیز به طور مستقیم از تشخیص اشیا، جهت فراهم آوردن «تجربه همه جانبه» (Immersive Experience) از «واقعیت مجازی» (Virtual Reality)، برای کاربران خود استفاده میکنند. شاید بسیاری از کاربران با این واقعیت آشنا نباشند که ویژگیهای جالبی که توسط فناوری تشخیص اشیا امکانپذیر میشوند، در اصل، توسط دسته خاصی از الگوریتمهای «شبکههای عصبی مصنوعی» (Artificial Neural Networks) امکانپذیر شدهاند که نه تنها قادر به تشخیص چهره در تصویر یا ویدئو هستند، بلکه این توانایی را دارند که اجزای مختلف چهره و جایگاه هر کدام از آنها در چهره را نیز تشخیص دهند.
به عبارت دیگر، فناوری تشخیص اشیا، به سیستم اجازه میدهد تا، به معنای واقعی کلمه، ورودیها را حس کند؛ یعنی، با استفاده از تشخیص اشیا، سیستم به معنای واقعی قادر به دیدن کاربران، درک فرم ظاهری چهره آنها و از همه مهمتر تشخیص اجزای چهره آنها است.
در این مطلب، ابتدا با مفاهیمی نظیر «تشخیص اشیا» (Object Detection) و «بینایی کامپیوتر» (Computer Vision) آشنا خواهید شد. سپس، مراحل لازم برای پیادهسازی یک سیستم تشخیص اشیا ارائه خواهد شد. برای پیادهسازی سیستم تشخیص اشیا در «زبان برنامهنویسی پایتون» (Python Programming Language)، از چالش Google AI Open Image که به میزبانی Kaggle برگزار میشود استفاده شده است. هدف این چالش، توسعه یک سیستم تشخیص اشیا است که بتواند اشیاء مختلف را در تصاویر مختلف و بعضا پیچیده تشخیص دهد.
تشخیص اشیا
اگر قرار باشد یک تعریف مشخصی از فناوری تشخیص اشیا ارائه شود، این دسته از فناوریها را میتوان در قالب فناوریها و سیستمهای کامپیوتری تعریف کرد که مجموعهای از وظایف مرتبط با حوزههای بینایی کامپیوتر (پردازش کامپیوتری تصاویر و ویدئو و درک محتوای آنها) و «پردازش تصویر» (Image Processing) را «خودکارسازی» (Automate) میکنند. به این دسته از فناوریها که کامپیوترها را قادر به «دیدن» میسازند، «بینایی کامپیوتر» (Computer Vision) گفته میشود. به عبارت دیگر، تشخیص اشیا زیر مجموعه فناوریها و سیستمهای کامپیوتری هستند که در حوزه بینایی کامپیوتر و پردازش تصویر فعالیت دارند.
در روشهای تشخیص اشیا، هدف تشخیص نمونهها یا اشیاء مرتبط با یک کلاس خاص (به عنوان نمونه، انسان، ساختمان، اتومبیلها و سایر موارد) در تصاویر و ویدئوهای دیجیتالی است. تشخیص اشیا حوزه تحقیقاتی بسیار بزرگی است و تحقیقات بسیار زیادی در این زمینه انجام شده است؛ دامنههایی نظیر «تشخیص چهره» (Face Detection) و «تشخیص عابر پیاده» (Pedestrian Detection) از جمله دامنههای تحقیقاتی پرطرفدار در حوزه تشخیص اشیا محسوب میشوند. سیستمهای تشخیص اشیا کاربردهای فراوانی در حوزههای مختلف بینایی کامپیوتر نظیر «بازیابی تصویر» (Image Retrieval) و «نظارت ویدئویی»
مفاهیم مهم در سیستمهای تشخیص اشیا
در سیستمهای تشخیص اشیا، هدف «دستهبندی» (Classify) اشیاء موجود در تصویر، در مجموعهای از «کلاسهای» (Classes) از پیش تعیین شده است. هر کدام از کلاسهای تعریف شده، مجموعهای از «ویژگیهای» (Features) مختص به خود دارند که به سیستم در دستهبندی اشیاء متعلق به این کلاسها کمک میکنند. به عنوان، شکل هندسی دایرهها گرد است. بنابراین، هنگامی که سیستم به دنبال تشخیص دایره در ویدئو است، اشیائی که در فاصله خاصی از یک نقطه (مثلا مرکز) قرار دارند، جستجو میشوند. به طور مشابه، زمانی که سیستم به دنبال تشخیص مربع در تصویر است، اشیائی را جستجو میکند که در گوشهها عمود هستند و اندازه اضلاع آنها با یکدیگر برابر هستند.
روش مشابهی برای شناسایی چهره در کاربردهای مختلف بینایی کامپیوتر مورد استفاده قرار میگیرد؛ در شناسایی چهره، نقاط یا ویژگیهای کلیدی سطح بالا در تصویر نظیر چشم، گوش، بینی و لبها شناسایی میشوند. این دسته از ویژگیها، Landmark یا ویژگیهای شاخص نام دارند. در شناسایی چهره، برای تشخیص اشیا (نظیر چشم) در تصویر، ویژگیهای دیگری نظیر رنگ پوست و فاصله میان چشمها نیز شناسایی و استخراج میشوند.
روشهای مهم تشخیص اشیا در تصاویر و ویدئوهای دیجیتال
مهمترین روشهای تشخیص اشیا، معمولا از رویکردهای مبتنی بر «یادگیری ماشین» (Machine Learning) و یا مدلهای مبتنی بر «یادگیری عمیق» (Deep Learning) استفاده میکنند. در رویکردهای مبتنی بر یادگیری ماشین، بسیار حیاتی است که ابتدا ویژگیهای مرتبط با اشیاء موجود در تصویر، با استفاده از روشهای خاصی نظیر روشهای زیر استخراج شوند:
- چارچوب تشخیص اشیا Viola–Jones مبتنی بر ویژگیهای Haar
- روشهای تبدیل ویژگی مستقل از ابعاد (Scale-Invariant Feature Transform | SIFT)
- ویژگیهای هیستوگرام گرادیانهای جهتدار (Histogram of Oriented Gradients | HOG)
سپس در مرحله بعد، از یکی روشهای شناخته شده یادگیری ماشین، نظیر «ماشین بردار پشتیبان» (Support Vector Machine)، استفاده میشود تا اشیاء در کلاسهای از پیش تعیین شده دستهبندی شوند. در سمت مقابل، مدلهای یادگیری عمیق امکان «تشخیص اشیا نقطه به نقطه» (ٍEnd-to-End Object Detection) را برای محققان یادگیری ماشین فراهم میکنند. چنین روشهایی از این جهت حائز اهمیت هستند که قابلیت تشخیص اشیا، بدون تعریف صریح ویژگیهای مرتبط با هر کدام از کلاسهای تعریف شده از اشیاء، برای سیستم پدید میآید. این دسته از مدلهای تشخیص اشیا، معمولا مبتنی بر «شبکههای عصبی پیچشی» (Convolutional Neural Network) هستند. مهمترین سیستمهای تشخیص اشیا مبتنی بر یادگیری عمیق عبارتند از:
• روشهای Region Proposals (که نواحی دربرگیرنده اشیاء در تصویر را شناسی میکنند) نظیر R-CNN ،Fast R-CNN و Faster R-CNN.
• روش Single Shot MultiBox Detector یا SSD.
• روشهای شناخته شده You Only Look Once یا YOLO.
بینایی کامپیوتر
بینایی کامپیوتر، یک حوزه «بین رشتهای» (Interdisciplinary) در علوم کامپیوتر و «هوش مصنوعی» (Artificial Intelligence) محسوب میشود. این حوزه با چگونگی ایجاد درک سطح بالا از تصاویر و ویدئوهای دیجیتال، توسط سیستمهای کامپیوتری سر و کار دارد. از دیدگاه مهندسی، هدف نهایی سیستمهای بینایی کامپیوتر، «خودکارسازی» (Automation) وظایف قابل انجام توسط سیستم بینایی انسان است.
به عنوان یکی از شاخههای علمی حوزه علوم کامپیوتر و هوش مصنوعی، وظیفه سیستمهای بینایی کامپیوتر استخراج، تحلیل و درک خودکار اطلاعات مفید از یک تصویر ایستا یا دنبالهای از تصاویر است. حوزه بینایی کامپیوتر با توسعه پایههای نظری و الگوریتم-محور لازم، جهت دستیابی به «درک بصری خودکار» (Automatic Visual Understanding) از تصاویر و ویدئوهای دیجیتال سر و کار دارد.
به عبارت دیگر، از دیدگاه علمی، بینایی کامپیوتر با نظریهها، الگوریتمها و رویکردهای قابل استفاده در سیستمهای هوش مصنوعی جهت استخراج، تحلیل و درک تصاویر دیجیتالی سر و کار دارد. تصاویر دیجیتالی میتوانند فرمهای مختلفی به خود بگیرند؛ دنبالههای ویدئویی، چشمانداز از دید دوربینهای مختلف یا دادههای «چندبُعدی» (Multi-Dimensional) به دست آمده از اسکنرهای پزشکی. با این حال از دیدگاه فناوری، هدف بینایی کامپیوتر به کارگیری نظریهها، الگوریتمهای و مدلهای مطرح شده در حوزه بینایی کامپیوتر (و به طور گستردهتر، حوزه هوش مصنوعی) جهت ساختن سیستمهای بینایی کامپیوتر است
وظایف سیستمهای بینایی کامپیوتر
از جمله مهمترین وظایف قابل تعریف در سیستمهای بینایی کامپیوتر، میتوان به توسعه روشهایی برای «اکتساب» (Acquire)، «پردازش» (Process)، «تحلیل» (Analyze) و «درک» (Understand) تصاویر دیجیتالی اشاره کرد. همچنین، استخراج دادههای با ابعاد بالا از جهان واقعی جهت تولید اطلاعات عددی یا «نمادین» (Symbolic)، به عنوان نمونه در قالب تصمیم قابل اتخاذ توسط سیستم، از جمله دیگر وظایف قابل تعریف در سیتمهای بینایی کامپیوتر محسوب میشوند.
منظور از درک در سیستمهای بینایی کامپیوتر، تبدیل تصاویر بصری (تصاویر یا ویدئوهای دیجیتالی اکتساب شده) به توصیفاتی از جهان واقعی است که در نهایت، از طریق تعامل با دیگر فرایندها، منجر به اتخاذ تصمیمات مناسب توسط سیستم میشوند.
سیستمهای «بازسازی صحنه» (Scene Reconstruction)
سیستمهای «دستهبندی تصاویر» (Image Classification)
سیستمهای «تشخیص رویداد» (Event Detection)
سیستمهای «ردیابی ویدئویی» (Video Tracking)
سیستمهای «تخمین حالت سهبُعدی» (۳D Pose Estimation)
سیستمهای «تخمین حرکت» (Motion Estimation)
سیستمهای «ترمیم تصاویر دیجیتالی»
سیستمهای «بازشناسی و تشخیص اشیا» (Object Detection and Recognition)
سیستمهای «نظارت بصری» (Visual Surveillance)
سیستمهای «ناوبری» (Navigation) در اتومبیلهای خودران یا «روباتهای متحرک» (Mobile Robot)
سیستمهای «شاخصگذاری تصاویر و ویدئوهای دیجیتالی» (Digital Image and Video Indexing)
در سالهای اخیر، به دلیل جهش بیسابقه در قدرت محاسباتی سیستمهای کامپیوتری (به ویژه سیستمهای محاسبات مبتنی بر «واحدهای پردازش گرافیکی» (Graphical Processing Units | GPUs)) و امکانپذیر کردن توسعه مدلهای یادگیری عمیق جهت پیادهسازی سیستمهای بینایی کامپیوتر، استفاده از مدلهای بینایی کامپیوتر به امری معمولی تبدیل شده است. بسیاری از شرکتهای معروف حوزه فناوری نظیر آمازون، گوگل، تسلا، فیسبوک و مایکروسافت، سرمایهگذاریهای هنگفتی در این فناوری و کاربردهای آن انجام دادهاند.