پردازش تصویر چگونه از الگوریتم های یادگیری ماشین استفاده می کند؟

پردازش تصویر چگونه از الگوریتم های یادگیری ماشین استفاده می کند؟

“پردازش تصویر با یادگیری ماشین” به یکی از رایج‌ترین تکنیک‌های هوش مصنوعی در بین شرکت‌ها، موسسات و در صنعت اتوماسیون تبدیل شده است. این پیشرفت، به­واسطه بهبود چشمگیر در دسترسی به داده‌ها و افزایش قدرت محاسباتی کامپیوترها ایجاد شده است که به متخصصین اجازه می‌دهد در زمینه‌های متعددی به نتایج معنادار و قابل توجهی دست پیدا کنند.

امروزه در حوزه اطلاعاتِ تصویر، الگوریتم‌های یادگیری ماشین تصاویر را مشابه با عملکرد مغز انسان تجزیه و تحلیل می‌کنند. امروزه کاربردهای این الگوریتم‌ها را می­توان در تشخیص چهره بر روی تلفن‌های هوشمند و  یا حتی انجام خودکار وظایف دستی همچون اتومبیل‌های خودران دید.

در این مقاله قصد داریم؛ به مبانی پردازش تصویر، یادگیری ماشین و همچنین تکنولوژی‌های مختلفی که توسط این الگوریتم‌های تصویری دچار تغییر شده‌اند؛ بپردازیم.

چگونگی عملکرد پردازش تصویر با یادگیری ماشین #

معمولاً الگوریتم‌های یادگیری ماشین مراحل و قدم‌های مشخصی برای یادگیری از داده‌ها دارند. به مثالی از مدل کاربردی از یک الگوریتم پردازش تصویر توجه کنید.

در ابتدا الگوریتم‌های یادگیری ماشین نیازمند مقادیر قابل‌توجهی اطلاعات با کیفیت برای آموزش و پیش‌بینی نتایج هستند. درنتیجه باید مطمئن شویم که تصاویر به خوبی برای الگوریتم حاشیه‌نویسی‌شده(annotated) و کلی(generic) پردازش شده باشند. این مرحله جایی است که بینایی کامپیوتر وارد می‌شود. این حوزه سعی دارد تا ماشین‌ها بتوانند داده‌های تصویری را درک کنند. با استفاده از بینایی کامپیوتر، تصاویر تغییر را تغییر می­دهند و این تصاویر بارگذاری، دستکاری و تغییرشکل داده شده تا مجموعه­ای از ‌داده­های ایده‌آل برای الگوریتم “پردازش تصویر با یادگیری ماشین” ساخته شود.

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

  • تبدیل کردن تمام تصاویر به یک فرمت مشترک
  • بریدن بخش‌های غیرضروری از تصاویر
  • تغییر شکل دادن آن‌ها به اعداد (آرایه اعداد) تا برای الگوریتم‌ها قابل فهم باشد

کامپیوترها یک تصویر ورودی را به شکل آرایه‌ای از پیکسل‌ها می‌بینند که بستگی به وضوح تصویر دارد. براساس وضوح تصویر، کامپیوتر ابعاد ارتفاع  عرض را می‌بیند؛ مثلاً تصویری می‌تواند به شکل آرایه  در ماتریس RGB (که عدد 3 نشان‌دهنده مشخصه RGB است) باشد و تصویر دیگری با آرایه  در ماتریس مقیاس تیره‌روشنی(grayscale) وجود داشته باشد.

سپس این اطلاعات پردازش‌شده برای مرحله بعدی مورد استفاده قرار می‌گیرد. انتخاب و ساخت یک الگوریتم پردازش تصویر با یادگیری ماشین باید براساس مجموعه داده‌های گسترده و با ویژگی مشخص طبقه‌بندی شده باشد و ویژگی نامشخص را طبقه بندی کند. برای این منظور ما باید الگوریتم ایده‌الی را انتخاب کنیم، برخی از شناخته‌شده‌ترین الگوریتم‌ها عبارتند از: شبکه‌های بیزی(Bayesian)، درخت تصمیم­گیری(Decision tree)، الگوریتم‌های ژنتیکی(genetic)، نزدیکترین همسایه‌ها(Nearest neighbor)، شبکه‌های عصبی و…

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

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

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

چارچوب‌ها و کتابخانه‌های پردازش تصویر با یادگیری ماشین #

هم اکنون، براساس فهرست TIOBE بیش از 250 زبان برنامه‌نویسی وجود دارد؛ که زبان برنامه­ نویسی پایتون یکی از محبوب‌ترین زبان‌های برنامه‌نویسی در میان توسعه‌دهندگان و متخصصین یادگیری ماشین است. با این حال زبان­های برنامه‌نویسی بسیاری وجود دارد که می­توانیم یکی از آن­ها را با توجه به کارکرد موردنظر خود انتخاب کنیم. در ادامه به برخی از چارچوب‌هایی که برای کاربردهای مختلف استفاده می‌شود؛ اشاره می­کنیم.

