معرفی تعدادی از معماری‌های شبکه های کانولوشنالی معروف

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

ImageNet

این مسابقه از سال 2010 هر ساله برگزار می‌شود. هدف آن دسته تشخیص و دسته بندی تصاویر در مقیاس وسیع است. شبکه های شرکت کننده، باید تصاویری با 1000 کلاس متفاوت را از هم تمیز دهند. معیار اندازه گیری دقت شبکه ها، خطای 5 کلاس برتر است. به صورتی که شبکه با دیدن تصویر، ۵ کلاس معرفی می‌کند. در صورتی که کلاس مورد نظر در میان آن ها بود، جواب شبکه پذیرفته می‌شود.

۱- LeNet-5

اولین شبکه ی کانولوشنالی که بسیار مطرح شد شبکه ی LeNet-5 بود که در مقاله ی”Gradient-based learning applied to document recognition ” نوشته شده توسط LeCun, Bottou, Bengio, Haffner و در سال 1998 ارائه شد. نام شبکه نیز از نام Yann Lecun یکی از نویسندگان این مقاله برداشته شده است. این شبکه را می توان به عنوان اولین شبکه که فیلتر های کانولوشنالی در آن استفاده شده است نام برد. هدف این شبکه، خواندن کد پستی از پشت بسته های پستی بود.

شکل بالا شبکه ی Lenet را نمایش می دهد. این شبکه در ابتدا یک ورودی 32*32 دریافت می کند و سپس از 6 فیلتر کانولوشنالی 5*5 که گام(stride) آن برابر 1 است عبور می کند. حاصل یک تنسر 6*28*28 است. سپس از فیلتر subsampling که در این جا فیلتر AveragePool 2*2 با گام 2 است عبور می کند. این فیلتر موجب می شود که طول و عرض آرایه نصف شود اما عمق آن تغییری نمی کند در نتیجه به آرایه ی 6*14*14 می رسیم. این بار از 16 فیلتر کانولوشنالی 5*5 با گام 1 عبور می دهیم که حاصل 16*10*10 است. دوباره از یک AveragePool مانند قبل عبور می دهیم که حاصل 16*5*5 میشود. و در انتها نیز از دو لایه ی Fully connected عبور داده می شوند.

۲- AlexNet

دومین شبکه ی نورونی کانولوشنالی مهمی که می توان نام برد شبکه ی AlexNet است که توسط Alex Krizhevsky و حدود چهارده سال بعد از LeNet یعنی در سال 2012 معرفی شد. این شبکه دارای 8 لایه (پنج لایه ی کانولوشنالی و سه لایه fully connected) است که موجب شده در دسته ی شبکه های کم عمق (Shallow) قرار گیرد.

شکل بالا شبکه ی AlexNet را نمایش می دهد.(دلیل این که لایه ها دوطبقه ای هستند، استفادهاز دو GPU برای پردازش آن است) درشکل ورودی شبکه یک عکس 3*224*224 است اما ورودی درست 3*227*227 است! در ابتدا 96 فیلتر کانولوشنالی 11*11 همراه با 4 گام و padding=0 اعمال می شود. خروجی آرایه ی 96*55*55 است.(تعداد پارامتر های هر لایه ی کانولوشنالی برابر است با : طول لایه * عرض لایه * عمق ورودی * تعداد فیلتر ها (به طور مثال در اینجا برابر است با 11*11*3*96))در مرحله ی بعد از لایه ی maxpool 3*3 با اندازه ی گام 2 عبور داده می شود که خروجی 96*27*27 می شود.(تعداد پارامتر های قابل یادگیری در maxpool صفراست.) در مرحله بعد از 256 فیلتر کانولوشنالی 5*5 با گام یک و padding=2 عبور می دهیم که خروجی 256*27*27 است. در مرحله ی بعد نیز دوباره از فیلتر maxpool 3*3 با گام 2 عبور می دهیم که خروجی 13*13*96 است. در سه مرحله ی بعد از فیلتر های کانولوشنالی با گام و padding یک استفاده می کنیم که تعداد آن ها به ترتیب 384 ، 384 ، 256 است که خروجی نهایتا 256*13*13 می شود. سپس از یک لایه ی maxpool 3*3 با گام یک عبور می دهیم و خروجی آن 256*6*6 می شود. در آخر نیز سه لایه ی fullyconected قرار دارد. دو لایه 4096 تایی و یک لایه 1000 تایی با اکتیویشن softmax برای تعیین کلاس های موجود در مساله. (به طور مثال اگر قصد انتخاب بین سه کلاس سگ، گربه، موش را داشته باشیم اندازه لایه ی آخر را سه در نظر می گیریم.)

