Filter by دسته‌ها
chatGTP
ابزارهای هوش مصنوعی
اخبار
گزارش
تیتر یک
چندرسانه ای
آموزش علوم داده
اینفوگرافیک
پادکست
ویدیو
دانش روز
آموزش‌های پایه‌ای هوش مصنوعی
اصول هوش مصنوعی
یادگیری بدون نظارت
یادگیری تقویتی
یادگیری عمیق
یادگیری نیمه نظارتی
آموزش‌های پیشرفته هوش مصنوعی
بینایی ماشین
پردازش زبان طبیعی
پردازش گفتار
چالش‌های عملیاتی
داده کاوی و بیگ دیتا
رایانش ابری و HPC
سیستم‌‌های امبدد
علوم شناختی
دیتاست
رویدادها
جیتکس
کاربردهای هوش مصنوعی
کتابخانه
اشخاص
شرکت‌های هوش مصنوعی
محصولات و مدل‌های هوش مصنوعی
مفاهیم
کسب‌و‌کار
تحلیل بازارهای هوش مصنوعی
کارآفرینی
هوش مصنوعی در ایران
هوش مصنوعی در جهان
مقاله
 با سیستم تشخیص اشیا و رویکردهای نوین این حوزه آشنا شوید

با سیستم تشخیص اشیا و رویکردهای نوین این حوزه آشنا شوید

زمان مطالعه: 4 دقیقه

مقاله را با معرفی چند مورد از رویکردهای سیستم تشخیص اشیا شروع می­‌کنیم. بعد از آشنایی با رویکردهای قدیمی و جدید، به مطالعه­ مهم‌­ترین قسمت­‌های دو رویکرد مذکور (CenterNet و TTFNet) می­‌پردازیم. بسیاری از این قسمت­‌ها بین این دو رویکرد مشترک هستند، بنابراین آن­‌ها را تنها یک بار توضیح خواهیم داد. ما توانستیم بسته نرم‌افزاری Package را پیاده‌سازی کنیم که از هردو شبکه الهام­ گرفته است؛ برای مشاهده­ این بسته می‌­توانید به سایت Github مراجعه نمایید.

برای فهم بهتر این مقاله آشنایی مختصر با شبکه­‌های عصبی پیچشی (CNN) لازم است.

رویکردهای قدیمی

در علم کامپیوتر، وقتی مسئله­‌ای داریم که راه­‌حلی ندارد، سعی می­‌کنیم آن‌را به مسئله‌­ای آسان‌تر یا قابل‌حل تغییر دهیم. مدل­‌های تشخیص‌گر دومرحله­‌ای Two-stage detection models مصداق خوبی برای این موضوع هستند. در این مدل‌ها، دسته‌بندی تصویر Image classification یا نشانه‌گذاری tagging آن (یعنی جایگذاری تصویر موردنظر در یک دسته­ خاص و اختصاص تگ­‌هایی به آن) مسئله­ ساده‌تر است. برای انجام این عملیات‌ها می‌توانیم تصویر را به نواحی متعدد تقسیم و این نواحی را دسته‌بندی کنیم. اما این روش بسیار زمان­‌بر است؛ پس باید به دنبال راه‌­حل بهتری باشیم. R-CNN (2014) یکی از شبکه‌­هایی است که الگوریتم­‌های آن از این رویکرد استفاده می­‌کنند. شبکه‌های Fast R-CNN (2015) و سپس Faster R-CNN (2016) از آن مشتق شدند.

این مدل­‌ها عملکرد خوبی از خود نشان دادند؛ با این‌حال پژوهشگران به دنبال تسریع و کارایی بیشتر هستند، به نحوی که بتوان عملیات مورد نظر را در یک مرحله (به جای دو مرحله) و بدون نیاز به مشخص کردن نواحی انجام داد. یکی از راه‌حل‌هایی که برای این مسئله مطرح شده، سیستم YOLO You can only look once (2015) بوده که اکنون نسخه­ چهارم (2020) آن نیز موجود است. یک رویکرد دیگر SSD  Single Shot Multibox Detector (2015) است. جا دارد به مدل تشخیص‌گر RetinaNet (2017) نیز اشاره کنیم که یک تابع زیان کانونی A focal loss برای سیستم تشخیص اشیا معرفی کرده است (این تابع زیان امروزه کاربرد زیادی دارد).

رویکردهای جدید

رویکرد دیگری در سال­ه‌ای اخیر  محبوبیت پیدا کرده است. در این رویکرد، شیء را می‌توان به یک مجموعه نقطه تبدیل کرد و مسئله­ تشخیص را به عنوان مسئله­ برآورد نقاط کلیدی در نظر گرفت. این رویکرد در مقاله‌ CornerNet: سیستم تشخیص اشیا به عنوان جفت‌ نقط کلیدی Detecting Objects as Paired Keypoints مطرح شد. هما‌ن­طور که از اسم آن بر‌می‌آید، در این رویکرد شیء به صورت یک جفت نقاط کلیدی (گوشه بالا سمت چپ و گوشه­ پایین سمت راست) بازنمایی می‌­شود.

