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

با تشکر

دسته بندی ها

0 امتیاز

با سلام
من یه سری سوال در ارتباط با افزایش دیتا دارم که در ادامه به ترتیب میپرسم، در واقع من کمبود دیتا دارم و میخوام با روش های مختلفی دیتامو زیاد کنم و موارد زیر برام سوال شده:
1. اینکه افزایش دیتا رو ما میتونیم به دو شکل مختلف اجرا کنیم یعنی اینکه یکبار تصاویر مجموعه train مون رو با اعمال تغییراتی مثل ایجاد چندین درجه rotation و تغییر شدت روشنایی زیاد کنیم مثلاً با این کار 10 برابر کنیم مجموعه تصاویر train رو، دوم اینکه موقع ورود تصویر به شبکه به صورت اتوماتیک از هر تصویر یک مجموعه تصویر مثل crop های مختلف تهیه بشه؟
2. اگر حالت دوم سوال اول رو که تهیه crop های مختلف از تصویر در حین ورود به شبکه هست در نظر بگیریم (اول به دلیل افزایش دیتا دوم به دلیل کاهش سایز تصاویرمون که در حد 1200*1000 پیکسل هستند و سوم به دلیل اینکه scale های مختلفی از بخش های متفاوت تصویر رو به عنوان جایگزین تصویر اصلی آموزش ببینه برای استخراج ویژگی های قوی تر از هر بخش تصویر)، سه سوال برام پیش میاد:
1.2. اول اینکه در فرایند آموزش این crop های مختلف که تهیه می شوند برای هر تصویر چطور مدیریت می شوند؟ یعنی اگر استراتژی mini batch استفاده میشه و در ضمن لایه های batch normalization هم داریم قراره هر تصویر به اضافه تمام crop هاش در یک batch قرار بگیرند یا چطور میشه؟ همینجا یه ابهامی که د مورد آموزش با در نظر گرفتن لایه های batch norm دارم رو بپرسم و اون اینکه آیا کلاً همیشه در فاز آموزش شبکه دارای لایه های batch norm هر batch باید شامل تصویر مربوط به یک کلاس آموزشی باشد یا نه همچین الزامی وجود نداره و در هر batch مجموعه ای از تصاویر متعلق به کلاس های مختلف میتونه قرار بگیره؟
2.2. دوم اینکه در فرایند تست این قضیه چطور مدیریت میشه یعنی بردارهای امتیاز احتمالاتی softmax برای هر تصویر مربوط به یک تصویر اصلی باهم میانگین گرفته میشن تا یک بردار احتمالاتی نهایی برای تصویر مربوطه ساخته بشه و از روی اون برچسب داده تست مشخص بشه یا چطور؟
3.2. اگر برامون حفظ aspect ratio در تصویر اصلی و crop هاش اهمیت داره و همونطور که گفتم سایز تصاویر بزرگ و متفاوت هست، سایز تصویر و زیر تصویرهایی که ازش استخراج میشه، چطور مدیریت میشه؟ در واقع میخوام بدونم که در این مرحله میشه عرض تصویر اصلی رو به 256 و ارتفاع رو با حفظ نسبت ابعاد کاهش داد و زیر تصویرها را نیز با سایزهای مختلفی از تصویر استخراج کرد و کوچکترین بعد آنها را نیز به 256 تبدیل کرده و با حفظ نسبت ابعاد ارتفاع اونها رم تغییر داد تا scale های مختلفی از تصویر داشته باشیم و سر آخر برای مدیریت اختلاف سایزها بجای fc اخر از لایه conv استفاده کرد ؟یا نه در مورد rescale کردن زیر تصویرها نباید به قضیه اینطوری نگاه کرد؟
4.2. اگر من نخوام crop ها همین طور بی قاعده و قانون بیان بیرون، بلکه ROI های خاصی رو برای crop ها بخوام در نظر داشته باشم، این هم در کتگری این حالت دوم قرار میگیره یا نه میشه مثل حالت 1 که در اون از قبل باید crop های دلخواهم از تصویر رو تهیه کنم و در مجموعه تصاویر train ام بذارم؟ اگه این کار رو بکنم با وجود اینکه در مرحله تست دیگه فقط تصویر اصلی آنالیز میشه و crop های مختلف از اون تصویر در scale های مختلف برای تعیین برچسب اون تصویر بررسی نمیشه، دقت به اندازه قبل خواهد بود و در مرحله train به اندازه کافی همه ویژگی ها قوی شده اند یا نه نیاز هست که برای دقت خوب multi crop ها در مرحله تست هم از تصویر گرفته بشن؟

