پردازش تصویر خودکار با یادگیری عمیق

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

شبکه های عصبی کانولوشنی ( CNN )

CNN دسته ای از شبکه های عصبی است که هنگام استفاده از یادگیری عمیق روی داده های تصویری استفاده می شود. آن ها به دلیل تعداد زیاد نقاط داده و سطح ابعاد داده های ورودی ، به قدرت محاسباتی بسیار بیشتری نسبت به سایر چارچوب های شبکه عصبی نیاز دارند. CNN ها اساساً از گیرنده های چند لایه تشکیل شده اند که برای جلوگیری از overfit تنظیم می شوند. پیاده سازی CNN ها از طریق TensorFlow یا PyTorch به راحتی انجام می شود. هر کدی که در این مقاله ارجاع داده شود از Keras که در TensorFlow پیاده سازی شده خواهد بود.

پردازش تصویر

گام به گام با CNN ها

CNN اغلب بخاطر استفاده از لایه های Convolutional و لایه های Pooling معروف هستند. لایه های کانولوشن ، داده های ورودی را برای ایجاد نگاشت های ویژگی ها ترکیب ( Convolve ) می کند. معمولا در CNN ها از چندین لایه ی کانولوشنی استفاده می شود و این لایه ها شامل فیلترهایی هستند که اغلب Kernal نامیده می شوند.

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

پردازش تصویر2
میتوانید پارامتر های تابع را شخصی سازی کنید

از لایه های pooling برای نمونه برداری غیر خطی از خروجی لایه های کانولوشن استفاده می شود. TensorFlow و PyTorch توابع مختلف از پیش آماده شده ای را برای Pooling ارائه می کنند ، اما بیشترین تکنیک Pooling استفاده شده Max Pooling است. در این روش مستطیل های غیر همپوشانی ایجاد می شوند که زیر مجموعه تصویر ورودی هستند و سپس حداکثر مقدار این مستطیل ها را خارج می کند. Max Pooling با کاهش تعداد پارامترهای کلی مدل ، که در حال حاضر میلیون ها پارامتر دارد مقدار محاسبه مورد نیاز را کاهش می دهد. همچنین Max Pooling در جلوگیری از Overfit نیز کمک می کند.

پردازش تصویر 3
مثالی از Max Pooling

در TensorFlow، ابزار Max Pooling به صورت زیر قابل اجرا است:

پردازش تصویر4
میتوانید پارامتر های تابع را شخصی سازی کنید

همانطور که مشاهده می کنید ، پیاده سازی لایه های Convolutional و Max Pooling کار چندان دشواری نیست. لایه های دیگری نیز وجود دارد که در CNN استفاده می شود مانند Batch Normalization ، لایه های فعال سازی ReLU ، لایه های اتصال و لایه های جابجایی . از این لایه ها می توان برای بهتر ساختن معماری شبکه و یا هنگامی که از معماری مشهوری مانند U-Net استفاده می کنید استفاده کرد.

معماری های محبوب CNN

اکنون که با اصول اولیه ی CNN آشنا شدید، می توانیم به معماری های مختلف CNN موجود برای پردازش تصویر بپردازیم.

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

در زیر لیستی از محبوب ترین معماری های CNN ها و محبوب ترین موارد استفاده از آن ها آورده شده است. مقالات پژوهشی مرتبط با این مدل ها نیز ضمیمه شده اند.

۱- VGGNet برای کارهای طبقه بندی تصویر در مقیاس بزرگ استفاده می شود.

۲- ResNet برای شناسایی تصویر و آموزش شبکه های بسیار عمیق استفاده می شود.

۳- U-Net برای تقسیم تصویر یا تقسیم ویژگی استفاده می شود.

۴- (Inception Net (Inception V3 برای شناسایی تصویر + کاهش هزینه های محاسباتی آموزش استفاده می شود.

پیاده سازی

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

برای اجرای هر یک از این معماری ها ، ابتدا باید روند رخ داده در هر لایه را درک کنید. پیاده سازی آن نسبتاً آسان است و می توان با دنبال کردن مراحل تفصیلی در مقالات پژوهشی پیوند داده شده در بالا ، آن را انجام داد. برای پیاده سازی می توان از TensorFlow یا PyTorch استفاده کرد و پیشنهاد می شود از چارچوبی که با آن راحت تر هستید استفاده کنید. با درک اصول اولیه ی CNN ، شما همچنین می توانید معماری های خود را به گونه ای توسعه دهید که به اعتقاد شما بهترین کارکرد را برای پردازش تصویر شما خواهد داشت.

سخنان نهایی

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

بیشتر بخوانید:

منبع Medium

درباره‌ی علی قلی زاده

همچنین ببینید

تشخیص اشیا با داده های اندک برای کاربرد سنجش از راه دور

تشخیص اشیا با داده های اندک برای کاربرد سنجش از راه دور

تشخیص اشیا یک مساله قدیمی در زمینه سنجش از راه دور و بینایی رایانه ای …

دیدگاهتان را بنویسید

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