PyTorch Howsam
3.01K subscribers
340 photos
48 videos
5 files
475 links
از هوش مصنوعی میگیم...

ارتباط با ادمین
@howsam_support
Download Telegram
PyTorch Howsam
#آموزش_پایتورچ جلسه اول: آموزش نصب پایتورچ https://howsam.org/install-pytorch/ @pytorch_howsam
🔴 توجه

🔸 مشکلات‌تان در فرآیند نصب را کامنت کنید، در حد توان پاسخ خواهیم داد.

🔸 از صفر شروع می‌کنیم و انشالله تا مراحل خوبی پیش خواهیم رفت.

🔸 از همین ابتدا جلسات را دنبال کنید...
#پیشرفته

تکنیکی ساده برای کاهش مصرف حجم رم GPU

مدلهای حوزه دیپ بزرگ شدن و با 8 گیگ رم GPU ممکنه در بعضی موارد به مشکل بخورید. راه‌حل‌های مختلفی وجود داره که تا حدی مشکل حل بشه.

یکی از راه‌ها، استفاده از float16 بجای float32 در وزن‌های شبکه هست. این راه به شکل قابل توجهی حجم رم مصرفی رو کاهش میده و می‌تونید بچ‌سایزتون رو بزرگتر کنید.

حالا چطور این کار رو در پایتورچ انجام بدیم؟ ما دو راه رو بهتون معرفی می‌کنیم.

اول، استفاده از کتابخونه apex. طبق تصویر بالا، کافیه همین یک خط رو به کدهاتون اضافه کنید و تمام... کتابخونه apex:
https://nvidia.github.io/apex/amp.html

دوم، استفاده از ()half هست. مدل، داده‌های ورودی و تارگت رو به این شکل به float16 تبدیل می‌کنید و تمام...
model = model.half().cuda()
img_batch = imgs_batch.half().cuda()
lbls_batch = lbls_batch.half().cuda()

آیا سرعت اجرا هم بالا میره؟ فعلا خیر...

آیا افت دقت به‌وجود میاد؟ تست‌هایی که در حوزه Classification انجام دادیم، افت دقتی مشاهده نکردیم.

@pytorch_howsam
#netron

نترون یک ابزار مناسب برای مشاهده معماری و وزن شبکه‌هاست. ابزاری که نسخه‌های ویندوز، لینوکس، مک و آنلاین داره.

نترون، بسیاری از فریمورک‌ها مانند پایتورچ، تنسورفلو، کفه، اونیکس، میکس‌نت و غیره رو پشتیبانی میکنه.

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

ابزارهای دیگری هم برای نمایش شبکه‌ها وجود داره. اما ویژگی‌های خوب نترون و همچنین راحتی کار با اون باعث شده ما در کارهامون از نترون استفاده کنیم.

اطلاعات بیشتر:
https://github.com/lutzroeder/netron

@pytorch_howsam
#openai #microscope

دیروز openai مجموعه‌ای به‌نام میکروسکوپ رو معرفی کرده که یک ابزار ارزشمند برای visualization هست. میکروسکوپ یک مجموعه از مدل‌های معروف در حوزه ویژن رو داره و شما می‌تونید در دل شبکه‌ها (میان لایه‌ها و نورون‌ها) به اکتشاف بپردازید!

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

همواره گفته شده، از ابتدا تا انتهای شبکه، به مرور اشکال پیچیده‌تر میشن. حالا می‌تونید اینها رو اینجا به‌صورت تصویری ببینید. ما چند تصویر از لایه‌های مختلف براتون گذاشتیم.

پیشنهاد می‌کنیم از طریق لینک زیر حتما نگاهی به لایه‌های مختلف شبکه‌ها بندازید.
https://microscope.openai.com/models

@pytorch_howsam
#مبتدی

پایتورچ دو کاریرد داره:
اول اینکه، می‌تونیم شبکه‌های عصبی بسازیم و آموزش بدیم و...
دوم، می‌تونیم عملیات جبری که با نامپای انجام میدیم رو با پایتورچ انجام بدیم. در واقع، جایگزین نامپای هم میتونه باشه.

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

در لینک زیر، یکسری از دستورات اولیه جبری پایتورچ مثل تعریف تنسور صفر، واحد، رندوم و غیره رو می‌بینید. لینک زیر یک فایل کولب هست که میتونه موقع کدنویسی کمکتون کنه.
https://colab.research.google.com/drive/1E80pq5WBSkPevIfLFcea8abxYQS4-0zI

جلسه‌های ابتدایی دوره آموزش پایتورچ ما هم، به همین عملیات جبری با پایتورچ اختصاص داره. جلسه دوم درحال آماده‌سازی هست.

@pytorch_howsam
#پیشرفته #nlp

اگه دنبال مثال‌های متنوع با شبکه‌های مختلف در حوزه nlp هستید، لینک زیر رو از دست ندید:
https://github.com/graykode/nlp-tutorial

در این لینک، درباره شبکه‌ها و مثال‌های مختلف توضیح تئوری داده نشده. اما، همه کدها در گوگل کولب در دسترس هست و به‌راحتی می‌تونید ازشون استفاده کنید.

شما در این پیج گیتهاب، می‌تونید پروژه‌هایی از RNN، Attention، شبکه کانولوشنی و ترنسفورمرها رو پیدا کنید.