رویکردی مشابه به نام  CenterNet در مقاله­ Objects as Points معرفی شده است. در این روش نقطه­ مرکزی کادر محصورکننده با استفاده از یک نقشه­ حرارتی مشخص می­‌شود. ویژگی­‌های دیگر، همچون اندازه­ کادر محصورکننده، به صورت مستقیم و با استفاده از رگرسیون پیش­بینی می­‌شوند.

نقطه­ ضعف این رویکرد، سرعت نسبتاً کم آموزش آن است. برای حل این مسئله شبکه­ TTFNet (Training-time-friendly network) معرفی شده است. اصول زیربنایی این شبکه‌ها یکسان است، بنابراین هردوی آن‌ها را در یک بسته­ به کار بردیم.

معماری شبکه عصبی

اجازه دهید از ابتدا، یعنی معماری شبکه شروع کنیم؛ سپس اجزای مهم (از جمله نقشه­‌‎های حرارتی و توابع زیان مختلف) شبکه را توضیح خواهیم داد.

می‌توانیم از شبکه‌­ای همچون شبکه­ پیچشی Hourglass Network استفاده کنیم که منحصراً برای انجام چنین مسئله‌ای طراحی شده است؛ راه دیگر (که ما در پیش گرفتیم) انتخاب یکی از شبکه­‌های عصبی پیچشی (CNN) استاندارد برای طبقه‌بندی تصاویر و اصلاح آن شبکه مطابق با نیازهایمان است. ما شبکه‌­های ResNet (18،50) و EfficientNet (b0, b1, b2) را به کار بردیم.

این‌جا نیز همچون سایر مسائل یادگیری انتقالی Standard transfer learning tasks، لایه­ متراکم بالایی را حذف می­‌کنیم. اما لایه­ بعدی به هیچ وجه با خروجی موردنیاز ما مطابقت ندارد. به همین دلیل لازم است مقداری بیش نمونه‌برداری upsampling انجام دهیم. علاوه بر این، اتصالات  لایه­‌های پایین­‌تر عملکرد را بهبود می­‌بخشند. اگر در انتهای شبکه یک لایه با اندازه­ درست داشته باشیم، می‌­توانیم آن­ را به تعداد شاخه‌های دلخواه تقسیم کنیم.

سیستم تشخیص اشیا

نقشه­ حرارتی تنها ¼ تصویر ورودی را پوشش می‌دهد تا سرعت شبکه افزایش یابد. به ازای هر کلاس یک نقشه­ حرارتی داریم. در شبکه­ CenterNet (برای مسئله‌ی ساده سیستم تشخیص اشیا) دو شاخه و در TTFNet یک شاخه وجود دارد.

دو شاخه‌ی CenterNet عبارت‌اند از:

  • شاخه‌ اندازه‌ کادر A size head، که طول و عرض یک کادر محصورکننده را نشان می‌دهد؛
  • شاخه‌ مختصات نقطه‌ میانی Offset head، که شامل فاصله x و y از مبدأ است؛ این شاخه به استفاده از نقشه­ حرارتی (که مورد نمونه‌گیری کاهشی downsampling  قرار گرفته) برمی‌گردد.

هردو شاخه فقط دو فیلتر دارند، بدین معنی که در هر نقطه از نقشه­ حرارتی فقط یک شیء می­‌تواند وجود داشته باشد. اگر می‌خواهید سایر ویژگی‌های شیء را نیز در نظر بگیرید، باید به تعداد شاخه‌ها بیافزایید.

شبکه­ TTFNet شامل یک شاخه با چهار فیلتر می‌شود که برای محاسبه­ اندازه­ استفاده می‌شود (منظور از اندازه، فواصل تا کناره­‌های شیء است).

نقشه‌های حرارتی

نقشه­ حرارتی، ماتریسی است که از مقادیر 0.0 تا 1.0 پر شده است. نقاط حداکثری (اوج) Peaks در این نقشه حاکی از وجود یک شیء هستند.

در تصویر پایین چند نقشه­ حرارتی را مشاهده می‌کنید که برای آموزش تولید شده‌اند. در این نقشه تنها یک نقطه وجود دارد که مقدار آن دقیقاً برابر با 1.0 است و احتمالات اطراف این نقطه به آرامی ناپدید می­‌شوند (کاهش می‌یابند).

سیستم تشخیص اشیا

کانولوشن شکل­‌پذیر

