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

ارتباط با ادمین
@howsam_support
Download Telegram
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
PyTorch Howsam via @like
#object_detection #yolov4 در مقاله YOLOv4 بلوک دیاگرامی اومده که به‌صورت جامع بخش‌های مختلف سیستم‌های تشخیص اشیا رو به تصویر کشیده. با توجه به تصویر بالا، بخش‌های کلی سیستم تشخیص اشیا شامل موارد زیر هست: * ورودی (Input) * شبکه بدنه یا بیس (Backbone) * گردن…
#YOLOv4

دیروز این مقدمه رو گفتیم که برسیم به مقاله YOLOv4...

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

بهتره طبق همون بلوک دیاگرام پست بالا به توضیح یولو 4 بپردازیم:

در بخش ورودی، روی دیتاآگمنت کار کردن...

در بخش بدنه، شبکه دارکنت-53 سابق رو بهبود دادن و حالا شبکه CSPDarknet53 رو معرفی کردن. CSP اشاره میکنه به یک مقاله دیگه که برای افزایش قدرت یادگیری شبکه‌های کانولوشنی پیشنهاد شده. با الهام‌گیری از شبکه DenseNet...

در بخش Neck یا گردن! از ماژول‌های SPP و PAN استفاده شده. اما مثلا در متد PAN تغییراتی هم ایجاد کردن.

در بخش Head هم از لایه یولو ورژن سه استفاده کردن.

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

لینک مقاله:
https://arxiv.org/pdf/2004.10934.pdf

کدهای پایتورچ:
https://github.com/Tianxiaomo/pytorch-YOLOv4

@pytorch_howsam
#unet #medical #segmentation

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

در لینک زیر می‌تونید یک کد پایتورچ بسیار بسیار ساده از اجرای این شبکه روی تصویر پزشکی ببینید. تنها با 20 خط کد!
https://pytorch.org/hub/mateuszbuda_brain-segmentation-pytorch_unet/

نظرتون چیه در یک پست وبلاگی بیشتر درموردش توضیح بدیم؟

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

نرم‌افزار GIMP یک ادیتور تصویر رایگان هست که دی ویدئوی بالا می‌تونید محیطش رو ببینید. در زیر هم لینک سایتش رو آوردیم:
www.gimp.org

اما، GIMP-ML یک پلاگین هست که به ادیتور GIMP اضافه میشه. GIMP-ML یک پکیج پایتونی هست که با استفاده مدل‌های کامپیوتر ویژن، به شما امکان کارهای جالب مثل تغییر رنگ مو، رنگی کردن تصاویر و غیره میده.

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

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

داکیومنت GIMP-ML:
https://arxiv.org/pdf/2004.13060.pdf

گیتهاب:
https://github.com/kritiksoman/GIMP-ML

@pytorch_howsam
#paper #ICLR2020 #ofa

یک مقاله جالب و البته بسیار مهم از محققین دانشگاه MIT در ICLR2020

دغدغه اصلی در این مقاله، کاهش میزان تولید CO2 حین آموزش شبکه‌های عمیق مثل NASNet هست. به نمودار موجود در پایین تصویر دقت کنید؛ میزان انتشار CO2 انسان، ماشین و NASNet رو باهم مقایسه کنید! حالا به OFA که شبکه پیشنهادی در این مقاله هست دقت کنید.

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

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

مقاله

کد پایتورچ

@pytorch_howsam
#optuna #hyperparameter

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

https://link.medium.com/lLZbnbW275
#datascience

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

فردی در مدیوم پستی نوشته با عنوان:
چگونه با مهارت کدنویسی صفر در 6 ماه به یک data scientist تبدیل شدم!
https://link.medium.com/MdFJ03k475

چهار کورس زیر رو گذرونده و خب مشخصه که علاوه بر تلاش، تصمیم‌های خوب و درستی هم گرفته:
1- یادگیری پایتون با Codecademy
2- یادگیری دیتاساینس با Coursera
3- یادگیری کار با دیتابیس با Stanford
4- یادگیری دیتاساینس با R با EDX

سایت کدکادمی (codecademy.org) یک آموزشگاه کم‌نظیر برای افراد با مهارت صفر در حوزه کدنویسی هست. مجبورتون میکنه تمرین کنید و کدبزنید وگرنه ادامه آموزش امکان‌پذیر نیست!

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

در پست زیر، فرآیند افزودن کتابخونه ++PyTorch C به یک پروژه ++C در ویژوال استودیو 2017 به‌صورت ساده و مرحله‌به‌مرحله توضیح داده شده...
https://medium.com/@boonboontongbuasirilai/building-pytorch-c-integration-libtorch-with-ms-visual-studio-2017-44281f9921ea

ما همین فرآیند رو روی ویژوال استودیو 2019 انجام دادیم و بدون مشکل کتابخونه به پروژه اضافه شد. هم نسخه مبتنی بر CPU و هم GPU...

دو تا از کاربردهای اصلی کتابخونه ++PyTorch C، محصولات تجاری و طراحی ماژول‌های جدید هست. ممکنه شما ماژولی طراحی کرده باشید که به خاطر سرعت و دیگر مسائل مجبور شید اون رو اول در ++C پیاده‌سازی کنید و بعد با ابزارهای مختلف به یک نسخه قابل اجرا در پایتون تبدیل کنید. مثلا Deformable Convolution یک نوع کانولوشن هست که اگر به کدهاش در گیتهاب نگاه کنید، می‌بینید که اول در ++C پیاده‌سازی شده و بعد به نسخه پایتونی تبدیل شده...

@pytorch_howsam
#conv2d #convolution

درمورد تئوری کانولوشن دوبعدی (Conv2d) پست‌های آموزشی زیادی وجود داره. اما پست زیر یکی از کامل‌ترین‌هاست. همراه با نمایش انیمیشنی که به‌راحتی در تلگرام هم می‌تونید ببینید...

نکته مهم اینجاست که درمورد تمامی پارامترهای مهم مثل stride، group، kernel، dilation، padding و غیره توضیح همراه با انیمیشن ارائه داده...

اگرچه این توضیحات بیشتر تئوری هست، اما طبق توضیحات متن به‌نظر میرسه پایتورچ رو مبنای توضیحاتش قرار داده...
@pytorch_howsam

https://towardsdatascience.com/conv2d-to-finally-understand-what-happens-in-the-forward-pass-1bbaafb0b148
#Blender #ParlAI

چند روز قبل فیسبوک سورس چت‌بات Blender را منتشر کرد. این انتشار میتونه گام بزرگی در پیشرفت کیفیت چت‌بات‌ها باشه.
https://parl.ai/projects/blender

چت‌بات Blender زیرمجموعه پلتفرم ParlAI هست. ParlAI پلتفرمی برای آموزش و ساخت مدل‌های دیالوگی در کاربردهای مختلف هست. مدل‌ها و دیتاست‌های مختلفی رو ساپورت میکنه و مجموعه کاملی هست. سایت ParlAI:
https://parl.ai

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

@pytorch_howsam
#segmentation #pingpong

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

چند شبکه برای این کار طراحی شده که اکثرا هم سگمنت هستن. دو مرحله سگمنت coarse و fine انجام میشه تا موقعیت دقیق توپ تعیین بشه. علاوه‌براین، برای پیدا کردن بازیکن‌ها و میز هم سگمنت جداگانه‌ای انجام میشه.

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

https://arxiv.org/abs/2004.09927

@pytorch_howsam

https://youtu.be/5P3k5ZCDcq8
امروز یک پست وبلاگی خوندم که یک متخصص حوزه NLP یک ساله که از کار تمام وقت بیرون اومده و freelance کار میکنه. به چالش‌ها و خوبی‌هاش اشاره میکنه و میگه که در یک سال گذشته چه کارهایی انجام داده... مثلا کتاب نوشته، کار مشاوره، مهندسی و تحقیقاتی انجام داده. همچنین، درمورد مدیریت زمان و pomodoro technique صحبت میکنه.

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

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

@pytorch_howsam

https://masatohagiwara.net/202002-my-first-year-as-a-freelance-ai-engineer.html
#ICLR2020

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

همه ویدئوهای ارائه در لینک زیر در دسترس هستن. هر ویدئو حداکثر 5 دقیقه هست. زمان زیادی نیست و میشه مقاله‌های جالب رو نگاه کرد.

هر مقاله‌ای رو که انتخاب کنید، همزمان ویدئوی فرد ارائه‌دهنده و اسلایدها رو نشون میده. علاوه‌براین، لینک مقاله، مقاله‌های مشابه و کدها (اگر کدهاش منتشر شده باشه) رو هم نشون میده.

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

https://iclr.cc/virtual_2020/papers.html?filter=keywords

@pytorch_howsam
#pytorch #vision

آقای Ross Wightman در توییتر اعلام کردند که با همکاری تعدادی از افراد دیگه، کلکسیون مدل‌های ویژن (وزن‌ها، اسکریپت و...) در گیتهاب ایشون به بیش از 200 مدل رسیده!

در لینک زیر می‌تونید لیست بلندبالای مدل‌ها رو مشاهده کنید:
https://github.com/rwightman/pytorch-image-models

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

@pytorch_howsam
#openai #flops

دیروز OpenAI پستی وبلاگی درباره هزینه محاسباتی تعدادی از شبکه‌ها از سال 2012 در سایتش منتشر کرد. از سال 2012 که با AlexNet شروع میشه و تا حدود 2020 ادامه داره.

اگر دقت AlexNet رو روی ImageNet معیار پایه بذاریم. هر 16 ماه، شبکه‌ای با همون دقت AlexNet پیشنهاد شده که هزینه محاسباتش نصف شبکه AlexNet هست.

حالا در طول این 7 8 سال گذشته، محاسبات موردنیاز 44بار کمتر شده!


به تصویر پیوست نگاه کنید؛ هم نمودار و هم جدولش اطلاعات جالبی ارائه میده. به ستون Compute در جدول نگاه کنید که چقدر هزینه محاسبات برحسب TeraFlops کاهش پیدا کرده...

لینک پست بالا

@pytorch_howsam
#cnn #implementation #pytorch

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

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

پیاده‌سازی شبکه ResNet

پیاده‌سازی شبکه GoogleNet

پیاده‌سازی شبکه VGG

پیاده‌سازی شبکه LeNet

سایر ویدئوهای همین کانال (Aladdin Persson) رو ببینید. ویدئوهای آموزشی خوبی در زمینه پایتورچ، یادگیری عمیق و یادگیری ماشین داره.

@pytorch_howsam
PyTorch Howsam pinned Deleted message