تشخیص صفت در تصویر

تغییرات پروژه از تاریخ 1393/11/14 تا حالا

# مقدمه
تشخیص شیء یک قسمت مهم در بینایی کامپیوتر است. تکنولوژی تشخیص تصویر تلاش می‌کند که اشیاء، مردم، ساختمان‌ها، مکان‌ها و هرچیز دیگری که برای مصرف‌کنندگان و سرمایه‌گذاران مهم است را تشخیص دهد. گوشی‌های هوشمند و تبلت‌های مجهز به دوربین، این تکنولوژی را از کاربردهای صنعتی (مثل دسته‌بندی میوه‌ها) به سمت کاربردهای مصرفی برده‌اند. برای مثال، گوشی‌های هوشمند می‌توانند آدم‌ها، ماشین‌ها، برچسب بطری‌هاٰ، جلد کتاب‌ها و آلبوم‌ها و بسیاری از اشیاء دیگر را با استفاده از یک نرم‌افزار تلفن همراه که به نرم‌افزار تشخیص عکس دسترسی دارد، شناسایی کنند. تشخیص عکس کاربردهایی در امنیت، مدیریت محتوا وحتی موتورهای جستجو دارد. 
در تشخیص اشیاء در تصویر بهتر است که به جای نامگذاری اشیاء به توصیف آن‌ها بپردازیم. قابلیت پی بردن به صفات به ما اجازه می‌دهد اشیاء را توضیح دهیم، مقایسه کنیم و حتی آسان‌تر طبقه‌بندی کنیم. مهم‌تر اینکه زمانی که با یک شیء جدید مواجه می شویم، حتی اگر نتوانیم آن را شناسایی کنیم، بازهم می‌توانیم در مورد آن چیزهایی بگوئیم (بعنوان مثال "خزدار با چهارپا" نه فقط  "ناشناخته"). ما همچنین می‌توانیم بگوئیم در مورد یک شیء خاص چه چیزی غیرمعمول است (مثلا "سگ با خال‌هایی روی بدنش") و یاد بگیریم که اشیاء را فقط از روی توصیف تشخیص بدهیم. همچنین می‌توانیم اشیاء جدید را با مثال‌های دیداری کم یا بدون مثال تشخیص بدهیم.
همچنین، تشخیص صفات، درجه درک ماشین‌ها از اشیاء دیداری را بهبود می‌بخشد. قابلیت ماشین‌‌ها برای "توصیف" اشیاء،کاربردهای مفیدی از قبیل موتورهای جستجوی تصویر را ارائه می‌دهد که در جستجوهای خاص به خوبی عمل می‌کند. بعلاوه، ویژگی‌‌ها اغلب توسط اشیاء مختلف به اشتراک گذاشته می‌شوند. بنابراین، ویژگی‌‌ها اطلاعات مفیدی برای سازماندهی مجموعه تصاویر ارائه می‌دهند. علاوه‌براین، در کار‌های تشخیص، این دانش درباره‌ی صفات اجازه می‌دهد بخشی از وظیفه‌ی یادگیری بین دسته[^Category]ها به اشتراک گذاشته شود.

در ادامه به معرفی اجمالی چند روش تشخیص صفت می‌پردازیم: 
**1. روش مبتنی بر Poselet برای دسته بندی صفات:**
فرض کنید می‌خواهیم صفاتی همانند جنسیت، مدل مو و انواع لباس افراد را تشخیص بدهیم که تنوع بسیار زیادی در زاویه دید و حالت(ژست)[^Pose] دارند. در روش مقاله [2] دسته بندی کننده‌های قوی صفات، تحت چنین شرایطی بایستی مستقل ازحالت باشند اما حدس زدن حالت،خودش یک مسئله ی چالش انگیز است. در این روش که یک روش مبتنی بر جزء است، بخش‌ها به طور ضمنی، نمود [^Aspect](حالت و زاویه دید) راتجزیه می کنند. این روش، دسته بندی کننده‌ها را برای هر یک از این نمودها آموزش می‌دهد و آن‌ها را در یک مدل افتراقی[^Discriminative]با یکدیگر ترکیب می‌کند؛ زیرا تغییرات زیادی که بوسیله تغییر حالت در ظاهر ایجاد می شوند ما را از آموزش یک یابنده[^Detector]عمومی باز می‌دارد.
 مسائل کلاسیک با تشخیص و تقسیم بندی توسط یک یابنده‌ی مبتنی بر جزء، حل می‌شود. این یابنده روی یک جزء اصلی کار می‌کند و poselet نام دارد. Poselet  برای پاسخ دادن به یک قسمت از شیء – با حالت و زاویه‌ی داده شده- آموزش داده می‌شود. 