پیشاپیش سپاسگزارم

توسط (132 امتیاز)
ویرایش شده توسط

1 پاسخ

+1 امتیاز
 
بهترین پاسخ

سلام
شما میتونید دیتا رو به هر روشی که مدنظرتون هست مثلا 10 برابر کنید بعد همینطور در عین حال کراپ رو هم انجام بدید اینطور نیست که فقط یا این باشه یا اون.
وقتی کراپ میکنید یعنی یک تصویر شما یک بخشی از اون به جای کل تصویر به شبکه ارائه میشه. مثلا فرض کنید اندازه بچ شما برابر با 5 هست. یعنی هر بار 5 تصویر به شبکه ارائه میشه. هرکدوم این تصاویر کراپ روشون اعمال میشه بصورت رندوم. مثلا تصویر اول از وسط کراپ میشه . تصویر دوم گوشه سمت راست تصویر سومی مثلا گوشه سمت چپ پایین و همینطور الی اخر. این 5 تا به شبکه ارائه میشن . دور بعد به همین شکل بصورت رندوم یکسری تصاویر دیگه به شبکه تغذیه میشن و این پروسه انجام میشه. اینطور نیست که یک تصویر با همه کراپ هاش در هر بچ به شبکه ارائه بشه. چندتا تصویر بعنوان ورودی میگیرید بعد هرکدوم بصورت رندوم کراپ میشن و به شبکه ارائه میشن و این بارها تکرار میشه و هربار یک بخشی از هرتصویر به شبکه ارائه میشه اینطور.
در مورد اینکه در یک بچ ایا فقط از یک کلاس تصویر هست یا نه باید بگیم اگه خوب شافل کرده باشید تصاویر رو و کلاسها بالانس باشن این پیش نمیاد (اندازه بچ شما هم باید یه مقدار متعارفی باشه خیلی کوچیک نباید باشه) البته پیش میاد که از یک کلاس مثلا تصاویر بیشتری نسبت به بقیه باشه ولی خب اگه خوب شافل شده باشه و اندازه بچ هم خیلی کوچیک نباشه این مساله ای ایجاد نمیکنه و چندان بغرنج نمیشه و چیز خاصی نیست.
سوال 2.2 شما رو متوجه نشدم . منظور شما اینه که تست چطوری انجام میشه ؟ درزمان تست کراپ های مختلف به شبکه ارائه میشه و امتیازها میانگین گرفته میشه و امتیاز بالاتر ارائه میشه. اگه این نبود لطفا توضیح بیشتری بدید
3.2 این هم کامل متوجه نشدم . اما برای حفظ aspect ratio و کراپ دستتون بازه بله میتونید مثلا کوچکترین بُعد رو برابر با 256 ست کنید و بُعد دیگه بر اساس حفظ نسبت تغییر کنه . برای اینکه با اسکیل های مختلف کار کنید میتونید تصویر ورودی رو ببرید به اسکیل های مختلف بعد کراپ کنید (اینطور ترین کنید) بعد موقع تست هم به همین شکل تصاویر ورودی رو میبرید به اسکیل های مختلف با کراپ های مختلف (همونایی که موقع ترین استفاده کردید) تصاویر رو به شکبه ارائه میکنید و بعد میانگین میگیرید .
میتونید هم از dense evaluation استفاده کنید. بیاید لایه کانولوشن بزارید بعد تصویر رو با سایز اصلیش به شبکه بدید اخرش فیچرمپ بدست اومده رو با global pooling(اورج یا مکس) اسکورهای مورد نظر رو بدست بیارید و بدید به سافتمکس.
همینطور میتونید ایندوتا رو با هم ترکیب کنید یعنی dense evaluation داشته باشید به همراه مالتی کراپ .
4.2 رو هم دقیق متوجه نشدم. اگه منظور شما اینه که خودتون مشخص کنید کراپ به چه صورتی انجام بشه خوب بله دست شماست. در مورد کراپ هم وقتی شما در زمان ترینینگ این عملیاتهایی که صحبتش رو کردیم انجام بدید شبکه ویژگیهای بهتری رو یاد میگیره اما داستان اینه که در زمان تست هم ما سعی میکنیم همون شرایطی که در ترینینگ داشتیم اینجا هم داشته باشیم تا بهترین نتیجه رو بگیریم . مشکل در بحث کراپ اینه که وقتی ما تصاویر بزرگتر داریم و میخوایم با یک اندازه کوچکتری به شبکه تغزیه کنیم (مثلا اندازه تصاویر ما 300 در 300 بوده ولی ما کراپ 225 در 225 میگرفتیم ) حالا در زمان تست هم که تصاویری با سایزهای مختلف داریم (یا حتی همه 300 در300 هم باشن) ما دقیقا نمیدونیم بخش مهم مورد نظر ما کجای تصویره .مثلا قراره سیب رو شناسایی کنیم . یک موقع یک سیب بالای یک درخته گوشه سمت راست تصویر یک موقع یک سیب وسط تصویره یک موقع یک سیب تو یه تصویر دیگه یه جای دیگه اس . وقتی کراپ میگیریم باید کل تصویر رو بدیم یا اگر نمیتونیم چند بخش با هم رو بدیم تا اگه این شی ما دست برقضا در یکی از اون قسمتها نبود مثلا در کراپ بعدی باشه و بتونیم تشخیص بدیم .
اینجا اگه تصاویر ما نرمال هستن و اشیاء یا اون بحثهای مورد نظر ما جایگاهشون مشخص باشه خب میشه در تست یک کراپ ثابت گرفت . مثلا همه تصاویر وسط چین باشن. اینجا کافیه ما یه کراپ از وسط بگیریم تمام.
برای همین نُرم این بوده که اگر در ترینینگ از کراپ استفاده شده در تست هم از کراپهای مختلف استفاده بشه تا نتیجه بهینه حاصل بشه .
هر بخشی رو من درست متوجه نشدم لطفا اشاره کنید و توضیح بیشتر بدید تا انشاءالله بیشتر باز بشه

