CUDA Programming Applications

کاربردهای برنامه نویسی کودا

CUDA Programming Applications

کاربردهای برنامه نویسی کودا

آموزش یادگیری عمیق با پایتورچ

علاقه مندان به حوزه یادگیری عمیق با پایتون می توانند به آدرس kambiz.tabatabaei@gmail.com پیام خود را ارسال فرمایند.

بررسی تاریخچه الگوریتم YOLO

درک الگوریتم تشخیص شیYOLO، مزایا، نحوه تکامل آن در طی سال‌های اخیر و چند مثال کاربردی

تشخیص شی یک روش بینایی ماشین برای شناسایی و تشخیص مکان شی در یک تصویر یا ویدئو است. تشخیص مکان شی در تصویر، فرایند شناسایی مکان درست یک یا چند شی با استفاده از خطوط مرزی (bounding box) دور شی است که معمولا به شکل مستطیل دور شی مورد نظر کشیده می‌شود. گاهی اوقات این فرآیند با طبقه‌بندی تصویر یا تشخیص تصویر اشتباه گرفته می‌شود، که هدف آن پیش‌بینی کلاس یک تصویر یا یک شی در یک تصویر است. شکل زیر یک نمای کلی از تصویر خام، شی کادربندی شده و شی کادر بندی شده به همراه برچسب کلاس را نمایش می‌دهد.

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

YOLO چیست؟

You Only Look Once (YOLO) شما تنها یکبار نگاه می‌کنید. این الگوریتم سرامد الگوریتم‌های تشخیص شی بی‌درنگ است که در سال 2015 در این مقاله https://arxiv.org/abs/1506.02640 معرفی شد.

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

چه چیزی YOLO را برای تشخیص شی مشهور نمود؟

برخی از دلایلی که چرا YOLO سرامد سایر روش‌ها شد در زیر آمده است.

          1-     سرعت

          2-     دقت تشخیص

          3-     قابلیت تعمیم خوب

           4-     Open-source

بیایید به این موارد با جزئیات بیشتر بپردازیم.

           1-     سرعت:

یکی از دلایلی که YOLO بسیار سریع عمل می‌کند این است که خود را درگیر pipeline ها نمی‌کند. این الگوریتم قادر به پردازش 45فریم در هر ثانیه است، به‌علاوه، YOLO به دقت میانگین دو برابری نسبت به سایر سیستم‌ها دست یافت، که این الگوریتم را پیشگام در پردازش‌های بلادرنگ نمود. از شکل زیر کاملا واضح است که YOLO با پردازش 91 فریم در ثانیه پیشگام در عمل تشخیص شی است.

            1-     دقت بالای تشخیص

از نظر دقت YOLO بسیار فراتر از سایر روش‌ها که روزی سرامد بوده‌اند با خطای اندکی عمل کرده است.

2-     تعمیم‌پذیری خوب

این در مورد نسخه جدید YOLO کاملا صحیح است که YOLO کاملا توانسته است در حوزه‌های بینایی ماشین که در ادامه بحث خواهد شد وارد شود، که مناسب نرم‌افزارهای کاربردی که نیازمند به پردازش سریع و دقیق در تشخیص شی هستند، می‌باشد. بعنوان مثال دراین مقاله نشان میدهد که اولین نسخه YOLO که با نام YOLOv1 مشهور بوده دقت میانگین کمتری در تشخیص تومور سرطانی نسبت به نسخه‌های YOLOV2, YOLOV3 داشته است.

       3-     Open-source

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

 معماری YOLO

معماری YOLO بسیار شبیه به معماری GoogleNet است. همانطور که در شکل زیر نشان داده شده است، این معماری شامل 24 لایه کانولوشن، 4 لایه max-pool و دو لایه Fully-connected است.

معماری بصورت زیر کار می‌کند:

·        تصویر ورودی به 448*448 قبل از ورود به لایه کانولوشن تغییر سایز داده می‌شود.

·        یک کانولوشن 1x1 جهت کاهش تعداد کانال‌های تصویر در ابتدا و به دنبال آن یک کانولوشن 3x3 روی تصویر جهت تولید یک خروجی مکعبی اعمال می‌شود.

·        تابع فعال‌ساز به‌کار گرفته شده ReLU است به استثنای لایه آخر که از یک تابع فعال‌ساز خطی استفاده می‌کند.

·        برخی روش‌های اضافه‌تر مانند dropout, batch normalization, regularization  جهت جلوگیری از overfitting استفاده شده است.

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

چگونه الگوریتم تشخیص شی YOLO کار می‌کند؟

