سلام
توضیحاتی که دوستان دادن مثل جناب فروزنده نژاد خوب بود اما ذکر چند نکته ضروریه
زمانی که تصاویر شما خیلی بزرگ هست قائدتا اگه از معماری عمیقی استفاده میکنید باید دقیق بگید . صرف اینکه بگید من از resnet50 دارم استفاده میکنم درست نیست . چون یه معماری ممکنه 400 هزارپارامتر داشته باشه ممکنه 25 میلیون پارامتر داشته باشه هر دوتاش هم هست. پس ضروریه اگر از جایی چیزی میگیرید اگر میدونید تعداد پارامتر چقدره اونو قید کنید اگر نه یا معماری رو قرار بدید و اگر امکانش نیست لینک به معماری بدید .
وقتی تعداد پارامتر شما خیلی زیاد باشه قائدتا مصرف حافظه خیلی زیاد میشه خصوصا اگر تصاویر ورودی بزرگ باشن و در معماری هم سعی بر حفظ اندازه توده ورودی تا جای ممکن داشته باشه !
زمانی هم که تصاویر بزرگ دارید سعی نکنید خودتون خیلی سریع ریسایزش کنید به یک تصویر کوچکتر . سعی کنید حدالمقدور اندازه ورودی رو از طریق اندازه فیلتر و استرایدهای بزرگتر در لایه های اولیه کاهش بدید .
یعنی وظیفه کاهش ابعاد اولیه رو به اندازه کرنل و استراید در لایه های اول محول کنید . اینطور غنای تصاویر ورودی شما تا حدودی (بسته به انتخاب و محدودیت های شما ) حفظ میشه و طی 2 لایه میتونید اندازه ورودی رو بطور قابل توجهی کاهش بدید و درکنارش به اطلاعات مناسب هم دسترسی پیدا کنید . اگر همینطور برفرض مثال تصاویر 5000 در 5000 پیکسل خودتون رو بیایید 256 در 256 تبدیل کنید اطلاعات زیادی از دست میره (میتونید تست کنید هر دو حالت رو) .
دقت کنید که من نمیگم نیاز به ریسایز نیست . همه این موارد رو شرایط شما مشخص میکنه اما همیشه سعی کنید کاهش ابعاد رو در تصاویر ورودی رو در لایه های اول با استفاده از اندازه کرنل بزرگتر و استراید بیشتر داشته باشید .
اندازه کرنل 11 و 7 و یا اندازه استراید 4 و 3 میتونن به ترتیب انتخاب های خوبی برای کاهش ابعاد باشن . الزاما محدود به این ها نیستید میتونید مقادیر دیگه رو هم استفاده کنید اما این ها رو هم استفاده کنید کاهش ابعاد خوبی بدست میارید .
در مورد استفاده از اندازه کرنلهایی مثل 5 در 5 و 7 در 7 تنها در صورتی که در ابتدای شبکه هستید ایرادی نداره . در بقیه جاهای شبکه استفاده نکنید.
زمانی که قراره از معماری خاصی استفاده کنید بسته به ماهیت اون معماری رفتارها عوض میشه . در حال پیشفرض سعی کنید معماری عمیقی داشته باشید نسبت به عریض . اگر قرار بر کاهش سربار محاسباتی هست بجای اینکه اول از عمق شبکه بزنید ابتدا سعی کنید لایه ها رو نازک تر کنید عوض اینکه عریضتر کنید. در گام بعدی توجه به اندازه توده در طول شبکه کنید . سعی کنید کاهش ابعاد داشته باشید ولی باید اینجا دقت کنید که زیاده روی نداشته باشید. این باید متناسب با معماری شما باشه . یادتون باشه هرچقدر لایه ها داده بیشتری در اختیار داشته باشن نتیجه بهتری بدست میاد دادهبیشتر هم میتونه در فرم اندازه توده باشه چون اطلاعات همسایگی بیشتری داره و غنی تر هست. برای همین سعی کنید به یه تعادل اینجا برسید.
این موارد رو در نظر داشته باشید تا به نتیجه بهتری برسید.