در این پروژه شما باید هر تصویر را با توجه به محتوای1 آن دسته‌بندی2 نمایید. برای مثال آیا شیئی3 از یک دسته4 خاص (مثل صفحه کلید) در تصویر وجود دارد یا خیر. یا اینکه تصویر متعلق به صحنه5 فرودگاه است یا خیابان. به مثال اول دسته‌بندی شیء و به مثال دوم دسته‌بندی صحنه گفته می‌شود.

در حالت کلی این سامانه‌ها بر پایه‌ی چارچوب یادگیری ماشین کار می‌کنند. بدین معنی که با داشتن تعدادی نمونه‌ی مثبت:

positive

و تعدادی نمونه منفی:

negative

برای یک تصویر جدید بتواند دسته‌بندی را انجام دهد:

query

برای ارزیابی این سیستم‌ها پایگاه داده‌های مختلفی وجود دارد که دسته‌ها و روش ارزیابی را تعیین کرده‌اند.

۱. مقدمه

هدف از طرح مسئله‌ی دسته‌بندی تصاویر، تشخیص محتوای یک تصویر و تعیین دسته‌ای است که تصویر بدان تعلق دارد. برای آنکه بتوان محتوای یک تصویر را شناسایی کرد، لازم است اطلاعاتی از تصویر استخراج شده و مورد پردازش قرار گیرد. برای پردازش این اطلاعات روش‌های مختلفی ارائه شده است که هرکدام ویژگی‌های خاص خود را دارند. منظور از دسته بندی تصویر، تشخیص موضوع اصلی تصویر و مفهومی است که به بیننده می‌رساند. در نتیجه می‌توان تصویر را در یکی از دسته‌هایی که از پیش تعریف شده است قرار داد.
یکی از موارد استفاده از مسئله‌ی دسته‌بندی تصاویر در هنگام کار با منابع تصویر حجیم است. به عنوان نمونه زمانی که بخواهیم در میان تعداد بسیار زیادی تصویر موجود، یک تصویر معین، و یا همه‌ی تصاویر مربوط به یک موضوع خاص را بیابیم، بهترین راه استفاده از این تکنیک است. همچنین مورد دیگری که می‌توان مثال زد تشخیص و تعیین نواحی در عکس‌های ماهواره‌ای می‌باشد. عکس‌های ماهواره ای مساحت بسیار زیادی را پوشش می‌دهند و از حجم بالایی از اطلاعات در تصویر برخوردارند. لذا برای بررسی این عکس‌ها و استخراج اطلاعات از آن‌ها، عکس را به تعداد زیادی قطعات کوچکتری از تصویر تقسیم می‌کنند و از تکنیک دسته‌بندی تصاویر کمک می‌گیرند.

۲. کارهای مرتبط

یک پژوهش انجام‌گرفته در این زمینه، استفاده از تکنیک SPM6 برای شناسایی مناظر طبیعی است.[3]
در این روش تصویر به تعداد زیادی قسمت‌های کوچک‌تر تقسیم می‌شود. سپس برای هر قسمت نمودار ویژگی‌های محلی آن قسمت محاسبه می‌گردد. با داشتن نمودار ویژگی‌های تمامی قسمت‌های تصویر می‌توان محتوای تصویر اولیه را با دقت نسبتا بالایی تشخیص داد. این امر با تکنیکی تحت عنوان سبد ویژگی‌ها انجام می‌پذیرد.
اساس کار تکنیک سبد ویژگی‌ها بر مبنای تقسیمات نامنظم تصویر مورد بررسی، قرار گرفته است.[11] البته این تکنیک شاخه‌های دیگری همچون تشخیص الگو و یا تشخیص کلمات نیز دارد. تصاویر زیر[12] مربوط به شاخه‌ی تشخیص الگو می‌باشد که سعی شده با استفاده از آن کلیات عملکرد این تکنیک توضیح داده شود.

استخراج ویژگی‌های هر الگو

