تشخیص ناهنجاری در تصاویر با شبکه های عصبی کانولوشنی قابل توضیح

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

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

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

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

برای پیش بردن این پروژه یک مخزن Github ساخته شده تا بتوانید داده های آماده سازی شده، مدل، داده های آموزش و ارزیابی را پیدا کنید.

طرح پروژه

شما یک مجموعه داده حاوی ۴۰۰  تصویر در اختیار دارید که شامل تصاویر ایده آل (با برچسب “Good”) و تصاویر دارای نقص (با برچسب “Anomaly”) است که تعداد تصاویر ایده آل نیز از تصاویر دارای نقص بیشتر است. شی موجود در تصویر می تواند شامل هر نوعی اعم از ساده و پیچیده باشد. تصاویری مانند بطری، کابل، قرص، کاشی، چرم، زیپ و… نمونه ای از این موارد هستند.

طرز کار شبکه عصبی مصنوعی

کار شما این است که یک مدل بسازید و در آن، تصاویر را به دسته های ایده آل و یا دارای نقص دسته بندی کنید و در نهایت، اگر تصویر دارای نقض است، یک کادر شامل بخش دارای نقص را برگردانید. اگرچه ممکن است این کار مانند “تشخیص یک شی معمولی” به نظر برسد، اما مشکل در این جاست که برای نواقص موجود در تصویر، کادر برچسب خورده نداریم.

خوشبختانه این مساله نیز قابل حل است.

طرز کار شبکه عصبی مصنوعی.

خط سیر آموزش

ما در اینجا می خواهیم به شما طریقه پیش بینی مدل های طبقه بندی کننده را به طور کلی نشان دهیم که نه تنها در تولید و ساخت محصول، بلکه در حوزه پزشکی هم کاربرد زیادی دارد.

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

آماده سازی داده ها

برای تمام آزمایشات انجام شده در این پروژه از مجموعه داده تشخیص ناهنجاری MVTEC استفاده شده است.( توجه داشته باشید که از این مجموعه نمی توان برای اهداف تجاری استفاده کرد).

این مجموعه داده شامل ۱۵ زیر مجموعه متفاوت از انواع تصاویری مانند بطری، کابل، چرم،کاشی و… است. هر زیر مجموعه نیز شامل ۴۰۰-۳۰۰ عکس است و با عناوین “Good” و “Anomaly” برچسب خورده اند.

آماده سازی داده با استفاده از شبکه عصبی مصنوعی

اکنون در مرحله پیش پردازش داده هستیم. در این مرحله، اندازه تصاویر را به  224*224 تغییر دهید تا سرعت آموزش افزایش یابد. تصاویر بیشتر زیر مجموعه ها در ابعاد ۱۰۲۴*۱۰۲۴ است. اما از آن جایی که نقص های موجود در این تصاویر نیز به نسبت بزرگ هستند (جزئیات پیکسلی نیستند)، می توانیم بدون آن که دقت مدل را کاهش دهیم، ابعاد تصاویر را کم کنیم.

داده افزایی هم برای این پروژه گزینه مناسبی است. به طور کلی، داده افزایی اگر بطور مناسبی انجام شود، برای مدل شما همیشه سودمند خواهد بود. (پیشنهاد می کنیم مقالات گذشته ما در مورد داده افزایی را بررسی کنید.)

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

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

آماده سازی داده

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

اما ما فقط ۳۰۰-۴۰۰ تصویر در اختیار داریم. پس بگذارید ۸۰ درصد تصاویر را در بخش آموزش و ۲۰ درصد تصاویر را در بخش آزمایش قرار دهیم. برای مجموعه داده های کوچک، اعتبارسنجی متقابل ۵ بخشی (Fold) انجام می دهیم تا مطمئن شویم نتایج ارزیابی، قوی هستند.

هنگامی که با مجموعه داده های نامتعادل سرو کار داریم، در تقسیم مدل ها به دو بخش آموزشی/ آزمایشی، باید طبقه بندی انجام دهیم تا بخش های آموزشی و آزمایشی، دارای سهم یکسانی از دو طبقه بندی ایده آل/ناهنجار باشند.

به علاوه، اگر اطلاعاتی درباره انواع نقص ( مانند خراش، شکستگی و…) دارید، بهتر است که یک تقسیم طبقه بندی شده را بر اساس انواع نقص موجود در داده ها انجام دهید. بنابراین، بخش های آموزش/ آزمایش، دارای سهم یکسانی از داده ها و موارد دارای خراش و شکستگی هستند.

مدل

ما مدل VGG16 از پیش آموزش دیده روی تصاویر ImageNet را برمی داریم و راس طبقه بندی داده هایمان را تغییر می دهیم. لایه های Flatten و Dense را با Global Average Pooling و یک لایه Dense جایگزین کنید. در بخش “خط سیر استنباطی” به شما توضیح خواهیم داد که چرا به این لایه ها نیاز داریم.

