کاربرد یادگیری عمیق در بینایی کامپیوتر

کاربرد یادگیری عمیق در بینایی کامپیوتر

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

بینایی کامپیوتر چیست؟ #

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

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

یک اشتباه رایج یکی پنداشتن پردازش تصویر و بینایی کامپیوتر است. گرچه هر دو این روش ­ها مربوط به داده ­های بصری هستند. اما پردازش تصویر شامل اصلاح یا بهبود تصاویر به­ منظور ایجاد یک نتیجه جدید است. این فرایند می­ تواند شامل بهینه­ سازی روشنایی یا کنتراست، افزایش وضوح، محو کردن اطلاعات حساس یا برش تصاویر باشد. تفاوت اساسی بین پردازش تصویر و بینایی کامپیوتر در این است که اولی لزوماً به شناسایی محتوا ارتباطی ندارد.

شبکه های عصبی پیچشی: بنیان بینایی کامپیوتر مدرن #

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

اگرچه عملیات­ هایی مانند تجزیه و تحلیل متن و صوت نیز به وسیله CNNها قابل انجام است اما معمولاً برای وظایف بینایی کامپیوتر استفاده می­ شوند. یکی از نخستین معماری ­های CNN، AlexNet است که در سال 2012 برنده چالش تشخیص تصویر ImageNet شد.

نحوه عملکرد شبکه های عصبی پیچشی (CNN)

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

از این الگوریتم برای استخراج مرتبط ­ترین داده­ ها از یک قطعه تصویر استفاده می­ شود و برای متراکم کردن آن به یک ماتریس کوچک ­تر و معرف به ­کار می ­رود. این فرآیند چندین بار تکرار می­ شود (بسته به تعداد لایه ­های پیچشی). ویژگی ­های نهایی استخراج شده توسط فرآیند پیچشی به یک یا چند لایه کاملاً متصل فرستاده می­­ شود که خروجی­­ ها را ایجاد می ­کند. برای درک بهتر مطلب به تصویر توجه کنید.

معماری های یادگیری عمیق در بینایی کامپیوتر #

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

AlexNet (2012):

AlexNet یک معماری مبتنی بر معماری قدیمی ­تر LeNet است. این معماری شامل پنج لایه پیچشی و سه لایه کاملاً متصل است. AlexNet از یک ساختار کانال دوگانه به­ منظور استفاده از دو GPU در طول فرآیند آموزش استفاده می­ کند.

 تفاوت اصلی میان AlexNet و معماری­ های پیشین استفاده از واحدهای خطی اصلاح شده (ReLU) به جای توابع فعال ­سازی سیگموئید یا تانژانت هایپربولیک است که در شبکه­ های عصبی سنتی بسیار استفاده می ­شد. ReLU محاسبه را ساده ­تر و سریع ­تر می­ کند و AlexNet را قادر می­ سازد تا مدل­ ها را سریع ­تر آموزش دهد.

GoogleNet(2014):

GoogleNet که به نام Inception V1 نیز شناخته می ­شود، بر اساس معماری LeNet ساخته شده است. معماری آن از 22 لایه تشکیل شده است که گروه­ های کوچکی از پیچش­ ها به نام “ماژول­ های ادراکی” را شامل می ­شود. این ماژول­ های ادراکی از نرمال­ سازی دست ه­ای و RMSprop برای کاهش تعداد پارامترهایی که GoogleNet  باید پردازش کند، استفاده می­ کنند. RMSprop الگوریتمی است که از روش­ های نرخ یادگیری تطبیقی استفاده می ­کند.

VGGNet(2014):

VGG 16 یک معماری 16 لایه است (برخی از انواع آن 19 لایه دارند). VGGNet دارای لایه­ های کانوولوشنال، یک لایه تجمعی، چندین لایه Conv و غیره است.

