تشخیص اشیاء در تصویر (تحقیقاتی)

تغییرات پروژه از تاریخ 1396/11/11 تا حالا
بسم الله الرحمن الرحیم
![نمونه‌ای از سامانه تشخیص اشیاء در تصویر](https://kaggle2.blob.core.windows.net/competitions/kaggle/3333/media/INODex4.png)
  در این پروژه یک سامانه هوشمند توسعه داده می‌شوند که قادر به تشخیص مجموعه‌ای از اشیا‌ء در تصویر باشد. برای این کار لازم است با استفاده از مجموعه‌ داده‌های آموزشی، یک رده‌بنده آموزش دهید که هر شیء را به عنوان یک کلاس تشخیص دهد. 
  در طول این پروژه باید روش‌های تشخیص اشیاء در تصویر را بررسی کنید و سپس یک رده‌بند با استفاده از داده‌های آموزشی، آموزش داده و آن را ارزیابی کنید.

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

**کلمات کلیدی:** **شناسایی اشیا، بینایی ماشین، استخراج ویژگی، شناسایی الگو**




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

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

# کارهای مرتبط
همانطور که پیش‌تر اشاره شد روش‌های گوناگونی برای تشخیص اشیا در تصویر مطرح شده اند. به عنوان نمونه به بیان چند مورد از این روش‌ها می‌پردازیم.
**• استفاده از ویژگی‌های Haar-like** 
در این روش با توجه به ویژگی‌های ساده‌‌ای که طبقه‌بندی کننده طی چند مرحله، ساماندهی کرده‌ است؛ یک شی را به صورت آبشاری( یا پله‌پله) تعریف می‌کنیم. سیستم پیشنهادی بر اساس [ANN](https://en.wikipedia.org/wiki/Artificial_neural_network) کار می‌کند[2].
![شکل(1) شناسایی چهره با استفاده از ویژگی مذکور](https://boute.s3.amazonaws.com/255-1_pVXDRb6aiq-VtfnOu17Q8w.png)

**•استفاده از ویژگی‌های اشیا بر اساس لبه**
لبه یک تغییر ناگهانی در شدت روشنایی تصویر است؛ به عنوان مثال هنگامی که در تصویر، تغییر ناگهانی از سیاه به سفید داریم یک لبه ایجاد میشود.
 در این روش از ویژگی‌های لبه استفاده می‌شود. به این صورت که نقشه و طرح لبه‌های تصویر بدست می‌آید و ویژگی‌های اشیا بر اساس لبه‌ی آن‌ها مشخص می‌گردد. مثال‏‌هایی که از این روش استفاده کرده‌اند [3,4] می‌باشند. لبه‌ها ویژگی‌های استواری هستند و نسبت به شرایط روشنایی، تغییرات رنگ اشیا و بافت
خارجی اشیا مقاوم هستند و تغییرات آن‌ها بر روی لبه تاثیری نمی‌گذارد. همچنین لبه‌ها، مرز اشیا را به خوبی مشخص می‌کنند و به این صورت بهره‌وری اطلاعات را در محیط‌های شلوغ و پر از اشیا افزایش می‌دهد. برای استفاده از این روش دو راه وجود دارد: استفاده از کل لبه ها و به اصطلاح شکل و فرم هر شی؛ که در [5,6] از این حالت استفاده شده است. و در حالت دیگر می‌توان تنها بخش‌هایی از شکل و کانتورها را استفاده کرد[3,4]. 
![شکل(2) مثالی از الگوریتم لبه‌یابی بر روی یک تصویر با جزئیات بالا](https://boute.s3.amazonaws.com/255-12.jpg)

**•  استفاده از ویژگی‌های اشیا بر اساس تکه‌ها**
یکی دیگر از انواع ویژگی‌ها که استفاده از آن‌ها شایع است؛ انتخاب ویژگی‌ها بر اساس تکه‌ها (وصله‌های تصویر) می‌باشد .در این روش ظاهر تصویر به عنوان نشانه‌هایی برای شناخت بهتر استفاده می‌شود. این روش برخلاف نوع ویژگی‌های بر اساس لبه، قدیمی‌تر می‌باشد . برای نمونه در [7] به دنبال بیشینه و کمینه شدت تغیرات رنگ، جستجو انجام شده و آن‌ها را گوشه‌های تصویر می‌نامد و تکه‌ها را در این گوشه‌ها انتخاب میکند. 

**• روش های یادگیری ماشین**
برای بدست آمدن مدلهای تولیدی که برای تشخیص و شناسایی اشیا استفاده می‌شوداز روش‌های گوناگونی استفاده می‌شود. یکی از روش‌های یادگیری استفاده از شبکه‌ها و طبقه بندی کننده‌های بیزی می‌باشد[8]. یا می توان از روش احتمال بیشینه و یا روش تخمین بیشینه استفاده کرد[9]. مدل‌های مشخص کننده اغلب از روش‌هایی مانند پرازش منطقی، ماشین بردار پشتیبان[10,11] و نزدیکترین همسایگی استفاده می‌شود. از روش نزدیک‌ترین همسایگی می‌توان برای حل مسائل چند کلاسه در تشخیص اشیا استفاده کرد. همچنین روش‌های تشدیدکننده نیز از روش‌هایی هستند که می‌توان برای یادگیری مدل‌های تمایز استفاده کرد. می‌توان روش‌های یادگیری را نیز با یکدیگر ترکیب کرد. به طور معمول روش‌های بیزی و یا احتمال بیشینه با یک روش تشدیدکننده یا یادگیری افزایشی به کار گرفته می‌شوند تا روشی قدرتمند و یادگیری مطمئن را به وجود آورند. تعداد مدل‌های معمول تمایز دهنده با تست و تولید در یک حلقه بازخورد افزایش می‌یابند. فرآیند یادگیری می تواند آفلاین یا آنلاین باشد؛ که این موضوع به نوع خواسته و کاربرد تشخیص و شناخت اشیاء، بستگی دارد. هم اکنون امکان آموزش و یادگیری آنلاین وجود دارد. با توجه به پیشرفت مناسبی که در زمینه پردازش ابری حاصل شده است می‌توان تصاویر آموزشی را بر روی ماشین میزبان ابری بارگذاری کرد و با پردازش‌های عملیات یادگیری روی میزبان، بازخوردها را دریافت کرد.

**• پروژه‌‌ی Amazon Rekognition**
این سیستم یکی از بخش‌های پروژه‌ی یادگیری عمیق آمازون است که به تازگی توسط این شرکت برای توسعه دهندگان معرفی شده‌است. این سیستم تقریبا مثل سایر سیستم‌های مشابه تشخیص عکس کار می‌کند؛ به این صورت که چهره انسان‌ها را تشخیص می دهد؛ احساسات آن را مشخص می‌کند و اشیاء را با توجه به شکل آن‌ها نامگذاری می‌کند. در حقیقت این سیستم به قدری هوشمند شده که نه تنها حضور یک سگ در تصویر را تشخیص می دهد؛ بلکه می تواند نوع و نژاد سگ را نیز به طور دقیق مشخص کند.
به گفته‌ی Werner Vogels مدیر ارشد فناوری آمازون، سیستم Amazon Rekognition با استفاده از تکنیک‌های یادگیری عمیق اشیا، مناظر، مفاهیم و چهره‌ها را در عکس‌ها تشخیص می‌دهد و می‌تواند عکس‌ها را با هم مقایسه کند. همچنین کاربران می‌توانند در میان میلیون‌ها چهره با ویژگی‌های مختلف جستجو کنند.[13]
![شکل(3) سیستم جدید هوش مصنوعی آمازون برای تشخیص عکس ها](https://boute.s3.amazonaws.com/255-1891a793-dab9-424e-b522-cfcdd585e6c7.png)

![شکل(4) سیستم جدید هوش مصنوعی آمازون برای تشخیص عکس ها](https://boute.s3.amazonaws.com/255-amazon-rekognition-835x472.jpg)

**• تبدیل هاف**
تبدیل هاف روشی برای استخراج ویژگی ها (http://www.boute.ir/iust-ai-94/plate-position-recognition#fn-feature extraction) (تعیین ویژگی های بارز و تعیین کننده یک تصویر) است؛ که به دنبال یک الگو در تصویر میگردد . این روش به منظور پیدا کردن خطوط ، در مواردی که بخواهیم شی را با خطوط کناری‌اش شناسایی کنیم می‌تواند مفید باشد. مشکل این روش حجم پردازشی بالا و وقت گیر بودن آن است .

**• تعدیل هیستوگرام** 
هیستوگرام تصویر، نموداریست که محور X آن مقادیر روشنایی و محور Y فراوانی این مقادیر را نشان میدهد و بیان کننده ی میزان روشنایی تصویر می باشد .یکی از کاربرد های این روش افزایش کنتراست تصاویر است که موجب افزایش دقت تصویر میشود. این روش برای تصاویر نویزی و تصاویری که در آن کمی چرخیده باشد مفید نیست.



**1. مدل‌های پیاده‌سازی‌شده در متلب**
در تشخیص هندسه‌ی جسم، برای سادگی نوشتن کد در نرم‌افزاری هم‌چون متلب، بهتر است از تصویر سیاه و سفید استفاده شود و نوع تصویر از نوع intensity باشد. تصویر intensity تصویری است که بر اساس شدت درخشندگی رنگ‌های مختلف در متلب مقیاس‌بندیدارد و در حقیقت ما در نرم‌افزار متلب، ماتریسی از شدت نور نقاط مختلف تصویر در اختیار داریم. سنسور تنها دارای یک سیم در خروجی خود می‌باشد؛ که اگر ناحیه سفید تصویر را سنس کند؛ مقدار یک و اگر بخش سیاه تصویر را senseکند؛ مقدار صفر را می‌دهد. البته خروجی سنسور آنالوگ است و مقادیر دیجیتال پس از گذر از مبدل آنالوگ به دیجیتال (AD) به دست آمده‌است.
حال به شرح الگوریتم تشخیص شکل هندسی اشیا در متلب می‌پردازیم:
برای تشخیص اشیا در یک تصویر از روش قطعه‌بندی تصویر استفاده می‌کنیم. در این‌جا برای تعیین هندسه شکل از تغییرات ناگهانی intensity (شدت نور) کمک می‌گیریم. درواقع ما برای تشخیص این‌که مثلا یک شی، شش شکل هندسی مربع دارد یا دایره، نیاز داریم تا لبه‌ی شی را شناسایی کرده و با کدنویسی برای سیستم تعریف کنیم؛ اگر لبه‌ها به این شکل خاص بودند؛ شکل هندسی چه خواهد بود. برای شناسایی لبه‌های شی از ماسکه کردن تصویر استفاده می‌شود. بدین صورت که یک ماتریس که از روابط ریاضی برای لبه‌یابی  در تصویر حاصل شده‌است؛ در ماتریس اصلی تصویر ضرب می‌شود. این ضرب برای هر پیکسل و چند پیکسلی که در همسایگی آن قرار دارد؛ انجام می‌گیرد و نتیجه با میزان درخشندگی مقیاس‌شده و در نهایت میزان/ احتمال لبه‌بودن در تمامی نقاط تصویر به‌دست می‌آید. در حقیقت ماتریس عددی جدید (ماسک) از هر تصویر لبه‌ها را بر اساس تغییر میزان درخشندگی تصویر در اطراف لبه‌ها استخراج ‌می‌کند.
تمام این کار به این دلیل است که می‌خواهیم در نهایت تصویری داشته‌باشیم که در آن نواحی از تصویر که اختلاف رنگ در آن‌ها بیشتر است؛ نمایان باشد. به این شکل که میزان لبه‌بودن هر پیکسل در تصویر جدید با حدی از درخشندگی نمایش داده‌می‌شود. (هر چه سفیدتر باشد؛ میزان لبه‌بودن آن نقطه بیشتر است.) که در تصاویر سیاه و سفید که با آن سروکار داریم؛ این اختلاف رنگ یا شدت نور را کنتراست تصویر می‌گویند.
**2. دسته بندی:**
در دسته بندی تصاویر دیجیتال، با استفاده از اطلاعات طیفی هر پیکسل، پیکسل‌های تصویر در کلاس‌ها یا دسـته‌های خاص قرار می‌گیرند؛ به طوری‌که ویژگی‌های پیکسل‌های یک کلاس، مشابه هم و با پیکسل‌های کلاس مجاور غیـر مشابه هستند. دسته‌بندی را می‌توان یک فرایند تصمیم‌گیری
دانست که در آن داده‌های تصویری به فضای کلاس‌های مشخص انتقال می‌یابند. دسته‌بندی از مهم‌ترین روش‌های استخراج اطلاعات بـه خـصوص اطلاعـات پوشـش‌های مختلف زمین به شمار می‌رود. [16, 15]
**•** **انواع روش های دسته بندی:**
دسته‌بندی را از دیدگاه‌های مختلف، می‌توان به چند روش کلی تقسیم نمود؛ که عبارتند از:
**دسته‌بنـدی نظـارت‌شده – دسته‌بندی نظارت‌نشده:**
دسته بندی نظارت‌شده نیاز به نمونه‌های آموزشی، تعداد و نوع کلاس‌ها دارد. در دسته‌بندی نظارت‌نشده نیازی به تعیین این پارامترها نیست؛ اما تعداد کلاس‌ها و یک معیار تفکیک‌پذیری باید مشخص شود.
**دسته‌بندی سخت–دسته‌بندی نرم:**
در دسته‌بندی سخت، خروجی برای یک پیکسل تنها برچسب یک کلاس خواهـد بود. اما در دسته‌بندی نرم خروجی برای یک پیکسل لیستی از برچسب کلاس‌ها خواهدبـود کـه معمـولا بـا روش‌هـای فازی این خروجی به دست می‌آید.
**دسته بندی پارامتریک - دسته بندی غیر پارامتریک:**
تمام روش‌های این دو دیـدگاه جز دسته‌بندی نظارت‌شده محسوب می‌شوند. در دسته‌بندی پارامتریک برای چگونگی توزیع احتمال نمونه‌ها یک پـیش‌فرض در نظر گرفته می‌شود. بر اساس پیکسل‌های معلوم معرفی شده، پارامترهای مختلفی را محاسبه کرده و بر اسـاس آن‌ها در مورد مابقی پیکسل‌ها تصمیم‌گیری می‌کند . در دسته‌بندی غیر پارامتریک هیچ فرضی برای آن، لحـاظ نمـی‌شود. تنها بر اساس معیارهایی که از مقادیر پیکسل‌های معلوم به دست می‌آیند؛ تـصمیم‌گیـری مـی‌کنـد.
**دسته‌بندی پیکسل مبنا – دسته‌بندی شی مبنا:**
در دسته‌بندی پیکسل مبنا پردازش بـر روی تـصویر بـه صـورت پیکـسل بـه پیکسل اعمال می‌شود؛ اما در دسته‌بندی شی مبنا ابتدا تصویر به چندین شی قطعه‌بندی
شده، سپس از الگـوریتم هـای دسته‌بندی استفاده می‌شود.
با توجه به هریک از دیدگاه‌ها، مراحل دسته‌بندی متفاوت خواهد‌بود؛ اما به طور کلـی مراحـل آن عبـارت اسـت از:
**ورودی داده‌ها:**
در این مرحله لایه‌های ورودی، اطلاعات کلاس‌ها، کیفیت داده‌های ورودی مـشخص مـی‌شـود.
**پـردازش و انجام دسته بندی:**
با توجه به آن‌که از کدام روش دسته‌بندی استفاده شود، یک مـدل دسته‌بنـدی بـه داده‌هـای ورودی اعمال می‌شود. 
**خروجی:**
خروجی یک دسته‌بندی می‌تواند نقشه‌های موضـوعی، جـداول آمـاری یـا فایـل‌هـای حـاوی اطلاعات باشد.
**ارزیابی صحت:**
صحت خروجی به صحت داده‌های ورودی، پیش پردازش‌ها، و صحت مدل مـورد اسـتفاده بستگی دارد. برای ارزیابی صحت، می‌توان از دو روش کلی اعتباریابی و نمونه‌برداری استفاده نمود.
**3.** **ماشین بردار پشتیبان(SVM)** 
[14] یک گروه از الگوریتم‌های دسته‌بندی نظارت‌شده هستند؛ که پیش‌بینی می‌کند یک نمونه در کدام کلاس یا گروه قرار می‌گیرد. این الگوریتم برای تفکیک دو کلاس از هم، از یک صفحه استفاده می‌کند؛ به طوری‌کـه ایـن صـفحه از هـر طرف بیشترین فاصله را تا هر دو کلاس داشته باشد. نزدیک‌ترین نمونه‌های آموزشی به این صفحه "بردارهای پشتیبان" نام دارند.
بردارهای پشتیبان به زبان ساده، مجموعه ای از نقاط در فضای n بعدی داده‌ها هستند؛ که مرز دسته‌ها را مشخص می‌کنند و مرزبندی و دسته بندی داده‌ها براساس آن‌ها انجام می‌شود و با جابجایی یکی از آن‌ها، خروجی دسته بندی ممکن است تغییر کند . به عنوان مثال در شکل زیر، بردار (۴۵,۱۵۰) عضوی از بردار پشتیبان و متعلق به یک زن است. در فضای دو بعدی، ‌بردارهای پشتیبان، یک خط؛ در فضای سه بعدی یک صفحه و در فضای n بعدی یک ابر صفحه را شکل خواهند داد.
![](https://boute.s3.amazonaws.com/255-SVM2-768x520.png)
 ماشین بردار پشتیبان، یک دسته‌بند یا مرزی است که با معیار قرار دادن بردارهای پشتیبان، بهترین دسته‌بندی و تفکیک بین داده‌ها را برای ما مشخص می‌کند.
در SVM فقط داده‌های قرار گرفته در بردارهای پشتیبان مبنای یادگیری ماشین و ساخت مدل قرار می‌گیرند و این الگوریتم به سایر نقاط داده حساس نیست و هدف آن هم یافتن بهترین مرز در بین داده‌هاست به گونه‌ای که بیشترین فاصله ممکن را از تمام دسته‌ها (بردارهای پشتیبان آن‌ها) داشته باشد.
![بردارهای پشتیبان، نزدیکترین نمونه ها به صفحه](https://boute.s3.amazonaws.com/255-bf5d2840-e518-11e4-9ebf-e1ac09e35224.png)
به عنوان مثال، صفحه ی H1 و H2 دو کلاس را از هم تفکیک کرده اند، اما کلاس H3 در شرایط این الگوریتم صدق مـی کند.
![ تفکیک دو کلاس با اعمال یک صفحه](https://boute.s3.amazonaws.com/255-8ace2e26-e518-11e4-936c-ca9d357554cb.png)

**نقاط ضعف ماشین بردار پشتیان**
• این نوع الگوریتم‌ها، محدودیت‌های ذاتی دارند؛ مثلا هنوز مشخص نشده است که به ازای یک تابع نگاشت، پارامترها را چگونه باید تعیین کرد.
• ماشین‌های مبتنی بر بردار پشتیبان به محاسبات پیچیده و زمان بر نیاز دارند و به دلیل پیچیدگی محاسباتی، حافظه زیادی نیز مصرف می کنند.
• داده‌های گسسته و غیر عددی هم با این روش سازگار نیستند و باید تبدیل شوند.
با این وجود،SMV ها دارای یک شالوده نظری منسجم بوده و جواب‌های تولید شده توسط آن‌ها، سراسری و یکتا می باشد. امروزه ماشین‌های بردار پشتیبان، به متداول ترین تکنیک‌های پیش‌بینی در داده کاوی تبدیل شده‌اند.
**توابع کرنل**
تابع کرنل، تابع وزنی است؛ که در تکنیک‌های پیش‌بینی غیر پارامتریک استفاده شده و دارای دو شـرط اسـت:
![](https://boute.s3.amazonaws.com/255-610daa98-e519-11e4-8cad-c508da11659f.PNG)
برای تمامی مقادیر u .
اگر دو کلاس به نحوی باشند که نتوان آن‌ها را با یـک صـفحه جدا کرد؛ از روش‌های غیرخطی و تعریف تابع تصمیم‌گیری و توابع کرنل استفاده می‌کنیم.
یک تابع تصمیم‌گیری به صورت زیر تعریف می‌شود
![](https://boute.s3.amazonaws.com/255-7b2824d0-e519-11e4-8d36-1496fd22a68c.PNG)
که Yi خروجی دسته بندی ai ضرایب لاگرانژ تابع K تابع کرنل مورد نظر و M و تعداد نمونه‌ها می‌باشد. [14]
**4. تبدیل هاف**
تبدیل هاف [19] از اندازه و زاویه مکان پیکسل‌های تشکیل دهنده مرز شی، ویژگی‌هایی استخراج می‌کند که با یکدیگر متفاوت می‌باشند. در این قسمت مراحل استخراج ویژگی و تشکیل پایگاه داده به ترتیب آمده است:
1) تقطیع تصویر: تصویر از چند ناحیه مجزا تشکیل شده است؛ به طوری‌که در هر ناحیه یک شی وجود دارد و مجموع این نواحی تصویر اصلی را تشکیل می‌دهد؛ تقطیع فرآیندی است که تصویر را به نواحی مجزا تقسیم می‌کند و پیکسل‌های تشکیل دهنده هر یک از نواحی را مشخص می‌کند.
2) تبدیل تصویر به باینری
3) حذف قسمت های اضافی تصویر و تغییر اندازه شی:  امکان دارد شی در گوشه‌ای از تصویر باشد و پیکسل‌های زیادی فاقد شی باشند؛ این پیکسل‌ها
به صورت یک ردیف یا یک ستون هستند که این ردیف‌های فاقد شی حذف می‌شوند.
4) تعیین مرز دور شی: ابتدا تصویر توسط فیلتر گوسین هموار میشود. [20]
![](https://boute.s3.amazonaws.com/255-260-photo_2017-12-28_19-21-57.jpg)
5) بزرگترین زاویه ای را که بین زوایای حاصله از پیکسل های مرز وجود دارد را می یابیم.
6) چرخش و جداسازی: زاویه‌ی بین دو پیکسلی که بیشترین فاصله را دارند محاسبه می‌شود و شکل به اندازه آن زاویه حول مرکز تصویر چرخانده می‌شود. ردیف‌ها و ستون‌های اضافه نیز حذف می‌شوند.
7) انتقال مبدا و پیدا کردن زاویه حداکثر: در تصویر پیکسل‌ها از گوشه‌ی بالا سمت چپ شروع می‌شوند و مکان پیکسل‌ها نسبت به این گوشه است. مکان تمام پیکسل‌ها در این مرحله به مرکز انتقال می‌یابد. در این بلوک زاویه تمام نقاط مرز را نسبت به مرکز تصویر حساب میکنیم:
![](https://boute.s3.amazonaws.com/255-260-photo_2017-12-28_19-44-16.jpg)
بزرگترین زاویه‌ای را که بین زوایای حاصله از پیکسل‌های مرز وجود دارد را می‌یابیم.
8) شیفت چرخشی: مقدار زوایا به ترتیب مکان‌شان فراهم آمده است. ترتیب این زوایا را با شیفت چرخشی آنقدر می‌چرخانیم تا بزرگ‌ترین زاویه در ابتدا قرار گیرد. پس از انجام این مرحله صد زاویه داریم که از شی استخراج شده است. شیفت چرخشی با استفاده از این معادله انجام می‌شود.
![](https://boute.s3.amazonaws.com/255-260-photo_2017-12-28_20-21-56.jpg)
این روند برای تک تک تصاویر نمونه انجام می‌گیرد.
حال ویژگی‌های استخراجی از تصاویر باید در پایگاه داده‌ای ذخیره شوند تا برای مقایسه از آن استفاده شود. این ویژگی‌ها در ماتریس ذخیره می‌کنیم.
در هریک از سلول‌های ماتریس ویژگی برای هر یک از سطرهای آن برچسبی متناسب با محتوای آن تعیین می‌کنیم و در کنار آن ذخیره می‌کنیم. این برچسب
ماتریس است که در خروجی برگردانده می‌شود.
حال از تصویر تست ورودی نیز همین ویژگی را استخراج می‌کنیم. در این بلوک ویژگی حاصله از تصویر ورودی با تک تک سلول‌های ماتریس جدید مقایسه
می‌شود. فاصله با تمام سطرها محاسبه می‌شود؛ سطری که کمترین فاصله را با تصویر تست دارد مکان و برچسب آن در ماتریسی جداگانه ذخیره می‌شود. سپس بین سطرهای منتخب از هر سلول مقایسه‌ای صورت گرفته و کمترین بین آن‌ها انتخاب شده و برچسب آن به عنوان خروجی برگردانده می‌شود.
ایجاد ماتریس تفسیر برچسب: برچسب حاصله از فرایند مقایسه باید تفسیر گردد و مشخص شود که مربوط به چه چیزی است. باید ماتریسی سلولی از برچسب ها تشکیل دهیم که در کنار هر برچسب تصویر و داده مربوط به آن برچسب وجود داشته باشد. برچسب خروجی در ماتریس برچسب‌ها پیدا می‌کنیم و داده که ماتریس برچسب به آن اشاره دارد؛ را نمایش داده و از آن استفاده می‌کنیم.
**5. روش SIFT** 
تبدیل مستقل از مقیاس ویژگی یک الگوریتم در بینایی ماشین است؛ که برای استخراج ویژگی‌های مشخص از تصاویر، استفاده در الگوریتم‌ کارهایی
چون تطبیق نماهای مختلف یک جسم یا صحنه و شناسایی اجسام به کار می‌رود. در این الگوریتم ابتدا تصویر اصلی به طور پیش‌رونده با فیلترهای گاوسی با سیگما در بازه ۱ تا ۲ محو می‌شود؛ که حاصلش یک سری تصاویر محو شده گاوسی است (به این کار فیلترکردن آبشاری می گویند) سپس، این تصویرها از همسایگان بلافصل خود(از دید سیگما) کم می‌شوند؛ تا یک سری جدید از تصاویر پدید آیند.[17]
گام‌های اصلی در محاسبه ویژگی‌های تصویر عبارت‌انداز:
1. آشکارسازی : اکسترمم‌های فضای مقیاس هر پیکسل در تصاویر با هشت همسایه‌اش و نه پیکسل(پیکسل متناظر و هشت همسایه‌اش) از هر یک از تصاویر دیگر سری مقایسه می‌شود.
2. محلی‌سازی : کلیدنقطه‌ها - کلیدنقطه‌ها از اکسترمم‌های فضای مقیاس گزیده می‌شوند.
3. گرایش : گماری - برای هر کلیدنقطه در یک پنجره ۱۶x۱۶،نمودار فراوانی گرایش گرادیان‌ها به کمک درونیابی دوسویه محاسبه می‌شوند.
4. توصیف‌گرکلیدنقطه - نمایش در یک بردار ۱۲۸ عنصری.
![](https://boute.s3.amazonaws.com/255-197-Untitled.png)
**6. روش bag of words(BoW)**  
در بینایی کامپیوتر مدل BoW در صورتی که در آن با ویژگی‌های تصاویر مانند کلمات برخورد گردد می‌تواند برای دسته‌بندی تصاویر مورد استفاده قرار گیرد. در این مدل یک لغت‌نامه به وسیله خوشه‌بندی ویژگی‌های استخراج شده مجموعه داده‌های آموزشی تشکیل می دهد. و همچنین هر خوشه یک کلمه از این فرهنگ لغت تصویری محسوب می شود. و تصاویر با بردار های فراوانی که در آن هر بعد نشان دهنده نسبت ویژگی های متعلق به یک خوشه است.[18] 
![](https://boute.s3.amazonaws.com/255-197-bag.png)
**7. روشIBP**
در این روش تلاش بر این است که صفات به یک روش کاملا بی‌ناظر از مجموعه عکس‌های داده‌شده آموزش داده شود. از یک متد آماری بیزین که غیرپارامتری و داده‌گرا است؛ استفاده می‌کنیم کهInfinite Sparse FactorAnalysi نامیده می‌شود و یک روش تبدیل خطی است که وابستگی آماری اجزای نمایش را به حداقل می رساند. برای داشتن یک تعداد خطی است؛ که وابستگی آماری اجزای نمایش را به حداقل می‌رساند. برای داشتن یک تعداد نامحدود از اجزاء، یک تقدم
برای یک ماتریکس دودویی از صفات پنهان قرار می‌دهیم . در اینجا از یک تقدم غیرپارامتری به نام (IBP(Indian Buffet Process استفاده می‌شود. [21]

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

**1.روش POSELET**
این روش برای استخراج ویژگی‌هایی که تنوع بسیار زیادی در زاویه دید و حالت دارند؛ کارایی دارد. در مقاله [22] دسته بندی کننده‌های قوی صفات، تحت چنین شرایطی بایستی مستقل ازحالت باشند؛ اما حدس زدن حالت خود از مباحث چالش برانگیز است.
 مسائل کلاسیک با تشخیص و تقسیم بندی توسط یک یابنده‌ی مبتنی بر جزء، حل می‌شود. این یابنده روی یک جزء اصلی کار می‌کند و poselet نام دارد. 
 توجه کنید که Poleset برای پاسخ دادن به یک قسمت از شی  با حالت و زاویه‌ی داده شده، آموزش داده می‌شود.
 در این روش، دسته بندی کننده‌ها را برای هر یک از این نمودها آموزش می‌دهند و آن‌ها را در یک مدل افتراقی با یکدیگر ترکیب می‌کنند؛ زیرا تغییرات زیادی که به‌وسیله تغییر حالت در ظاهر ایجاد می شوند؛ ما را از آموزش یک یابنده عمومی باز می‌دارد.
 
**2. مدل‌های نهفته‌ی تشخیصی**
در این روش[23]، هدف نهایی، ساخت سیستم‌های تشخیصی است که به طور مشترک کلاس‌های شی  و صفات را در یک چارچوب  یادمی‌گیرند. این مدل در چارچوب SVM نهفته آموزش دیده است. در طول آموزش، صفات را بعنوان متغیرهای نهفته در نظر می‌گیرد و تلاش می‌کند که برچسب کلاس یک عکس را استنتاج کند.

**3. روش PCA**
استخراج ویژگی با روش PCA در واقع همان کاهش بعد تصویر می باشد. برای مثال اگر یک تصویر 50در50 داشته باشیم؛ این تصویر 2500 بعد منحصر به 
فرد دارد. در واقع هر پیکسل یک ویژگی محسوب می شود. در صورتی که بخواهیم بدون کاهش بعد، کلاس بندی را انجام دهیم؛ لازم است تا تمام 2500 بعد هر 
تصویر با تصویر مرجع مقایسه شود؛ که کار بسیار پرمحاسبه و زمان گیری است و معمولا عملی نیست. بنابراین لازم است تا با تکنیک هایی این تعداد بعد (ویژگی) را کاهش دهیم و تنها ویژگی هایی را نگه داریم که تصاویر مربوط به دو کلاس در آن ویژگی تفاوت زیادی می کنند.[24]
به بیانی دیگر این روش، بردارهایی را پیدا می‌کند؛ که داده‌ها در جهت آن بردارها بیشترین  پراکندگی را داشته باشند. مولفه‌های اصلی (بردار اصلی ) دو ویژگی اساسی دارند:
1- تصویر داد‌ ها روی بردارها بیشترین پراگندگی را داشته باشد.
2- بردارهای اصلی برهم عمود هستند.



در سال‌های اخیر برای رده‌بندی عکس‌ها، از SVMهایی که از کرنل  SPMاستفاده می‌کنند؛ استفاده شده است. با این وجود، این SVMهای غیرخطی، پیچیدگی O(n2~n3) در آموزش و O(n) در تست دارند؛ که n سایز آموزش است. در این‌جا نکته‌ای خائز اهمیت است؛ که ما باید الگوریتم‌هایی داشته باشیم که بیشتر از هزاران نمونه آموزشی را دسته‌بندی کنند.(باید روشی را به‌کار ببریم که مقداری این پیچیدگی را کاهش بدهد.) 
در تعدادی آزمایشات انجام شده، نشان داده شده است که SVM خطی پیشنهاد شده که مبتنی بر Sparce coding روی SIFT descriptor هاست از نظر دقت رده‌بندی بهتر از کرنل SPM خطی روی هیستوگرام‌ها و یا حتی بهتر از کرنل‌های SPM غیرخطی است[25].


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

# مراجع
 [1] Dilip K Prasad,"Survey of The Problem of Object Detection In Real Images", _International Journal of__Image Processing (IJIP)_, Volume (6) , Issue (6) , 2012
 [2] https://en.wikipedia.org/wiki/Haar-like_feature
 [3] A. Opelt, A. Pinz, and A. Zisserman, "Learning an alphabet of shape and appearance for multi-classobject detection," _International Journal of Computer Vision_, vol. 80, pp. 16-44,2008.
 [4] Z. Si, H. Gong, Y. N. Wu, and S. C. Zhu, "Learning mixed templates for object recognition,"inProceedings of the _IEEE Conference on Computer Vision and Pattern Recognition_,2009, pp. 272-279
[5] O. C. Hamsici and A. M. Martinez, "Rotation invariant kernels and their application to shape analysis,"_IEEE Transactions on Pattern Analysis and Machine Intelligence_, vol. 31, pp.1985-1999, 2009. 
[6] N. Alajlan, M. S. Kamel, and G. H. Freeman, "Geometry-based image retrieval in binary imagedatabases," _IEEE Transactions on Pattern Analysis and Machine Intelligence_, vol.30, pp. 1003-1013, 2008.
[7] H. P. Moravec, "Rover visual obstacle avoidance," _in Proceedings of the International Joint__Conference on Artificial Intelligence_, Vancouver, CANADA, 1981, pp. 785-790
[8] Y. Amit, D. Geman, and X. Fan, "A coarse-to-fine strategy for multiclass shape detection," _IEEE__Transactions on Pattern Analysis and Machine Intelligence_, vol. 26, pp. 1606-1621,2004.
[9] Y. Chen, L. Zhu, A. Yuille, and H. J. Zhang, "Unsupervised learning of probabilistic object models(POMs) for object classification, segmentation, and recognition using knowledge propagation," _IEEE__Transactions on Pattern Analysis and Machine Intelligence_, vol. 31, pp.1747-1774, 2009.
[10] V. Ferrari, L. Fevrier, F. Jurie, and C. Schmid, "Groups of adjacent contour segments for objectdetection," _IEEE Transactions on Pattern Analysis and Machine Intelligence_, vol. 30,pp. 36-51, 2008.
[11] V. Ferrari, T. Tuytelaars, and L. Van Gool, "Object detection by contour segment networks," _in__Lecture Notes in Computer Science_ vol. 3953, ed, 2006, pp. 14-28.
[12] http://idochp2.irandoc.ac.ir/FulltextManager/fulltext15/th/199/199857.pdf
[13] https://digiro.ir/amazon-rekognition-image-recognition/
[14]  www.wikipedia.or
[15] `فاطمی سید باقر، رضایی یوسف، 1385 ، مبانی سنجش از دور، چاپ اول، 1384 ، انتشارات آزاده، 257
[16] Baofeng Guo, Steve R. Gunn, R. I. Damper, and James D. B. Nelson, 2008, Customizing Kernel
Functions for SVM-Based Hyperspectral Image Classification, IEEE Transactions On Image Processing,
vol. 17, no. 4, 622-629.
[17]  David G. Lowe, Distinctive Image Features from Scale-Invariant Keypoints
[18] Bang Liu, Yan Liu, Kai Zhou, Image Classification
[19] D.H. Ballard,Generalizing the hough transform to detect arbitrary shapes. Pattern Recognition, 1981.
[20] J. Canny, A Computational Approach to Edge Detection. Pattern Analysis and Machine Intelligence ,IEEE Transcations, 1986.
[21] S.Changpinyo,E.B. Sudderth,"Learning Image Attributes using the Indian Buffet Process."BS. thesis,2012
[22]L.Bourdev, S.Maji, J.Malik,"Describing People: Poselet-Based Approach to Attribute Classification",ICCV 2011.
[23] W.Yang, and G.Mori. "A discriminative latent model of object classes and attributes." Computer Vision–ECCV 2010. Springer Berlin Heidelberg, 2010. 155-168.
[24]https://www.cs.cmu.edu/~elaw/papers/pca.pdf
[25] 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.


# پیوندهای مفید
+ [کتابخانه اپن‌سی‌وی](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/)
+ [مسابقه مربوط به تشخیص اشیاء در تصویر](https://www.kaggle.com/c/imagenet-object-detection-challenge)
+ [مجموعه داده مربوط به تصاویر ۱۰۱ شیء مختلف](http://www.vision.caltech.edu/Image_Datasets/Caltech101/)