در تصویر فوق سه الگو وجود دارد. برای هر الگو سه ویژگی در نظر گرفته شده است، شامل سه قطعه‌ی کوچک از تصویر. در واقع این سه قطعه سبد ویژگی‌های الگوی مورد نظر را تشکیل می‌دهند.
تصویر زیر مربوط به تشخیص هر الگو از روی سبد ویژگی‌ها است. همانطور که پیش‌تر گفته شد، نمودار همه‌ی قطعات برای هر نمونه ترسیم می‌شود و سپس از روی نمودار می‌توان تشخیص داد هر نمونه مربوط به کدام الگو بوده است.
محاسبه نمودار قطعات bag-of-features برای نمونه‌ها

پژوهش دیگری که بیشتر روی تصاویر حاوی اشیاء کارایی دارد، روش LLC7 نام گرفته که با تاکید بر نیازمند بودن رویکرد سبد ویژگی‌ها از روش SPM به دسته بندهای غیر خطی، سعی در ارائه‌ی روشی دارد که در آن از دسته‌بندی خطی استفاده شود.[6]
در روش LLC ویژگی‌های استخراج‌شده از تصویر در چند مرحله مورد نگاشت قرار می‌گیرند تا در نهایت در قالب برداری از ویژگی‌ها درآیند. تصویر زیر شمایی از تبدیل چندمرحله‌ای ویژگی‌های تصویر به بردار ویژگی‌هاست.
توضیح تصویر