VGG مبتنی بر مفهوم یک شبکه بسیار عمیق ­تر با فیلتر­های کوچک­ تر است. این معماری در طول تمام مسیر از کانولوشن­ های 3×3 استفاده می ­کند که کوچک­ ترین اندازه فیلتر Conv است که فقط به برخی از پیکسل­ های مجاور نگاه می ­کند. این معماری از فیلتر­های کوچک به دلیل وجود پارامترهای کمتر و فراهم شدن امکان افزودن لایه­ های بیشتر، بهره می ­برد. همچنین این شبکه همان میدان ورودی موثری را فراهم می ­کند که گویی از یک لایه کانولوشنال 7×7 استفاده می­ کنید.

ResNet(2015):

ResNet مخفف Residual Neural Network، یک معماری طراحی شده برای داشتن تعداد زیادی زیر لایه است. معماری­ های مورد استفاده معمولا از ResNet-18 (دارای 18 لایه) تا ResNet-1202 (دارای 1202 لایه) متغیر اند. این لایه­ ها با واحد­های دریچه­ دار یا “اتصالات پرش” تنظیم می ­شوند که آن را قادر می­ سازد اطلاعات را به لایه ­های پیچشی بعدی منتقل کند. ResNet همچنین از نرمال­ سازی دسته ­ای برای بهبود پایداری شبکه استفاده می ­کند.

Xception(2016):

Xception یک معماری مبتنی بر ادراک است که ماژول­ های ادراکی را با پیچش­ های قابل جداسازی عمیق (پیچش­ های عمیق و به دنبال آن پیچش ­های نقطه ­ای) جایگزین می­ کند. این کار بدین صورت است که ابتدا همبستگی­ های بین ویژگی­ ها و سپس همبستگی­ های فضایی را بدست می ­آورد. این امکان استفاده موثر تر از پارامترهای مدل را فراهم می­کند.

ResNeXt-50:

ResNeXt-50 یک معماری مبتنی بر ماژول­ هایی با 32 مسیر موازی است. این معماری برای کاهش خطاهای اعتبار سنجی استفاده می­ شود و نمونه موفق و ساده ­سازی شده ماژول ­های ادارکی مورد استفاده در معماری­ های دیگر است.

استفاده از یادگیری عمیق در بینایی ماشین #

توسعه فن آوری­ های یادگیری عمیق در بینایی کامپیوتر امکانات و دسترسی های دقیق ­تر و پیچیده ­تری را فراهم کرده است. با افزایش این فناوری ­ها، ادغام کاربردهای بینایی کامپیوتر مفید­تر شده است. در زیر چند کاربرد یادگیری عمیق در بینایی کامپیوتر آورده شده است.

  • تشخیص اشیا

  • محلی­ سازی و تشخیص اشیاء

  • تقسیم ­بندی معنایی

  • تخمین حالت

تشخیص اشیاء

دو نوع رایج تشخیص اشیاء به کمک تکنیک­ های بینایی کامپیوتر وجود دارد:

تشخیص شیء دو مرحله­ ای: مرحله اول به یک شبکه پیشنهاد ناحیه (Region Proposal Network) نیاز دارد که تعدادی از نواحی کاندید را ارائه می­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ کند که ممکن است حاوی اطلاعات مهم باشند. مرحله دوم، انتقال پیشنهاد های ناحیه به معماری طبقه ­بندی عصبی، که معمولاً یک الگوریتم گروه ­بندی سلسله مراتبی مبتنی بر RCNN یا ادغام ناحیه مورد علاقه (ROI) در fast RCNN است؛ را شامل می­ شود. این رویکردها کاملاً دقیق هستند؛ اما می ­توانند بسیار کند باشند.

