بهترین روش تشخیص اشیا به نظر شما کدامند ؟ امروزه انتخاب یک روش ردیابی و تشخیص اشیا برای یک برنامه ممکن است سخت باشد. این مقاله تلاشی برای خلاصه کردن بهترین روشها و روندها در این موضوعات اساسی در ردیابی اشیا و تشخیص اشیا با بینایی کامپیوتر است.
امروزه، مشکل طبقهبندی اشیا در یک تصویر به دلیل پیشرفتهای بزرگ در دید کامپیوتری و یادگیری عمیق به طور کلی، کم و بیش حل شدهاست.
مدلهای عمومی در دسترس آموزشدیده بر روی مقادیر زیادی از دادهها این کار را سادهتر میکنند.
بر این اساس، جامعه تحقیقاتی دید کامپیوتری تمرکز خود را در موضوعات بسیار جالب و چالش برانگیز دیگر، مانند تولید تصویر خصمانه، انتقال سبک عصبی، داستانسرایی تصویری، و البته، تشخیص شی، سیستم تشخیص اشیا ، تقسیمبندی و ردیابی معطوف کرده است.
ما باید با ادای احترام به روش های قدیمی اثبات شده کار خود را شروع کنیم و پس از آن به بررسی پیشرفتهترین روشهای فعلی بپردازیم.
پیش از این در همرویش آموزش بینایی کامپیوتر منتشر شد. قبل از اینکه شروع به خواندن ادامه این مقاله کنید، پیشنهاد میکنم فیلم معرفی دوره آموزشی بینایی کامپیوتر را در زیر ببینید:
برای دریافت بسته کامل آموزش بینایی کامپیوتر (+) کلیک کنید.
روش های تشخیص اشیا — روشهای قدیمی
سیستم تشخیص اشیا مدتی است که وجود دارد؛ روش های سنتی تشخیص اشیا با بینایی کامپیوتر در اواخر دهه ۹۰ ظاهر شدند.
این روشها از تشخیص ویژگی کلاسیک، ترکیبشده با یک الگوریتم یادگیری ماشینی مانند KNN یا SVM برای طبقهبندی، یا با یک تطبیق توصیفی مانند FLANN برای سیستم تشخیص اشیا استفاده میکنند.
از مهمترین الگوریتمهای تشخیص ویژگی میتوان به SIFT و SURF به عنوان توصیفکنندههای ویژگی، و FAST برای تشخیص گوشه اشاره کرد.
توصیف گرهای ویژگی از یک سری تقریبهای ریاضی برای یادگیری نمایش تصویری که نسبت به مقیاس ثابت است، استفاده میکنند.
بعضی از این روشهای قدیمی گاهی اوقات میتوانند این کار را انجام دهند، اما کارهای زیادی هست که ما میتوانیم انجام دهیم.
در مورد ردیابی اشیا، به نظر میرسد که روشهای سنتی بهتر از روشهای تشخیص اشیا، آزمون زمان را تحمل میکنند.
ایدههایی مانند فیلترینگ کالمن(Kalman Filtering)، جریان نوری متراکم و پراکنده هنوز هم کاربرد گستردهای دارند.
فیلتر کالمن هنگامی که در آپولو PGNCS برای برآورد موقعیت بهینه برای فضاپیما براساس اندازهگیریهای موقعیت قبلی و دادههای جدید استفاده شد، به شهرت شد.
امروزه تاثیر آن هنوز هم در بسیاری از الگوریتمها دیده میشود، مانند ردیابی ساده آنلاین و بی درنگ (SORT)، که از ترکیبی از الگوریتم مجارستانی (Hungarian) و فیلتر کالمن برای رسیدن به ردیابی مناسب شی استفاده میکند.
هم رویش منتشر کرده است:
آموزش تشخیص اشیای اختصاصی با yolo
پیشرفتهای جدید تشخیص اشیا
R-CNN
در سال ۲۰۱۴، نواحی با ویژگیهای CNN (R-CNN)، به عنوان تنفس هوای تازه برای تشخیص اشیا و قطعه بندی معنایی بود، به طوری که روشهای سطح پایین قبلی، مشابه الگوریتمهای قدیمی SIFT در نظر گرفته میشدند، که تنها در یک مجموعه پیچیده قرار داشتند، و نیاز به قدرت محاسباتی زیادی داشتند و بیشتر بر ویژگیهای سطح پایین، مانند لبهها، گرادیانها و گوشهها تکیه داشتند.
جستجوی انتخابی
سیستم R – CNN از سه ماژول اصلی تشکیل شدهاست.
بهترین ماژول حدود ۲۰۰۰ پیشنهاد ناحیه را با استفاده از یک الگوریتم تقسیمبندی به نام جستجوی انتخابی استخراج میکند تا مشخص شود کدام قسمت از یک تصویر بیشترین احتمال را برای داشتن یک شی دارد.
جستجوی انتخابی استراتژیهای مختلفی را اعمال میکند، بنابراین میتواند تا جای ممکن شرایط تصویر را کنترل کند.
این الگوریتم تصویر را با پنجرهای در مقیاسهای مختلف اسکن میکند، و به دنبال پیکسلهای مجاور است که رنگها و بافتها را به اشتراک میگذارند، در حالی که نسبتهای روشنایی را نیز در نظر میگیرد.
شبکه عصبی کانولوشنی
ماژول دوم یک شبکه عصبی کانولوشنی بزرگ است که یک بردار ویژگی با طول ثابت را از هر پیشنهاد که از جستجوی انتخابی برگردانده میشود استخراج میکند.
صرفنظر از اندازه یا نسبت ابعاد، ناحیه کاندید تحت تاثیر image warping قرار میگیرد تا اندازه ورودی مورد نیاز را داشته باشد.
در نهایت، ماژول نهایی هر ناحیه را با SVMهای خطی خاص دستهبندی میکند.
R- CNN برای آموزش و آزمایش بسیار کند است و با استانداردهای امروزی خیلی دقیق نیست.
با این حال، این یک روش اساسی است که راه را برای Fast R-CNN، و در حال حاضر، Faster R-CNN و Mask R-CNN پیشرفته هموار کرد.
Fast R-CNN
Fast R-CNN توسط یکی از نویسندگان R-CNN به عنوان جانشین شایسته پیشنهاد شد.
یک پیشرفت بزرگ در R-CNN این است که به جای ایجاد گذر رو به جلو برای هر پیشنهاد ناحیه، R-CNN یک ماتریس ویژگی(feature map) کانولوشنی را برای کل تصویر ورودی در یک مسیر رو به جلو در شبکه محاسبه میکند که آن را بسیار سریعتر میکند.
بهبود دیگر این است که معماری به صورت انتها به انتها با از تابع هزینه چند وظیفهای آموزش داده میشود، که منجر به آموزش سادهتر میشود.
ورودی Fast R-CNN یک تصویر همراه با مجموعهای از طرحهای پیشنهادی برای شی است.
ابتدا، آنها از یک شبکه کانولوشنی کامل عبور داده میشوند تا ماتریس ویژگی کانولوشنی را به دست آورند.
سپس، برای هر طرح پیشنهادی برای اشیاء، یک بردار ویژگی با طول ثابت ازماتریس ویژگی با استفاده از لایه ادغام ناحیه مورد نظر(RoI) استخراج میشود.
Fast R-CNN هر یک از این RoIها را با استفاده از لایههای کاملا متصل به یک بردار ویژگی نگاشت میکند، تا در نهایت احتمال سافت مكس ( softmax ) خروجی و كادر محصوركننده، که به ترتیب کلاس و موقعیت شی هستند، به دست آید.
Faster R-CNN
معلوم شد که Faster R-CNN هنوز هم بسیار كند است، و این عمدتا به این دلیل است که CNN توسط الگوریتم پیشنهاد ناحیه ذکر شده، جستجوی انتخابی، کوچک شدهاست.
Faster R-CNN این مساله را با کنار گذاشتن روش پیشنهاد ناحیه سنتی و تکیهبر یک رویکرد یادگیری کاملا عمیق حل میکند.
انواع ماژول Faster R-CNN
این شبکه از دو ماژول تشکیل شدهاست: شبکه پیشنهاد ناحیه (RPN) و آشكارساز Faster R-CNN .
این دو ماژول در یک شبکه واحد ادغام میشوند و به صورت انتها به انتها آموزش داده میشوند.
نویسندگان Faster R-CNN هنگامی که RPN را طراحی کردند تا بر آنچه که در تصویر ورودی مهم است تاکید کنند، از مکانیزم توجه الهام گرفتند.
ایجاد پیشنهادها منطقهای با لغزش یک شبکه کوچک بر روی آخرین لایه کانولوشن مشترک شبکه انجام میشود.
شبکه کوچک به یک پنجره از ماتریس ویژگی کانولوشنی به عنوان ورودی نیاز دارد.
هر پنجره لغزشی به یک ویژگی با ابعاد پایینتر نگاشت میشود، بنابراین درست مانند قبل، به دو لایه کاملا متصل تغذیه میشود: یک دستهبندی كادر و لایه رگرسیون-كادر.
لازم به ذکر است که كادرهای محصوركننده نسبت به كادرهای مرجع دستچین شده که لنگر (anchor) نامیده میشوند پارامتر دهی میشوند.
به عبارت دیگر، RPN به جای مختصات روی تصویر، چهار مختصات اصلاحی را برای حرکت و تغییر اندازه یک لنگر به موقعیت درست پیشبینی میکند.
Faster R-CNN از ۳ مقیاس و ۳ نسبت ابعاد به طور پیشفرض استفاده میکند که منجر به ۹ لنگر در هر پنجره لغزشی میشود.
Faster R-CNN یكی از پیشرفته ترینها محسوب میشود و قطعا یکی از بهترین گزینهها برای تشخیص اشیا است.
با این حال، تقسیمبندی بر روی اشیا کشفشده را فراهم نمیکند، یعنی قادر به مکانیابی پیکسلهای دقیق شی نیست، بلکه تنها یک كادر محصور کننده در اطراف آن است.
در بسیاری از موارد نیازی به این کار نیست، اما در صورت نیاز، Mask R-CNN باید اولین چیزی باشد که به ذهن میرسد.
پیش از این آموزش بینایی کامپیوتر با تنسورفلو در همرویش منتشر شد. فیلم معرفی این آموزش را در زیر میتوانید مشاهده کنید:
برای دریافت بسته کامل این آموزش بر روی لینک زیر کلیک کنید:
آموزش بینایی کامپیوتر با تنسورفلو ــــــــــ فصل ۱: شناسایی تصویر
Mask R-CNN
نویسندگان Mask R – CNN در تحقیق AI فیس بوک (FAIR)، Faster R – CNN را برای انجام قطعهبندی نمونه، همراه با کلاس و كادر محصور كننده گسترش دادند.
قطعه بندی چیست ؟
قطعهبندی نمونه ترکیبی از تشخیص شی و قطعهبندی معنایی است، که به این معنی است که هم تشخیص تمام اشیا در یک تصویر را انجام میدهد و هم قطعهبندی هر نمونه را در حالی که آن را از بقیه نمونهها متمایز میکند انجام میدهد.
مرحله اول (پیشنهاد ناحیه) Mask R – CNN مشابه مرحله قبل است، در حالی که در مرحله دوم یک ماسک دودویی برای هر RoI به موازات کلاس و كادر محصور کننده ایجاد میکند.
این ماسک دودویی بدون توجه به دستهها نشان میدهد که آیا پیکسل بخشی از هر شی است.
کلاس مربوط به پیکسلها را میتوان به سادگی توسط كادر محصور کنندهای که در آن قرار دارند، اختصاص داد، که این امر آموزش مدل را بسیار آسانتر میکند.
تفاوت دیگر در مرحله دوم این است که لایه ادغام RoI (RoIPol) معرفیشده در Fast R-CNN با RoIAlign جایگزین شدهاست.
انجام قطعه بندی نمونه با RoIPol منجر به عدم دقت در بسیاری از پیکسلها میشود، به عنوان مثال ماتریس ویژگی اشتباه در مقایسه با تصویر اصلی.
این امر به این دلیل رخ میدهد که RoIPol کوانتیزهسازی نواحی موردنظر را انجام میدهد که شامل گرد کردن مقادیر ممیز شناور به مقادیر اعشاری در ماتریس ویژگی حاصل میباشد.
از سوی دیگر، RoIAlign بهبود یافته با اجتناب از هر گونه کوانتیزهسازی و استفاده از درونیابی دو خطی برای محاسبه مقادیر دقیق ویژگیهای ورودی، ویژگیهای استخراجشده را به درستی با ورودی همتراز میکند.
YOLO
ما در حال حاضر تمرکز خود را از یک راهحل دقت محور به یک راهحل سرعت محور تغییر میدهیم. با یك دلیل خوب شما فقط یك بار نگاه میکنید (YOLO) محبوبترین روش تشخیص شی است.
این قابلیت را دارد که ویدئوهای بلادرنگ را با حداقل تاخیر پردازش کند در حالی که دقت قابل احترامی را حفظ میکند.
و همانطور که از نام آن پیداست، تنها به یک تکثیر رو به جلو برای تشخیص تمام اشیا در یک تصویر نیاز دارد.
YOLO در دارک نت (Darknet) طراحی شدهاست، یک چارچوب شبکه عصبی منبع باز که در C و CUDA نوشته شدهاست، و توسط همان مولفی توسعهیافته است که YOLO، جوزف ردمون (Joseph Redmon ) را ایجاد کردهاست.
آخرین نسخهی آن YOLOv۳ است، که بزرگتر و دقیقتر در اشیا کوچک است، اما در اشیا بزرگتر در مقایسه با نسخه قبلی کمی بدتر است.
در YOLOv۳، Darknet-53 (۵۳ لایه CNN با اتصالات باقی مانده) استفاده میشود، که کاملا جهشی از Darknet-19 قبلی (۱۹ لایه CNN)برای YOLOv۲ است.
بر خلاف نسخههای قبلی YOLO که كادر محصوركننده، امتیاز اطمینان و کلاس كادر را برای خروجی تولید میكرد، YOLOv۳ كادرهای محصوركننده را در ۳ مقیاس مختلف در عمقهای مختلف شبکه پیشبینی میکند.
تشخیص نهایی شی در تصویر با استفاده از سرکوب غیر حداكثر (NMS) تصمیمگیری میشود، یک روش ساده که كادرهای محصوركنندهای را که با یکدیگر که بیش از حد آستانه از پیش تعریفشده مبتنی بر اشتراك روی اجتماع (IOU) همپوشانی دارند حذف میکند.
در چنین تضاد همپوشان، كادر محصور كننده با بزرگترین امتیاز اطمینان اختصاصدادهشده توسط YOLO برنده میشود، در حالی که بقیه دور ریخته میشوند.
درست مانند برنامه Faster R-CNN، مقادیر كادرها نسبت به كادرهای مرجع هستند. با این حال، به جای داشتن لنگرهای دستچین یکسان برای هر وظیفه ای، از خوشهبندی k – means بر روی مجموعه دادههای آموزشی استفاده میكند تا كادرهای بهینه را برای كار پیدا كند.
تعداد پیشفرض كادرهای YOLOv۳، 9 است. همچنین ممکن است جای تعجب باشد که از سافتماکس(softmax) برای پیشبینی کلاس استفاده نمیشود، بلکه از دستهبندهای لجستیک مستقل چندگانه استفاده میشود که با تابع هزینه آنتروپی متقابل باینری آموزشدیده اند.
هم رویش منتشر کرده است:
آموزش YOLO----تشخیص اشیا با پایتون و OPENCV
SSD
آشکارساز چند باکس تک شات (SSD) چند ماه پس از YOLO به عنوان یک جایگزین ارزشمند مطرح شد.
به طور مشابه با YOLO، تشخیص شی در یک انتشار رو به جلو شبکه انجام میشود. این مدل انتها به انتها CNN تصویر ورودی را از طریق مجموعهای از لایههای کانولوشن عبور میدهد و كادرهای محصور کننده کاندیدا را از مقیاسهای مختلف در طول مسیر ایجاد میکند.
به عنوان حقیقت مبنا برای آموزش، SSD اشیا برچسب گذاری شده را به عنوان نمونههای مثبت در نظر میگیرد و هر كادر محصور كننده دیگری که با مثبتها همپوشانی ندارد، نمونههای منفی هستند.
مشخص شد که ساخت مجموعه داده به این روش، آن را بسیار نامتعادل میسازد. به همین دلیل، SSD روشی به نام استخراج منفی سخت را درست بعد از انجام NMS اعمال میکند.
استخراج منفی سخت (hard negative mining) روشی برای انتخاب تنها نمونههای منفی با بیشترین اتلاف اطمینان است، به طوری که نسبت بین مثبت و منفی حداکثر 1: 3 است. این امر منجر به بهینهسازی سریعتر و پایدار شدن مرحله آموزش میشود.
در تصویر بالا که در مقاله رسمی یافت میشود، میتوانیم ببینیم که شبکه پایه VGG – ۱۶ است. با این حال، امروزه ما اغلب میتوانیم SSD را با شبكههای پایه ResNet، Inception و حتی MobileNet ببینیم.
RetinaNet
RetinaNet در سال ۲۰۱۷ توسط محققان از FAIR پیشنهاد شد. همچنین یک چارچوب یک مرحلهای مانند YOLO و SSD است، که سرعت را برای دقت بدتر از چارچوبهای دو مرحلهای مانند تغییرات R-CNN معامله میکند.
RetinaNet از شبكه پایه ResNet + FPN برای ایجاد یک هرم ویژگی کانولوشن چند مقیاسی غنی استفاده میکند.
طبق معمول، دو زیر شبکه در بالا، یکی برای دستهبندی كادرها، و دیگری برای ایجاد افست از كادرهای پیش بینی به كادرهای حقیقی، متصل شدهاند.
همانطور که قبلا ذکر شد، عدم تعادل کلاسها در طول آموزش آشکارسازهای متراکم، اتلاف آنتروپی متقابل را از بین میبرد.
تابع هزینه کانونی (focal loss) نوآورانه، آموزش تمرکز بر دقت بر روی مجموعه پراکنده نمونههای سخت را بهبود میبخشد، در حالی که تعداد نمونههای منفی آسان را محدود میکند.
این کار با تغییر شکل دادن تابع هزینه انجام میشود تا مثالهای ساده به اندازه نمونههای سخت ارزش نداشته باشند.
معرفی فاکتور وزن یک روش رایج برای پرداختن به عدم تعادل کلاس است.
نویسندگان برای اولین بار α=0 را آزمایش کردند، اما این دقت بدتر از فرم متعادل آلفا بود. همچنین ممکن است متوجه شوید که وقتی γ=0 باشد، اتلاف کانونی معادل اتلاف آنتروپی متقابل است.
کلید واژگان
روش های تشخیص اشیا – سیستم تشخیص اشیا – بهترین روش تشخیص اشیا – الگوریتم های تشخیص اشیا – تشخیص اشیا با بینایی کامپیوتر – object tracking – object detection
منبع :
object-detection-and-tracking-in-2020
دوره های آموزشی مرتبط
- بینایی کامپیوتر با تنسورفلو ---- فصل ۲: کدنویسی کانولوشن ۲۴۳,۰۰۰ تومان
- آموزش تشخیص چهره با پایتون و OpenCV ۷۲,۰۰۰ تومان
3 دیدگاه برای “بهترین روش های تشخیص اشیا و ردیابی اشیا با بینایی کامپیوتر _ بخش اول ”
سلام وقت بخیر
برای پروژه تشخیص نمادهای ناهنجار در فیلم و تصویر ، ممنون میشم یک دیتاست مناسب پیشنهاد بدین.
سلام برای موضوع تشخیص اشیا در هوای طوفانی و گرد و غبار مقاله ای دارید بخونم میخام موضوع پایان نامه ام بردارم ممنون میشم کمک کنید
با سلام حتما در مقالات سایت جستجو بفرمایید. به بخش تحریریه این مورد پیشنهاد شد.