بیش‌نمونه‌برداری در شبکه به چندین طریق قابل انجام است. در رویکرد آسان سیستم تشخیص­ اشیا (که پیش‌تر توضیح دادیم) از الحاق، نمونه‌­گیری افزایشی و لایه­‌های پیچشی استاندارد استفاده می‌­شود. برای ارتقای این رویکرد از کانولوشن‌های شکل‌­پذیر استفاده می­‌کنیم.

شبکه­‌های عصبی پیچشی نقش شگرفی در حوزه­ یادگیری عمیق داشته‌­اند. این شبکه­‌ها امکان استخراج ویژگی را فراهم کردند، کاری که انجام آن در لایه‌­های تمام‌متصل Fully connected کار بسیار دشواری بود. این قابلیت در کنار سایر پیشرفت­‌ها در معماری باعث افزایش عمق شبکه­‌ها شده است. با این‌­حال فلسفه­ زیربنایی (به خصوص شکل چهارضلعی فیلترها) همچنان ثابت است. کانولوشن‌های شکل­‌پذیر سعی در تغییر این قضیه دارند. این کانولوشن‌ها می­‌توانند فاصله از گرید استاندارد Standard grid را بیاموزند و با این کرنل تغییر شکل ­یافته Deformed kernel منحنی‌ها را اجرا کنند.

سیستم تشخیص اشیا

متأسفانه کانولوشن‌های شکل‌پذیر هنوز در کتابخانه‌های TensorFlow و یا TensorFlow Addons (TFA) پیاده‌سازی نشده‌­اند. ما برای پشتیبانی از کانولوشن‌های دوبُعدی شکل‌پذیر Deformable Conv2d، از یک کپی از TFA A fork of TFA استفاده می‌کنیم و امیدواریم این دو به زودی با هم ادغام شوند (به ‌درخواست Pull 1129 مراجعه نمایید).

تابع زیان کانونی

یکی از مشکلات نقشه­‌های حرارتی، پراکندگی و خلوت بودن ماتریس sparse آن‌هاست. دلیل پراکندگی این است که اغلب هیچ تشخیصی صورت نمی­‌گیرد (صفر) و تنها به ندرت می­‌توانیم یک شیء را ببینیم (یک- که مقادیر اطراف آن کاهش می‌یابند).  معیار­های استاندارد نمی­‌توانند در چنین شرایطی عملکرد خوبی داشته باشند. با این­‌حال یک راه‌حل وجود دارد: تابع زیان کانونی. این تابع در هر دو شبکه‌ CenterNet و TTFNet استفاده می‌شود.

تابع زیان اشتراک هم‌پوشانی از اجتماع دو کادر محصور

CenterNet به منظور بهینه­‌سازی اندازه­ کادر محصورکننده، تابع زیان L1 را به کار می‌برد. این تابع مجموع تفاوت­‌های بین مختصات واقعی و پیش‌­بینی­‌شده­ کادرهای محصورکننده است. تابع زیان L1 مقبول به نظر م‌ی­رسد، اما غالباً برای ارزیابی استفاده نمی‌شود. برای ارزیابی معیار تابع زیان اشتراک هم‌پوشانی از اجتماع دو کادر محصور IoU
Intersection over union of bounding boxes
را به کار می‌بریم. هنگام ارتقای این معیارها نیز می­‌توانیم از همین معیار استفاده ‌کنیم؛ به این صورت که با جمع و تفریق مقدار IoU از 1، آن­ را به یک تابع زیان تبدیل می‌کنیم.

اما زمانی که هم‌پوشانی وجود نداشته نباشد، IoU صفر می­‌شود. بنابراین تابع زیان در چنین شرایطی همیشه برابر 1 است. بر اساس اصل اجتماع-اشتراک (IoU)، دو تابع زیان می‌­توان پیشنهاد داد: تابع زیان IoU تعمیم‌­یافته
Generalized intersection over union loss
که در TTFNet استفاده می‌­شود و می­‌تواند مشکلی که به آن اشاره کردیم را حل کند، و تابع زیان IoU فاصله Distance-IoU loss که بر ارائه‌ی اطلاعات مربوط به فاصله­ به تابع تمرکز دارد (این اطلاعات نشان می‌­دهند چقدر از مرکز کادر محصورکننده فاصله داریم).

سخن نهایی

پیاده‌سازی این پروژه را می­توانید در این لینک github مشاهده کنید. در انجام این پروژه از میکال لوکاک Michal Lukac و برای متن‌باز کردن آن از شرکت Ximilar کمک گرفتم. اگر می‌خواهید مدل مذکور را بدون نیاز به کدنویسی امتحان کنید، به این پست (در مورد سیستم تشخیص اشیا در نرم‌افزارهایXimilar) مراجعه نمایید.

میانگین امتیاز / 5. تعداد ارا :

مطالب پیشنهادی مرتبط

اشتراک در
اطلاع از
0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
[wpforms id="48325"]