به بخش پرسش و پاسخ یادگیری عمیق خوش آمدید,
این نسخه آزمایشی سایت است.
لطفا به نکات زیر توجه کنید:
  • برای ارتباط با مدیران میتوانید از صفحه مدیران اقدام کنید.
  • سوال و جواب ها باید به زبان فارسی باشند. استفاده از زبان انگلیسی یا فینگلیش برای پاسخ دادن مجاز نیست.
  • لطفا بعد از پرسش سوال لینک سوال خود را در گرو تلگرام (Iran Deep Learning Group) معرفی کنید تا سریعتر به جواب برسید. برای دسترسی به آخرین لینک از منابع یادگیری استفاده کنید
  • لطفا بجای عکس از متن استفاده کنید. اگر متون طولانی هستند از سایت pastebin.com برای اپلود استفاده کرده و لینک حاصل را در سوال خود قرار دهید. برای قرار دادن تصویر ، از بخش ارسال تصویر ادیتور سایت استفاده کنید.
  • بعد از دریافت پاسخ، بهترین پاسخ را از طریق کلیک بر روی علامت تیک انتخاب کنید
  • اگر با خطا و یا مشکلی مواجه شدید از بخش تماس با ما در انتهای صفحه و یا ایمیل Coderx7@gmail.com موضوع را اطلاع دهید.

با تشکر

دسته بندی ها

0 امتیاز

سلام
دوستان چندتا سوال داشتم این هم خلاصه ایی ROI Align میباشد .

This is very similar to RoIPooling in Faster R-CNN. For each RoI, RoIPooling first "finds" the features in the feature maps that lie within the RoI's rectangle. Then it max-pools them to create a fixed size vector.
Problem: The coordinates where an RoI starts and ends may be non-integers. E.g. the top left corner might have coordinates (x=2.5, y=4.7). RoIPooling simply rounds these values to the nearest integers (e.g. (x=2, y=5)). But that can create pooled RoIs that are significantly off, as the feature maps with which RoIPooling works have high (total) stride (e.g. 32 pixels in standard ResNets). So being just one cell off can easily lead to being 32 pixels off on the input image. For classification, being some pixels off is usually not that bad. For masks however it can significantly worsen the results, as these have to be pixel-accurate. In RoIAlign this is compensated by not rounding the coordinates and instead using bilinear interpolation to interpolate between the feature map's cells. Each RoI is pooled by RoIAlign to a fixed sized feature map of size (H, W, F), with H and W usually being 7 or 14. (It can also generate different sizes, e.g. 7x7xF for classification and more accurate 14x14xF for masks.) If H and W are 7, this leads to 49 cells within each plane of the pooled feature maps. Each cell again is a rectangle -- similar to the RoIs -- and pooled with bilinear interpolation. More exactly, each cell is split up into four sub-cells (top left, top right, bottom right, bottom left). Each of these sub-cells is pooled via bilinear interpolation, leading to four values per cell. The final cell value is then computed using either an average or a maximum over the four sub-values.


1- مگه RPN مختصات کاندیداهای آبجکت ها رو به ROI Pooling نمیده ؟ پس چجوری این داره مختصات رو round میکنه مگر این مقادیر داخل ROI را MAX-POOL نمیکنه پس این چه ربطی به مختصات داره ؟
2- as the feature maps with which RoIPooling works have high (total) stride (e.g. 32 pixels in standard ResNets). So being just one cell off can easily lead to being 32 pixels off on the input image.
یعنی چی که stride=32 میباشد ؟ میدونم این stride چی هست خب مگر قرار نیست که هر ROI که بهش داده شد رو به وکتور ثابت تبدیل کنه اینوقت این stride اینجا برای چی استفاده میشود ؟

توسط (389 امتیاز)

1 پاسخ

+1 امتیاز

سلام
1-مختصات اشیا احتمالی معمولا توی تصویر اصلی بدست میاد و بعدش map میشه روی feature map هایی که میخوایم ازش ویژگی استخراج کنیم برای کارهای بعدی. تصویر اصلی ممکنه 512x512 باشه اما feature map هایی که داریم باهاش کار میکنیم ممکنه 32x32 باشه. برای همین مختصات اون box هایی که توی تصویر اصلی به دست میارید وقتی تقسیم میشه، ممکنه اعداد اعشاری تولید کنه. خیلی ساده بخوایم بگیم، این همون تبدیل های ساده هندسیه، box اولیه شما توی فضای 512x512 به چه مختصاتی توی 32x32 تبدیل میشه؟ می بینید که لزوما مختصات صحیح نداره.
این مختصات رو باید داشته باشیم تا بدونیم از کدوم قسمت باید pooling رو انجام بدیم

2-این stride با اون stride توی لایه های کانولوشن یا max pooling فرق داره، اینجا منظورش این بوده که شما وقتی توی feature map هایی که داریم ازش ویژگی انتخاب میکنیم، یه پیکسل این طرف اون طرف بشی، توی تصویر اصلی معادل 32 تا پیکسله. برای همینه که میگه اگه همینطوری گرد کنیم اعداد رو، ممکنه کلی خطای spatial ایجاد کنه و نقشه segmentation شما بد در بیاد. طبیعی هم هست، 32 تا پیکسل به خصوص برای مناطقی مثل لبه های ظریف خیلی بزرگ حساب میشه.

تفاوت roi align با roi pooling همینه که توی roi align ما با دقت بیشتری انتخاب میکنیم که از کجا ویژگی های مورد نظرمون رو بکشیم بیرون و اون بردار با طول ثابته رو بسازیم. چرا مهمه این قضیه؟ چون بحث segmentation هم وسطه و مکان دقیق خیلی خیلی خیلی مهمه وگرنه همون roi pool به نسبت خودش توی معماری های قبلی که فقط بحث object detection بود بد کار نمی کنه

توسط (1.6k امتیاز)
پس اونوقت roi align دقت بهتری دارد بنظرتون خوب نیست از این به بعد چه در دتکشن و چه در سگمنتیشن از این استفاده بشه ؟ از یه طرف هم از درون یابی خطی استفاده میکنه بنظرم سرعت این نسبت به roi pooling باید کند باشد ؟
خب الان توی Mask RCNN هم object detection هست هم segmentation و دقتش هم از ساختارهای قبلی بهتر شده
به نویسنده هاشم دقت کنید می بینید اینا اکثرا همون گروهی هستن که از RCNN شروع کردن و بعد شده fast و faster و حالا هم Mask RCNN و اگه اشتباه نکنم یه مقاله هم همین اخیرا دادن به اسم
Learning to Segment Everything
از نظر محاسباتی هم درسته که درون یابی خطی نسبت به گرد کردن حجم محاسبات بالاتری داره اما نسبت به دقتی که به دست میارید(همون مقاله mask rcnn رو ببینید) و اینکه حجم محاسباتش آنچنان هم زیاد نیس، می ارزه که از roi align استفاده بشه
...