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

ارتباط با ادمین
@howsam_support
Download Telegram
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
این تصویر مفهومی و انگیزشی را امروز دیدم و برایم جالب بود. تصمیم گرفتم با شما دوستان هم به اشتراک بگذارم...

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

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

جلسه دوم: آموزش ساخت تنسور در پایتورچ منتشر شد.
https://howsam.org/tensor-pytorch/

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

@pytorch_howsam
مولف‌های مقاله‌ها، معمولا کدها رو در گیتهاب میذارن و مدل‌های آموزش‌دیده رو در گوگل‌درایو قرار میدن.

اگر خواستید در گوگل‌کولب، یک فایلی رو از گوگل‌درایو یک فرد دیگه دانلود کنید، با پکیج gdown می‌تونید اینکار رو انجام بدید.

اول gdown رو نصب کنید:
!pip install gdown

بعد لینک اون فایل موردنظر رو در دستور زیر بذارید. در تصویر نشون دادیم که کدوم بخش از آدرس رو باید انتخاب کنید.
!gdown https://drive.google.com/uc?id=1udpOPum8fJdoEQm6n0jsIgMMViOMFinu

البته ممکنه راه‌های مختلفی وجود داشته باشه. این یک راه، شما هم به ما معرفی کنید...

@pytorch_howsam
This media is not supported in your browser
VIEW IN TELEGRAM
#andrej_karpathy #matroid

امروز توییتی از matroid منتشر شد که معرفی ارائه‌ای از آقای Andrej Karpathy درباره چالش‌های تشخیص تابلوهای علائم رانندگی بود.

بخش کوچکی از این صحبت‌ها رو در ویدئوهای بالا می‌تونید ببینید که به چالش‌ها اشاره میشه. مثلا، بعضی علائم ممکنه در دستان مامور پلیس باشه. ممکنه پشت ماشین‌ها (مثلا کامیون) وصل شده باشه. یا پشت درخت‌ها و سایر اشیا پوشیده شده باشه. یک مساله به ظاهر ساده که در عمل چالش‌های زیاد و متنوعی داره.

ارائه کامل در لینک زیر:
https://youtu.be/hx7BXih7zx8

@pytorch_howsam
#matroid

خب در توییت بالا از matroid صحبت کردیم. حیف بود معرفیش نکنیم.

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

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

متروید هرساله کنفرانسی به‌نام ScaledML برگزار میکنه. اتفاقا آقای Karpathy در همین کنفرانس ارائه‌ای درمورد خودروهای خودران داشتند.
https://t.iss.one/pytorch_howsam/51

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

matroid.com

@pytorch_howsam
#pytorch

پایتورچ نسخه 1.5 منتشر شد...

قسمت اعظم این بروزرسانی، مربوط به بخش ++C هست.

علاوه‌بر بخش ++C، در autograd هم بروزرسانی انجام شده و توابع جدیدی مانند Jacobian، hessian و... اضافه شده.

علاوه بر پایتورچ، سه پکیج مهم torchvision، torchtext و torchaudio هم بروزرسانی شدند.

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

همچنین، دو کتابخونه جدید با نام‌های torchserve و torchelastic با همکاری آمازون با کاربردهای تجاری منتشر شده...

@pytorch_howsam
PyTorch Howsam
#pytorch پایتورچ نسخه 1.5 منتشر شد... قسمت اعظم این بروزرسانی، مربوط به بخش ++C هست. علاوه‌بر بخش ++C، در autograd هم بروزرسانی انجام شده و توابع جدیدی مانند Jacobian، hessian و... اضافه شده. علاوه بر پایتورچ، سه پکیج مهم torchvision، torchtext و torchaudio…
چند نکته درباره بروزرسانی جدید پایتورچ

خب از اخبار بالا در مورد بروزرسانی پایتورچ، می‌تونیم ببینیم که بخش اعظم این بروزرسانی چندان آکادمیک نیست. در این بروزرسانی خیلی صحبت از ++C شده و همچنین تبلیغ زیادی روی دو کتابخونه جدید torchserve و torchelastic شده...

شاید بد نباشه چند جمله زیر رو که از تیم پایتورچ در medium منتشر شده بخونیم:
As PyTorch is used more and more in production environments, we’ve continued to see the need to provide better tools and platforms for the community to scale up training and deploy models efficiently.

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

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

علاوه‌بر اینها پایتورچ، ارتباط خوبی با کاربرها داره. از کاربرها نظر میخواد و بعد سعی میکنه در بروزرسانی‌ها اعمال کنه. مثلا کاربرها در اندیس‌دهی تنسورها در ++C مشکل داشتند. دقیقا اشاره شده، به‌دلیل مشکلاتی که کاربرها داشتند ما اندیس‌دهی رو بهتر کردیم و حالا بیشتر شبیه پایتون شده و راحت‌تر شده. خب ما اینجا هر دو مورد رو آوردیم. اندیس‌دهی تنسور در پایتون و ++C:
tensor[:, 0, ..., mask]
tensor.index({Slice(), 0, "...", mask})

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

ببینیم پایتورچ به رشدش در صنعت میتونه ادامه بده؟ نظر شما چیه؟

@pytorch_howsam
This media is not supported in your browser
VIEW IN TELEGRAM
#مبتدی

یک پروژه ساده و جالب در شناسایی چهره با ماسک

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

گیتهاب پروژه:
https://github.com/goktugyildirim/RealTimeMedicalMaskDetection