**2. مدل نهفته[^Latent] ی تشخیصی:**
هدف نهایی روش [3] ساخت سیستم‌های تشخیصی است که به طور مشترک کلاس‌های شیء و صفات را در یک چارچوب[^framework] یادمی‌گیرند. این مدل در چارچوب SVM نهفته آموزش دیده است. در طول آموزش، صفات را بعنوان متغیرهای نهفته در نظر می‌گیرد و تلاش می‌کند که برچسب کلاس یک عکس را استنتاج کند.
**3.روش نمایش های اسپارس و آموزش از راه دور:**
در مقاله [4] "پیش‌بینی صفت" و "نگاشت صفت به کلاس" جدا شده است؛ سپس بوسیله‌ی معرفی شیوه‌های جایگزین در پیش‌بینی صفت و نگاشت صفت به کلاس، دو الحاق[^Extension]بر روی الگوی طبقه‌بندی مبتنی بر صفت ارائه شده است.
برای پیش‌بینی صفت، از طرح طبقه‌بندی کننده‌ی نمایش‌های اسپارس  استفاده شده است و برای نگاشت صفت به کلاس، از یک الگوریتم آموزش از راه دور استفاده می‌شود؛ این الگوریتم به جای آنکه اهمیت یکسانی برای صفات در نظر بگیرد به طور خودکار اهمیت هرصفت را استنباط می‌کند.

**4. یادگیری صفات تصویر با استفاده از IBP:**
تقریبا در اکثر الگوریتم‌های یادگیری صفت و چارچوب‌های تشخیص شیء مبتنی بر صفت، صفات باید از قبل تعریف شده‌باشند. در [8] تلاش بر این است که صفات به یک روش کاملا بی‌ناظر[^Unsupervised] از مجموعه عکس‌های داده‌شده آموزش داده شود. از یک متد آماری بیزین[^Baysian] که غیرپارامتری  و داده گرا[^Data-Deriven] است استفاده می‌کنیم که Infinite Sparse FactorAnalysis  نامیده می‌شود و یک روش تبدیل خطی است که وابستگی آماری اجزای نمایش را به حداقل می رساند. برای داشتن یک تعداد نامحدود از اجزاء، یک تقدم برای یک ماتریکس دودویی از صفات پنهان قرار می‌دهیم . در اینجا از یک تقدم غیرپارامتری به نام (IBP) Indian Buffet Process  استفاده می‌شود.