OpenCV: کتابخانه OpenCV-Python یک کتابخانه متصل به پایتون است که برای حل مشکلات بینایی کامپیوتر طراحی شده است که کار کردن با آن بسیار ساده و آسان است.

نکات برجسته OpenCV:

  • دارای کتابخانه‌ای عظیم از الگوریتم‌های پردازش تصویر
  • متن‌بازبودن و دارای جامعه مخاطبین عالی
  • عمل کردن هم بر روی تصاویر و هم ویدیو
  • وجود افزونه Java API
  • کار کردن با واحد پردازش گرافیکی(GPU)
  • قابل استفاده در پلتفورم‌های مختلف

Tensorflow: یکی از محبوبترین چارچوب‌های توسعه نقطه به نقطه(End-to-end) یادگیری ماشین است که توسط گوگل توسعه یافته است.

نکات برجسته Tensorflow:

  • گستره وسیعی از الگوریتم‌های یادگیری ماشین NN
  • متن‌باز بودن و دارای جامعه مخاطبین عالی
  • امکان کار بر روی پردازنده‌های موازی متعدد
  • تنظیم شده برای واحد پردازش گرافیکی(GPU)
  • قابل استفاده در پلتفورم‌های مختلف

PyTorch: یکی از محبوبترین چارچوب‌های شبکه عصبی برای توسعه­دهنده­ها که توسط فیسبوک ایجاد شده است و در مقایسه با دیگر کتابخانه‌های یادگیری ماشین شباهت بیشتری به پایتون دارد.

نکات برجسته:

  • دارای ساختار آموزش توزیعی
  • پشتیبانی از فضای ابری
  • متن‌باز بودن و دارای جامعه مخاطبین عالی
  • کار کردن با واحد پردازش گرافیکی(GPU)
  • آماده تولید

Caffe: یک چارچوب یادگیری عمیق است که با ایده سرعت، بیانگری و مدولار بودن(modularity) توسط واحد پژوهش هوش مصنوعی دانشگاه برکلی(Berkeley AI Researc) و مشارکت مخاطبینش توسعه یافته است.

نکات برجسته:

  • متن‌باز بودن و دارای جامعه مخاطبین عالی
  • مبتنی بر C++
  • معماری بیانگر و رسا
  • اجرای سریع و ساده

EmguCV: یک میان پلتفورم است با یک پوشه .Net از کتابخانه پردازش تصویرِ OpenCV.

نکات برجسته:

  • متن‌باز و میان پلتفورم
  • همخوان با زبان‌های سازگار با .Net مثل C#، VB، VC++، IronPython و …
  • سازگار با Visual Studio، Xamarin Studio و Unity

MATLAB Image Processing Toolbox: جعبه‌ابزارهای پردازش تصویر به شما امکان خودکار کردن فرایندهای پردازش تصویر متداول را می‌دهند. شما قادر خواهید بود به صورت تعاملی اطلاعات تصویر را بخش‌بندی کنید، تکنیک‌های ثبت تصویر را مقایسه کند و مجموعه داده‌های زیاد را به صورت دسته‌ای پردازش کنید.

نکات برجسته:

  • گستره وسیع تکنیک‌های پردازش تصویر مبتنی بر یادگیری عمیق
  • قابلیت فعال شده CUDA
  • محیط کاری پردازش تصویر سه بعدی

WebGazer: یک کتابخانه مبتنی بر JS برای پیگیری مسیر چشم است که به صورت زنده و با استفاده از وب‌کم‌های عادی محل نگاه کردنِ بازدیدکنندگان وب بر روی یک صفحه را تشخیص می‌دهد.

نکات برجسته:

  • مدل‌های متعدد پیش‌بینی خیره شدن
  • پشتیبانی مداوم و متن‌باز برای حداقل چهار سال
  • بدون نیاز به سخت‌افزار مشخصی، js از وب‌کم‌تان استفاده می‌کند

Apache Marvin-AI: یک پلتفرم هوش مصنوعی متن‌باز است که با بهره‌گیری از ساختار بدون تأخیر، گسترده، غیروابسته به زبان‌ و استاندارد شده‌، ارائه راه‌حل‌های پیچیده را امکان‌پذیر می‌سازد؛ درحالیکه مدلسازی و بهره‌برداری را ساده‌سازی می‌کند.

نکات برجسته:

  • متن‌باز و به خوبی ثبت شده
  • استفاده راحت از CLI
  • پردازش تصویر چندرشته‌ای(Multi-threaded)
  • امکان استخراج از اجزاء تصویر

MIScnn: یک چارچوب متن‌باز براساس یادگیری عمیق که برای تقسیم‌بندی تصاویر پزشکی طراحی شده است.

نکات برجسته:

  • متن‌باز و به خوبی ثبت شده
  • امکان ایجاد ساختارهای تقسیم‌بندی(Segmentation pipelines)
  • مجهز به ابزارهای مناسب برای پیش‌پردازش و پس‌پردازش
  • امکان پیاده‌سازی CNN

Kornia: کتابخانه‌ بینایی کامپیوتر مبتنی بر PyTorch که متن‌باز است.

