به نام خدا

اسیرا 1 یکی از انواع آزمون‌های شناخت انسان از رایانه (کپچا2) است که از کاربر می خواهد از مجموعه ی 12 عکس سگ و گربه فقط تصاویر گربه‌ها را انتخاب کند. انجام این تست برای انسان بسیار ساده است [1]. به‌طوری که 99/6% از انسان‌ها در کمتر 30 ثانیه به آن پاسخ می‌دهند. ولی شواهد نشان می دهند که تشخیص گربه و سگ به صورت خودکار از یکدیگر کار دشواری است [2].

شکل 1-یک نمونه تست اسیرا [3]

در این تست اگر اشاره‌گر موس روی هریک از تصاویر نگه داشته شود تصویر حیوان به صورت بزرگ تر نمایش داده شده و جمله‌ی"Adopt me" در زیر آن تصویر ظاهر می شود که در صورت کلیک بر آن کاربر را به صفحه‌ی آن حیوان در سایت 3Petfinder.com ارجاع می‌دهد. لازم به ذکر است که این تست برای مجموعه‌ی داده‌4ای خود از آرشیو این سایت استفاده می‌کند[2].

۱. مقدمه

درچند سال اخیر در صفحات وب برای جلوگیری از نفوذ هکر‌ها و روبات‌ها به رایانه از کپچا استفاده می‌شود که برای حل آن به یک کاربر (انسان) نیاز است. به‌دلیل این‌که آزمون‌ها باید برای انسان ها ساده و برای رایانه دشوار باشد، تمام آن‌ها بر پایه‌ی اطلاعاتی طراحی می‌شوند که برای کاربر‌ها قابل تشخیص و برای عامل‌هوشمند 5 غیر قایل تشخیص باشد. از نظر نوع این اطلاعات کپچا‌ها را می‌توان به 2 دسته تقسیم کرد :

  • در دسته‌‌ی اول این اطلاعات صرفا اعداد و حروف تصادفی هستند.

  • در دسته دوم این اطلاعات تصاویر هستند.

دسته دوم علاوه بر تصادفی بودن به پایگاه داده6ی بزرگی از تصاویر دسته‌بندی شده 7 نیاز دارد. اما دسته اول را می توان با چند خط کد پیاده‌سازی کرد. و این در حالی است که امکان موفقیت رایانه‌ها در این نوع تست بیشتر از نوع دوم است. در میان دلایل متعدد برتری دسته ی دوم می‌توان به این دلیل اشاره کرد که مجهز کردن ماشین به بینایی 8 بسیار دشوارتر از مجهز کردن آن برای تشخیص متن 9است. اما فراهم آوردن پایگاه داده‌ی مورد نیاز دسته دوم نیز کار دشواریست[2].

شکل 2-چند نمونه از کپچا‌های دسته‌ی دوم [2]

اسیرا در دسته دوم از انواع کپچا‌‌‌ها قرار می‌‌گیرد و پایگاه داده ای خود را از سایت Petfinder.com تامین می کند. Petfinder10 دارای پایگاه داده‌ای شامل بیش از 3 میلیون تصویر از سگ و گربه است که روزانه 10000 تصویر را به پروژه‌ی اسیرا اختصاص می‌دهد. همچنین لازم به ذکر است که اسیرا توسط شرکت مایکروسافت ابداع شده است[4]. انگیزه‌ی انجام این پروژه شناخت تصاویر سگ و گربه از یکدیگر به کمک الگوریتم های هوش مصنوعی به منظور عبور از اسیرا می باشد.

۲. شرح مسئله

در این مسئله وظیفه ی ما یافتن الگوریتمی با بالاترین میزان دقت در تشخیص تصاویر سگ و گربه برای دسته بندی آن‌هاست. ورودی این مسئله مجموعه داده‌ای جهت آموزش11 از تصاویر سگ و گربه و خروجی آن میزان دقت در طبقه بندی تصاویر در مجموعه داده‌ای مورد آزمایش 12 است[5]. مجموعه داده ای که توسط سایت Kaggle.com در اختیار ما قرار داده شده است قسمتی از پایگاه داده اسیرا است که توسط مایکروسافت ارائه شده است. مجموعه داده‌ای جهت آموزش آن شامل 25000 تصویر که 12500 تصویر آن سگ و 12500 تصویر دیگر آن گربه است. و همچنین مجموعه داده‌ای مورد آزمایش آن نیز شامل 12500 تصویر است. سایز متوسط تصاویر ارائه شده در حدود 500*350 پیکسل است.