برای محاسبه تقریبی از روش LLC می‌توان از روش جستجوی k همسایه‌ی نزدیک استفاده نمود و با مرتبه‌ی پیچیدگی (O(M+K^2 به جواب رسید.

۳. آزمایش‌ها

برای پیاده سازی پروژه از روش استخراج ویژگی‌ها استفاده شده است. در واقع هدف آنست که با انجام پردازش‌های لازم روی تصاویر، نمودار8 مربوط به ویژگی‌های هر تصویر را محاسبه کرده و دسته‌بند مورد استفاده را بر مبنای نمودارهای حاصل آموزش داده و مورد آزمایش قرار دهیم. خوشبختانه داده‌های تهیه شده از قبل مورد پردازش قرار گرفته‌اند و نمودار ویژگی‌های آن‌ها محاسبه گشته و قابل استفاده است. لذا در انجام پیاده‌سازی تنها بر روی آموزش و آزمایش دسته‌‌بند مورد استفاده کار شده است. در قسمت «پیوندهای مفید» این گزارش، پیوندی برای دسترسی به داده‌های استفاده شده قرار داده شده است.
روند کلی پیاده‌سازی اینگونه است که در مرحله‌ی اول از تعدادی نمونه‌ی مثبت و تعداد خیلی بیشتری نمونه‌ی منفی استفاده می‌شود و این نمونه‌ها به یک دسته‌بند SVM خطی آموزش داده می‌شوند. همانطور که پیشتر گفته شد آموزش دسته‌بند با استفاده از نمودار ویژگی‌های این تصاویر انجام می‌شود. در مرحله‌ی بعدی تعدادی نمونه‌ی مثبت و منفی دیگر به عنوان تست به دسته بند داده می‌شود و دسته‌بند با توجه به نمودار ویژگی‌های هر تصویر و آنچه که قبلا یاد گرفته است، برای هر تصویر یک امتیاز در نظر می‌گیرد. از آنجاییکه مثبت و یا منفی بودن نمونه‌های تست مشخص است می‌توان بررسی کرد امتیازهای درنظر گرفته شده برای نمونه‌ها تا چه حد تناسب داشته است. (توضیحات جزئی‌تر در رابطه با پیاده‌سازی انجام شده بصورت کامنت در متن برنامه آورده شده است و علاقه‌مندان می‌توانند به فایل برنامه مراجعه نمایند.)
نکته‌ای که در این روش وجود دارد آنست که نتیجه‌ی دسته‌بند برای یک نمونه‌ی مجهول یک امتیاز تعلق به کلاس مثبت است. یعنی عددی که هرچه بزرگتر باشد نشان‌دهنده‌ی احتمال تعلق بیشتر به کلاس مثبت است. اما اینکه چه حد آستانه‌ای برای اعلام تعلق به کلاس مثبت انتخاب شود(با توجه به امتیاز در نظر گرفته شده برای نمونه‌ی مجهول)، بستگی به نتایج دسته‌بند در مرحله‌ی آزمایش دارد. می‌توان حد آستانه‌های متفاوتی در نظر گرفت و دقت دسته‌بند را برای هریک اندازه‌گیری کرد و مقداری که به دقت بالاتری منجر می‌شد را به عنوان حد آستانه معرفی کرد.
به عنوان نمونه‌ای از عملکرد دسته‌بند، از 112 نمونه تصویر هواپیما(مثبت) و 1019 نمونه تصویر متفرقه(منفی) به منظور آموزش دسته‌بند استفاده شد. همچنین 126 تصویر هواپیما و 1077 تصویر متفرقه‌ی دیگر به عنوان نمونه‌های تست استفاده شدند که با تصاویر نمونه‌های آموزش متفاوت بودند.
در نتیجه‌ی این آزمایش تعداد 36 تصویر با امتیازی بالاتر از 0.1(به عنوان حد آستانه) مشخص شدند که از این تعداد 23 نمونه واقعا تصویر هواپیما بوده و مابقی به اشتباه هواپیما تلقی شده اند. شکل زیر نشان‌دهنده‌ی نمونه‌های منفی و مثبتی است که در این 36 تصویر قرار دارند، به همراه امتیازی که برای هریک در نظر گرفته شده است.

نتایج آزمایش دسته بند

همانطور که ملاحظه می‌شود بالاترین امتیاز 3.45 بوده که به اولین تصویر از سمت چپ در بالای شکل تعلق گرفته است و پس از آن امتیازات روندی نزولی داشته‌اند تا به تصویری با کمترین امتیاز، یعنی 0.1، رسیده است.
باتوجه به آنچه گفته شد از 36 نمونه‌ی دسته‌بندی شده به عنوان کلاس مثبت، تنها 23 عدد واقعا به کلاس مثبت تعلق داشته‌اند و با این حساب می‌توان دقت دسته‌بند آموزش داده شده را در حدود 0.64 دانست.
لازم به ذکر است در این پیاده‌سازی از کتابخانه‌ی VLfeat استفاده شده است که امکانات زیادی در امر پردازش تصویر در اختیار برنامه‌نویس قرار می‌دهد. فایل‌های مربوط به این کتابخانه به همراه کد پیاده‌سازی پروژه در سایت گیت‌هاب قرار داده‌شده است. پیوندی برای صفحه‌ی حاوی این فایل‌ها در قسمت «پیوندهای مفید» گزارش درج گردیده است.

۴. بهبود نتایج

اولین موردی که برای بالا رفتن دقت دسته‌بند پیشنهاد می‌شود تعیین کردن حد آستانه‌ی مناسب است. این موضوع که در بخش قبلی نیز مطرح شد، نیازمند آزمون و خطا در تعیین حد آستانه‌ی مناسب برای بدست آوردن بالاترین دقت ممکن است. البته این روش کارایی چندانی ندارد و بیشتر بر این موضوع تاکید دارد که حد آستانه‌ای که برای دسته‌بند در نظر گرفته می‌شود نباید نامعقول باشد زیرا دقت دسته‌بند را تحت تاثیر قرار خواهد داد.
مورد دیگری که پیشنهاد می‌شود مربوط به نرمال کردن نمودار ویژگی‌های تصاویر مورد استفاده است. البته در نسخه‌ی قبلی هم نمودارهای نرمال‌سازی شده بودند ولی در این مرحله از تابع دیگری برای نرمال‌کردن نمودارها استفاده شده که دقت دسته‌بند را تا حد بسیار خوبی بالا برده است. لذا باید توجه داشت از میان توابع متفاوتی که برای نرمال کردن نمودارها وجود دارد، تابعی استفاده شود که نتیجه‌ی بهتری بدست می‌دهد. در اینجا با جایگزین کردن دو خط زیر در متن برنامه بجای تابع قبلی، تابع ساده‌ی رادیکال را برای نرمال کردن نمودارها بکار می‌بریم.
trainHistograms = sqrt(trainHistograms) ;
testHistograms = sqrt(testHistrograms) ;
پس از انجام این تغییر مجددا آزمایش قبل را تکرار کرده تا تغییری که در امتیازدهی به تصاویر انجام شده است را مشاهده کنیم. بدیهیست هیچ یک از پارامترهای دیگر برنامه را تغییر نمی‌دهیم و از همان نمونه‌های قبلی استفاده می‌کنیم تا فقط تاثیر تغییر تابع نرمال‌سازی در نتایج جدید اعمال شده باشد.

نتایج جدید پس از تغییر تابع نرمال سازی

ملاحظه می‌شود این بار 64 نمونه دارای امتیازی بالاتر از 0.1 بوده‌اند. از این تعداد 51 نمونه به درستی دسته‌بندی شده اند و به این ترتیب دقت دسته‌بند چیزی در حدود 0.79 محاسبه می‌شود که نسبت به حالت قبل افزایش داشته است.
اگر نگاه دقیق‌تری به نتایج جدید بیندازیم متوجه می‌شویم که از سه تصویر آخر دوتای آن‌ها متعلق به کلاس منفی هستند. و این بدان معناست که اگه سه تصویر آخر از نمونه‌های تلقی شده به عنوان مثبت حذف شوند، دقت دسته بند افزایش خواهد یافت. به عبارت دیگر با تغییر حد آستانه به مقدار جدید 0.15 مشاهده خواهیم کرد که از 61 نمونه‌ی تعلق گرفته به کلاس مثبت، 50 نمونه به درستی دسته‌بندی شده‌اند و دقت دسته‌بند در این حالت 0.82 خواهد بود. البته واضح است حد آستانه را نباید صرفا از روی یک دسته نمونه‌ی آموزش و تست تعیین کرد و موردی که مطرح شد فقط مثالی بود برای درک بهتر پیشنهاد تغییر حد آستانه برای بهبود دقت دسته‌بند.

۵. کارهای آینده

در بخش آزمایش‌ها از داده‌هایی استفاده شد که نمودار ویژگی‌های آن‌ها از پیش آماده بودند. پیشنهادی که مطرح می‌شود تا شاید به بهبود دقت دسته‌بند منجر شود، انجام پیاده‌سازی لازم برای محاسبه نمودار ویژگی‌های تصویر است. برای محسابه‌ی این نمودار ابتدا لازم است تصویر مورد پردازش قرار گیرد و طی مراحلی مطابق تصویر زیر keypointها و SIFT9 descriptorهای آن استخراج شوند.

بدون توضیح

همانطور که تغییر در تابع نرمال‌سازی نمودارها منجر به افزایش دقت دسته‌بند شد، ممکن است با تغییر رویه‌ی تولید نمودار ویژگی‌ها و استفاده از روشی صحیح‌تر و کارآمدتر، نمودارهای تعیین کننده‌تری تولید کرد و دقت دسته‌بند را در امتیازدهی به داده های تست افزایش داد.

۶. مراجع

[1] Visual Object Recognition, Kristen Grauman and Bastian Leibe, Synthesis Lectures on Artificial Intelligence and Machine Learning, April 2011, Vol. 5, No. 2, Pages 1-181. پیوند
[2] Gabriella Csurka, et al, Visual Categorization with Bags of Keypoints, ECCV Wrokshops 2004" پیوند
[3] Beyond Bags of Features: Spatial Pyramid Matching for Recognizing Natural Scene Categories, Lazebnik, Schmid, and Ponce, CVPR 2006 پیوند
[4] Modeling the Shape of the Scene: a Holistic Representation of the Spatial Envelope, Oliva and Torralba, IJCV 2001. پیوند
[5] Perronnin, Florent, and Christopher Dance. "Fisher kernels on visual vocabularies for image categorization." Computer Vision and Pattern Recognition, 2007. CVPR'07. IEEE Conference on. IEEE, 2007. پیوند
[6] Locality-Constrained Linear Coding for Image Classification. J. Wang, J. Yang, K. Yu, and T. Huang CVPR 2010 پیوند
[7] Chatfield, Ken, et al. "The devil is in the details: an evaluation of recent feature encoding methods." (2011). پیوند
[8] A. Quattoni, and A.Torralba. Recognizing Indoor Scenes. IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2009. پیوند
[9] Shape Matching and Object Recognition using Low Distortion Correspondences, A. Berg, T. Berg and J. Malik, Proc. of CVPR 2005, pages 26–33. پیوند
[10] In Defense of Nearest-neighbor Based Image Classification, O. Boiman, E. Shechtman and M. Irani, Proc. of CVPR 2008. پیوند
[11] Introduction to the Bag-of-features Paradigm for Image Classification and Retrieval, Stephen O'Hara and Bruce A. Draper, arXiv 2011. پیوند
[12] Bag-of-features for Category Classification, Cordelia Schmid, CVML 2011. پیوند
[13] Linear Spatial Pyramid Matching using Sparse Coding for Image Classification, J. Yang, K. Yu, Y. Gong and T. Huang, Proc. of CVPR 2009. پیوند

۷. پیوندهای مفید


  1. Content

  2. Classification

  3. Object

  4. Class

  5. Scene

  6. Spatial Pyramid Matching

  7. Locality-constrained Linear Coding

  8. Histogram

  9. Scale-Invariant Feature Transform

تایید شده

معیار امتیازدهی چیست ؟ مقیاس آن نیز مشخص نشده است.یعنی بازه آن از چند تا چند است؟ بیشترین امتیاز ممکن چند است؟
اگر در یک تصویر بیش از یک شی وجود داشته باشد وجود داشته باشد، عملکرد برنامه چگونه خواهد بود؟ بهتر بود در مورد دیتاست استفاده شده و ویژگی های آن بیشتر توضیح می دادید.
همچنین مشخص نشده چه ویژگی هایی از تصاویر استخراج شده.
در مقدمه نیز بهتر بود بیشتر توضیح می دادید.

تایید شده

با عرض سلام و خسته نباشید،قسمت مقدمه و کارهای مرتبتون خوب بود.فقط بهتر بود روش های بیشتری را بررسی می کردید.
آزمایش شما بسیار کلی گویی داشت و وارد جزئیات نشده بودید.بهتر بود بیشتر وارد جزئیات شوید تا خواننده بهتر بتواند کد شما را متوجه شود.
عیب دیگری که از نظر من وارد است تک کلاسه بودن است.یعنی شما فقط روی تشخیص هواپیما تمرکز کرده اید که برابری تعداد اعضای درون کلاس شما را به هم میریزد.به بیان دیگری کلاس های شما به دو کلاس "حاوی هواپیما" و "فاقد هواپیما" تقسیم شده است که ممکن است با تعداد اعضای هر کلاس درون دیتاست برابر نباشد و دقت به دست آورده شده دقیق نباشد.
برای انتخاب حد استانه مناسب،بهترین روش تست برنامه برای تمام مقادیر آستانه است.به این منظور مقدار آستانه را از 0 تا یک عدد مثبت بزرگ تغییر داده و بیشترین دقت را در آنها بدست می آوریم.سپس حد آستانه را برابر مقدار آن عدد قرار می دهید.
تغییر فرمول نرمال سازی نیز از نظر بنده بهبود محسوب نمی شود.چرا که روش های بسیار مناسبی برای نرمال سازی وجود دارد و ایده جدیدی در این قسمت از شما دیده نشد
با این حال با توجه به زحمات شما،نمره 4 را به شما می دهم.موفق باشید

رد شده

با سلام
در این پروژه بخش مقدمه خیلی به اختصار بیان شده و به خوبی مقدمه ورود به بحث بیان نشده است.
در بخش کارهای مرتبط کار خوبی قرار داده شده است اما کاش تعداد کارهای بیشتری قرار داده می شد.
در قسمت آزمایشها بصورت خلاصه روش پیاده سازی شده توضیح داده شده است. که توضیحات خوبی هم می باشد. اما می توانستید با دقت بیشتری فازهای آموزش و تست را بیان کنید.

تایید شده

ضمن خسته نباشید از زحماتی که کشیدید، چند مسئله هست که فکر میکنم اعمال کردنشون باعث کاملتر شدن کارتون بشه
-اگر در مورد جزئیات روند یادگیری و تشخیص بیشتر توضیح میدادید ، از لحاظ منطقی به فهم بیشتر این مطلب کمک می کرد. برای مثال الگوریتم مورد استفاده برای تقسیم بندی تصویر، تابع احتمال تعلق تصویر به هر دسته و امتیاز بندی توضیحات بیشتری داده میشد.
ممکنه تو کد مطالبی باشه اما ذکر فرمول ها و روند حل در مقاله خالی از لطف نیست.
-یه تعدادی از منابعتون رو در متن ارجاع ندید، زمانی که خواننده میخواد مطالب رو دنبال کنه ذکر منبع در مطلب باعث جهت دار شدن ادامه کارش میشه.

تایید شده

مقدمه مختصر و مفید بود. کارهای مرتبط جنبه آموزشی نداشتند که البته به نظر من ایراد محسوب نمی شود. به نظرم لازم بود فراخوانی را هم ذکر می کردید. همچنین نتایجی که دیگران به آن دست یافته بودند نیز ذکر می شد. البته چونکه شما فقط روی پیدا کردن تصاویر هواپیما تمرکز کردید شاید نتوانستید نتایجی در این زمینه پیدا کنید.
نکته دیگر تنها اجرای کار برای یک دسته است. یعنی دقت برای یک دسته از عکس ها حساب شده است. به نظرم می توانستید دسته های دیگر از عکس ها را هم مورد بررسی قرار دهید. یعنی مثلا مجموعه دادگان دیگری که در مقالات دیگران از آن استفاده شده و نتایج آن موجود است را استفاده کرده و نتایج خودتان را همراه با نتایج مقاله ذکر می کردید.
در کل به نظرم کار خوبی انجام شده است.

تایید شده

با سلام
• در فاز مقدمه و کارهای مرتبط را توانسته اید توضیح مناسبی را ارائه دهید ولی بهتر بود در بخش مقدمه چالش های پیش رو در مسئله را هم ذکر میکردید همچنین در بخش کارهای مرتبط تنها به دو روش اشاره کردید که بهتر بود روش های دیگری را هم ذکر کنید.
• در مورد نگارش مقاله تا جایی که توانسته اید از لغات معادل فارسی استفاده کرده اید ولی مقداری اشکال نگارشی وجود دارد که خیلی دیده نمی شود.
• در فاز آزمایش روند کلی پیاده سازی را ذکر فرمودید که بهتر بود بیشتر وارد جزییات آن می شدید. همچنین بهتر بود تابع نرمال سازی ای که در فاز بهبود نتایج عوض کردید را ذکر میکردید و توضیح مختصری در مورد آن می دادید.
• از نقاط مثبت مقاله ی شما استفاده از زبان روان و ساده برای بیان مفاهیم می باشد که به خواننده کمک زیادی در فهم آن ها می کند.
در کل به نظرم کار خوبی بود ولی میتوانست بهتر هم باشد.
با آرزوی موفقیت شما

رد شده

از نظر من توضيح شما در آزمايشات بسيار كم و كلي بوده و از روي مسئله رد شده ايد از كتابخانه اي استفاده كرده ايد و هيچ توضيح در مورد عمل كدتان توضيح نداده ايد از تابع نرمالسازي در حد يك اشاره فقط گفته ايد و اينكه چرا عوض شده با چه دليلي و اينكه چرا باعث بهبود نتايج در اين حد شده آيا عموما اين شكلي هستش يا اتفاقي!!! سوالهايي كه شايد ذهن هر خواننده اي را درگير كند و شايد بهتر بود كمي كلا وقت بيشتري براي توضيحات كل روند كارياتان مي گذاشتيد و نهايتا از زحماتي كه در اين پروژه كشيده ايد تشكر مي كنم

حسین فرقانی

پروژه قابل تحسینی انجام داده‌اید.

  1. این که از کار خود خروجی گرفته‌اید و نتایج را مشاهده و ارزیابی کرده‌اید خوب است.

  2. از مجموعه داده خوبی استفاده کرده‌اید.
    اما دارای نقایص زیر نیز می‌باشد:

  3. بهتر بود در قسمت بهبود کار بیشتری انجام می‌دادید. برای مثال بخشی از مواردی که در کارهای آینده ذکر کرده‌اید جا داشت در قسمت بهبود انجام می‌دادید. تنظیم آستانه و تغییر تابع نرمال‌سازی هرچند خوب است اما تغییر اساسی‌ای نیست. برای مثال تغییر روش دسته‌بندی از SVM به مواردی مانند Bayesian، شبکه عصبی، ... احتمالاْ‌ وقت کمی می‌گرفت اما نتایج جالبی می‌داد.

  4. در بعضی موارد از جمله‌های محاوره‌ای استفاده کرده‌اید.



    ارفاق شد (یک نمره)