استخراج برچسب با استفاده از تصویر

تغییرات پروژه از تاریخ 1396/11/11 تا حالا
![نمونه ای ازتصاویر](https://engineeringblog.yelp.com/images/posts/yelp-restaurant-photo-classification-kaggle/image00.png)

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

**۱.مقدمه**
یلپ وب‌سایتی در مورد غذا و رستوران‌ها می‌باشد که در آن کاربران تجربه نظرات خود را در مورد رستوران‌ها و غذاهای آن‌ها به اشتراک می‌گذارند.
در این پروژه می‌خواهیم در مسابقه‌ای که Yelp برای برچسب‌زنی خودکار رستوران‌ها تدارک دیده است استفاده کنیم. در واقع این مسابقه می‌خواهد سامانه‌ای آموزش داده شود که با استفاده از مجموعه داده‌ای از عکس‌هایی که کاربران از غذاهای یک رستوران گرفته‌اند، برچسب هایی را برای این رستوران انتخاب کنند.
یلپ یک امریکایی وجزو شرکت های چندملیتی است که مقر ان درسان فرانسیسکو کالیفرنیا است.
این سرویس بر پایهٔ وبسایت Yelp.com و اپلیکیشن موبایل Yelp، دیدگاه‌های (Reviews) دیگران در مورد کسب و کارهای محلی مانند رستوران‌ها، کافه‌ها و… را پردازش و در اختیار کاربران دیگر قرار می‌دهد. همچنین، این شرکت به مدیران کسب و کارها روش برخورد و با دیدگاه‌های آنلاین و روش‌های پاسخ به آن‌ها را آموزش می‌دهد.Yelp در سال ۲۰۰۴ توسط دو کارمند سابق کمپانی پی پال به نام‌های راسل سیمونز و جرمی تأسیس شد. سرعت رشد این کمپانی به حدی زیاد بود که در سال ۲۰۱۰ به ۳۰ میلیون دلار درآمد رسید و طبق آمار منتشر شده در وبسایت خود ادعا کرد بیش از ۴٫۵ میلیون نفر از این سرویس استفاده می‌کنند. Yelp از سال ۲۰۰۹ تا ۲۰۱۲ مشغول توسعهٔ کسب و کار خود در اروپا و آسیا بوده‌است.
در حال حاضر Yelp دارای ۱۳۵ میلیون بازدید کنندهٔ ماهانه و ۹۵ میلیون دیدگاه (Review) است. درآمد شرکت Yelp نیز از راه تبلیغات و واگذاری کنترل پنل به کسب و کارها است.

**معرفی**
هدف این پروژه ساختن مدلی است که بتواند باچندین برچسب که ازمجموعه داده هایی که کاربرارائه کرده است بصورت اتوماتیک رستوران ها را برچسب بزند
درصورتی که درحال حاضر کاربران yelp بصورت دستی ودلخواه رستوران ها را برچسب  میزنند.
برچسب ها عبارت از:
0:good_for_lunch
1:good_for_dinner
2:takes_reservations
3:outdoor_seating
4:restaurant_is_expensive
5:has_alcohol
6:has_table_service
7:ambience_is_classy
8:good_for_kids
مجموعه داده اموزش دیده برای2000 رستوران برچسب اماده میکندیعنی234840عکس رابه رستوران نگاشت میکنند.درتست مجموعه داده 237152عکس رابه
10000رستوران نگاشت میکند.مدل اموزش دیده باید هر 10000رستوران را بایک یابیشتربرچسب از 9برچسب که درخواست میشود  تگ بزند.
جالب است بدانیم سایز ورودی ثابت نیست یعنی زمانی که برچسب باید پیش بینی شود تعدادعکس ها برای رستوران هامتفاوت است.بعلاوه مسئله طبقه بندی عکس درImageNet یک خروجی دارد، هرعکس باید یک برچسب بخورد ولی این مسئله درواقع multi class است  باچندین خروجی مواجه هستیم یعنی رستوران هاباید با9برچسب مختلف تگ بشوند.(هربرچسب میتواند درخواست شود ویا درخواست نشود.)
ورودی :عکس های مروری  که کاربر از غذاهای رستوران گرفته است،تعداد عکس ها واندازه عکس ها متفاوت است.
خروجی:لیستی از برچسب های پیش بینی شده برای رستوران.
برای مثال اگر(1,2,3,8) خروجی باشد که پیش بینی میکند برچسب های 1و2و3و8 به رستوران درخواست دادند ولی برچسب های 0و4و5و6به رستوران درخواستی ندادند، پس اولین قدم برای طراحی مدل  پیش بینی برچسب است(درخواست شده یادرخواست نشده)پیشگو برچسب هااز شبکه عصبی کانولوشن باسایز ورودی ثابت استفاده میکند.زمانی که همه عکس ها برچسب گذاری شدندمدل طراحی شده نتایج رابرای پیش بینی برچسب رستوران ترکیب میکند.دراخررستوران، بابرچسبی که بالاترین متقاضی راداشته باشد برچسب زده میشود.
باتوجه به رشد روزافزون عکس ها درفضای مجازی مثل اینستگرام و پیشرفت نرم افزارها وبوجود امدن موقعیت های کاری، کاربران باکلیک کردن بروی عکس ها تشویق می شوند درگروه ها مختلف فعال شده واطلاعاتشان را به اشتراک می گذارند.درنتیجه ی شکوفاشدن این گرایش تعدادزیادی عکس های سلفی باغذا به اشتراک گذاشته میشود.
بطورخلاصه ،پیش بینی ویژگی رستوران ها  باتوجه به سرنخ های بینایی عکس هایی که کاربران گرفتند نوعی مسئله MIL (یادگیری که از روی چندین سورس انجام میشودمثلا شما میخواهید روی عکس یادگیری انجام بدیدچندین مجموعه کاملا متفاوت رو میگیرید برای یادگیری شبکه عصبی یا حتی یک مجموعه رو از چندین منظر مختلف یادگیری کنید)است.دراین مسئله کلاس بندی کننده براساس مجموعه ای(bag،منظور مجموعه‌هایی است که در طول عملکرد الگوریتم عناصر رو داخلش جمع میکنن با مجموعه فرق دارد چون مجموعه تعریف علمی دارد و دراین تحقیق صدق نمیکند)[^۱]  MIL است.دراین مسئله کلاس بندی کننده براساس مجموعه ای [^ ۲]از عناصر طراحی شده به طوری که هر مجموعه چندین مسیرحالت دارد.هرمجموعه بابرچسب ها درارتباط هست اما برچسب های هرنمونه ازمجموعه مشخص نیستند حتی ممکن است هرنمونه داخل مجموعه اطلاعات مرتبط به کلاس رانشان ندهد[1].الگوریتم های زیادی برای مسئله طبقه بندی multi instance وجود دارد.اخیرااستفاده ازمجموعه ای ازحالات برای طبقه بندی موثربوده است[2].اگرچه براساس شبکه عصبی کانولوشن حالات استخراج می شود[3]ولی مسئله کلاس بندی هنوزبخاطرMILها چالش برانگیزباقی مانده است.
هدف ارائه الگوریتمی برای پیش بینی ویژگی رستوران براساس عکس هایی که کاربران گرفته اندو طراحی شبکه عصبی کانولوشن برای استخراج حالات از عکس های مختلف که درنهایت  مجموعه حالات بدست می اید.درواقع مدلی مجموعه ای برای هررستوران تعریف میکنیم.سپس ماشین جداگانه ای را برای هرویژگی اموزش میدهیم همچنین استقلال داده بین ویژگی های مختلفی که درطول طبقه بندی شدن ویژگی را پیش بینی میکردن را مورد توجه قرارمیدهیم و ازدیتاست رستوران یلپ استفاده میکنیم ودلیل انتخاب این دیتاست این است که نمایش دقیقی از عکس های رستوران در دنیای واقعی میدهد. دیتاست شامل برچسب هایی هست که بصورت دستی برای دیتابیس رستوران انتخاب شدند وهمچنین شامل نویز درقالب عکسای داپلیکیت و برچسب های نادرست است به همین دلیل کلاس بندی کردن دراین مسئله سخت شده است.
محدودیت های این پروژه زمان و محاسبات میباشد. اجرا شامل تنظیمات فریمورک و اماده سازی دیتا وطراحی مدل و پیش بینی خروجی است.

**۲.کارهای مرتبط**
 مقاله[Dietterich [4 : برای مسئله  پیش بینی دارو که در موردطبقه بندی مولکول های شیمیایی است سیستم باید توضیح بدهد که مولکول های شیمیایی مورد نظر  دارو خوب هستند یاخیر.
 مقاله[Andrews [5: دوروش برای تغییرSVM ارائه کرد: mi_SVM و MI-SVM  کلاس بندی نمونه ای و کلاس بندی مجموعه از عناصر وبرای
حل MIL از شبکه عصبی کانولوشن استفاده شد[3,6] 
مقاله[Maron and  Lozano-Perez[7: الگوریتمی در  MIL ارائه کرد، هدف پیداکردن فضای حالاتی که به نمونه‌هایی از مجموعه‌ها مثبت نزدیک باشد(مجموعه عناصری که خصلت مورد بررسی رو در بر دارند) وهمچنین  به نمونه ازمجموعه منفی عناصر دور باشد.بنابراین فاز یادگیری شامل  پیداکردن
بهترین نمونه است. الگوریتم ارائه شده درحوزه تشخیص شی درتصویرمورد استفاده قرارمیگیرد[8].
معماری یادگیری عمیق، لایه های مختلف خصوصیات مقایسه میشود، خصوصیات ساده با لایه های پایینی کشف میشوند که بعدا به لایه های بالاتر تبدیل
میشوند و خصوصیات پیچیده  را محاسبه میکنند[9,10,11,12]. شبکه های عصبی کانولوشن (CNN) یکی از مهمترین روش های یادگیری عمیق  هستند که در آنها چندین لایه با روشی قدرتمند آموزش میبینند این روش بسیار کارآمد بوده و یکی از رایج ترین روشها در کاربردهای مختلف بینایی کامپیوتر است، مثلا تشخیص  اشیا وکلاس بندی ویدیو.
مقاله[Xu [13: روش یادگیری عمیق برای محاسبه خصوصیات MIL درتصویربرداری پزشکی ارائه کرد.
مقاله[Song [14: شبکه عصبی کانولوشن را برای تشخیص مکان شی ارائه می دهد.
مقاله[Wang [15: الگوریتم k-nearest  neighbour) KNN) برای MIL بکاربرد،الگوریتم KNN یکی از بهترین و پرکاربردترین الگوریتم های دسته بندی است که از آن استفاده گسترده ای در کاربردهای مختلف می شود. یکی از مشکلات این الگوریتم، تأثیر یکسان همه خصیصه ها در محاسبه اصله رکورد جدید با همسایه های آن رکورد می باشد، در صورتیکه برخی از این خصیصه ها برای عمل دسته بندی کم اهمیت ترند. این امر باعث گمراهی روند دسته بندی و کاهش دقت الگوریتم دسته بندی می شود.
برای مثال،پیدا کردن داده از روی تصویر کار ساده ای نیست. برای مثال، یک کار پیش پا افتاده که یک کودک شش ساله براحتی انجام میده مثل تشخیص سگ یا گربه از روی عکس، برای کامپیوتربیشتر شبیح یه کابوسه. به همین خاطر برای استخراج اطلاعات ازروی عکس، مجبوریم خیلی کارها بکنیم. تصویر پایین رو در نظر بگیرید، این گراف قیمت مس رو نشون میده. عدد 2.9401 میتونه یک مثال خوب برای استخراج باشه.
![ تصویر 1: نمونه یک عکس با داده های عددی](https://boute.s3.amazonaws.com/268-graph1.gif)

فرض نویسنده بر اینه که شما دانش اولیه راجع به پردازش تصویر دارید. اولین کاری که نیاز داریم انجام بدیم، بریدن اون تیکه عکس هست که عدد مورد نظر ما توی اون قرار داره. چون تصویردو بعد داره، نقطه شروع تصویر (0,0) و نقطه پایان عکس (m,n) خواهد بود که m نشون دهنده طول عکس و n عرض عکس رو نشون میده. باتوجه به گرافی که در دست داریم، نقطه شروع (15, 136) و نقطه پایان (28, 179) خواهد بود.


![تصویر 2: قسمتی از تصویرکه داده مورد نظر ما درآن قرار دارد.](https://boute.s3.amazonaws.com/268-chart_crop.png)

بسته به اینکه چه زبان برنامه نویسی رو برای پیاده سازی این الگوریتم استفاده میکنید، روش بریدن تصویر و کار با اون هم متفاوت خواهد بود.

مقاله[Chvaleyre et al[16: درخت تصمیم برای دسته بندی اطلاعات و نیز فرآیند انتخاب های ماشینی می توان از الگوریتم های تصمیم گیری
استفاده کرد، به طور مثال  ما می توانیم مقداری از اطلاعات را به یک کامپیوتر بدهیم و سپس از آن بخواهیم با گرفتن اطلاعات بعدی (بر اساس اطلاعات قبلی) برای ماتصمیم گیری کند. یکی از الگوریتم های موجود الگوریتم ID3 نام دارد که درسال 1975 توسط J. Ross Quinlan و در کتابMachine Learning معرفی شد.به طور ساده یک الگوریتم id3 از تعدادی داده ثابت برای ما یک درخت تصمیم گیری می سازد که این درخت برای طبقه بندی کردن اطلاعات و در نتیجه تصمیم گیری به کار می روند .
مثال هایی که ما به کامپیوتر می دهیم شامل تعدادی مشخصات و تعدادی کلاس هستند. به طور مثال وقتی می گوییم یک مرد باید از 170 سانتیمتر بلند تر باشد ، دو مولفه ی کلاس و مشخصه را تعریف کرده ایم که در اینجا مشخصه "اندازه ی قد" و کلاس "مردبودن" است و یا ممکن است بگوییم یک زن حتما موهایی بلندتر از 30 سانتی متر دارد که در اینجا "اندازه ی مو" مشخصه و نیز "زن بودن" کلاس است.
انتخاب مشخصه ی کلاس بندی الگوریتم id3 از کجا می فهمد که باید بر اساس کدام مشخصه اطلاعات را طبقه بندی کند؟جواب در یک متغییر
آماری به نام ig و یا همان ضریب اطلاعات خلاصه شده است که این ضریب مشخص میکند که یک مشخصه "چقدر خوب؟"می تواند اطلاعات را دسته بندی کند و به اینصورت بهترین مشخصه انتخاب می شود تا بر اساس آن طبقه بندی اطلاعات صورت گیرد یعنی همان مشخصه ای که ig بیشتری داشته باشد برای آنکه بتوانیم ig را تعریف کنیم باید از تئوری اطلاعات و نیز مفهوم آنتروپی استفاده نماییم. آنتروپی میزان اطلاعاتی است که درون یک مشخصه گنجانده شده است و با فرمول زیر اندازه گیری می شود:
![](https://boute.s3.amazonaws.com/268-Capture33.PNG)
مثال معروف بازی کردن بیس بال:
فرض کنید که به وسیله ی الگوریتم می خواهیم تشخیص دهیم که آیا هوا برای بازی کردن بیس بال خوب است یا نه؟
در دوره ی دو هفته ای از بازی کردن بیس بال اطلاعات زیر جمع آوری شده است این اطلاعات به id3 کمک می کند تا یک درخت تصمیم گیری ساخته شود. هدف ساختن در ختی است که تعیین کند که آیا باید در یک روز با اطلاعات خاص بیس بال بازی کنیم یا نه؟
اطلاعات شامل :
نوع هوا{آفتابی ، ابری ، بارانی}
دما {گرم ، معتدل ، سرد}
رطوبت {زیاد، کم}
شدت باد {قوی ، ضعیف}
مجموعه اطلاعات داده شده که به نام S شناخته می شوند شامل اطلاعات زیر هستند:

![](https://boute.s3.amazonaws.com/268-Capture32.PNG)



ابتدا باید بفهمیم که کدام یک از مشخصات ریشه ی درخت تصمیم گیری هستند؟
برای این منظور باید آنتروپی تمامی مشخصات را حساب کنیم.
Gain(S, Outlook) =0.246
Gain(S, Temperature) =0.029
Gain(S, Humidity) =0.151
Gain(S, Wind) = 0.048
(calculated in example 2)
بیشترین ضریب مربوط به نوع هوا است (Oultlook) ، بنا بر این به عنوان ریشه درخت ما مورد استفاده قرار می گیرد.به خاطر اینکه نوع هوا شامل 3 مقدار است پس درخت تصمیم گیری شامل 3شاخه می شود .
سوال بعدی این است که در شاخه ی نوع هوای آفتابی چه نوع تصمیم گیری باید انجام شود ؟برای پاسخ به این سوال باید از ضریب اطلاعات استفاده شود و باید
مشخص کنیم که در مجموعه هوای آفتابی کدام یک از متغییر های دیگر دارای پراکندگی اطلاعات کم تری هستند و در حقیقت igبالاتری دارند.

Ssunny ={D1, D2, D8, D9, D11} = 5 examples from table 1 with outlook = sunny

Gain(Ssunny, Humidity) = 0.970

Gain(Ssunny, Temperature) = 0.570

Gain(Ssunny, Wind) = 0.019

که در اینجا رطوبت دارای بیشترین ضریب است و به عنوان مشخصه تصمیم انتخاب می شود و این فرآیند ادامه پیدا می کند تا زمانی که مشخصات ما به اتمام
برسد.

مقاله[1 ]Emores: تحلیلی ازچندین   MIL ارائه کرد(دسته بندی براساس رویکرد)
برای حل مسائل از نوع multi instance سه روش روتحلیل کرده :   
۱.Instance space
۲. bag space
۳. embedded space
تفاوت اینا توی مرزبندی عناصرموجود و شیوه ارتباط دهی بین عناصر هست،  embeded space بر اساس ارتباط بین عبارت‌های مورد استفاده ،
درbag spaceشباهت بین اینستنس‌های بگ‌ها، instance space هم کلاسه بندی اینستنس ها.
    
**۳.ازمایش ها**
الگوریتم ارائه شده شامل۴ گام می باشد. با استفاده از معماری شبکه عصبی کانولوشن و مدل[^ ۱۳]BOWو الگوریتم[ ^۲۴]EMDویژگی عکس ها استخراج می شود.ودرنهایت به کمک[^۳۵] SVMکلاسه بندی و برچسب ها برای رستوران پیش بینی میشود.
۳.۱.استخراج ویژگی 
برای استخراج حالات ازیک مدل ازقبل اموزش دیده،  [17]caffe استفاده می کنیم، که یک فریمورک متن باز است.بردار حالت۴۰۹۶بعدی ، fc7حالت ازعکس ها استخراج شده است.بنابراین ۵لایه شبکه عصبی کانولوشن و ۲لایه کاملا متصل از معماری شبکه عصبی کانولوشن استفاده میکنند[18].برای محاسبهfc7عکس ها باید به فرمی تبدیل شوندکه با شبکه عصبی کانولوشن سازگاری پیدا کنند، سایز ورودی معماری شبکه  عصبی کانولوشن 227x227پیکسل می باشد.
![](https://boute.s3.amazonaws.com/268-Capture24.PNG)
۳.۲.مدلBOW
![](https://boute.s3.amazonaws.com/268-Capture19.PNG)
برای کلاسه بندی عکسها مدلBOW ویژگی عکس هارا  بصورت wordsدرنظرمی گیرد، درواقع داده ها(عکس ها)بصورت هیستوگرام (words)نمایش می دهد.
![ ](https://boute.s3.amazonaws.com/268-Capture21.PNG)
![](https://boute.s3.amazonaws.com/268-Capture22.PNG)
الگوریتم BOWدرابتدا برای استخراج متن کاربرد داشت و بعدا در بینایی کامپیوتر کاربرد پیدا می کند[19].الگوریتم BOWشبیه دیکشنری عمل می کند که با پردازش برادار های[^۴]کوانتیزه شده   [^۶]ویژگی عکس ها ازیک محیط محلی مثل texture استخراج می شود.
![](https://boute.s3.amazonaws.com/268-Capture23.PNG)
![](https://boute.s3.amazonaws.com/268-Capture25.PNG)
![](https://boute.s3.amazonaws.com/268-Capture26.PNG)
![](https://boute.s3.amazonaws.com/268-Capture27.PNG)

مدلBOW رامیتوان بصورت زیر تعریف کرد.دیتاستIکه شامل mعکس و wویژگیهای استخراج شده  می باشد
![](https://boute.s3.amazonaws.com/268-Capture.PNG)
برای نگاشت ویژگی های استخراج شده به wordsاز الگوریتم EMDاستفاده میکنیم.
![](https://boute.s3.amazonaws.com/268-Capture1.PNG)
مفهوم visual vocabulary :
![](https://boute.s3.amazonaws.com/268-Capture28.PNG)
![](https://boute.s3.amazonaws.com/268-Capture29.PNG)
![](https://boute.s3.amazonaws.com/268-Capture30.PNG)
![](https://boute.s3.amazonaws.com/268-Capture31.PNG)
۳.۳.کلاسه بندی برچسب
برای کلاسه بندی ازSVMاستفاده کردیم که برچسب هایی برای کلاس ناشناخته پیش بینی می کرد، محاسبات الگوریتم EMDرابه kernelها منتقل کردیم[21].
![](https://boute.s3.amazonaws.com/268-Capture2.PNG)
در ماشین بردار پشتیبان باینری![](https://boute.s3.amazonaws.com/268-Capture3.PNG)
![](https://boute.s3.amazonaws.com/268-Capture4.PNG)
اگرyبرابر 1باشد یعنی ویژگی در کلاس موجود می باشد وبالعکس.
برای تعمیم، اگر pتعداد ویژگی ها وkتعداد کلاس، میتوانیم تابع تصمیم زیر را تعریف کنیم:
![](https://boute.s3.amazonaws.com/268-Capture5.PNG)
![](https://boute.s3.amazonaws.com/268-Capture6.PNG)
![](https://boute.s3.amazonaws.com/268-Capture7.PNG)
![](https://boute.s3.amazonaws.com/268-Capture8.PNG)
بااستفاده از نظریه [mercers[22 :
![](https://boute.s3.amazonaws.com/268-Capture9.PNG)
تابع تصمیم به صورت زیر بدست می اید:![](https://boute.s3.amazonaws.com/268-Capture10.PNG)
متغیرالفا ازطریق رابطه زیر بدست می اید[21] :
![](https://boute.s3.amazonaws.com/268-Capture11.PNG)
۳.۳.multi-label training
برای اموزش ماشین بردارپشتیبان از[LibSVM[23 و [Gram matrix[23استفاده کردیم.
۳.۴.association rules
برای بهبود دقت سیستم ارائه شده قوانینی برای برچسب ها در نظر می گیریم، قوانین مثبت،اگر برچسب درکلاس موجود باشد.قوانین منفی، اگر برچسب در کلاس موجود نباشد.(ادامه در مرحله بهبود نتایج تکمیل می شود)
۳.۵.نتایج ازمایش
براساس F1کارایی الگوریتم ارائه شده را ارزیابی کردیم.ازdatabaseمسابقه [Yelp Kaggle[25استفاده کردیم.ازمایشات با استفاده از فریمورک caffeانجام شد.
۳.۶.Dataset
مشکل دیتاست مورد نظر این هست که کلاسه بندی multi-image    multi labelبرای هر رستوران هست.پایگاه داده مورد نظر شامل 230,000عکس و 1996بیزینس هست.240,000عکس دردیتاست تست شدند که شامل10,000بیزینس هست.
![](https://boute.s3.amazonaws.com/268-Capture12.PNG)
عکس .Fig 1 پاسخی هست برای بیزینس خاص که فقط عکس غذا نیست بلکه  نام رستوران و منو و....چون عکس ها توسط کاربران اپلود میشوندحالت ثابتی ندارند و مود های مختلفی رو شامل میشوند مانند:portrait,landscape,square shapeو...
برای اینکه عکس ها باشبکه عصبی کانولوشن سازگاری داشته باشندسایزعکس ها به 227x227پیکسل کاهش پیدا میکند.
![](https://boute.s3.amazonaws.com/268-Capture13.PNG)
![](https://boute.s3.amazonaws.com/268-Capture14.PNG)

۳.۷.پیاده سازی جزییات و نتایج
![](https://boute.s3.amazonaws.com/268-Capture15.PNG)
![](https://boute.s3.amazonaws.com/268-Capture16.PNG)
![](https://boute.s3.amazonaws.com/268-Capture17.PNG)
![](https://boute.s3.amazonaws.com/268-Capture18.PNG)

**۳.۸بهبود نتایج**لینک پیاده سازی https://github.com/parisaheidarei/YRPC

**۳.۸بهبود نتایج**
برای حل این مشکل سه گام اصلی رو طی کردیم:گام اول:استخراج ویژگی ها از عکس هابود که بعضی از این عکس ها درFigure 1نشان داده شده اند،اکثر عکس ها از غذامی باشد درعین حال عکس از رستوران هم مشاهده میشود، بنابراین در استخراج ویژگی ها باید به گوناگونی انواع حالات عکس ها ازجمله در:غذا،نوشیدنی،منو،انسان،میز،ساختمان و....دقت نمود.
![](https://boute.s3.amazonaws.com/268-Capture679.PNG)
گام دوم :ترکیب ویژگی های استخراج شده با بیشترین دقت بود.گام سوم:کلاسه بندی حالات استخراج شده بود.
درابتدای شروع پرژوه گام دوم رو در نظر نگرفته بودم درصورتی که نقش مستقیم واساسی در پیش بینی برچسب ها داشت،نتایج ازمایش روی ۳۰۰۰عکس مقدارF1را ۰.۵۸۰۵۵نشان میداد،بدلیل اینکه تعدادی  از برچسب های رستوران از عکس های گرفته شده کاربران بدست نیامده نبودند، مثل"take-reservation"
که در طبقه بندی کمکی نمیکرد.
درمورد الگوریتم کلاسه بندی هم درابتدا کلاسه بندی خطی رادرنظرگرفته بودم ولی درنهایت SVMراشروع کردم که در کل نسبت به مدل خطی کارایی بهتری دارد.
در Figure2دیده می شود برای تعدادزیادی ازبرچسب ها تغییرC تاثیری درF1نداردولی برای برچسب هایی مثلGood_for-lunch و                       Resturant_is _expensive و Ambience_is_classy تغییرکوچکی درCتغییر عمده ای درنتایج دارد.
![](https://boute.s3.amazonaws.com/268-Capture681.PNG)
برخلاف انتظار،  طبق Figure3نتایج الگوریتمKNNکارایی بهتری رابه نسبت SVMنشان داد.
![](https://boute.s3.amazonaws.com/268-Capture682.PNG)
نتایج نهایی:
![](https://boute.s3.amazonaws.com/268-capture678.PNG)




**۴.کارهای اینده **
درپیاده سازی از تابع HOG  از scikit پایتون استفاده کردم،و Svm وSVM با پایتون پیاده سازی کردم(کدها ایمیل شدند)دراینده میتوانSIFTرابامتلب پیاده سازی نمود.

.دراینده میتوان BOW را پیاده سازی نمود، که در بهبود F1موثر میباشد.
درواقع اگر  زمان بیشتری در ترکیب ویژگی های استخراج شده نسبت به کلاسه بندی صرف شود،  میتواند در بهبود نتایج موثر باشد.
پیاده سازی دوباره این پروژه باCNNدراینده !



**۵. مراجع**

[1]    Jaume Amores. Multiple instance classification: Review, taxonomy and comparative study. Artificial Intelligence,201:81105, 2013. 

[2]       P. Auer, R. Ortner, A boosting approach to multiple instance learning, in: Proc. of  European  Conference on Computer Vision, 2004, pp. 63–74.

[3]       Z.-H. Zhou and M.-L. Zhang. Neural networks for multi instance learning. In ICIIT, 2002 

[4]       T. G. Dietterich, R. H.Lathrop, and T. Lozano-Pérez. "Solving the multiple-instance problem with axis-parallel rectangles," Artificial Intelligence, vol.89, no.1-2,pp.31-71, 1997. 

[5]       S. Andrews, I. Tsochantaridis, and T. Hofmann. Support vector machines for multiple-instancelearning. In NIPS, 2002. 

[6]       J. Ramon and L. De Raedt. Multi instance neural networks. In ICML workshop on attribute-value and relational learning, 2000. 

[7]       O. Maron and T. Lozano-Pérez. "A framework for multipleinstance learning," in: Advances in 7Neural Information Processing Systems 10, M. I. Jordan, M. J. Kearns, and S. A. Solla, Eds. Cambridge, MA: MIT Press, pp.570-576, 1998. 

[8]       Yang, C. and Lozano-Pérez, T.: Image database retrieval with multiple-instance learning  techniques, In: Proceedings of the 16th International Conference on Data  Engineering, pp. 233-243, San Diego, CA, 2000 

[9]       G. Hinton, L. Deng, D. Yu, G. E. Dahl, A.-r. Mohamed, N. Jaitly, A. Senior, V. Vanhoucke, P. Nguyen, T. N. Sainath, et al. Deep neural networks for acoustic modeling in speech  recognition: The shared views of four research groups. Signal ProcessingMagazine, IEEE, 29(6):82–97, 2012. 

[10]      K. Kavukcuoglu, P. Sermanet, Y.-L. Boureau, K. Gregor, M. Mathieu, and Y. LeCun. Learning convolutional feature hierarchies  for visual recognition. In NIPS, 2010 

[11]      H. Lee, R. Grosse, R. Ranganath, and A. Y. Ng. Convolutional deep belief networks for scalable unsupervised learning of  hierarchical representations. In ICML, 2009. 

[12]      A. Karpathy, G. Toderici, S. Shetty, T. Leung, R. Sukthankar, and L. Fei-Fei. Large-scale video classification with
convolutional neural networks. In CVPR, 2014 

[13]      Y. Xu, T. Mo, Q. Feng, P. Zhong, M. Lai, E. I. Chang, et al. Deep learning of feature representation with multiple instance  learning for medical image analysis. In ICASSP, 2014 

[14]      H. O. Song, Y. J. Lee, S. Jegelka, and T. Darrell. Weakly supervised discovery of visual pattern configurations. In NIPS,
2014 

[15]      J. Wang and J.-D. Zucker. Solving the multiple-instance problem: a lazy learning approach, Proceedings 17th International Conference on Machine Learning, pp. 1119-1125, 2000 

[16]      Y. Chevaleyre, J. D. Zucker, Solving  multiple-instance and multiple-part learning problems with decision trees and
rule sets. Application to the mutagenesis problem. In: Stroulia, E., Matwin, S. (eds.): Lecture Notes in Artificial Intelligence, Vol. 2056. Springer, Berlin(2001) 204-214.

[17]     Y. Jia. Caffe: An open source convolutional architecture for fast feature embedding. http://caffe.berkeleyvision.org/, 2013. 

[18]     A. Krizhevsky, I.Sutskever, and G. E. Hinton. Imagenet classification with deep convolutional neural networks. In NIPS, 2012 

[19]    A. Bosch, X. Muñoz, and R. Martí, “Which is the best way to organize/classify images by content?” Image and Vision Computing, vol. 25, no. 6, pp. 778–791, 2007 

[20]   Y. Rubner, C. Tomasi, and L. Guibas. The Earth Mover’s distance as a metric for image retrieval.International Journal of Computer Vision, 40(2):99–121, 2000. 

[21]   O. Chapelle, P. Haffner, V. Vapnik, Supportvector machines for histogram-based image classification, IEEE Transactions on Neural Networks 10 (5) (1999) 1055–1064.

[22]  Mercer, J. (1909),"Functions of positive and negative type and their connection with the theory of integral equations", Philosophical Transactions   of    the   Royal   Society A   209(441–458):415–446, doi:10.1098/rsta.1909.0016           

[23]     Chih-Chung Chang and Chih-Jen Lin, LIBSVM : a library for support vector machines. ACM Transactions on Intelligent Systems and Technology, 2:27:1--27:27, 2011. Software available at http://www.csie.ntu.edu.tw/~cjlin/libsvm

[24]   J. Pei, J. Han, B.Mortazavi-Asl, H. Pinto, Q. Chen, U. Dayal, M-C. Hsu,  PrefixSpan:Mining sequential patterns efficiently by prefix-projected pattern growth. In Proc. 2001 Int. Conf. Data Engineering (ICDE'01), Heidelberg, Germany, pp.
215–224, 2007

[25]  Yelp     Kaggle     Database.  https://www.kaggle.com/c/yelp-





----------
**پاورقی**
`۱.Bags-of-words
۲.Earth movers distance
۳.Support vector machine
۴.منظور از کوانتیزه کردن تصویر این است که تصویر یا سیگنال پیوسته رو با یه دقتی گسسته کنیم. مثلا 120*120 یا هر اندازه دیگه که مسلمه هر چی این گسسته سازی بیشتر انجام بشه، کیفیت تصویر بالاتر خواهد رفت و جزئیات بهتر دیده می شوند.





# ۶. پیوندهای مفید
+ [صفحه مربوط به مسابقه](https://www.kaggle.com/c/yelp-restaurant-photo-classification)
+ [کتابخانه اپن‌سی‌وی](http://opencv.org/)
+ [اپن‌سی‌وی در پایتون](http://docs.opencv.org/trunk/doc/py_tutorials/py_tutorials.html)
+ [نصب اپن‌سی‌وی در ابونتو](https://help.ubuntu.com/community/OpenCV)
+ [شناسایی اجسام در تصاویر با اپن‌سی‌وی](http://achuwilson.wordpress.com/2011/07/01/create-your-own-haar-classifier-for-detecting-objects-in-opencv/)
 
 
----------


۱.MIL،  یادگیری که از روی چندین سورس انجام میشود مثلا شما میخواهید روی عکس یادگیری انجام بدهید چندین مجموعه کاملا متفاوت را در نظرمیگیرید برای یادگیری شبکه عصبی یا حتی یک مجموعه را از چندین منظر مختلف یادگیری کنید.
۲.bag، منظور مجموعه‌هایی است که در طول عملکرد الگوریتم عناصر را داخل ان جمع میکنند ، با مجموعه فرق دارد چون مجموعه تعریف علمی دارد و دراین تحقیق صدق نمیکند.
۳.Bags-of-words
۴.Earth movers distance
۵.Support vector machine
۶.منظور از کوانتیزه کردن تصویر این است که تصویر یا سیگنال پیوسته را با دقتی گسسته کنیم. مثلا 120*120 یا هر اندازه دیگر که مسلما هر چه این گسسته سازی بیشتر انجام بشود، کیفیت تصویر بالاتر خواهد رفت و جزئیات بهتر دیده می شوند.