بستگی به مساله داره، ممکنه شبکه شما fcn باشه، در نتیجه نیازی به crop کردن نیست، ولی خروجی بزرگتری هم بهتون می ده که وقتی می خواید با خروجی های بقیه scale ها ترکیبش کنید، نیازه تا کارهایی شبیه resize انجام بدید
در بقیه موارد اگه شبکه مثالا برای classification ساخته شده و سایز مهم باشه، بله، باید بعد از scale کردن، قسمتهای مورد نظر رو crop کرد
در مورد اینکه scale روی تصویر اصلی اعمال بشه یا crop ها، بسته به پیاده سازی داره و می تونه هر دو نوعش باشه.
خوده فریم ورکها هم معمولا توابع مرتبط با crop دارند که می تونید ازش استفاده کنید، برای مثال tf، تابع random_crop هم داره. اما توی مراحل آموزش تا جایی که خوده من کار کردم، معمولا تابع تولید کننده batch رو خودمون نوشتیم چون ساده بوده و این کارا مثل random cropping و بقیه پردازشها هم اونجا انجام میشه (البته میشه توی دل شبکه هم به کار برد، یعنی روی feature map ها یا ...)
توی keras هم برای این موضوع یه سری کارا توی ImageDataGenerator انجام شده:
https://github.com/fchollet/keras/issues/3338
بله اگه حین آموزش دادهها تولید بشن، مسلما ram مهم میشه تا اینکه اول دیتاها تولید و روی دیسک ذخیره بشن و بعدش توی آموزش لود بشن
البته اگه خیلی دیتاها زیاد باشه میشه از دیسک یه batch لود کرد و از روی این batch یه سری mini batch تولید کرد