شکل 3- کار یادگیری [5]

با توجه به آنچه که در شکل 3 مشاهده می کنید در کار یادگیری، ورودی، مجموعه داده مخصوص آموزش است و خروجی که به کمک یکی از الگوریتم هایی که در
قسمت بعدی ذکر می شود به دست می‌آید، مدل طبقه بندی شده است و در قسمت عملکرد کار (شکل 4) از این مدل طبقه بندی شده استفاده کرده و مجموعه داده مخصوص آزمایش را مورد بررسی قرار می دهد.

شکل 4-عملکرد کار [5]

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

در ادامه به توضیح روش هایی که می توان برای حل این مسئله از آن‌ها بهره برد می‌پردازیم:

3.1. SIFT13

"تبدیل مستقل از مقیاس ویژگی" یک الگوریتم در بینایی ماشین است؛ که برای استخراج ویژگی‌های مشخص از تصاویر، استفاده در الگوریتم‌ کارهایی چون تطبیق نماهای مختلف یک جسم یا صحنه و شناسایی اجسام به کار می‌رود. در این الگوریتم ابتدا تصویر اصلی به طور پیش‌رونده با فیلترهای گاوسی با سیگما در بازه ۱ تا ۲ محو می‌شود که حاصلش یک سری تصاویر محو شده گاوسی است (به این کار فیلتر کردن آبشاری می گویند) سپس، این تصویرها از همسایگان بلافصل خود(از دید سیگما) کم می‌شوند تا یک سری جدید از تصاویر پدید آیند[6].
گام‌های اصلی در محاسبه ویژگی‌های تصویر عبارت‌اند از:

  1. آشکارسازی اکسترمم‌های فضای مقیاس هر پیکسل در تصاویر با هشت همسایه‌اش و نه پیکسل(پیکسل متناظر و هشت همسایه‌اش) از هر یک از تصاویر دیگر سری مقایسه می‌شود.

  2. محلی‌سازی کلیدنقطه‌ها - کلیدنقطه‌ها از اکسترمم‌های فضای مقیاس گزیده می‌شوند.

  3. گرایش گماری - برای هر کلیدنقطه در یک پنجره ۱۶x۱۶، نمودار فراوانی گرایش گرادیان‌ها به کمک درونیابی دوسویه محاسبه می‌شوند.

  4. توصیفگر کلیدنقطه - نمایش در یک بردار ۱۲۸ عنصری.

شکل 5- توصیفگر [5] SIFT

3.2. bag of words(BoW)

در بینایی کامپیوتر مدل BoW در صورتی که در آن با ویژگی‌های تصاویر مانند کلمات برخورد گردد می‌تواند برای دسته‌بندی تصاویر مورد استفاده قرار گیرد. در این مدل یک لغت‌نامه به وسیله خوشه‌بندی 14ویژگی‌های استخراج شده 15 مجموعه داده‌های آموزشی تشکیل می دهد. و همچنین هر خوشه16 یک کلمه از این فرهنگ لغت تصویری محسوب می شود. و تصاویر با بردار های فراوانی که در آن هر بعد نشان دهنده نسبت ویژگی های متعلق به یک خوشه است[5].

شکل 6- [5] bag of the words

۳.۳. یادگیری عمیق 17

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

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

۴. آزمایش‌ها

۴.۱. مجموعه داده‌ها

همان طوری که در قسمت شرح مسئله توضیح داده‌شد، مجموعه داده‌ای که مسابقه‌ی Kaggle در اختیار ما قرار داده است به شرح زیر است :

مجموعه‌ی داده‌ای جهت آموزش : شامل 25000 تصویر سگ و گربه که تصاویر دارای برچسب می باشند.
مجموعه‌ی داده‌ای جهت آزمایش : شامل 12500 تصویر است (واضح است که این تصاویر فاقد برچسب می‌باشند.)

تمام تصاویر این دو مجموعه دارای فرمت jpg بوده و سایز متوسط تصاویر ارائه شده در حدود 500*350 پیکسل است. می‌توان آن‌ها را از اینجا به دست آورد. اما در اینجا به علت موجود‌نبودن برچسب18 مجموعه‌ی داده‌ای جهت آزمایش به منظور تشخیص درصد خطای الگوریتم، از بخشی از مجموعه‌ی داده‌ای جهت آموزش (که دارای برچسب هستند) استفاده‌می‌کنیم.

