رتبه‌بندی صفات در تصاویر

تغییرات پروژه از تاریخ 1393/08/17 تا تاریخ 1393/09/15
توضیحات مربوط به صفت در [پروژه‌ی دیگری](http://www.boute.ir/iust-pr-93/attribute-detection) آمده است. در رتبه‌بندی صفت به جای نگاه صفر و یکی به صفت به آن به صورت یک متغییر نسبی[^Relative] نگاه می‌کنیم. برای مثال اگر خندان بودن را یک صفت بدانیم، یک فرد می‌تواند از دیگری خندان‌تر باشد. برای ساده‌تر شدن موضوع به شکل زیر توجه کنید:
![relative attributes](https://filebox.ece.vt.edu/~parikh/relative_attributes/relative_motivation.png)

این نگاه به صفات کاربردهای بسیار زیاد صنعتی دارد. برای مثال می‌توان به شلوغ بودن یا نبودن خیابان در مسئله کنترل ترافیک و موارد مشابه اشاره کرد. همچنین از نظر تئوری مسئله بسیار قوی است.

برای انجام این پروژه شما ابتداً باید با روش‌های تشخیص صفت آشنا شوید، سپس به مقاله‌ی Relative Attributes مراجعه کرده و آن را پیاده سازی نمایید.

* این پروژه توسط یک بنگاه تجاری تعریف شده است.

# مقدمه
ابتدا لازم است در مورد چرایی استفاده از صفات برای عمل تشخیص، توضیحاتی داده شود و روش‌های جدید استفاده از صفات معرفی شود. پس از آن به رتبه‌بندی صفات می‌پردازیم.

در چند سال اخیر، روش جدیدی در حوزه‌ی بینایی ماشین مطرح شده است. این روش پیشنهاد می‌دهد در عملیات تشخیص[^Recognition]  به جای نامگذاری [^Naming] از توصیف[^Describing]  استفاده نماییم.
استفاده از روش جدید، مزیت‌های زیر را دارد:
* گزارش دادن جنبه‌های غیر معمول یک شیء آشنا. منظور این است که در یک تصویر نه تنها یک سگ را شناسایی کند، خال‌دار بودن آن را نیز شناسایی کند.
* ذکر صفات اشیاء نا‌آشنا. برای مثال اگر قبلاً کالسکه جزء اشیایی که می‌شناسد نباشد، در صورت مشاهده‌ی آن بتواند بگوید این شی ۴ چرخ دارد.
* شناسایی شیء جدید بدون نمونه‌‌های بصری از پیش مشاهده شده یا نمونه‌های قبلی کم.
![relative attributes 2](https://filebox.ece.vt.edu/~parikh/relative_attributes/human_study.png)
کاری که صورت می‌گیرد این است که به جای شناسایی نوع موجودیت، روی شناسایی صفات تمرکز می‌کنیم که قابلیت توصیف، مقایسه و دسته‌بندی راحت‌تر اشیا –به خصوص شی‌ء جدید- را می‌دهد.

صفاتی که قابل شناسایی هستند به دو دسته تقسیم می‌شوند:
* 	صفات معنایی[^Semantic] 
      قسمت‌ها. مثلاً دماغ دارد.
      شکل. مثلاً استوانه‌ای شکل است.
      جنس. مثلاً خزدار است.
* صفات نسبیت[^Descriminative] 

دسته‌بندی صفات به روش قدیمی(استفاده از تمام ویژگی‌ها برای شناسایی اینکه آیا یک شیء صفت مورد نظر را دارد یا نه) قابلیت تعمیم کمی برای صفات بین کلاسی دارد. دلیل این موضوع این است که ویژگی‌های بی‌ربط (مثل رنگ در یادگیری شکل) گاهی اوقات با صفاتیرای یادگیری صفات دیگر از مجموعه‌ای از اشیا همبستگی دارند ولی نمی‌تواند مورد استفاده قرار گیرد ولی برای مجموعه‌ای دیگر از اشیا هیچ کمکی نمی‌کند و چه بسا بقیهموجب افزایش خطا شود.

در روش جدید شناسایی صفات این مشکل حل شده است. ابتدا ویژگی‌هایی که قادر به پیش‌بینی صفات در یک کلاس هستند را انتخاب می‌کنیم و فقط از آن‌ها برای تمرین دادن کلاس‌بند[^Classifier] صفات استفاده می‌کنیم.
برای مثال برای یادگیری شناساگر خال، ویژگی‌هایی را انتخاب می‌کنیم که می‌توانند بین سگ‌های خالدار و بدون خال تمایز قائل شوند، گربه‌های بی‌خال و با‌خال، اسب‌های بی‌خال و با‌خال و ... . پس فقط از این ویژگی‌ها برای تمرین دادن شناساگر خال بین همه‌ی اشیا استفاده می‌کنیم.

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

حال سراغ رتبه‌بندی صفات می رویم.
پیش از این فقط به شناسایی صفات در تصویر اکتفا می‌کردیم. حال کاری که می‌کنیم این است که میزان صفات موجود در تصاویر مختلف را مقایسه می‌کنیم. برای مثال تشخیص می‌دهیم که پوست بدن خرس از پوست بدن زرافه خزدار تر است. بنابراین رابطه‌ای بین اشیاء جدید(از قبل دیده نشده) و اشیا از پیش دیده شده‌ی موجود در DataSet با استفاده از صفات برقرار می‌کنیم.

همچنین ویژگی دیگر این روش این است که توصیف متنی با جزئیات بیشتری را ارائه می‌دهد.
در اصل، مشکلی که در شناسایی صفات در تصویر وجود دارد این است که ما فقط در مورد وجود یا عدم وجود یک صفت نظر می‌دهیم. شاید این روش فقط در مورد صفات مبتنی بر عضویت[^Part-based]  مثل «پا دارد» و صفات دودویی[^Binary]  مثل «خال دارد یا ندارد» کاربرد داشته باشد ولی در واقعیت ما با طیف گسترده‌ای از صفات روبرو هستیم. برای مثال در مورد خندان بودن یا نبودن یک فرد در تصویر، افراد مختلف نظرات متفاوتی می‌دهند ولی اگر میزان خندان بودن را در مقایسه با یک تصویر دیگر در نظر بگیریم جواب‌ها یکسان‌تر و آسان‌تر خواهد بود.

همچنین این روش، پتانسیل بهبود «یادگیری فعل‌ و انفعالی[^Interactive]» را دارد. برای مثال در جستجوی تصویری، رویه‌ی بهتری را پیشنهاد می‌دهد. مثلاً به جستجو‌های «کفش‌های مشابه ولی درخشان‌تر را برایم پیدا کن» و «عکس‌هایی از شیکاگو که در روز‌های آفتابی‌تر گرفته شده‌اند را برایم پیدا کن».


# کارهای مرتبط

کار دیگری که صورت گرفته است «یادگیری بی‌ناظر صفات تصویری نسبی یا رابطه‌ای»[^Relative] است. در یک DataSet بزرگ امکان برچسب‌زنی روی همه‌ی صفات وجود ندارد، بنابراین مجموعه‌ای از تصاویر را به سیستم می دهیم و خود سیستم باید صفات را تشخیص داده و در مورد نسبت هر صفت در یک تصویر با تصویر دیگر اظهار نظر کند.

روش دیگری که پیشنهاد می‌شود این است که در «تابع رتبه‌بند صفات رابطه‌ای» به جای مقایسه‌ی نسبیت‌ یک صفت در دو تصویر، یک ترتیب جزئی[^Partial ordering] از چند تصویر با استفاده از یک صفت مشخص کنیم. این روش عملاً اطلاعات بیشتری را در اختیار ما قرار می‌دهد.
![relative attributes 4](http://vision.cs.utexas.edu/projects/beyondpairs/spectrums.png)

یکی از کار‌های مرتبط صورت گرفته روشی است که در آن درجه‌ی حضور یک صفت را در تصویر نشان می دهد. این روش یک روش باناظر است که برای هر صفت یک تابع رتبه‌بند[^Ranking Function] را پیشنهاد می‌دهد و یک یادگیرنده‌ی zero-shot بهبود یافته را پیشنهاد می‌دهد. در ابتدا لازم است این نکته را خاطر نشان کنم که ابتدا حضور یا عدم حضور یک صفت در یک تصویر مطرح بود. سپس پیشنهاد شد که به جای تشخیص حضور یا عدم حضور یک صفت، به تشخیص میزان حضور صفت بپردازیم. همان‌طور که مشخص است رتبه‌بندی صفات به عنوان شاخه‌‌‌ای از شناسایی صفات مطرح است. سعی می‌کنیم در بخش‌کار‌‌های مرتبط، کار‌هایی که در هر دو زمینه‌ی تشخیص و رتبه‌بندی صفات مطرح شده است را بررسی نماییم. دلیل این کار نیز همپوشانی‌ای است که این دو موضوع دارند.

+     **کلاس بندی صفات و تشابهات برای تطبیق دادن چهره**
برای تطابق چهره‌ای که به ورودی داده می‌شود، از سه روش استفاده می‌کند.
۱) از یک کلاس‌بند دودویی برای تشخیص حضور یا عدم حضور جنبه‌هایی از تصویر که قابل توصیف هستند، می‌پردازد. برای مثال در مورد جنسیت، نژاد، سن و ... نظر می‌دهد.
۲) نیازی به برچسب‌زنی صفات روی تصاویر ندارد. این روش فقط تشابه چهره یا نقطه‌‌ی خاصی از چهره را برای نمونه‌هایی که به آن داده می‌شود یاد می گیرد.
![توضیح تصویر](http://www.uploadax.com/images/00237750336582232542.jpg)
۳) در روش سوم از ترکیبی از دو روش قبلی استفاده می‌کند که بر اساس آزمایش‌های انجام گرفته نتیجه‌ی آن بهتر از دو روش قبلی است.
همان‌طور که مشخص است ایده‌‌های مطرح شده در اینجا، بیشتر روی حضور یا عدم حضور یک صفت نظر می‌دهند ولی روش رتبه‌بندی‌صفات دقیق‌تر عمل می‌کند و خروجی آن نیز اطلاعات بیشتری را در اختیار ما می‌گذارد.[15,2]


+ **جستجوی ساطوری[^Whittle] : جستجوی تصاویر بر اساس صفات نسبی با کمک بازخورد[^Feedback] **
این روش را با یک مثال توضیح می‌دهم. فرض کنید که می‌خواهید در مجموعه‌ای از هزاران عکس به دنبال کفش‌ خاصی که سیاه رنگ است بگردید. این کفش سیاه‌رنگ شامل ویژگی‌هایی هست که در ذهن شما است و شما فقط ویژگی سیاه بودن را به جستجو‌گر می‌دهید. سیستم بعد از جستجو مجموعه‌ای از کفش‌های سیاه را به خروجی می‌دهد. حال فرض کنید که کفشی که در ذهن شماست براق است. در سیستم‌های قدیمی حال شما باید یکی یکی عکس‌های موجود در خروجی را بررسی کنید  و در مورد براق بودن یا نبودن آن‌ها نظر بدهید که همان سیستم دودویی تشخیص حضور یا عدم حضور صفت است. ولی روش ساطور  پیشنهاد می‌دهد به جای این کار، سیستم مثلا یکی از عکس‌ها را در نظر بگیرید و تمام عکس‌هایی که میزان براق بودن آن‌‌ها از عکس مورد نظر کمتر است را از نتیجه‌ی جستجو حذف کند. به همین ترتیب برای ویژگی‌های دیگری که در ذهنمان است نیز این کار را ادامه می‌دهیم تا در نهایت به کفشی که مدنظرمان است برسیم. البته توجه به این نکته در این روش الزامی است که باید ترتیب جزئی صفت براق بودن ساخته شود و سپس در مرحله‌ی جستجو از این ترتیب جزئی استفاده شود. مزیت مهم این روش که در اسم آن نیز نهفته است این است که به مرور ویژگی‌های نامربوط را از فضای مسئله حذف می‌کند.[4]
![توضیح تصویر](http://vision.cs.utexas.edu/whittlesearch/shoes-concept-new.png)


+ **مقایسه مجموعه‌ای از تصاویر[^setwise] به جای مقایسه‌ی دو تصویر[^pairwise] به عنوان راهکاری برای یادگیری فعال صفات نسبی**
اگر عنوان این روش برایتان گنگ است، نگران نباشید. با توضیحات مختصری پی به نحوه‌ی عملکرد این روش خواهید برد. این روش پیشنهاد می‌کند به جای اینکه در مورد درجه‌ی حضور یک صفت در یک تصویر در مقایسه با تصویر دیگری نظر بدهیم، مجموعه‌ای از تصاویر را انتخاب کنیم و یک ترتیب جزیی از میزان حضور صفت در این مجموعه بسازیم. 
![توضیح تصویر](http://vision.cs.utexas.edu/projects/beyondpairs/smiling-pairwise-vs-setwise.png)
یکی از مزیت‌های اصلی این روش کاهش بسیار زیاد هزینه است. برای مثال اگر بخواهیم ۵ عکس را با هم مقایسه کنیم، باید ۲۴ مقایسه صورت گیرد ولی در این روش شاید بتوان با تنها ۴ یا ۵ مقایسه ترتیب جزیی را ایجاد کرد. به این صورت عمل می‌شود که در «تابع رتبه‌بند صفات رابطه‌ای» به جای مقایسه‌ی نسبیت‌ یک صفت در دو تصویر، یک ترتیب جزئی[^Partial ordering] از چند تصویر با استفاده از یک صفت مشخص کنیم. این روش عملاً اطلاعات بیشتری را در اختیار ما قرار می‌دهد.[8]
![relative attributes 4](http://vision.cs.utexas.edu/projects/beyondpairs/spectrums.png)


+ **یادگیری بی‌ناظر صفات تصویری نسبی یا رابطه‌ای**
روش بعدی «یادگیری بی‌ناظر صفات تصویری نسبی یا رابطه‌ای» است. در یک DataSet بزرگ امکان برچسب‌زنی روی همه‌ی صفات وجود ندارد، بنابراین مجموعه‌ای از تصاویر را به سیستم می دهیم و خود سیستم باید صفات را تشخیص داده و در مورد نسبت هر صفت در یک تصویر با تصویر دیگر اظهار نظر کند.[11]


+ **تعیین میزان حضور یک صفت در تصویر بدون مقایسه با تصاویر دیگر**
یکی از کار‌های مرتبط صورت گرفته روشی است که در آن درجه‌ی حضور یک صفت را در تصویر نشان می دهد. این روش یک روش باناظر است که برای هر صفت یک تابع رتبه‌بند[^Ranking Function] را پیشنهاد می‌دهد و یک یادگیرنده‌ی zero-shot بهبود یافته را پیشنهاد می‌دهد.[12]

در نمودار‌های زیر چند روش با هم مقایسه شده‌اند.
![relative attributes 3](https://filebox.ece.vt.edu/~parikh/relative_attributes/zero_shot_results.png)


# آزمایش‌ها

# کارهای آینده

# مراجع
[1] Parikh, Devi, and Kristen Grauman. "Relative attributes." Computer Vision (ICCV), 2011 IEEE International Conference on. IEEE, 2011. [لینک](https://filebox.ece.vt.edu/~parikh/Publications/ParikhGrauman_ICCV2011_relative.pdf)
[2] A. Farhadi, I. Endres, D. Hoiem, and D.A. Forsyth, “Describing Objects by their Attributes”, CVPR 2009 [لینک](http://web.engr.illinois.edu/~iendres2/publications/cvpr2009_att.pdf)
[3] Jeff Donahue,Kristen Grauman, “Annotator Rationales for Visual Recognition”, In Proceedings of the International Conference on Computer Vision (ICCV), 2011.
[4] Adriana Kovashka, Devi Parikh, Kristen Grauman, “WhittleSearch: Image Search with Relative Attribute Feedback”, In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2012.
[5] Aron Yu, Kristen Grauman, “Fine-Grained Visual Comparisons with Local Learning”, In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2014.
[6] Lucy Liang, Kristen Grauman, “Active Learning for Image Ranking
Over Relative Visual Attributes”.
[7] Adriana Kovashka, Sudheendra Vijayanarasimhan, Kristen Grauman,  “Actively Selecting Annotations Among Objects and Attributes”. In Proceedings of the International Conference on Computer Vision (ICCV), 2011.
[8] Lucy Liang, Kristen Grauman,  “Beyond Comparing Image Pairs: Setwise Active Learning for Relative Attributes”. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2014.
[9] Sung Ju Hwang, Kristen Grauman,  “Accounting for the Relative Importance of
Objects in Image Retrieval”. In bmvc2010.
[10] Devi Parikh, Kristen Grauman,  “Interactively Building a Discriminative Vocabulary of Nameable Attributes”. In  Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2011.
[11] Shugao Ma, Stan Sclaroff, Nazli Ikizler-Cinbis,  “Unsupervised Learning of Discriminative
Relative Visual Attributes”.
[12] Dinesh Jayaraman, Kristen Grauman,  “Zero-Shot Recognition with Unreliable Attributes”. In Proceedings of Advances in Neural Processing Systems (NIPS), 2014.
[13] Devi Parikh, Kristen Grauman,  “Interactive Discovery of Task-Specific Nameable Attributes”. In FGVC_CVPR201.
[14] Devi Parikh,Kristen Grauman, “Implied Feedback: Learning Nuances of User Behavior in Image Search”, In Proceedings of the IEEE International Conference on Computer Vision (ICCV), 2013.
[15] N. Kumar, A. C. Berg, P. N. Belhumeur and S. K. Nayar. Attribute and Simile
Classifiers for Face Verification. ICCV, 2009.



# پیوندهای مفید
+ [Dataset](https://filebox.ece.vt.edu/~parikh/relative.html#data)