@pytorch_howsam
#metric_learning

یک کتابخونه پایتورچی عالی در زمینه متریک لرنینگ
https://github.com/KevinMusgrave/pytorch-metric-learning

متریک لرنینگ چیه؟ اول بگیم متریک چیه... خب در شبکه‌ها و بسیاری از متدهای ماشین لرنینگ، به یک معیار فاصله برای اندازه‌گیری فاصله بین نمونه‌‌ها نیازه. مثلا فاصله اقلیدسی... خب متریک لرنینگ هم یعنی اینکه اون معیار اندازه‌گیری فاصله به‌صورت خودکار بنابه مساله ساخته بشه. مثلا فاصله ماهالانوبیس... اگر اطلاعات بیشتری خواستید از اینجا مطاله کنید:
https://contrib.scikit-learn.org/metric-learn/introduction.html

در این کتابخونه توابع AngularLoss، ArcFaceLoss، Triplet Loss و یک عالمه توابع متریک دیگه وجود داره که می‌تونید در مساله‌ای خودتون ازشون استفاده کنید.

این هم یک مقاله خوب برای شروع متریک لرنینگ
https://www.mdpi.com/2073-8994/11/9/1066/htm

راستی تصویر پیوستی رو دقیق نگاه کنید. چند تا متریک رو نشون داده...

@pytorch_howsam
#resnet #resnest #پیشرفته

معرفی مقاله ResNeSt: Split-Attention Networks (2020)

این مقاله، به‌دنبال بهبود عملکرد رزنت با طراحی یک ماژول اتنشن به‌نام Split-Attention block هست. این ماژول اتنشن به لایه‌های درون شبکه رزنت اضافه میشه. اسم این شبکه با ماژول اتنشن رو ResNeSt گذاشتن.

درگذشته ماژول‌هایی مانند SENet و SKNet برای بهبود عملکرد رزنت طراحی شده بودند. عملکرد خوبی هم داشتن.

ماژول اتنشن در این مقاله جدید، از سه کار SENet و SKNet و ResNext الهام گرفته. در تصویر پیوستی دو ماژول SENet و SKNet رو می‌تونید ببینید. ماژول ResNext هم هدفش ایجاد شاخه‌های متعدد و موازی برای افزایش پهنای شبکه بود.

شکل سمت راست، ماژول Split-Attention در ResNeSt رو نشون میده. دراین ماژول دو مرحله شاخه‌شاخه کردن فیچرمپ انجام شده. مرحله اول مشابه با ResNext که فیچرمپ به k شاخه یا cardinal تقسیم شده. مرحله دوم، هر کاردینال دوباره شاخه‌شاخه شده و به r بخش تقسیم شده.

شبیه به شاخه‌های درخت شده...

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

لینک کدهای پایتورچ (نسخه رسمی):
https://github.com/zhanghang1989/ResNeSt

@pytorch_howsam
PyTorch Howsam
#آموزش_پایتورچ جلسه دوم: آموزش ساخت تنسور در پایتورچ منتشر شد. https://howsam.org/tensor-pytorch/ در جلسه دوم آموزش پایتورچ هوسم، می‌خواهیم به نحوه تعریف تنسور در پایتورچ بپردازیم. در این جلسه می‌آموزید که چطور در پایتورچ بردار، ماتریس و غیره بسازید. خواص…
#آموزش_پایتورچ

جلسه سوم: آموزش ساخت تنسورهای خاص در پایتورچ منتشر شد.

https://howsam.org/special-tensors-pytorch/

در سومین جلسه آموزش پایتورچ می‌خواهیم به معرفی انواع تنسورهای خاص در پایتورچ بپردازیم. منظور از تنسورهای خاص، همان تنسورهای صفر (zeros)، واحد (ones)، همانی (eye) و سایر موارد مشابه است. با هوسم همراه باشید...

@pytorch_howsam
#object_detection #yolov4

در مقاله YOLOv4 بلوک دیاگرامی اومده که به‌صورت جامع بخش‌های مختلف سیستم‌های تشخیص اشیا رو به تصویر کشیده.

با توجه به تصویر بالا، بخش‌های کلی سیستم تشخیص اشیا شامل موارد زیر هست:
* ورودی (Input)
* شبکه بدنه یا بیس (Backbone)
* گردن (Neck)!
* سر (Head)

بخش Input که شامل تصویر یا هرم تصویر یا پچ هست.

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

بخش Neck که ممکن هست شامل دو زیربخش تجمیع ویژگی‌ها (مثل FPN) و بلوک‌های افزایش Receptive Field باشه. این بخش Neck در اکثر کارهای دیتکشن دیده میشه. اتفاقا در EffiecientDet دیدیم که یکی از ایده‌های مهم‌شون در همین بود. لینک پست EfficientDet:
https://t.iss.one/pytorch_howsam/44

بخش بعدی head هست که معمولا برای روش‌های تشخیص اشیای دو مرحله‌ای (Sparse Prediction) و یک مرحله‌ای (Dense Prediction) متفاوت هست. مثلا، یولو از جمله روش‌های تک مرحله‌ای هست که یک head بنام yolo layer داره. اما در نوشته‌های زیر شکل می‌تونید ببینید که headهای مختلفی تا الان طراحی شده.

در پست بعدی، کمی درباره YOLOV4 صحبت می‌کنیم.

@pytorch_howsam