برای آموزش این نوع کلاسیفیرها به دو دسته تصویر نیاز داریم.
دسته اول:
تصاویر خود آبجکت مورد نظر یا اصطلاحاً تصاویر مثبت گفته میشه .این تصاویر بیانگر خود آبجکت هستند می تونن یک مقدار از ناحیه واقعی آبجکت بزرگتر هم باشند .
دسته دوم :
تصاویر پس زمینه تصاویری که در آنها آبجکت دیده نشود یا اصطلاحاً تصاویر منفی گفته میشه. این تصاویر می تونن به هر اندازی باشند تصاویر بزرگ توسط پروسه آموزش بخش بندی می شوند .یکی از مشکلات
آموزش کلاسیفیر های آبشاری همین تهیه تصاویر پس زمینه هستش.
حالا فلدری به نام train ایجاد کنید و در این فلدر دو فلدر دیگر به نام های foreground و background و cascades ایجاد کنید.2 فایل متنی با نام background.txt و foreground.txt هم
در این فلدر ایجاد کنید که در ادامه توضیح خواهیم داد که چه چیزهایی باید داخل این فایل ها قرار بدید.
کل تصاویری که برای پس زمینه تهیه کردید در فلدر foreground بریزید و کل تصاویر مربوط به آبجکت را در foreground بریزید.تصاویر مربوط به foreground
می تونه تصویر کامل یا تصویر برش خورده باشه در هر صورت باید فایل ground thruth تهیه کنید برای دو دسته از تصاویر.
فایل ground thruth یا فایل annotation فایلی هستش که در آن اطلاعات تصاویر اعم از نام تصویر و یا متا دیتا مربوط به هر یک از تصاویر از جمله مهم ترین آنها ناحیه آبجکت
هستش ذخیره میشه.
فرمت فایل annotation مربوط به فایل پس زمینه با نام background.txt که قبلا ایجادش کردیم به شرح زیر است.
background/img1.jpg
background/img2.jpg
اسم هر فایل تصویری را در یک سطر قرار می دیم مسیر هم به صورت relative داده شده یعنی آدرس از فلدر جاری.
فرمت فایل annotation مربوط به فایل آبجکت ها با نام foreground.txt که قبلا ایجادش کردیم به شرح زیر است.
img1.jpg 1 140 100 45 45
img2.jpg 2 100 200 50 50 50 30 25 25
اسم هر فایل در یک سطر پس از آن تعداد آبجکت ها که در تصویر اول 1 آبجکت و در تصویر دوم 2 آبجکت مشخص شده پس از تعداد آبجکت ها اطلاعات مربوط به نواحی هر آبجکت
در تصویر مورد نظر باید درج شه که به ترتیب برای هر ناحیه به صورا x,y,width,height هستش برای وارد کردن نواحی بعدی هم یک فاصله قرار بدید به همین ترتیب اطلاعات
نواحی بعدی را وارد کنید.
قبل از اینکه بریم سراغ آموزش کلاسیفیر های آبشاری شما می بایست اطلاعات مربوط به تصاویر آبجکت ها یا تصاویر مثبت را به فایلی به نام vec تبدیل کنید trainer کتابخانه
opencv این نوع تصویر را به عنوان ورودی تصاویر آبجکت ها از شما دریافت می کنه.
نحوه ساخت فایل vec:
برای ساخت فایل vec بایستی از یکی از نرم افزارهای utility همراه opencv به نام opencv_createsamples.exe استفاده کنید.
این فایل در فلدر bin این کتابخانه قرار داده شده است.فرض کنید ما 150 تصویر از آبجکت ها داریم و کوچکترین آبجکتی که باید شناسایی بشه 40*40 هستش یه صورت زیر عمل می کنیم.
opencv_createsamples.exe -vec foregound.vec -info foreground.txt -w 40 -h 40 -num 150
-vec برای مشخص کردن فایل خروجی vec هستش.
-info فایل annotation مربوط به تصاویر آبجکت ها را مشخص می کنه.
-w پهنای آبجکت
-h ارتفاع آبجکت
-num تعداد تصاویری که قصد داریم با آنها آموزش را انجام بدیم.
حالا برای اینکه مطمئن شوید که فایل vec ساخته شده به درستی ایجاد شده می تونید به صورت زیر عمل کنید.
تصاویر موجود در فایل vec را به شما نشان می دهد با فشردن کلیدی می تونید تصاویر بعدی را ببینید.
opencv_createsmaples.exe -vec foreground.vec -w 40 -h 40 -show
برای انجام عملیات آموزش از فایل opencv_traincascade.exe که در فلدر bin قرار داره استفاده می کنیم.
فایل های مربوط به آموزش به صورت مرحله به مرحله به صورت فایل stage ذخیره میشه که این تعداد stage توسط کاربر مشخص میشه در ضمن عملیات آموزش به هر نحوی بسته شه از آخرین stage آموزش شروع میشه .