# کارهای مرتبط
به‌طور کلی تحقیقات روی صفات به دو دسته تقسیم می شوند؛ **دسته‌ی اول**، از صفات به‌عنوان لایه نمایش میانی با هدف توصیف خواص *اشیاء* یا تشخیص کلاس آن‌ها و همچنین انتقال یادگیری بین کلاس‌ها استفاده می‌کنند.
Lampert و همکارانش در [9] نشان دادند که صفات برای تشخیص اشیاء جدید که تابحال دیده نشده اند مفید هستند، به شکل مشابهی، Farhadi و همکارانش در[1]اشیاء را با صفاتشان توصیف می‌کنند و نشان می‌دهند که روش‌های مبتنی بر صفت[^attribute-based] به‌خوبی در دسته‌های اشیاء تعمیم می‌یابند. آن‌ها یک طرح تشخیص دسته‌ی شیء ارائه داده‌اند که رده‌بند[^feature]های صفت  با استفاده از ویژگی[^Classifier]های منتخب آموزش داده شده بودند (برای هر صفت، یک رده‌بند) و دسته‌ی شیء توسط اعمال رده‌بندهای تک صفته روی تصاویر، تشخیص داده می‌شوند.
Wang و Mori در [3] یک مدل نهفته آموزش دیده به صورت افتراقی)discriminative) برای اتصال مدل‌سازی کلاس‌های شیء و صفات دیداری آن‌ها ارائه کردند. در این روش، صفات یک شیء به عنوان متغیر‌های نهفته تلقی می‌شود و ارتباطات(همبستگی‌های) میان صفات را بدست می‌آورند.
Farhadi و همکارانش در[12] یک روش برای بومی کردن صفات مبتنی بر جزء [^part-based] ارائه می‌کنند؛ مثل سر، یا یک چرخ. آن‌ها آشکار‌سازهایی را برای بخش‌ها و دسته‌های فرعی[^subordinate categories] آموزش دادند و خروجی رده‌بندها را برای رأی دادن به یک شیء استفاده کردند؛ برای مثال، یابنده‌های "پا"، "سر"  و "سگ" تمایل دارند که به شیء "چهارپا" رأی بدهند. در کار آن‌ها صفات استفاده شده برای رأی گیری باید معنایی باشند و به خوبی به دیگر تصاویر از دسته های مشابه تعمیم داده شوند.
Ferrari و همکارانش در[15]کار تشخیص و بومی‌کردن صفات سطح پایین[^low-level] در یک چارچوب مولد[^generative] (تولیدی) را انجام دادند. آن‌ها توانستند رنگ و بافت اشیاء را تشخیص بدهند.کشف خودکار ویژگی‌ها از متن و تصاویر مربوط هم در[16,17,18] انجام شده‌است.
Duan و همکارانش در [7] نشان داده‌اند که صفات، تشخیص کلاس شیء ریزدانه را بهبود می‌بخشند؛ مانند گونه‌های پرنده‌ها. Sun و همکارانش در[6] بررسی می‌کنند که چگونه صفات برای شناسایی اشیاء خاص از میان مجموعه‌ای از اشیاء استفاده می‌شوند. این تنظیمات، بیشتر مربوط به رباتیک است که در آن، مردم می‌خواهند از زبان برای دستور به یک ربات استفاده کنند؛ برای مثال، اینکه:"این شیء" را بردار.
Tsagkatakis و Savakis در [4] برای پیش‌‌بینی صفات به جای استفاده از روش SVM از SRC(Sparse Representation Classifier) استفاده می‌کنند.آن‌ها، روش SRC را برای پیش‌بینی صفت و بررسی مزایای آن برای تعمیمacross-category به کار می‌برند.
Wang و Forsyth در [19]از صفات برای یافتن یک شیء استفاده کرده‌اند.
**دسته‌ی دوم** به طور خاص، روی صفات *مردم* تمرکز می‌کنند. روش‌های تشخیص جنسیت که از شبکه‌های عصبی استفاده می‌کنند به اوایل 1990 برمی‌گردند[20,21].Vequero و همکارانش در [22] توانستند تصویر مردم را در محیط‌های بسته جستجو کنند.
Joo و همکارانش در [10]یک روش مبتنی بر جزء برای شناسایی انسان با یک عکس تک از بدن شخص ارائه می‌دهند. آن‌ها یادگیری یک بانک تصویر غنی از قسمت‌های بدن با نظارت کمتر را پیشنهاد می‌دهند. آن‌ها این کار را توسط تجزیه‌ی شبکه تصویر به پنجره‌هایی که همپوشانی دارند (در چند مقیاس و با تکرار پالایش قالب‌های ظاهر محلی) انجام می‌دهند.
Kumar و همکارانش در [14] برای تشخیص چهره، استفاده از صفات صورت را پیشنهاد می‌دهند. آن‌ها رده‌بند را برای دو نوع از صفات آموزش داده‌اند، یکی مربوط به ظاهر بصری، مثل "سفید" یا "چاق" و دیگری مربوط به شباهت چهره‌ها یا نواحی چهره. این صفات بعدا برای تشخیص چهره استفاده می‌شوند. Kumar و همکارانش همچنین در [23] جستجوی بصری را ارائه داده‌‌اند.
Gallagher و Chen در[24] استنتاج جنسیت و سن از ویژگی‌های بصری ترکیب شده با نام‌ها را بررسی کرده‌اند. همچنین Sigal و همکارانش در[25] استخراج صفات جنسیت، سن و وزن از داده های سه بعدی را بررسی کرده‌اند.


