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

تغییرات پروژه از تاریخ 1396/08/29 تا تاریخ 1396/10/07
بسم الله الرحمن الرحیم
![نمونه‌ای از سامانه تشخیص اشیاء در تصویر](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] 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/


# پیوندهای مفید
+ [کتابخانه اپن‌سی‌وی](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/)