این رویکرد از مقاله “خصوصیات یادگیری عمیق برای محلی سازی متمایز” الهام گرفته شده است.

ما یک مدل را با عنوان یک مدل طبقه بندی معمولی ۲ کلاسه آموزش می دهیم. این مدل، یک بردار دو بعدی را خروجی می دهد که شامل احتمالاتی برای دو کلاس “Good” و “Anomaly” است ( با خروجی تک بعدی نیز کار پیش می رود. می توانید امتحان کنید).

آموزش مدل با استفاده از شبکه عصبی مصنوعی

در طول آموزش، ۱۰ لایه کانولوشنی اول غیر فعال می شود. ما فقط راس طبقه بندی داده ها و سه لایه ساختگی آخر را آموزش می دهیم.

این کار به این دلیل است که مجموعه داده های ما برای تنظیم دقیق کل مدل، بسیار کوچک است. خطای داده، آنتروپی متقاطع است. بهینه ساز Adam با نرخ یادگیری ۰٫۰۰۰۱ استفاده شده است.

زیر مجموعه های مختلفی از مجموعه داده های تشخیص ناهنجاری MVTEC آزمایش شده است. مدل با طول دسته ۱۰ و برای حداکثر ۱۰ دوره، برای رسیدن به میزان دقت و صحت آموزش به ۹۸ درصد، آموزش داده شده است.

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

خط سیر استنباط

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

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

گام اول-  پس از فعال سازی ReLU ، از لایه Conv5–۳ ، تمام نقشه ویژگی ها را بگیرید. برای یک ورودی، ۵۱۲ نقشه ویژگی به اندازه ۱۴*۱۴ وجود خواهد داشت( تصویر ورودی ۲۲۴*۲۲۴ ، هر بار، دو مرتبه توسط ۴ لایه Pooling ، نمونه برداری شد).

خط سیر استنباط مدل

گام دوم- تمام ۵۱۲ نقشه ویژگی لایه Conv5–۳ را که هر کدام در وزن لایه Dense ضرب شده و در محاسبه میزان امتیاز “Anomaly” تاثیر گذاشته است را جمع کنید.

برای درک این مرحله، به تصاویر زیر با دقت نگاه کنید.

خط سیر استنباط
خط سیر استنباط

اکنون خواهید دید که چرا راس طبقه بندی داده ها، باید یک Global Average Pooling و یک لایه Dense وجود داشته باشد. دلیل آن این است که بدانیم چه نوع نقشه ویژگی هایی در پیش بینی نهایی تاثیر گذاشته و این تاثیر تا چه میزان بوده که آن را به یک داده نا هنجار تبدیل کرده است.

هر نقشه ویژگی ( خروجی لایه Conv5–۳  )، بعضی از نواحی تصویر وروردی را هایلایت کرده است.

لایه Global Average Pooling ، هر نقشه را با یک عدد نشان می دهد (آن را به عنوان یک جایگزین ۱ بعدی در نظر بگیرید). لایه متراکم (Dense)، ارقام و احتمالات برای دو کلاس ایده آل و نا هنجار را با ضرب هر جایگزین در وزن مربوطه محاسبه می کند. این روند، در تصاویر بالا به خوبی نشان داده شده است.

بنابراین، وزن لایه متراکم نشان می دهد که هر نقشه ویژگی تا چه میزان بر سطح امتیازات “Good” و “Anomaly” تاثیر می گذارد ( ما در این جا فقط سطح Anomaly مد نظرمان است). در نهایت نقشه ویژگی های بدست آمده از لایه Conv5–۳ جمع شده و هر کدام در وزن مربوط به لایه متراکم ضرب می شوند. 

جالب است که استفاده از  Global Average Pooling به جای Global Max Pooling، برای این که مدل کل شی را پیدا کند، بسیار مهم است. در این جا نکته ای وجود دارد که مقاله “خصوصیات یادگیری عمیق برای محلی سازی متمایز” درباره آن می گوید:

” ما معتقدیم که افت Global Average Pooling ، شبکه را  وادار می کند تا وسعت داده ها را شناسایی کند در مقایسه  Global Max Pooling  آن را وادار  کند که فقط یک بخش متمایز را شناسایی کند.
این کار، به این دلیل است که هنگام میانگین گیری از داده های یک نقشه، مقدار را می توان به وسیله پیدا کردن تمام بخش های متمایز یک سوژه، به حداکثر رساند؛ زیرا داده های غیر فعال، خروجی نقشه خاص را کاهش می دهند.
از سوی دیگر، برای Global Max Pooling، همه نواحی تصویر به جز متمایز ترین مناطق، بر روی امتیاز تاثیر نمی گذارد؛ زیرا شما تمرکز تان تنها بر روی حداکثر میانگین داده هاست.”