تشخیص شی یک مرحله ای: این معماری­ ها با احساس نیاز به تشخیص زمان واقعی اشیاء، پدیدار شده ­اند. برای مثال می ­توان از YOLO،  SSD و RetinaNet نام برد. این معماری­­ ها مرحله تشخیص و طبقه ­بندی را با پیش بینی­ های محفظه­ های شناسایی ترکیب می­ کند. هر محفظه شناسایی تنها با چند مختصات نشان داده می­ شود که ترکیب مرحله تشخیص و طبقه ­بندی است و پردازش را آسان­ تر می­ کند.

محلی ­سازی و تشخیص اشیاء

محلی ­سازی تصویر برای تعیین محل قرارگیری اشیاء در تصویر استفاده می­ شود. پس از شناسایی، اشیاء با یک کادر محدود مشخص می ­شوند. فرآیند تشخیص شیء در این محدوده بسط پیدا می­ کند و اشیاء شناسایی شده، طبقه ­بندی می ­شوند. این فرایند بر اساس CNNهایی مانند: AlexNet، Fast RCNN و Faster RCNN است. محلی ­سازی و تشخیص اشیاء را می ­توان برای شناسایی چندین شیء در زمینه های تصاویر پیچیده استفاده کرد. این روش می­­ تواند برای عملکرد هایی مانند تفسیر و تشخیص در تصاویر پزشکی اعمال شود.

تقسیم ­بندی معنایی

تقسیم ­بندی معنایی، که به عنوان تقسیم بندی شیء نیز شناخته می­ شود؛ شبیه به تشخیص شیء است؛ با این تفاوت که بر اساس پیکسل ­های خاص مربوط به یک شیء انجام می­ شود. این روش این امکان را فراهم می­ کند که اشیاء تصویر با دقت بیشتری تعریف شوند و نیازی به کادرهای محدودکننده ندارند. تقسیم ­بندی معنایی اغلب با استفاده از شبکه­ های کاملاً کانوولوشنال (FCN) یا U-Nets انجام می­ شود.

یکی از کاربردهای رایج برای تقسیم­ بندی معنایی، آموزش وسیله نقلیه خودران است. با این روش، محققان می­ توانند از تصاویر خیابان­ ها یا معابر با مرزهای دقیق مشخص شده برای اشیاء استفاده کنند.

تخمین حالت

تخمین حالت، روشی است که برای تعیین محل مفاصل یک شخص یا یک شی در یک تصویر مشخص و اینکه محل قرارگیری آن مفاصل نشان­ دهنده چیست استفاده می­ شود. می ­توان از این روش برای تصاویر دو بعدی و سه بعدی استفاده کرد. معماری اولیه مورد استفاده برای تخمین حالت، PoseNet است که بر مبنای CNN کار می­ کند.

تخمین حالت برای تعیین مکان­ هایی از بدن که ممکن است در یک تصویر نشان داده شود استفاده می­ شود و می­ توان از آن برای ایجاد حالت­ های واقعی یا حرکت چهره ­های انسانی استفاده کرد. اغلب، این قابلیت برای واقعیت افزوده، انعکاس حرکات روباتیک یا تجزیه و تحلیل راه رفتن استفاده می­ شود.

یادگیری عمیق در بینایی کامپیوتر در مقیاس بزرگ Run:AI #

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

در اینجا برخی از قابلیت­ هایی که هنگام استفاده از Run:AI بدست می­ آورید؛ آورده شده است:

1: دید پیشرفته: با تجمیع منابع محاسباتی GPU، یک کانال کارآمد از اشتراک منابع ایجاد می ­کنید.

2: دیگر هیچ تنگنایی وجود ندارد: می ­توانید با سهمیه ­بندی منابع GPU از تنگناها جلوگیری کنید و هزینه­ ها را بهینه­ سازی کنید.

3: سطح بالاتری از کنترل: Run:AI شما را قادر می­ ­سازد تا تخصیص منابع را به صورت پویا تغییر دهید و از اینکه هر بخشی منابع مورد نیاز خود را در هر زمان دریافت کند اطمینان حاصل می ­کنید.

منابع #

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

ارسال دیدگاه

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