convolution چیست؟ - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

convolution چیست؟

+2 امتیاز
سلام دوستان .امرزو این سایتو دیدم جالب بود.convolution چیه و کرنل توی مبحث کانولوشن چه نقشی داره؟
سوال شده دی 2, 1392  بوسیله ی roya_alizade (امتیاز 14)   1 1 2
دوباره تگ گذاری شد اسفند 24, 1392 بوسیله ی BlueBlade

3 پاسخ

+3 امتیاز
 
بهترین پاسخ
کرنل یعنی یک آرایه دو بعدی یا یک بعدی که دارای مجموعه ای از ضرایب هستش به طورییکه کرنل دارای یک نقطه ی مرکزی به نام anchor point هستش.
convolution به طور خلاصه یعنی عملی که بین هر نقطه از تصویر با کرنل صورت می گیره اطلاق میشه.
حال شما قصد دارید عملیات کانولوشن را به صورت دستی انجام بدید تصویر را از چپ به راست و بالا به پایین پیمایش کنید 
فرض کنید از کرنلی با ابعاد 5*5 استفاده می کنید و نقطه جاری شما مختصات  (25,25 ) در تصویر هستش حالا باید یک ناحیه از تصویر را انتخاب کنید که هم اندازه
با کرنل هستش و عناصر را نظیر در نظیر در کرنل ضرب کرده و همه مقادیر را با هم جمع کرده و تقسیم بر مجموع مقادیر کرنل کنید این ناحیه از مختصات (23,23) تا مختصات (27,27) هستش
حال مقدار بدست آمده را در تصویر نهایی در موقعیت (25,25) قرار می دیم این کار رو برای تمامی پیکسل ها انجام می دیم.
حالا می تونیم هم ابعاد کرنل را تغییر بدیم یعنی وقتی محاسباتی که انجام می دیدم از همسایه های دورتری از پیکسل جاری را استفاده کنه و هم می تونیم مقادیر کرنل را تغییر بدیم.
به فرض ضرایب گوسی دو بعدی را در کرنل قرار بدیم و بعد عمل کانولوشن یعنی فیلتر گوسین را بر روی تصویر اعمال کردیم اگر همه مقادیر کرنل یک باشه یعنی فیلتر box را بر روی تصویر اعمال کردیم.
خوشبختانه توی OpenCV نیازی نیست شما عملیات بالا را به صورت دستی انجام بدید شما می تونید از تابع filter2D استفاده کنید.
 
 
پارامتر های مهم در کانولوشن :
  • فیلترها: تعداد فیلترهای مستقلی که باید روی ورودی اعمال شوند. این همچنین تعداد کانال‌های خروجی در خروجی خواهد بود.
  • kernel_size: اندازه هر فیلتر. این می‌تواند یک عدد واحد باشد، مانند 4 برای یک فیلتر 4x4، یا یک جفت مانند (4، 2) برای یک فیلتر مستطیل 4x2.
  • strides: فیلتر در سراسر تصویر ورودی با گام‌هایی حرکت می‌کند. اندازه گام پیش‌فرض 1 پیکسل در هر دو جهت است. استفاده از یک گام بزرگتر باعث می‌شود که پیکسل‌های ورودی را رد کرده و تعداد کمتری از مقادیر خروجی تولید کند.
  • padding:استفاده از 'valid' برای بدون padding یا 'same' برای padding صفر در لبه‌ها. اگر فیلترها روی ورودی‌هایی با padding 'valid' اعمال شوند، فقط در صورتی که همه پیکسل‌های درون پنجره معتبر باشند، تبدیل convolutional انجام می‌شود، بنابراین پیکسل‌های مرزی نادیده گرفته می‌شوند. بنابراین، خروجی کمی در جهت x و y کوچکتر خواهد بود. مقدار 'same' امکان padding صفر ورودی را برای اطمینان از اینکه خروجی‌ها دارای همان عرض و ارتفاع هستند، فعال می‌کند.
  • activation: مانند هر لایه شبکه عصبی، یک لایه convolutional می‌تواند با یک activation (غیرخطی) دنبال شود.

 

پاسخ داده شده دی 2, 1392 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
ویرایش شده مرداد 30, 1402 بوسیله ی مصطفی ساتکی
بسم الله الرحمن الرحیم
با سلام
همون طور که می دونیم فرمول کانولوشن به شکل زیر است:
(f(x,y)*g(x,y)=∑n∑m   f(n,m)g(x-n,y-m
لطفا یک ماتریس تصویر و یک ماتریس دیگر که می خواهید عمل کانوالو کردن را روش انجام بدید؛ در نظر بگیرید و به صورت عددی عملیات را جلو ببرید.
لطفا قدم به قدم
با سپاس فراوان
0 امتیاز
کانولوشن  یک عملیات اساسی در یادگیری عمیق، به ویژه در زمینه بینایی کامپیوتر است. برای استخراج ویژگی ها از تصاویر و سایر داده ها با اعمال فیلتر یا هسته به داده های ورودی استفاده می شود. عملیات کانولوشن معمولاً در شبکه‌های عصبی کانولوشن (CNN) استفاده می‌شود که نوعی شبکه عصبی طراحی شده برای پردازش تصویر و ویدئو هستند.

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

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

به طور خلاصه، نقش پیچیدگی در یادگیری عمیق استخراج ویژگی‌ها از تصاویر و سایر داده‌ها با اعمال فیلترها یا هسته‌ها به داده‌های ورودی است که معمولاً در شبکه‌های عصبی کانولوشن (CNN) برای استخراج الگوها و اشیاء از تصاویر استفاده می‌شود.
پاسخ داده شده بهمن 4, 1401 بوسیله ی عباس مولایی (امتیاز 2,754)   1 5 13
0 امتیاز
کانولوشن (Convolution) یک عملگر ریاضی است که در پردازش سیگنال، پردازش تصویر و بسیاری از حوزه های مرتبط با پردازش سیگنال مورد استفاده قرار می گیرد. در این عملگر، دو سیگنال (یا تصویر) به هم وصل می شوند و با استفاده از یک تابع ریاضی مشخص، به سیگنال (یا تصویر) جدیدی تبدیل می شوند.
 
برای اعمال عمل کانولوشن، ابتدا یکی از سیگنال ها را به صورت ماتریسی و دیگری را به صورت یک "هسته" (kernel) تعریف می کنیم. سپس، هسته را روی سیگنال ورودی جابجا می کنیم و در هر مرحله، ضرب عناصر ماتریس و هسته را با هم جمع می کنیم تا به سیگنال خروجی برسیم.
 
استفاده از عملگر کانولوشن در پردازش تصویر به دلیل قابلیت آن در استخراج ویژگی های مختلف از تصاویر و همچنین افزایش کارایی در بسیاری از وظایف مانند تشخیص شیء و دسته بندی تصاویر بسیار رایج است.
پاسخ داده شده اردیبهشت 21, 1402 بوسیله ی farnoosh (امتیاز 8,362)   20 44 59
ویرایش شده اردیبهشت 21, 1402 بوسیله ی farnoosh
...