ورودی

نوع فیلتر

تعداد

اندازه

گام

حاشیه

خروجی

3*227*227

Conv

96

11*11

4

0

96*55*55

96*55*55

maxpool

1

3*3

2

96*27*27

96*27*27

conv

256

5*5

1

2

256*27*27

256*27*27

Maxpool

1

3*3

2

256*13*13

256*13*13

Conv

384

3*3

1

1

384*13*13

384*13*13

Conv

384

3*3

1

1

384*13*13

384*13*13

Conv

256

3*3

1

1

256*13*13

256*13*13

Maxpool

1

3*3

2

256*6*6

9216

Fullyconected

4096

4096

Fullyconected

4096

4096

Fullyconected

1000

نکات مهم :

• تابع relu برای اولین بار معرفی و استفاده شد.
• بعد از دو لایه ی maxpool اول از نرمال ساز استفاده شده بود که دیگر مورد استفاده قرار نمی‌گیرد.
• برای اولین بار از dropout استفاده شده.
• اندازه ی batch در آن 128 است.
• میزان خطای آن در مسابقه ی imagenet برای خطای 5 کلاس برتر ، مقدار 15.4% بود که حدود سه درصد نسبت به سال گذشته بهبود داشت.

۳- ZFNet

نویسنده های این شبکه، Matthew Zeiler و Rob Fergus بودند که نام شبکه نیز از آن ها گرفته شده.این شبکه از ایده زیادی برخوردار نیست و مهم ترین ایده آن ، قسمت Visualization آن است. ابزاری که با استفاده از آن، کاربرد هر نورون در شبکه تا حدی مشخص می‌شود و به درک شبکه های کانولوشنالی کمک بزرگی کرد. در این ابزار می‌توان دید که در لایه های نخست، شبکه خطوط و لبه های ساده را تشخیص می‌دهد و در لایه های بعد نورون ها مفاهیم پیچیده تری مانند صورت انسان یا نوشته را تشخیص می‌دهند. بعضی از نورون ها برای ما قابل فهم نیستند. ولی معلوم شده حذف آن ها هم تاثیری مانند حذف دیگر نورون ها در عملکرد نهایی شبکه دارد.
این شبکه همان شبکه AlexNet است با این تفاوت که در لایه اول، به جای (11*11 stride4)، از (7*7 stride2) استفاده شده است(چون سایز فیلتر در AlexNet بزرگ گرفته شده بود و stride آن زیاد بود.) و در لایه های 3، 4 و 5 به ترتیب به جای 384 ، 384 و 256 فیلتر، از 1024، 512 و512 فیلتر استفاده شده است.

نکات مهم:

• ZFNet، در مسابقه ImageNet خطای ۵ کلاس برتر را به 14.8% کاهش داد و همین باعث شد تا برنده Challenge ImageNet سال 2013 شود.
• ارائه ابزار Visualization

۴- VGG

این شبکه، به دلیل این که تعداد HyperParameter ها را کاهش داده، پیچیدگی کمتری نسبت به AlexNet و ZFNet دارد و به دلیل همین سادگی، از محبوبیت بالایی برخوردار است.
در VGG در هر جا:
CONV به معنی فیلتر 3*3 با stride 3 و same است.
و POOL به معنی پولینگ 2*2، با stride 2 است.
سایز تصویر ورودی 3*224*224 است. سپس دو بار CONV با عمق 64 روی آن اعمال می شود.(با CONV اول، تصویر 64*224*224 می شود و با CONV دوم دوباره 64*224*224 می شود.) سپس POOL روی آن اعمال می شود وتصویر 64*112*112 می شود.(پولینگ روی عمق تاثیر نمی گذارد.) بقیه مراحل در شکل زیر قابل مشاهده هستند:

در مقاله VGG، که در سال 2015 ارائه شد، چند مدل مختلف تست شده اند و مدلی دارای 16 لایه تحت عنوان VGG-16 بیش ترین کارایی را داشته است.