شکل 7 - یک نمونه تصویر گربه از مجموعه‌ی داده‌ای جهت آموزش [8]

۴.۲. پیاده سازی

در این قسمت مدل BoW را برای پیاده سازی پروژه و الگوریتم SIFT را جهت استخراج ویژگی‌های تصاویر انتخاب کرده‌ایم.( در قسمت کارهای مرتبط به توضیح آن‌ها پرداخته‌ایم.)

مراحل ابتدایی جهت این کار عبارتند از :

  1. خواندن تمام تصاویر از مجموعه داده‌ای جهت آموزش و برچسب‌های آن‌ها.

  2. استخراج ویژگی‌های هر تصویر به کمک روش bag of words.

  3. یادگیری از طریق بردار‌های تصاویر.

  4. ارائه‌ی تصاویر از مجموعه‌ی داده‌ای جهت آزمایش به الگوریتم برای پیش بینی دسته تصاویر.

از الگوریتم SIFT جهت استخراج نقاط کلیدی19 و توصیف نقاط کلیدی20 هر تصویر بهره‌می‌بریم.در این مرحله الگوریتم آرایه‌ای از توصیفات را برمی‌گرداند. بعد از استخراج نقاط کلیدی و توصیفات آن‌ها باید فراداده‌ها را از هر فایل تصویر به‌دست‌آورد. فراداده‌ها21 شامل نام فایل‌ها،مسیر22 و کلاس یا دسته 23تصاویر می باشند.

مراحل پیاده‌سازی‌شده در کد را می توان به کمک تصویر زیر بهتر درک‌نمود.

شکل 8 - مراحل پیاده سازی‌ [9]

همانطوری که در شکل مشاهده‌می‌کنید بعد از به‌دست‌آوردن آرایه‌ی ویژگی‌ها، به خوشه‌بندی ویژگی‌ها و استخراج واژه‌نامه‌ای از ویژگی‌ها24 می‌پردازیم. سپس استخراج‌کننده‌ی ویژگی 25 می‌تواند از واژه‌نامه‌ی به‌دست‌آمده برای پردازش تصاویر استفاده‌کند.
این الگوریتم صرفا از یک مدل آموزش‌یافته جهت پیش‌بینی نوع تصویر استفاده‌می‌کند.
برای یادگیری مشخصات استخراج‌شده، از ماشین SVM 26 استفاده‌می‌کنیم.

۴.۳. ابزارهای مورد استفاده

برای پیاده‌سازی مدل BoW، الگوریتم SIFT و همچنین ماشین SVM از زبان برنامه‌نویسی پایتون27،کتابخانه‌ی scikit-learn 28 و کتابخانه openCV 29 استفاده می‌کنیم. روش نصب این کتابخانه‌هادر اینجا ذکرشده‌است.

کد کامل پروژه را می‌توان از گیت هاب دریافت‌کرد.

۴.۴. نتایج

نتایج زیر به کمک یک مجموعه‌ی داده‌ای جهت آموزش شامل 100 تصویر و دو مجموعه‌ی داده‌ای جهت آزمایش شامل 100 تصویر گربه و 100 تصویر سگ به‌دست‌آمده‌است.

تعداد تصاویر درست تعداد تصاویر غلط میزان دقت
حالت ۱(مجموعه‌ی داده‌ای جهت آزمایش شامل ۱۰۰ تصویر گربه) 66 34 66%
حالت ۲(مجموعه‌ی داده‌ای جهت آموزش شامل ۱۰۰ تصویر سگ) 69 31 69%

جدول 1 - نتایج اولیه

در زیر بعضی از نمونه‌های درست و نادرست را نمایش‌می‌دهیم.

۴.۴.۱. نمونه‌های درست




۴.۴.۲. نمونه‌های نادرست


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

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

تعداد کل تصاویر مجموعه‌ی داده‌ای جهت آزمایش تعداد تصاویر درست میزان دقت
حالت ۱(مجموعه‌ی داده‌ای جهت آموزش شامل ۱۰۰ تصویر) 150 82 54/6%
حالت ۲(مجموعه‌ی داده‌ای جهت آموزش شامل ۱۰۰۰ تصویر) 150 116 66%

جدول 2 - مجموعه‌ی داده‌ای جهت آزمایش فقط شامل تصاویر گربه می‌باشد.

  • به علت محدود بدون حجم حافظه، می‌توانیم عامل را به کمک چند مجموعه تصویر به صورت متوالی آموزش‌دهیم که همان‌طور که مشاهده‌می‌شود به افزایش میزان دقت تشخیص می‌انجامد.