برای افرادی که تا حدی پایتورچ بلد هستند و می‌خوان در حوزه nlp بیشتر مسلط بشن، این پیج رو از دست ندن.

@pytorch_howsam
PyTorch Howsam
#پیشرفته #nlp اگه دنبال مثال‌های متنوع با شبکه‌های مختلف در حوزه nlp هستید، لینک زیر رو از دست ندید: https://github.com/graykode/nlp-tutorial در این لینک، درباره شبکه‌ها و مثال‌های مختلف توضیح تئوری داده نشده. اما، همه کدها در گوگل کولب در دسترس هست و به‌راحتی…
#bert #nlp

در پست بالا درمورد nlp و ترنسفورمر صحبت شد. ترنسفورمرها اولین بار در شبکه Bert از گوگل در سال 2018 مطرح شدند.

بعد از دستیابی به موفقیت‌های قابل توجه با برت، مدتی پیش گوگل، برت رو در موتور جستجوی خودش به‌کار گذاشت. قبل از Bert، الگوریتم RankBrain در موتور جستجوی گوگل بود. حالا متخصصین سئو تلاش می‌کنن بفهمن با برت چگونه باید محتوا سئو بشه و رمز و رازش چیه!

تصویر بالا مقایسه بین RankBrain و Bert هست...

@pytorch_howsam
#forum

پایتورچ یک forum بسیار فعال و خوب داره که جواب خیلی از سوالاتتون رو می‌تونید اونجا پیدا کنید. از سوال‌های ابتدایی تا سطح پیشرفته...

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

هفته گذشته یکی از افراد بسیار فعال در forum پایتورچ، توییت کرد که 10 هزارمین پاسخش رو ثبت کرده! یعنی شما هر پستی رو در forum باز می‌کنید این آقای موبلند رو می‌بینید!! 😁

تازگی تم forum هم از روشن به تیره تغییر کرده... تصویر بالا 👆

بیایید ما هم فعالیت داشته باشیم و به سوال‌های forum پایتورچ پاسخ بدیم. رزومه خوبیه!

لینک forum پایتورچ:
https://discuss.pytorch.org/

@pytorch_howsam
#object_detection #efficientdet #پیشرفته

شبکه تشخیص اشیای EfficientDet، درحال حاضر یکی از بهترین سیستم‌های تشخیص اشیا هست. در تصویر 1 می‌تونید مشاهده کنید که شبکه‌های خانواده EfficientDet (D0-D7) نسبت به سایر روش‌ها چقدر بهتر هستند.

بلوک دیاگرام کلی EfficientDet رو در تصویر 2 می‌تونید ببینید. یک شبکه Backbone و بعدش یک لایه به‌نام BiFPN چندبار پشت هم تکرار شده. با استفاده از این لایه، ویژگی‌های لایه‌های مختلف شبکه backbone باهم ترکیب شدند. این لایه BiFPN یکی از مهم‌ترین ایده‌های مقاله هست.

در واقع لایه BiFPN بهبودیافته همون FPN هست. امروزه در بسیاری از مقالات، از FPN استفاده میشه و خب واقعا تکنیک کارآمدی برای ترکیب ویژگی‌هاست. در تصویر 3 مورد a، تکنیک FPN نشون داده شده. اما در اینجا، تکنیک BiFPN ارائه شده که در واقع یک مسیر رفت و برگشت داره... تصویر 3 مورد d. لایه BiFPN کمی شبیه به شبکه‌های بازگشتی دوطرفه شده. موافقید؟!

لینک مقاله EfficientDet:
https://arxiv.org/abs/1911.09070

کد پایتورچ EfficientDet:
https://github.com/zylo117/Yet-Another-EfficientDet-Pytorch/blob/master/readme.md

@pytorch_howsam
#multi_object_tracking #پیشرفته

ردیابی چندهدفه یا MOT، یکی از چالشی‌ترین زمینه‌های بینایی کامپیوتر هست. هدف، ردیابی افراد و اشیا در ویدئوهاست. کار مشکلی که نه تنها روش‌های امروزی دقت بالایی ندارن، بلکه اغلب سرعت بسیار پایینی هم دارن. مثلا تصور کنید، سرعت اجرای الگوریتم زیر 7 فریم بر ثانیه باشه...

روش‌های پیشنهادی در MOT غالبا شامل دو بخش تشخیص اشیا و استخراج ویژگی از اشیا هستن. حالا تصور کنید برای این دو بخش، دو شبکه بزرگ مانند رزنت 50 درنظر بگیریم و تازه دقت بالایی هم نداشته باشیم! با دو شبکه رزنت 50، سرعت هم که...

مقاله‌ای که انتخاب کردیم در سال 2020 منتشر شده و جز دسته مقالاتی هست که تلاش کرده تنها با یک شبکه دو عمل تشخیص اشیا و استخراج ویژگی از اشیا رو انجام بده. اتفاقا هم سرعت خوبی به‌دست اومده و هم دقت نسبتا قابل قبولی حاصل شده. با روش پیشنهادی تونستن به سرعت 30 فریم بر ثانیه برسن که خوبه...

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

مقاله FairMOT:
https://arxiv.org/abs/2004.01888

کدهای پایتورچ:
https://github.com/ifzhang/FairMOT/

@pytorch