حالا که معماری YOLO را فهمیدید، بیایید یک مرور سطح بالاتری از چگونگی عملکرد الگوریتم YOLO در انجام تشخیص شی با استفاده از یک نمونه ساده داشته باشیم. یک مدل YOLO را که بازیکنان و توپ فوتبال را تشخیص می‌دهد را در نظر بگیرید. خوب چطور این عمل را برای افراد غیر آشنا توضیح میدهید؟ کل نکته همینجاست. شما نحوه عملکرد الگوریتم YOLO در تشخیص شی و چگونگی رسیدن به تصویر B از تصویر A را متوجه خواهید شد.

الگوریتم براساس چهار رویکرد زیر کار خواهد کرد.

  • Residual blocks
  • Bounding box regression
  • Intersection Over Unions or IOU for short
  • Non-Maximum Suppression. 

بیایید نگاه عمیق‌تری به موضوع داشته باشیم.

  • Residual block 
ادامه مطلب ...

هوش مصنوعی: از نوکری تا نوکری، فقط با کلاس‌تر!

مقدمه

هوش مصنوعی آمده است تا زندگی ما را متحول کند؛ یعنی همان کاری که چرخ، برق و اینترنت کردند و بعدش دیدیم که باید بیشتر کار کنیم! از دستیارهای صوتی تا ربات‌های آشپز، از چت‌بات‌های مشاور تا الگوریتم‌هایی که می‌دانند قبل از اینکه خودمان بدانیم چه چیزی لازم داریم، هوش مصنوعی در حال بلعیدن زندگی ماست. اما آیا واقعاً این فناوری دارد زندگی را راحت‌تر می‌کند یا فقط دارد ما را به انسان‌هایی تنبل، متکی و البته بیچاره تبدیل می‌کند؟

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

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

در گذشته اگر برای رسیدن به مقصد گم می‌شدیم، یک ماجراجویی جدید برای پیدا کردن مسیر پیش روی ما بود، اما حالا اگر اینترنت قطع شود و گوگل مپس بالا نیاید، ممکن است برای همیشه در یک کوچه بن‌بست بمانیم! حتی دوستیابی هم تغییر کرده، اگر قبلاً در خیابان یا مهمانی با کسی آشنا می‌شدیم، حالا یک الگوریتم هوشمند برای ما تصمیم می‌گیرد که چه کسی به سلیقه‌مان می‌خورد.

مشکلات جدید، راه‌حل‌های عجیب!

  • اگر قبلاً آدم‌ها برای بی‌حوصلگی با دوستانشان صحبت می‌کردند، حالا با چت‌بات‌هایشان درد دل می‌کنند.

  • اگر قبلاً معلم از دانش‌آموز می‌خواست خودش تحقیق کند، حالا خودش هم از ChatGPT جواب می‌گیرد!

  • اگر قبلاً رمزهای بانکی را یادداشت می‌کردیم، حالا اگر گوشی‌مان قفل شود، هویت خودمان را هم فراموش می‌کنیم!

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

  • اگر قبلاً برای نوشتن یک مقاله کلی وقت می‌گذاشتیم، حالا یک مدل هوش مصنوعی در چند ثانیه یک مقاله تحویل می‌دهد که حتی خودمان هم تعجب می‌کنیم چطور این‌قدر خوب نوشته شده است!

هوش مصنوعی: دوست یا دشمن؟ شاید فکر کنید هوش مصنوعی فقط یک ابزار است و به هر شکلی که بخواهیم می‌توانیم از آن استفاده کنیم. اما آیا واقعاً کنترل دست ماست؟ شاید الان فقط کمک‌مان می‌کند، ولی چه تضمینی داریم که در آینده کارفرمایمان نشود؟ تصور کنید هوش مصنوعی به جایی برسد که مدیران شرکت‌ها هم الگوریتمی شوند! آن وقت باید برای گرفتن مرخصی به یک ربات درخواست بدهیم و احتمالاً با این جواب روبه‌رو شویم: "با توجه به داده‌های گذشته، شما قبلاً در این تاریخ مرخصی گرفته‌اید. لطفاً تلاش نکنید سیستم را فریب دهید!"

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


کوئیز پایتون

کدام گزینه برای کد پایتون زیر صحیح است؟

x=[1,2,3]
y=x
y.append(4)
print(f"x:{x}\n")
print(f"y:{y}\n")


الف) x=[1, 2, 3]     y=[1, 2, 3]

ب) x=[1, 2, 3, 4]     y=[1, 2, 3]

ج) x=[1, 2, 3]     y=[1, 2, 3, 4]

د) x=[1, 2, 3, 4]     y=[1, 2, 3, 4]

#آکادمی هوش مصنوعی #کامبیز طباطبائی #زبان برنامه نویسی پایتون