توسط (4.3k امتیاز)
انتخاب شده توسط
سلام
خیلی ممنونم ازتون
در مورد 2.2. یعنی میانگین روی امتیازهای احتمالاتی مربوط به هر کلاس که softmax تهیه کرده گرفته میشه دیگه درسته یا نه؟
در مورد 4.2. در واقع من اگر بخوام بجای استفاده از ایده مالتی کراپ خودم برای هر تصویر کراپ های مشخصی که توش آبجکت هام هستن رو تهیه کنم و به مجموعه ترینم اضافه کنم، و در ورودی شبکه هر تصویری چه کراپ چه اصلی چه تصویر آموزش و چه تست  rescaleکردن با حفظ نسبت رو داشته باشم و برای مدیریت اختلاف سایز بعد دوم یا همونطور که فرمودید در آخر شبکه global poolingاستفاده کنم یا بجای fc ها conv استفاده کنم، حالا موقع تست که فقط خود تصویر رو میبینه آیا قدرت استخراج ویژگی اش از همین تصویر به اندازه ای است که در روش مالتی کراپ برای تصاویر تست هم کراپ هاش تو scale های مختلف ارائه میشد؟
مجددا ممنونم
سلام. خواهش میکنم. 2.2 بله
4.2 یک نکته رو من بگم وقتی کراپ میگیریم ایده اینه که هر بار شبکه با بخشی از تصویر مواجه بشه. مثلا یکبار یک ماشین رو با یک زمینه پشتش ببینه یکبار یک بخش دیگه ماشین رو ببینه مثلا نیمه جلویی ماشین مشخص باشه دفعه دیگه نیمه عقبی ماشین مشخص باشه و مثلا به این شکل. اینطوری نیست که همیشه کراپ بگیریم و دقیقا کل تصویر ما مشخص باشه در اون کراپ همیشه. نمیدونم منظورم رو تونستم درست برسونم یا خیر. از "... و در ورودی شبکه هر تصویری ... تا استفاده کنم" خیلی گیج کننده اس. من واقعا این تیکه رو متوجه نمیشم. منظور شما اینه که اگر در ورودی شما بصورت multi scale ترین کنید (تصاویر نسبت ابعادشون حفظ شده و شما هم کراپ رو بر همین اساس انجام دادید) و اخر از دنز اولویشن استفاده کنید ایا این به تنهایی خوبه؟ بهتر ازمالتی کراپ هست؟ یعنی در تست چند کراپ بگیرید ؟ اگه یادتون باشه تو کارگاه توضیح دادیم و تو مقاله VGGNet هم حالتهای مختلف اومده من جمله همین. اونجا dense evaluation از مالتی کراپ دقتش کمی کمتر بود و از طرفی ترکیب اینها باز دقت بهتری ارائه میکرد.
سلام
خیلی ممنون
در واقع منظورم اینه که اگر من بخوام خودم کراپ ها رو از قبل خیلی خاص تر انتخاب کرده باشم و به مجموعه ترین اضافه کرده باشم(مثلا کراپ هام شامل نواحی خیلی با اهمیت در دسته بندی باشه اما هربار یک تکه از اون نواحی با اهمیت رو به عنوان یه کراپ استفاده کنم) و دیگه از روش معمول مالتی کراپ هم استفاده نکنم که در تست هم مجبور به این کار باشم (برای مدیریت سایز هم dense evaluation رو داشته باشم)، این هم به اندازه ای که مالتی کراپ و dense evaluation در کنار هم خوب جواب میدن، جواب میده یا نه؟
چون من اینطور فکر میکنم کافیه با کراپ های مختلف در scale های مختلف آموزش ببینه و در تست فقط خود تصویر ارائه بشه نتیجه خوب میشه و لازم نیست در تست هم کراپ های مختلف تصویر رو در scale های مختلف ببینه تا بهتر تصمیم گیری کنه، اما برای اطمینان از شما میپرسم که ایا در تست هم کراپ های مختلف از اون نصویر مورد تست رو در scale های مختلف دیدن به تشخیص درست کمک میکنه یا نه؟
سلام. اون مالتی کراپ و دنز اولویشن که میگیم در زمان تست هست که دقتش خیلی خوب میشه. یعنی در اسکیل های مختلف در زمان تست + کراپ اونها استفاده میشه. یعنی دنز اولویشن مکمل این مالتی کراپ هست (و بلعکس)(وی جی جی نت رو حتما مطالعه کنید خیلی کمکتون میکنه).
اینکه شما در زمان ترینینگ بیایید اسکیل های مختلف با کراپهای مختلف (هرچی مورد نظر شماست) به شبکه بدید بله باعث میشه شبکه فیچرهای خیلی بهتری نسبت به حالت تک اسکیل بعنوان مثال بدست بده. حالا شما میتونید اون مرحله اخر مالتی کراپ هم بکنید میتونید نکنید (وقتی از دنز اولویشن دارید استفاده میکنید)
پس اگر در تست کراپ های مختلف از اسکیل های مختلف رو شبکه ببینه و بعد شما میانگین بگیرید بله این نتیجه بهتری میده نسبت به زمانی که در تست صرفا از یک اسکیل مثلا استفاده بشه .
سلام
خیلی ممنونم از شما.
لطف کردید ، حالا متوجه شدم که مالتی کراپ و اسکیل های مختلف در تست هم کمک کننده است.
مجدداً سپاسگزارم
...