یادگیری عمیق

گام۳- گام بعدی این است که برای رساندن اندازه تصویر ورودی به ۲۲۴*۲۲۴ ، از نقشه حرارتی نمونه برداری کنیم. در این مورد، نمونه برداری خطی نیز مانند سایر روش های نمونه برداری، می تواند جوابگو باشد.

به خروجی مدل برمی گردیم. این مدل، احتمالات را برای کلاس های “Good” و “Anomaly” و یک نقشه حرارتی برمی گرداند که نشان می دهد چه پیکسل هایی هنگام محاسبه امتیاز”Anomaly” مهم هستند.

مدل ها در هر صورت نقشه حرارتی را برمی گردانند و اهمیتی ندارد که  جز  تصاویر “Good” و  یا “Anomaly” طبقه بندی شده باشند. تنها کاری که انجام می دهیم این است که وقتی یک تصویر در طبقه بندی”Good” باشد، ما نقشه حرارتی را نادیده می گیریم.

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

نقشه حرارتی، به نظر ابزار کارآمدی است و می تواند به ما در مورد نحوه تصمیم گیری مدل که چه ناحیه ای از تصویر باعث می شود که در کلاس “Anomaly” قرار گیرد، توضیح دهد. می توانیم تا همین حد اکتفا کنیم و یا نقشه حرارتی را در یک باکس محدود کننده پردازش کنیم.

heatmap

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

۱- در گام اول، نقشه حرارتی را نرمال سازی کنید تا تمام ارقام موجود در بازه {۰,۱} قرار بگیرند. 

۲- یک آستانه انتخاب کنید و آن را روی نقشه حرارتی اعمال کنید. سپس تمام داده های بزرگتر از آستانه را به ۱ و مقادیر کوچکتر از آن به ۰ تغییر می یابند. هرچه آستانه بزرگتر باشد، باکس مرز بندی شده کوچکتر خواهد بود. مطمئنا وقتی آستانه در بازه { ۰,۷ تا ۰,۹ } قرار می گیرد، نتایج خوبی دریافت می کنید.

۳- فرض می کنیم که ناحیه ۱ ها ، یک ناحیه بسیار متراکم است. سپس با پیدا کردن حداقل و حداکثر در ابعاد عرض و ارتفاع، یک باکس را در اطراف آن منطقه رسم کنید.

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

طریقه پردازش نقشه حرارتی در داخل باکس

ارزیابی

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

ما یک مدل جداگانه را برای هر زیر مجموعه آموزش می دهیم. ۲۰ درصد از تصاویر را به صورت تصادفی برای تست انتخاب می کنیم. از هیچ روش داده افزایی نیز استفاده نمی کنیم. وزن دهی کلاس ها را در خطای عملکرد اعمال می کنیم. برای کلاس “Good” مقدار ۱ و برای کلاس “Anomaly” مقدار ۳ اعمال می شود. زیرا در بیشتر زیر مجموعه ها، تعداد تصاویر ایده آل، سه برابر تصاویر ناهنجار هستند.

این مدل در حداکثر ۱۰ دوره آموزش دیده است و در صورتی که به میزان صحت و دقت مجموعه آموزشی به ۹۸ درصد برسد، متوقف می شود.

در جدول زیر می توانید نتایج ارزیابی ها را مشاهده کنید. اندازه مجموعه آموزشی برای زیر مجموعه ها، بین ۸۰ تا ۴۰۰ تصویر و میزان صحت و دقت آن هم بین ۸۱٫۷ تا ۹۵٫۵ درصد است.

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

ارزیابی نتایج

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

تشخیص نقص با استفاده از شبکع عصبی مصنوعی .
تشخیص نقص
تشخیص نقص
تشخیص نقص با استفاده از شبکه عصبی مصنوعی
تشخیص نقص

جمع بندی

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

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

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

کافی است زمان بیشتری بگذارید و مطمئنا با صرف وقت زیاد به میزان دقت پیش بینی که برای مدل ها و پروژه های مد نظرتان هست خواهید رسید.

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

منبع Towards Data Science

درباره‌ی فریبا یزدیان

Faribayazdian1372@gmail.com

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

نگاهی عمیق به آینده هوش مصنوعی از دید کارشناسان

نگاهی عمیق به آینده هوش مصنوعی از دید کارشناسان

با نگاه به روند رشد تکنولوژی و تغییرات ایجاد شده در زندگی مردم، انتظار می‌رود …

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

نشانی ایمیل شما منتشر نخواهد شد.