تعداد تصاویر درست میزان دقت
عامل آموزش‌یافته با یک مجموعه داده 82 54/6%
عامل آموزش‌یافته با دو مجموعه داده 94 62/6%
عامل آموزش‌یافته با سه مجموعه داده 103 68/6%
عامل آموزش‌یافته با چهار مجموعه داده 117 78%

جدول 3 - مجموعه‌ی داده‌ای جهت آزمایش شامل 150 عکس گربه و هر مجموعه‌ی داده‌ای جهت آموزش شامل 100 عکس می‌باشد.

تعداد تصاویر درست میزان دقت
عامل آموزش‌یافته با یک مجموعه داده 331 66/2%
عامل آموزش‌یافته با دو مجموعه داده 364 72%

جدول 4 - مجموعه‌ی داده‌ای جهت آزمایش شامل 500 عکس گربه و هر مجموعه‌ی داده‌ای جهت آموزش شامل 1000 عکس می‌باشد.

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

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

۶. مراجع

[1] Philippe Golle, Machine Learning Attacks Against the Asirra CAPTCHA
[2] Jeremy Elson, John R. Douceur, Jon Howell, Jared Saul, Asirra: A CAPTCHA that Exploits Interest-Aligned Manual Image Categorization
[3] Asirra AntiSpam
[4] Microsoft Research - Asirra Project
[5] Bang Liu, Yan Liu, Kai Zhou, Image Classification for Dogs and Cats
[6] David G. Lowe, Distinctive Image Features from Scale-Invariant Keypoints
[7] Yoshua Bengio,Deep Learning of Representations: Looking Forward
[8] Dogs vs. Cats competition dataset from Kaggle
[9] Amrith Kumar, Machine Learning-Image Detection.Cats Vs Dogs
[10] Deep Learning Wins Dogs vs Cats competition on Kaggle

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


  1. Asirra (Animal Species Image Recognition for Restricting Access)

  2. CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart)

  3. بزرگترین سایت برای یافتن خانه برای حیوانات بی‌خانمان

  4. dataset

  5. agent

  6. database

  7. classified

  8. machine vision

  9. text recognition

  10. برای مطالعه بیشتر:https://www.petfinder.com/birthday-petfinder-story/

  11. training dataset

  12. test dataset

  13. SIFT( تبدیل ویژگی مقیاس‌نابسته)

  14. clustering

  15. extracted

  16. cluster

  17. deep learning

  18. label

  19. Keypoints

  20. نمایش یک بردار عددی از ویژگی‌های تصاویر : Keypoint descriptors

  21. metadata

  22. path

  23. category

  24. در اینجا منظور واژگان بصریست.

  25. feature extractor

  26. ( ماشین بردار پشتیبانی)Support vector machines

  27. python :یک زبان برنامه نویسی همه منظوره،سطح بالا،شیءگرا و مفسر است

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

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

تایید شده

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

تایید شده

سلام
پروژه ی خیلی خوبی بود روی بخش های شرح مسئله و کارهای مرتبط به خوبی کار شده و تقریبا کامل بود.
بخش ازمایش هم خوب بود فقط چند مورد رو بهش اشاره نکرده بودید.
مثل اینکه چه ویژگی هایی استخراج میشود و یا از ان جا که شاید بخش زیادی از بهبود نتایج میتواند از طریق بهبود پیش پردازش انجام شود ، چه پیش پردازش هایی انجام میدهید؟
در کل خوب بود، خسته نباشید :)
نمره 4.5

رد شده

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

تایید شده

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

رد شده

سلام

  • در مجموع پروژه ی خوبی است.

  • متن روان و قابل فهم است

  • از پاورقی به خوبی استفاده شده که باعث شناخت بهتر مطاب می‌شود

  • ذکر منبع برای تصاویر نیز باعث بهتر‌شدن و جامع شدن مقاله شده است

  • اگر در بخش بهبود نتایج نیز نمونه‌های درست و غلط را در مدل بهبود یافته ذکر می‌کردید و همین‌طور کمی بیش‌تر در مورد جزئیات و روش کار توضیح می‌دادید بهتر بود

  • در بخش کار‌های مرتبط، دو تیتر اول چپ‌چین نوشته شده‌اند که بهتر بود راست‌چین بودند.
    موفق باشید

تایید شده

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