# آزمایش‌ها
روش انتخاب شده برای آزمایش و پیاده‌‌سازی، روش مبتنی بر Poselet است [2]. هنگام تشخیص و دسته بندی صفات در تصویر، نحوه چینش اجزای تصویر و زاویه دید دوربین، پارامترهای نهفته‌ای هستند؛ بنابراین در مقایسه با بسیاری از روش‌های دیگر، این روش مزیتی را به ما می‌دهد: ما می‌توانیم از Poseletها بعنوان موتورهایی برای جداکردن زاویه دید دوربین و حالت (ژست) از ظاهر استفاده کنیم.
در این پیاده‌‌سازی از یک مجموعه دادگان [^Data Set]جدید استفاده شده که این عکس ها از مجموعه دادگانH3D و PASCAL 2010 جمع آوری شده است. این مجموعه دادگان در بخش پیوندهای مفید قرار داده شده‌اند.
قسمت آموزش[^ Training]این روش به این‌‌صورت می‌باشد:
برای آموزش تعدادی Poselet از روش Burdev و همکارانش در [27] استفاده شده است. به جای اینکه از تمام Poselet هایی که ابعاد یکسانی دارند استفاده شود، از 4 نسبت ابعاد استفاده شده است:96*64، 64*64، 64*96 و 64*128 و از هرکدام به تعداد مساوی Poselet آموزش داده شده است.در طول آموزش، برای احتمال هر جزء از بدن (از قبیل مو، صورت، لباس‌های بالاتنه، لباس‌های پایین تنه و غیره) یک soft mask می‌سازیم(شکل 1 سمت چپ)؛ که این کار با استفاده از حاشیه نویسی‌[^annotation](توضیحات) اجزای بدن در مجموعه دادگان H3D انجام می‌شود. 
![soft mask](https://boute.s3.amazonaws.com/124-mask.png)
همچنین، از روش [27] برای تشخیص Poseletها در یک تصویر و تقسیم بندی آن‌ها به دو خوشه[^Cluster] استفاده شده است. این دو خوشه عبارتند از: فرضیه‌های تشخیص فرد [^Person Detection Hypothesis] و پیش بینی مرزهای بدن هر شخص.
حالا باید تصمیم بگیریم که کدام خوشه از Poseletها به شخص در مرکز عکس برمی‌گردد و کدام‌یک به شخص در پس زمینه. مجموعه دادگان ما حاوی نمونه های بسیاری از اشخاص است که بسیار به هم نزدیک هستند، بنابراین قرار دادن مستطیل محدوده‌ی مربوط به شخص اصلی در نزدیک‌‌ترین محل به مرکز عکس همیشه درست نیست. درعوض، ما می‌توانیم بهترین انتساب را از طریق اولویت دادن به Poseletهایی با امتیاز [^Score] بالاتر- که نتیجه‌ی آن به احتمال کمتری مثبت اشتباه[^ False Positive] است- پیدا کنیم. نحوه‌ی امتیاز‌دهی به Poseletها در قسمت آزمون[^Test] شرح داده می‌شود.
الگوریتم آزمون ما بصورت کلی به این ترتیب است(شکل2):
مرحله اول: Poseletها را روی عکس‌های مورد‌آزمایش بکار می‌بریم و با توجه به شخص مورد نظر، تعیین می‌کنیم که کدام یک مثبت واقعی [^True Positive]هستند و بدین ترتیب امتیاز‌ها محاسبه می‌شوند.
qi که در سطح آخر مشاهده می‌کنید احتمال Poselet نوع iام است که در واقع همان امتیاز می‌باشد.![Test Algorithm](https://boute.s3.amazonaws.com/124-Test.png)
مرحله دوم: در این مرحله، برای هر Poselet نوع i یک بردار ویژگی φi استخراج می‌کنیم.
مرحله سوم: برای هر Poselet نوع i و هر صفت j، یک رده‌بند rij تعیین می‌کنیم؛ که این رده‌بند، Poselet-level attribute classifier نامیده می‌شود.در این‌جا از یک SVM خطی و یک logistic g استفاده شده است:
![معادله1](https://boute.s3.amazonaws.com/124-eq1.png)
که wij بردار وزن و bias term،bij متعلق به SVM است.کار این رده بند‌ها این است که وجود یک صفت در بخش داده شده‌ی مربوط به یک شخص را تحت یک زاویه دید تعیین کنند؛مثل رده بند has-hat برای یک چهره از روبرو در(شکل 3).
![has hat classifier](https://boute.s3.amazonaws.com/124-fig3.png)
مرحله4: در این مرحله، خروجی‌های رده‌بند Poselet-level را با احتمالات تشخیص Poselet که همان qi است دسته‌بندی می‌کنیم و مرکز را صفر قرار می‌دهیم.حالا از این به‌عنوان ورودی برای رده‌بند سطح دوم (برای هر صفت j) استفاده می‌شود. رده‌بندهای سطح دوم ، Person-level attribute classifier نامیده می‌شوند.
در اینجا، هدف این است که علائم و شواهد کل قسمت‌های بدن را با هم ترکیب کنیم. در این‌جا هم یک رده‌بند خطی با یک logistic g داریم:
![معادلات 2 و 3](https://boute.s3.amazonaws.com/124-eq2,3.png)
مرحله5: در انتها، ما برای هر صفت، یک رده بند سطح سوم را تعیین می‌کنیم، که آن راContext-level attribute classifier می‌نامند که بردار ویژگی‌های آن، امتیاز تمام رده‌بند‌های Person-level برای تمام صفت هاست:sj. این رده‌بند ارتباط‌های بین صفات را استخراج می‌کند؛ مثلا جنسیت در مقابل وجود یک دامن. در اینجا از یک SVM با  کرنل درجه دوم استفاده شده است. امتیاز این رده‌بند باSj مشخص شده است که خروجی الگوریتم است.
نتایج آزمایش:
در این قسمت نمونه هایی از بالاترین و پایین ترین امتیازها آورده شده است و همچنین درست یا غلط بودن دسته‌بندی‌ها با توجه به امتیازات مشخص گردیده است (مثلا در صفت Long-Hair بالاترین امتیاز برای دسته long hair و پایین ترین امتیاز متعلق به دسته short hair می‌باشد.):
![glasses](https://boute.s3.amazonaws.com/124-glass.png)
![hat](https://boute.s3.amazonaws.com/124-hat)
![jeans](https://boute.s3.amazonaws.com/124-jeans.png)
![long hair](http://upir.ir/93dey/long-hair.png)
![male](http://upir.ir/93dey/male-female.jpg)


نتیجه‌ای که در [2] و همینطور تصاویر بالا قابل مشاهده می‌باشد این است که اغلب، مرد‌هایی که به اشتباه "زن" دسته‌بندی شده‌اند موهای بلندی دارند و زن‌هایی که "مرد" دسته‌بندی شده‌اند موهایشان مخفی شده‌است.

![توضیح تصویر](http://upload7.ir/uploads//8bcaa5e26442707bde04b1eb8a6d85c0df415a40.jpg)
این شکل منحنی‌های precision-recall رده‌بند‌های صفت روی Test set را نشان می‌دهد. نتیجه کامل و بدون محدودیت این روش (ستون شماره 9 جدول 1) با منحنی سبز‌رنگ نمایش داده ‌شده است. کارایی ما بدون رده‌بند‌های context (ستون 7) به رنگ قرمز نشان داده شده است (رده‌‌بند‌‌های context پیشتر توضیح داده شدند.)؛ SPM [^Spatial Pyramid Matching] با استفاده از بهترین دید برای هر صفت (ماکزیمم ستون‌های 3 تا 6) به رنگ آبی نشان داده شده و فراوانی برچسب[^lable] (ستون 2) با خط چین مشکی نشان داده شده است.
بهترین دید برای هر صفت به معنی انتخاب تکه‌‌ای از تصویر با زاویه‌ی مناسب است که با آن بهتر می‌توان صفت را تشخیص داد.
برای نشان دادن تاثیر این روش، تاثیر غیرفعال کردن هر تکه از مدل را بررسی می‌کنیم. ستون‌های 7 تا 9 جدول شماره 1 تاثیر غیرفعال سازی  ویژگی‌‌هایskin و رده‌بند Context را نشان می‌دهد. همان‌طور که انتظار می‌رود ویژگی‌های Skin برای نوع لباس (5 سطر آخر جدول) ضروری هستند و بدونskin، متوسطAP  [^Average Precision]آن‌ها از 63.18 به 55.10 کاهش می‌یابد. صفات دیگر مثل جنسیت و مدل مو کاملا بی‌تاثیر از skin است. رده‌بند context در بهبود کارایی 7 تا از صفت‌ها کمک می‌کند و کارایی 2تا را کاهش می‌دهد و در نهایت، متوسط AP کلی را از 61.5 به 65.2 افزایش می‌دهد.
مدل اصلی از canny-modulated Histogram همراه با Spatial Pyramid Matching Kernel استفاده می‌کند. نتیجه‌ی آموزش این روش بصورت بدون محدودیت روی اشخاص در ستون 6 جدول 1 نشان داده شده است.

![توضیح تصویر](http://upload7.ir/uploads//f3c09fd187191f2d4fd2939807cba7d7c991d0a9.png)
این جدول متوسط دقت (AP) تکه های مربوط به روش بحث شده را توضیح می‌دهد.Freq، فراوانی برچسب مورد نظر است.
مدل‌های SPM جداگانه‌ای روی سر(Head)، پایین تنه(Lower)، بالاتنه(Upper) و کل قسمت‌ها(BBox) آموزش داده شده‌اند:
![توضیح تصویر](http://upload7.ir/uploads//e5588a8839ee47e7d5e9f776961c87d2af42de33.jpg)
این روش با غیرفعال کردن ویژگی‌هایSkin (No skin )، رده بند‌هایcontext (No ctxt) و در حالت کامل (Full) آزموده شده است.




# بهینه سازی
 در چند سال گذشته از SVMهایی که از کرنل SPMاستفاده می‌کنند،در رده‌بندی عکس‌ها استفاده شده است. با این وجود، این SVMهای غیرخطی، پیچیدگی O(n2~n3) در آموزش و O(n) در تست دارند، که n سایز آموزش است. برای ما مهم است الگوریتم‌هایی داشته باشیم که بیشتر از هزاران نمونه آموزشی را دسته‌بندی کنند؛ ما هم در روش خود از این SVM ها استفاده کردیم؛ پس باید روشی را به‌کار ببریم که مقداری این پیچیدگی را کاهش بدهد. روشی که ارائه می‌شود پیچیدگی SVMها را به O(n) در آموزش و یک مقدار ثابت در تست کاهش می‌دهد.
 در تعدادی آزمایشات انجام شده، نشان داده شده است که SVM خطی پیشنهاد شده که مبتنی برSparce coding روی SIFT descriptor هاست از نظر دقت رده‌بندی بهتر از کرنل SPM خطی روی هیستوگرام‌ها و یا حتی بهتر از کرنل‌های SPM غیرخطی است[28].
در اینجا یک الحاق از روش SPM ارائه می‌شود که یک نمایش تصویر Spatial Pyramid را محاسبه می‌کند. این ارائه تصویر مبتنی بر SC(Sparse Code)ها از ویژگی‌های SIFT است، در صورتی‌که در SPM مرسوم این ارائه مبتنی بر k-means VQ(Vector Quantization) است. بر خلاف SPM اصلی که spatial pooling را با محاسبه هیستوگرام‌ها اجرا می‌کند، روش ما که ScSPM نامیده می‌شود، از max spatial pooling استفاده می‌کند که برای ترجمه‌های فضایی محلی [local spatial translation^] قوی‌تر و قابل قبول‌تر است[29].
این نمایش تصویر جدید، خواص برجسته تری از الگو‌های بصری را بر‌می‌دارد و آن‌ها را با رده‌بند‌های خطی تبدیل می‌کند. مقایسه شماتیک بین SPM اصلی با ScSPM  در شکل4 نشان داده شده است. تابع spatial pooling در SPM غیر خطی averaging است، اما این تابع در ScSPM تابع max pooling  است.
![توضیح تصویر](http://upload7.ir/uploads//980dc144c7eeee08f7bb3d1bf18542e0b7b404c3.jpg)

اکنون لازم است که با **نحوه کد کردن SIFT از VQ به Sc** آشنا شویم:
فرض کنید که X یک مجموعه از توصیف‌گر‌های ظاهر[^appearance descriptors] SIFT  در فضای ویژگی D بعدی است، به‌عنوان مثال:
![توضیح تصویر](https://boute.s3.amazonaws.com/124-x.jpg)
روش VQ(vector quantization) الگوریتم خوشه‌‌بندی[^clustering] K-means را برای حل مسئله زیر به کار می‌برد:
![توضیح تصویر](http://upload7.ir/uploads//2dc767f4607a91233c0032f2293e33080718a7b5.jpg)
در این معادله:
 ![توضیح تصویر](https://boute.s3.amazonaws.com/124-V.jpg) 
که v1 تا k ،vk تا مرکز خوشه است که باید پیدا شود و code book نامیده می‌شوند. || || هم نشان دهنده‌ی L2-norm بردارهاست. این مسئله‌ی بهینه‌سازی می‌تواند به یک مسئله‌ی matrix factorization با شاخص‌های عضویت خوشه‌ی U
![توضیح تصویر](https://boute.s3.amazonaws.com/124-U.jpg)
به شکل دیگری فرموله شود:
![توضیح تصویر](https://boute.s3.amazonaws.com/124-%282%29.jpg)
که Card(um) = 1 یک محدودیت کاردینالیتی است، به این معنی که تنها یک عنصر از um غیر صفر است و um≥0 به این معنیست که تمام عناصر um غیر منفی هستند. | um|، فرم L1-norm برای um است؛ به معنی جمع ارزش مطلق هر عنصر در um. پس از بهینه سازی، ایندکس عنصر غیر صفر در um نشان می‌دهد که بردار  Xm متعلق به کدام خوشه است. در فاز آموزش VQ، معادله بهینه سازی بالا با توجه به هر دوی U و V حل می‌شود. در فاز کد، V آموزش داده شده برای هریک مجموعه جدید از X بکار برده می‌شود و این معادله‌ی بهینه سازی فقط با توجه به U حل می‌شود. 
ممکن است شرط Card(um) = 1 بسیار محدود کننده باشد. ما می‌توانیم این محدودیت را با قرار دادن یک جایگزین L1-norm روی um، که um را مجبور می‌کند تعداد کمی عناصر غیر صفر داشته باشد، کم کنیم. به این ترتیب، فرمول VQ به مسئله دیگری تبدیل میگردد که تحت عنوان Sparse coding (Sc) شناخته می‌شود:![توضیح تصویر](https://boute.s3.amazonaws.com/124-%283%29.jpg)

محدودیت L2-norm روی Vk برای امتناع از راه حل‌های بی‌اهمیت اعمال می‌شود. 
مشابه VQ، SC یک فاز آموزش و یک فاز کد دارد. ابتدا یک مجموعه توصیف‌گر[^descriptor]  X از یک مجموعه تصادفی از تکه‌های عکس برای حل رابطه (1) استفاده می‌شود؛ البته با توجه به U و V، که V بعنوان codebook دوباره آموزش داده می‌شود. در فاز کد، برای هر تصویر که به عنوان یک مجموعه توصیف‌گرX  نمایش داده شده، کد‌های SC با معادله بهینه سازی (1) و فقط با توجه به U بدست می‌آید.
به دلیل برخی خواص جالب SC، ما برای بدست آوردن بازنمایی[^representation]‌های تصویر، SC را انتخاب می‌کنیم. برخی از این خصوصیات عبارتند از:

+ بعلت محدودیت کمتر کد SC نسبت به کدSC ،   VQ می‌تواند به یک خطای بازسازی کمتری برسد.
+ اسپارس (خلوت) بودن باعث می‌شود که بازنمایی، خاص باشد و خواص برجسته‌ی تصاویر را انتخاب کند.

### پیاده کردن این بهینه سازی:
**قسمت Sparse Coding:**
مسئله بهینه‌سازی رابطه (1) را در نظر بگیرید؛ راه حل معمولی برای چنین مسئله‌ای حل کردن آن با بهینه‌سازی متناوب روی V یا U است(در حالیکه دیگری را ثابت نگه داشته‌ایم). با ثابت نگه‌ داشتن V، بهینه سازی می‌تواند با بهینه کردن هریک از ضرایب Um‌ بصورت جداگانه باشد:
![توضیح تصویر](https://boute.s3.amazonaws.com/124-%2810%29.jpg)
این یک مسئله رگرسیون خطی با L1-norm روی ضرایب است که تحت عنوان Lasso شناخته می‌شود.
با ثابت نگه داشتن U، مسئله به مسئله‌ی کوچکترین مربع با  محدودیت‌های درجه دوم کاهش می‌یابد:
![توضیح تصویر](https://boute.s3.amazonaws.com/124-%2811%29.jpg)

در آزمایش‌ها از تعدادی توصیف‌گر SIFT که از تکه‌های تصادفی برای آموزش codebook استخراج شده‌اند استفاده می‌شود. این کار با تکرار مراحل معادلات (10) و (11) انجام می‌گیرد.
**قسمت Multi Class Linear SVM:**
ما یک پیاده‌سازی ساده از SVM های خطی تولید می‌کنیم که در آزمایش‌ها استفاده شده‌اند. با توجه به داده‌های آموزش زیر:
![توضیح تصویر](http://upload7.ir/uploads//4d5afd0e9bc75a71b62ca408c4b36e7fffd84d1a.jpg)
هدف یک SVM خطی، یادگیری L تابع خطی زیر است:
![توضیح تصویر](http://upload7.ir/uploads//2264ce8f22b40ce00a9f97d6800223f4971286fa.jpg)
بطوری‌که برای یک داده تست Z، برچسب آن توسط رابطه زیر پیش بینی می‌شود:
![توضیح تصویر](http://upload7.ir/uploads//10274a351f3c168120bbda534ceccb2dd0761f3b.jpg)
برای آموزش L عدد SVM خطی دودویی، یک استراتژی "یکی در مقابل همه" را استفاده می‌کنیم که هر کدام، مسئله‌ی بهینه سازی بدون قید و دنباله دار زیر را حل می‌کنند:
![توضیح تصویر](https://boute.s3.amazonaws.com/124-%2813%29.jpg)
که اگر yi=c آنگاه:
![توضیح تصویر](https://boute.s3.amazonaws.com/124-y=1.jpg)
وگرنه:
![توضیح تصویر](https://boute.s3.amazonaws.com/124-y=-1.jpg)

[کد1](https://github.com/tahaok/poselet-based-attribute-recognition/tree/1f0daaec2a189640971ddd8f5f7dc0f955a62574)
[Github](https://github.com/tahaok)
# کارهای آینده

# مراجع
[1] A. Farhadi, I. Endres, D. Hoiem, and D.A. Forsyth, “Describing Objects by their Attributes”, CVPR 2009 
[2] L.Bourdev, S.Maji, J.Malik," Describing People: Poselet-Based Approach to Attribute Classification", ICCV 2011.
[3] W.Yang, and G.Mori. "A discriminative latent model of object classes and attributes." Computer Vision–ECCV 2010. Springer Berlin Heidelberg, 2010. 155-168. 
[4]G.Tsagkatakis, and A.Savakis. "Sparse representations and distance learning for attribute based category recognition." Trends and Topics in Computer Vision. Springer Berlin Heidelberg, 2012. 29-42.
[5] N.Zhang,R.Farrell,F.Iandola,T.Darrell, "Deformable part descriptors for fine-grained recognition and attribute prediction." Computer Vision (ICCV), 2013 IEEE International Conference on. IEEE, 2013.
 [6]Y.Sun, "Attribute Based Object Identification",Liefeng Bo and Dieter Fox,Robotics and Automation (ICRA), 2013 IEEE International Conference on .
 [7]K.Duan,D.Parikh,D.Crandall,and K.Grauman,"Discovering Localized Attributes for Fine-grained Recognition", In CVPR, 2012.
 [8]S.Changpinyo,E.B. Sudderth,"Learning Image Attributes using the Indian Buffet Process."BS. thesis,2012
[9]C.H. Lampert, H.Nickisch,and  S.Harmeling,"Learning To Detect Unseen Object Classes by Between-Class Attribute Transfer.",In CVPR, pages 951–958, 2009.
[10]J.Joo,S.Wang,and S. Zhu,"Human Attribute Recognition by Rich Appearance Dictionary", International Conference on Computer Vision (ICCV), 2013.
[11]K.Duan,L.Marchesotti,and D.J. Crandall,"Attribute-based Vehicle Recognition using Viewpoint-aware
Multiple Instance SVMs.",IEEE Winter Conference on Applications of Computer Vision. 2014.
[12]A.Farhadi,I.Endres,and D.Hoiem,"Attribute-Centric Recognition for Cross-category Generalization.",CVPR 2010. 
[13]L.Bourdev,"Poselets and Their Applications in High-Level Computer Vision".",UC Berkeley Electronic Theses and Dissertations,2011.
[14]N.Kumar,A.C. Berg,P.N. Belhumeur,and S.K. Nayar,"Attribute and Simile Classifiers for Face Verification", ICCV 2009.
[15]V. Ferrari, M. Marin-Jimenez, and A. Zisserman," Progressive search space reduction for human pose estimation.", In CVPR, 2008.
[16]V. Ferrari and A. Zisserman ,"Learning visual attributes." In NIPS,2007.
[17]T. L. Berg, A. C. Berg, and J. Shih,"Automatic attribute discovery and characterization from noisy web data.", In ECCV, 2010.
[18]J. Wang, K. Markert, and M. Everingham," Learning models for object recognition from natural language descriptions.",In BMVC09.
[19]G.Wang , D.Forsyth," Joint learning of visual attributes, object classes and visual saliency".In: ICCV ,2009.
[20]G. W. Cottrell and J. Metcalfe. Empath," face, emotion, and gender recognition using holons. ",In NIPS, 1990.
[21]B. A. Golomb, D. T. Lawrence, and T. J. Sejnowski. Sexnet,"A neural network identifies sex from human faces.", In NIPS, 1990.
[22]D.A.Vaquero , R.S.Feris, D.Tran, L.Brown,  A.Hampapur,M.Turk,"Attribute-Based People Search in Surveillance Environments", In: IEEE WACV,2009.
[23]N. Kumar, P. N. Belhumeur, and S. K. Nayar," FaceTracer: A Search Engine for Large Collections of Images with Faces.",In ECCV08.
[24]A. Gallagher and T. Chen," Estimating age, gender and identity using first name priors.", In CVPR, 2008.
[25]L. Sigal, D. J. Fleet, N. F. Troje, and M. Livne." Human attributes from 3d pose tracking." In ECCV, 2010.
[26]C.Lampert,"Semantic Attributes for Object Categorization.",IST Austria (Institute of Science and Technology Austria),Klosterneuburg, Austria,82pages.
[27] L. Bourdev, S. Maji, T. Brox, and J. Malik, "Detecting people using mutually consistent poselet activations.", In ECCV, 2010.
[28] J.Yang,K.Yu, Y.Gong, T.Huang, "Linear Spatial Pyramid Matching Using Sparse Coding for Image Classification" , IEEE Conference on Computer Vision and Pattern Recognition, 2009.
[29] T. Serre, L. Wolf, and T. Poggio, "Object recognition with features inspired by visual cortex.", In CVPR, 2005.
[30]http://www.eecs.berkeley.edu/~lbourdev/poselets






# پیوندهای مفید
+ [Dataset: UIUC64](http://vision.cs.uiuc.edu/attributes/)
+ [Dataset: H3D](http://www.eecs.berkeley.edu/~lbourdev/h3d/)
[لینک دریافت کد](http://uplod.ir/nken1kc79zpd/poselets_matlab_april2013.tgz.htm)