ROLO
برای شروع، میتوانیم YOLO بازگشتی (ROLO) را بررسی کنیم، یک روش ردیابی شی است که تشخیص شی و شبکههای عصبی بازگشتی را ترکیب میکند. ROLO ترکیبی از YOLO و LSTM است.
** پیش از این آموزش بینایی کامپیوتر در همرویش منتشر شد. برای دیدن فیلم معرفی این بسته بر روی این لینک (+) و یا پخش کننده پایین کلیک کنید:
برای دریافت بسته جامع این آموزش بر روی لینک زیر کلیک کنید:
آموزش بینایی کامپیوتر با پایتون و OpenCV ___ بسته جامع
ماژول تشخیص شی
ماژول تشخیص شی از YOLO برای جمعآوری ویژگیهای بصری، همراه با اولویت استنتاج مکان استفاده میکند. در هر گام زمانی (فریم)، LSTM بردار ویژگی ورودی با طول ۴۰۹۶ را دریافت میکند و موقعیت شی ردیابی شده را بر میگرداند.
هم رویش منتشر کرده است:
آموزش تشخیص اشیای اختصاصی با yolo
SiamMask
وقتی صحبت از ردیابی اشیا به میان میآید، SiamMask یک انتخاب عالی است. این شبکه مبتنی بر شبکه عصبی سیامی (Siamese) است، که محبوبیت آن با Facenet Google افزایش یافت.
علاوه بر تولید کادرهای محصور کننده چرخش یافته در ۵۵ فریم بر ثانیه، همچنین ماسک تقسیمبندی شی کلاس – آگنوستیک (agnostic) را نیز فراهم میکند.
برای رسیدن به این هدف، SiamMask باید با یک کادر محصور کننده شروع به کار کند تا بتواند شی مورد نظر را ردیابی کند. با این حال، این به این معنی است که ردیابی شی چندگانه (MOT) با SiamMask قابل اجرا نیست، و اصلاح مدل برای پشتیبانی باعث میشود که یک آشکار ساز شی با سرعت کمتری ایجاد شود.
دو نوع ردیاب شی
دو نوع قابلتوجه دیگر از ردیابهای شی وجود دارند که از شبکههای عصبی سیامی(siamese) استفاده میکنند، مانند DaSiamRPN، که برندهی چالش VOT – 18 (کد ۰.۳.۱ PyTorch)و SiamDW (کد ۰.۳.۱ PyTorch) شدند.
پیش از این آموزش بینایی کامپیوتر با تنسورفلو در همرویش منتشر شد. فیلم معرفی این آموزش را در زیر میتوانید مشاهده کنید:
برای دریافت بسته کامل این آموزش بر روی لینک زیر کلیک کنید:
آموزش بینایی کامپیوتر با تنسورفلو ــــــــــ فصل ۱: شناسایی تصویر
DeepSORT
ما قبلا از SORT به عنوان یک روش الگوریتمی برای ردیابی اشیا یاد کردهایم. DeepSORT با جایگزین کردن معیار مرتبط سازی با یادگیری معیار کسینوسی جدید، که روشی برای یادگیری یک فضای ویژگی است که در آن شباهت کسینوسی به طور موثر از طریق بازپارامتریزاسیون (reparametrization) softmax بهینهسازی میشود، که SORT را بهبود میبخشد.
کنترل بخش و چارچوب فیلترینگ کالمن (Kalman) تقریبا مشابه SORT اصلی است. به جز کادرهای محصور کننده که با استفاده از یک شبکه عصبی کانولوشنی از پیش آموزش دیده محاسبه میشوند، که بر روی یک مجموعه داده بازشناسی فرد در مقیاس بزرگ آموزشدیده اند.
این روش نقطه شروع خوبی برای تشخیص چند شی است. زیرا پیادهسازی آن ساده است، دقت بالایی دارد، اما مهمتر از همه، بلادرنگ اجرا میشود.
TrackR-CNN
TrackR-CNN تنها به عنوان ساختار پایه برای چالش ردیابی و قطعهبندی چند شی (MOTS) معرفی شد، اما معلوم شد که واقعا موثر است.
اول از همه، ماژول تشخیص شی از Mask R-CNN در بالای ساختار ResNet-101 استفاده میکند. ردیابی کننده با ادغام کانولوشنهای سهبعدی ایجاد میشود که به ویژگیهای بنیادی اعمال میشوند و زمینه زمانی ویدئو را در بر میگیرند.
به عنوان یک جایگزین، LSTM کانولوشنال نیز در نظر گرفته میشود، اما روش دوم هیچ سودی در مقایسه با ساختار پایه ندارد.
همچنین TrackR-CNN، Mask R-CNN را به عنوان سر ارتباطی (association head) توسعه میدهد تا بتواند تشخیصها را در طول زمان مرتبط کند.
این یک لایه کاملا متصل است که پیشنهادها ناحیه را دریافت میکند و یک بردار ارتباطی برای هر پیشنهاد در خروجی میدهد. او با الهام از شبکههای سیامی و بردارهای تعبیه مورد استفاده در بازشناسایی افراد، سر ارتباطی را طراحی میکند.
این روش با استفاده از یک تطبیق توالی ویدئویی از اتلاف سه تایی سخت دستهای آموزش داده میشود که روشی کارآمدتر از اتلاف سه تایی اصلی است.
برای تولید نتیجه نهایی، سیستم باید تصمیم بگیرد که کدام تشخیصها باید گزارش شوند. تطبیق بین تشخیصهای فریم قبلی و طرحهای پیشنهادی فعلی با استفاده از الگوریتم مجارستانی (Hungarian) انجام میشود، در حالی که تنها اجازه میدهد زوج تشخیصها با بردارهای وابستگی کوچکتر از برخی آستانهها باشند.
++Tracktor
معیار ردیابی چند شی ، به لطف نتایج عمومی آن، پیدا کردن آخرین پیشرفتهای MOT را آسانتر میکند. چالش ردیابی CVPR ۲۰۱۹ باعث پیشرفت هم در دقت و هم در سرعت ردیابها شد. ++Tracktor با رویکردی بسیار ساده و در عین حال موثر بر جدول نتایج تسلط (leaderboard) داشت.
این مدل موقعیت یک شی را در فریم بعدی با محاسبه رگرسیون کادر محصور کننده، بدون نیاز به آموزش یا بهینهسازی بر روی دادههای ردیابی، پیشبینی میکند.
آشکار ساز شی برای، ++Tracktor
آشکار ساز شی برای، ++Tracktor عبارت است از: Faster R-CNN معمولی با 101 لایه ResNet و FPN، که بر روی مجموعه داده تشخیص عابر پیاده MOT17Det آموزشدیده است.
ایده اصلی ++Tracktor
ایده اصلی ++Tracktor استفاده از شاخه رگرسیون از Faster R – CNN برای ردیابی فریم به فریم با استخراج ویژگیها از فریم فعلی و سپس استفاده از موقعیتهای شی از فریم قبلی به عنوان ورودی فرآیند ادغام RoI برای بازگرداندن موقعیت آنها به فریم فعلی است.
همچنین از برخی مدلهای حرکتی مانند جبران حرکت دوربین براساس ثبت تصویر، و بازشناسایی کوتاهمدت استفاده میکند.
روش شناسایی مجدد، بخشهای غیرفعال شده را برای تعداد ثابتی از فریمها ذخیره میکند، و سپس بخشهای تازه کشفشده را برای بازشناسایی ممکن با آنها مقایسه میکند. فاصله بین بخشها (tracks) با یک شبکه عصبی سیامی اندازهگیری میشود.
JDE
تشخیص مشترک و جایگزاری (JDE)یک پیشنهاد بسیار جدید شبیه به RetinaNet است که از الگوی دو مرحلهای انحراف دارد. این آشکارساز تک شات برای حل یک مساله یادگیری چند وظیفه طراحی شدهاست، برای مثال طبقهبندی لنگر، رگرسیون کادر محصور کننده و یادگیری تعبیه ای. JDE از Darknet-53 به عنوان ساختار بنیادی برای به دست آوردن ماتریسهای ویژگی ورودی در سه مقیاس استفاده میکند.
پس از آن، ماتریسهای ویژگی با استفاده از نمونه افزایی و اتصالات باقی مانده با یکدیگر ترکیب میشوند. در نهایت، سرهای پیش بینیها بر روی ماتریسهای ویژگی ادغامشده، که یک نقشه پیشبینی متراکم را برای سه کاری که در بالا ذکر شد، تولید میکنند، متصل میشوند.
برای دستیابی به ردیابی شی، علاوه بر کادرهای محصور کننده و کلاسها، مدل JDE همچنین بردارهای تعبیه ظاهر را هنگام پردازش فریمها تولید میکند. این تعبیه ظاهر با تعبیه اشیا شناساییشده قبلی با استفاده از یک ماتریس وابستگی مقایسه میشود.
در نهایت، الگوریتم قدیمی مجارستانی (Hungarian) و فیلتر کالمن (Kalman) برای صاف کردن مسیرها و پیشبینی مکانهای اشیا شناساییشده قبلی در قاب فعلی استفاده میشوند.
The Standoff
حال اجازه دهید عملکرد چهار روش ردیابی شی چندگانه ذکر شده را تجسم و مشاهده کنیم. آزمایشها زیر بر روی دستگاهی است که از اوبونتو ۱۸.۰۴ را با یک پردازنده مرکزی اینتل Core i7–8700 و پردازندهی گرافیکی NVIDIA GeForce GTX 1070 Ti، استفاده می کند انجام شدهاست.
نمونه ویدئوها از مجموعه داده آزمون MOT17 بارگیری میشوند. وضوح همه ویدئوها است، با فریمهای مختلف در ثانیه (FPS) و طول، در حالی که چهار مورد انتخابشده برای این آزمون در 30 فریم در ثانیه ثبت میشوند.
این آزمون نشان میدهد که هیچ برنده روشنی وجود ندارد، چرا که به این نتیجه میرسیم که آیا ما استنتاج بلادرنگ سریعتر، تشخیص دقیقتر، یا شاید بخشبندی بیشتر میخواهیم.
هم رویش منتشر کرده است:
آموزش yolo-تشخیص اشیا در opencv
نتیجه گیری
علاوه بر این، ثابت شدهاست که عملکرد ردیاب به شدت وابسته به ماژول تشخیص شی واقعی است، بنابراین ممکن است که ما یک ردیاب پایینتر را مشاهده کنیم که نتایج بهتری را تنها به دلیل آشکارساز برتر خود تولید میکند. با گفتن این جمله، این افکار من است:
- Deep SORT به خاطر سادگی، سریعترین بخش این دسته است. 16 فریم در ثانیه را به طور متوسط تولید میکند در حالی که هنوز هم دقت خوبی را حفظ میکند، قطعا آن را به یک انتخاب مناسب برای تشخیص چند شی تبدیل میکند.
- ++Tracktor بسیار دقیق است، اما یک اشکال بزرگ آن این است که برای ردیابی بلادرنگ مناسب نیست. آزمایشها ما یک اجرای متوسط از 3 فریم در ثانیه را نتیجه داد. اگر اجرای بلادرنگ یک نگرانی نباشد، این یک مدعی بزرگ است.
- TrackR – CNN خوب است زیرا تقسیمبندی را به عنوان یک پاداش فراهم میکند. اما همانند ++Tracktor، استفاده از آن برای ردیابی بلادرنگ، با اجرای متوسط ۱.۶ فریم در ثانیه دشوار است.
- JDE به طور متوسط عملکرد مناسب 12 فریم در ثانیه را نشان میدهد. توجه به این نکته مهم است که اندازه ورودی برای مدل است، بنابراین بر این اساس، اگر مدل روی Full HD آموزش داده شود، باید انتظار داشته باشیم که JDE به FPS پایین تری برسد. با این وجود، دقت بالایی دارد و باید انتخاب خوبی باشد.
Detectron2 دومین تکرار چارچوب FAIR برای تشخیص و تقسیم بندی اشیا است. این شامل بسیاری از مدلهای آموزش دیده است که میتوان آنها را در مجموعهی مدل ها یافت. اگر PyTorch را دوست دارید، من پیشنهاد میکنم از Detectron2 استفاده کنید.
اگر TensorFlow را ترجیح میدهید، میتوانید از API تشخیص TensorFlow استفاده کنید، جایی که میتوانید کد را به همراه مجموعهی مدلهای آموزش دیده استفاده کنید.
Faster R-CNN
- PyTorch: Detectron2
- TensorFlow: TF Object Detection API
- Tensorpack: link
Mask R-CNN
- PyTorch: Detectron2
- TensorFlow: TF Object Detection API or this
- Tensorpack: link
YOLO
SSD
- PyTorch: link
- TensorFlow: TF Object Detection API
RetinaNet
- PyTorch: Detectron2
Keras: link
کدهایی برای ردیابی اشیاء
ROLO
- TensorFlow: link
SiamMask
- PyTorch 0.4.1: link
Deep SORT
TrackR-CNN
- TensorFlow 1.13.1: link
Tracktor++
- PyTorch 1.3.1: link
JDE
- PyTorch ≥ 1.2.0: link
کلید واژگان
ردیابی اشیا – روش های ردیابی اشیا – شبکه عصبی سیامی – ماژول تشخیص شی – تشخیص شی – ردیابی اشیاء – ردیاب شی – روش های ردیابی اشیاء – روش های ردیابی اشیاء – شبکه عصبی siamese – ماژول تشخیص اشیا – تشخیص اشیا – شبکه عصبی سیامی – فرق ردیابی اشیا و تشخیص اشیا – روش های ردیابی اشیا
منبع :
Object Detection and Tracking in 2020
دوره های آموزشی مرتبط
- آموزش تشخیص چهره با پایتون و OpenCV ۷۲,۰۰۰ تومان
- آموزش پردازش تصویر با OpenCV و پایتون (شروع سریع و عمیق) ۸۲,۰۰۰ تومان
1 دیدگاه برای “ردیابی اشیا و تشخیص اشیا با بینایی کامپیوتر — بخش دوم ”
این دو قسمت بسیار جمع بندی خوبی برای دوستان آشنا به حوزه تشخیص اشیا بودن. ممنون از قلم شیوای شما.