نکات برجسته:

  • دارای تکنیک‌های پردازش تصویر هم غنی و هم سطح پایین
  • متن‌باز بودن و دارای جامعه مخاطبین عالی
  • برنامه‌نویسی متمایز در کاربری‌های گسترده
  • آماده تولید، JIT فعال شده

VXL (the Vision-something-Libraries): مجموعه‌ای از کتابخانه‌های C++ که برای استفاده در پژوهش‌ها و پیاده‌سازی‌های بینایی کامپیوتر گردآوری شده‌اند.

نکات برجسته:

  • متن‌باز بودن
  • محیط کاری پردازش تصویر سه بعدی
  • قابلیت طراحی محیط کاربری گرافیکی

پردازش تصویر مبتنی بر یادگیری عمیق #

امروزه تکنیک‌های متعدد پردازش تصویر با یادگیری ماشین از قدرت شبکه‌های یادگیری عمیق استفاده می‌کنند. این شبکه‌ها چارچوب‌های ویژه‌ای هستند که از سازوکار مغز انسان، در یادگیری داده‌ها و ساخت مدل‌ها تقلید می‌کنند. یکی از ساختارهای شبکه­های عصبی آشنا که پیشرفت‌های چشم­گیری در داده تصویری داشته است؛ شبکه‌های عصبی درهم‌پیچیده یا به اختصار CNNها هستند.

حال به عملکرد CNNها بر روی تصاویر مختلف و با وظایف پردازش تصویر متفاوت نگاه می‌اندازیم که چگونه پیشرفته‌ترین مدل‌ها را به وجود ‌آورده­اند.

شبکه عصبی پیچیده بر سه لایه اصلی بنا شده است:

  • لایه پیچشی(Convolutional Layer)
  • لایه ادغام(Pooling Layer)
  • لایه تمام متصل(Fully Connected Layer)

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

با مثالی به مرور این توضیحات می‌پردازیم. در اینجا قصد داریم یک فیلتر را با استفاده از لایه پیچش بر تصویری اعمال کنیم و چگونگی عملکرد شیوه ریاضی در آن را ببینم.

لایه ادغام: زمانی که با استفاده از لایه‌های پیچشی توانستیم ویژگی‌ها را شناسایی کنیم، نقشه‌هایی با ویژگی‌های چندگانه را به دست آورده‌ایم. بنابراین ما به مرحله دیگری نیاز داریم که در آن تعداد نمونه‌ها کاهش پیدا کند؛ بنابراین برای ساده‌تر کردن یادگیری برای شبکه، مقادیر پیکسل‌ها در آرایه‌ها را با عملیات ادغام کاهش می­دهیم. این عملیات به شکل خودگردان بر تمام ابعاد هر قسمت از ورودی اعمال شده و اندازه آن را با استفاده از دو عملیات تغییر می‌دهد که عبارتند از:

ادغام حداکثری: از آرایه‌ای که تصویر را تحت پوشش خود دارد، حداکثر مقدار را با استفاده از Kernel جمع‌آوری می‌کند.

ادغام میانگین: از آرایه‌ای که تصویر را پوشش داده، میانگین تمام مقادیر را با استفاده از Kernel جمع‌آوری می‌کند.

در زیر مثالی از شیوه عملکرد عملیات ادغام بر روی آرایه پیکسل ارائه شده، مشاهده می‌شود.

لایه تمام متصل: این لایه بر ورودی پهن و مسطح اعمال می‌شود که در آن هر ورودی به تمام نورون‌ها متصل است. این شیوه معمولاً در انتهای شبکه و برای متصل ساختنِ لایه‌های مخفی به لایه خروجی مورد استفاده قرار می‌گیرد که به بهینه‌کردن شیوه طبقه‌بندی کمک زیادی می‌کند.

در اینجا تصویری شامل ساختار کامل CNN به همراه هر سه لایه را در کنار یکدیگر مشاهده می‌کنیم.

نتیجه‌گیری #

در این مطلب، باهم مشاهده کردیم که چگونه یادگیری ماشین و یادگیری عمیق برای ساخت مدل‌هایی با عملکرد بالا به تکنیک‌های پردازش تصویر کمک می‌کنند. مروری داشتیم بر برخی از کتابخانه‌های متن‌باز و نام‌آشنای Python، C++ و C# که برای پیش‌پردازش، تحلیل و استخراج اطلاعات  تصاویر در ساختار و فرایند پردازش تصویر مورد استفاده قرار می‌گیرند. در نهایت مروری بر یکی از محبوبترین ساختارهای پردازش تصویر مبتنی بر یادگیری عمیق(CNN) که پیشرفته‌ترین مدل‌های داده تصویری را می‌سازد؛ داشتیم. در نهایت باید گفت که این تکنولوژی‌ها استفاده‌های گسترده‌ای در طبقه‌بندی، بخش‌بندی، استخراج اطلاعات، انتقال سبک و… دارند.

منابع #

لینک کوتاه این مقاله:
امیرمحمد توحیدی
امیرمحمد توحیدی

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *