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

ارتباط با ادمین
@howsam_support
Download Telegram
این تصویر مفهومی و انگیزشی را امروز دیدم و برایم جالب بود. تصمیم گرفتم با شما دوستان هم به اشتراک بگذارم...

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

می‌توانید روی کمک ما هم حساب کنید...
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
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