نکات مهم:

• در این معماری، به ازای هر تصویر، 93MB حافظه اشغال می شود.
• 138 میلیون پارامتر قابل یادگیری دارد.
• در سال 2014، خطای ۵ کلاس برتر مسابقه ImageNet را به 7.3% بهبود بخشیده است. با این حال این شبکه برنده نشد.

۵- GoogLeNet (Inception)

این شبکه توسط Google در سال 2014 ارائه شد. نام آن ادای احترامی به Yann Lecun، سازنده LeNet، اولین شبکه کانولوشنالی، است. این شبکه با ایده عمیق تر کردن شبکه های کانولوشنالی که طبق گفته سازنده، برگرفته از دیالوگی در فیلم Inception است! برای همین به این نام نیز شناخته می‌شود.

در این شبکه با این رویکرد که هایپر پارامتر های شبکه را هم به گونه ای به پارامتر قابل یادگیری تبدیل کنند، ماژولی به نام Inception module طراحی شد.

در این ماژول، ۳ فیلتر کانولوشنالی با اندازه های متفاوت و یک فیلتر پولینگ روی لایه قبلی اجرا شده و نتایج را به صورت یک تنسر واحد کنار هم می‌گذارد. در این صورت شبکه می‌تواند در لایه بعدی تصمیم بگیرد که از نتیجه کدام فیلتر و به چه اندازه می‌خواهد استفاده کند. سایز فیلتر های کانولوشنالی به صورتی که در تصویر مشخص است، 1*1, 3*3 و 5*5 است و فیلتر پولینگ با سایز 3*3 روی آن اجرا شده.


در این شبکه با قرار دادن دو لایه ی پولینگ در ابتدای کار، پارامتر های قابل یادگیری مساله را بسیار کاهش داده اند. در ادامه از ۹ لایه یInception module استفاده شده. جزئیات بیشتر در تصویر زیر مشخص است.
در تصویر بالا بلاک های آبی نشان دهنده لایه کانولوشنالی، قرمز نشان دهنده پولینگ، زرد سافت مکس و سبز کنار هم گذاشتن خروجی های قبلی است.

نکات مهم:

• معرفی ایده جدید Inception module
• داشتن تنها ۵ میلیون پارامتر قابل یادگیری. این تعداد نسبت به شبکه های AlexNet و VGG به ترتیب ۱۲ و ۳۶ برابر کمتر است.
• این شبکه در سال2014 با کاهش میزان خطای ۵ کلاس برتر در مسابقه ImageNet به 6.7% برنده شد.

۶- Microsoft ResNet

این شبکه توسط Microsoft ارائه شد که نام آن مخفف Residual Network است. در این شبکه ارتباطاتی خارج از ساختار کانولوشنالی در کنار آن بین لایه ها در نظر گرفته شده تا ورودی های لایه قبلی را بدون واسطه به لایه بعدی منتقل کند و در مرحله back propagation یا اصلاح شبکه، ارور هر لایه را به لایه قبلی انتقال دهد تا بتوان شبکه را عمیق تر کرد و آن را سریع تر آموزش داد. به این ارتباطات skip connections و به ساختار حاصل از آن Residual block می‌گویند.

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

نکات مهم:

• معرفی مفهوم جدید skip connections و residual block.
• عمیق کردن قابل توجه شبکه.
• این شبکه در سال 2015 در مسابقه ImageNet میزان خطای ۵ کلاس برتر را به 3.6% کاهش داد.

خلاصه

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

برای مطالعه بیشتر

LeNet

AlexNet

ZF Net

VGG Net

GoogLeNet

Microsoft ResNet

منابع

ImageNet

CNNs Architectures: LeNet, AlexNet, VGG, GoogLeNet, ResNet and more …

We Need to Go Deeper: A Practical Guide to Tensorflow and Inception

An Overview of ResNet and its Variants

فوتر سایت

اسلایدر سایدبار

درباره ما

درباره ما

ما گروهی از دانشجویان رشته کامپیوتر دانشگاه شهید رجایی هستیم که به راهنمایی و تدریس استاد علی‌رضا اخوان‌پور به دنیای یادگیری عمیق پا گذاشتیم و دوست داریم چیزهایی که در این مسیر یادمی‌گیریم رو به اشتراک بذاریم.

شبکه های اجتماعی