معرفی شبکه های کامپیوتری و پروتکل های اینترنت

معرفی شبکه های کامپیوتری و پروتکل های اینترنت

در حال حاضر بیش از 2.5 میلیارد دستگاه به اینترنت متصل هستند و تقریباً 8 کاربر جدید اینترنت در هر ثانیه در سراسر جهان اضافه می شوند. اگر این شما را شگفت زده نکند ، تخمین زده می شود که تا سال 2020 ، بیش از 200 میلیارد سنسور آنلاین می شوند و داده های خود را یکپارچه از طریق اینترنت گزارش می دهند. با چنین اکوسیستم غنی ، اینترنت باید بسیار سفت و سخت ، برنامه ریزی شده و ساختار یافته باشد. در این سری جدید ، من تمام تلاش خود را می کنم تا عناصر و پروتکل های مختلف شبکه ای را که این سیستم عظیم را تشکیل می دهند ، پوشش دهم.

شبکه های کامپیوتری چیست؟

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

Basic Computer Network Strucutre

همه دستگاه های رایانه ای میزبان یا سیستم نهایی نامیده می شوند. میزبانانی که درخواست ارسال می کنند ، سرویس گیرنده نامیده می شوند ، در حالی که میزبان دریافت کننده درخواست ، سرور نامیده می شود. سیستم های پایانی توسط شبکه ای از پیوندهای ارتباطی و سوئیچ های بسته به هم متصل می شوند. پیوندهای ارتباطی از انواع مختلف رسانه های فیزیکی از جمله کابل کواکسیال ، عرض مس ، فیبر نوری و طیف رادیویی تشکیل شده است. پیوندهای مختلف می توانند داده ها را با نرخ های مختلف منتقل کنند ، با سرعت انتقال پیوند بر حسب بیت/ثانیه. هنگامی که یک سیستم پایانی داده هایی برای ارسال به سیستم پایانی دیگر دارد ، سیستم ارسال کننده داده ها را تقسیم بندی می کند و به هر قسمت بایت هدر اضافه می کند. بسته های حاصله از اطلاعات ، که به عنوان بسته شناخته می شوند ، سپس از طریق شبکه به سیستم نهایی مقصد ارسال می شوند ، جایی که دوباره در داده های اصلی جمع آوری می شوند. یک سوئیچ بسته بسته ای را می گیرد که به یکی از پیوندهای ارتباطی ورودی خود رسیده و آن بسته را در یکی از پیوندهای ارتباطی خروجی خود ارسال می کند. سوئیچ های بسته متداول روترها و سوئیچ های لایه پیوندی هستند. اینترنت پروتکل کنترل انتقال (TCP) و پروتکل اینترنت (IP) دو پروتکل مهم در اینترنت هستند. پروتکل IP فرمت بسته هایی که در بین روترها و سیستم های نهایی ارسال و دریافت می شوند را مشخص می کند. پروتکل های اصلی اینترنت در مجموع با نام TCP/IP شناخته می شوند. پروتکل ها

با توجه به اهمیت پروتکل ها در اینترنت ، مهم است که همه در مورد تک تک پروتکل ها به توافق برسند ، تا مردم بتوانند سیستم ها و محصولاتی را ایجاد کنند که با یکدیگر همکاری می کنند. استانداردهای اینترنت توسط نیروی کار مهندسی اینترنت (IETF) به اسنادی موسوم به درخواست نظر (RFC) توسعه داده می شوند. RFC ها کاملاً فنی و با جزئیات هستند. این پروتکل ها مانند TCP ، IP ، HTTP ، DNS و SMTP را تعریف می کند. در حال حاضر بیش از 6000 RFC وجود دارد.

معماری لایه ای

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

سرور به انتقال تصویر مشتری

در حال حاضر ، یک قدم جلوتر رفته و لایه های پروتکل جداگانه را بررسی کنید. در زیر مدل رایج TCP/IP و مدل OSI دقیق تر آمده است. برای قیاس ما (و احتمالاً بقیه سری) ، من به مدل TCP/IP پایبندم.

TCP/IP در مقابل مدل OSI

از سرور به اینترنت ، توالی از بالا به پایین است. هنگامی که سرور تصویر Grumpy Cat را که مشتری درخواست کرده است پیدا می کند ، ابتدا آن را به یک بسته تبدیل می کند و سربرگ Application Layer را اضافه می کند. این پروتکل شامل HTTP (که درخواست و انتقال سند وب را ارائه می دهد) ، SMTP (که انتقال پیام های الکترونیکی را فراهم می کند) و FTP (که انتقال فایل بین دو سیستم نهایی را فراهم می کند) را شامل می شود. پس از آن ، پروتکل لایه حمل و نقل تغییرات لازم را اضافه می کند. این بعداً پیامهای لایه برنامه را بین نقاط پایانی برنامه منتقل می کند. پروتکل های لایه حمل و نقل متداول عبارتند از TCP (که سرویس های اتصال گرا را به برنامه های خود ارائه می دهد) و UDP (که سرویس های بدون اتصال به برنامه های آن ارائه می دهد). لایه شبکه بلافاصله بعد از آن می آید. این پروتکل مسئول انتقال بسته های لایه شبکه یا داده های داده از یک میزبان به میزبان دیگر است. در نهایت ، لایه دسترسی شبکه مراقبت از انتقال در سراسر پیوندهای ارتباطی را بر عهده دارد. هنگامی که سرور بسته را دریافت می کند ، کل فرایند به صورت معکوس (از بالا به بالا) انجام می شود تا بسته ها به تصویر اصلی تبدیل شوند.

تبدیل داده ها بین سیستم های پایانی

من هر لایه را به همراه سایر موضوعات مربوطه ، در وبلاگ های آینده با جزئیات بیشتری پوشش خواهم داد.

مبانی آدرس های IP در شبکه های کامپیوتری

مبانی آدرس های IP در شبکه های کامپیوتری

هر دستگاه متصل به اینترنت دارای یک شناسه منحصر به فرد است. امروزه اکثر شبکه ها ، از جمله تمام رایانه های موجود در اینترنت ، از TCP/IP به عنوان استانداردی برای برقراری ارتباط در شبکه استفاده می کنند. در پروتکل TCP/IP ، این شناسه منحصر به فرد آدرس IP است. دو نوع آدرس IP عبارتند از: IPv4 و IPv6. آدرس IPv4 با چهار عدد که با نقطه از هم جدا شده اند بیان می شود. هر عدد نمایندگی اعشاری (پایه 10) برای یک عدد باینری هشت رقمی (پایه 2) است که به آن اکتت نیز گفته می شود.

IPv6 از 128 بیت دودویی برای ایجاد یک آدرس منحصر به فرد در شبکه استفاده می کند. یک آدرس IPv6 توسط هشت گروه از اعداد هگزادسیمال (پایه 16) با کولون ها جدا شده است. گروههایی از اعداد که حاوی تمام صفرها هستند غالباً برای صرفه جویی در فضا حذف می شوند و یک جداکننده بزرگ برای نشان دادن فاصله ایجاد می کند.

فضای IPv6 بسیار بزرگتر از فضای IPv4 به دلیل استفاده از هگزادسیمال و همچنین داشتن 8 گروه است. اکثر دستگاه ها از IPv4 استفاده می کنند. با این حال ، به دلیل ظهور دستگاه های IoT و تقاضای بیشتر برای آدرس های IP ، دستگاه های بیشتری IPv6 را می پذیرند.

Static vs Dynamic

رایانه شما چگونه آدرس IP خود را دریافت می کند؟ یک آدرس IP می تواند پویا یا استاتیک باشد.

آدرس استاتیکی است که خودتان با ویرایش تنظیمات شبکه رایانه خود پیکربندی می کنید. این نوع آدرس ها نادر است و اگر از آن بدون درک خوب TCP/IP استفاده کنید ، می تواند مشکلات شبکه ایجاد کند.

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

کلاس های IP

معمولاً فضای IPv4 به ما اجازه می دهد بین 0.0.0.0 تا 255.255.255.255 آدرس داشته باشیم. با این حال ، برخی از اعداد در آن محدوده برای اهداف خاصی در شبکه های TCP/IP محفوظ است. این رزروها توسط مرجع آدرس دهی TCP/IP ، مرجع شماره اختصاص داده اینترنت (IANA) به رسمیت شناخته می شود. چهار رزرو خاص شامل موارد زیر است:

0.0.0.0 - این نشان دهنده شبکه پیش فرض است که مفهوم انتزاعی فقط اتصال به شبکه TCP/IP است. 255.255.255.255 - این آدرس مختص پخش شبکه یا پیام هایی است که باید به تمام رایانه های موجود در شبکه ارسال شود. 127.0.0.1 - این آدرس loopback نامیده می شود ، به این معنی که رایانه شما می تواند خود را تشخیص دهد ، خواه ناخواه آدرس IP اختصاصی دارد. 169.254.0.1 تا 169.254.255.254 - این محدوده آدرس های خصوصی IP آدرس دهی (APIPA) است که به طور خودکار هنگام دریافت آدرس رایانه از سرور DHCP ناموفق تعیین می شود. < /uli>

رزرو آدرس IP دیگر برای کلاس های زیر شبکه است. زیر شبکه یک شبکه کوچکتر از رایانه ها است که از طریق روتر به شبکه بزرگتری متصل می شوند. زیر شبکه می تواند سیستم آدرس مخصوص به خود را داشته باشد ، بنابراین رایانه های موجود در یک زیر شبکه می توانند بدون ارسال داده به یکدیگر سریع ارتباط برقرار کنندشبکه بزرگتر یک روتر در یک شبکه TCP/IP ، از جمله اینترنت ، طوری پیکربندی شده است که یک یا چند زیر شبکه را تشخیص داده و ترافیک شبکه را به طور مناسب مسیریابی کند. آدرس های IP زیر برای زیر شبکه ها محفوظ است: 172.16.0.0 تا 172.31.255.255 - این در محدوده آدرس کلاس B از 128.0.0.0 تا 191.255.0.0 قرار می گیرد ، که در آن دو بیت اول 10. 192.168 است. 0.0 تا 192.168.255.255 - این محدوده در محدوده کلاس C از 192.0.0.0 تا 223.255.255.0 قرار دارد ، که در آن سه بیت اول 110 است. Multicast (قبلاً کلاس D نامیده می شد) - چهار بیت اول در آدرس 1110 ، با آدرسهای بین 224.0.0.0 تا 239.255.255.255. برای استفاده در آینده/تجربی (قبلاً کلاس E نامیده می شد) - آدرس 240.0.0.0 تا 254.255.255.254.

سه مورد اول (در کلاس های A ، B و C) بیشترین استفاده را در ایجاد زیر شبکه ها دارند. بعداً خواهیم دید که چگونه یک زیر شبکه از این آدرس ها استفاده می کند. IANA کاربردهای خاصی را برای آدرس های چند رسانه ای در سند RFC 5771 Engineering Engineering Task Force (IETF) بیان کرده است. با این حال ، از آنجا که این بلوک در سند 1989 خود RFC 1112 ذخیره شده است ، هدف یا برنامه ای برای آدرسهای کلاس E تعیین نکرده است. IPv6 ، اینترنت پر بود از این که آیا IANA باید کلاس E را برای استفاده عمومی منتشر کند. ) ، اطلاعات کاملی از اطلاعات آدرس IP خود را مشاهده خواهید کرد. من از قسمتی که به آن علاقه دارم ، اسکرین شات گرفته ام.

ipconfig جزئی خروجی آدرس IP: 192.168.1.69 ماسک زیر شبکه: 255.255.255.0 بیست و چهار بیت (سه اکتت) برای هویت شبکه ذخیره شده است هشت بیت (یک اکتت) برای گره ها محفوظ است هویت زیر شبکه بر اساس ماسک زیر شبکه (آدرس اول): 192.168.1.0 آدرس پخش رزرو شده برای زیر شبکه (آخرین آدرس ): 192.168.1.255 نمونه آدرسها در یک شبکه: 192.168.1.1 ، 192.168.1.103 آدرسهای نمونه در یک شبکه مشابه: 192.168.2.1 ، 192.168.2.103

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

در شرایط کنونی ، ماسک زیر شبکه 255.255.255.0 است که نشان می دهد 1 بایت برای میزبان اختصاص داده شده است. همچنین می تواند 255.255.0.0 (2 بای) و 255.0.0.0 (3 بایت) باشد.

تشخیص خطوط جاده با استفاده از تکنیک های پیشرفته بینایی کامپیوتر

تشخیص خطوط جاده با استفاده از تکنیک های پیشرفته بینایی کامپیوتر

اخیراً ، من بصورت تمام وقت روی پروژه هایم به عنوان تکمیل بخشی از برنامه Nanodegree مهندس خودران Udacity (گروه فوریه 2017) کار می کنم. چهارمین پروژه ، و مورد علاقه من ، این است که ما وظیفه داریم مرزهای خط جاده و شعاع انحنای آن را از طریق جریان ویدئوها مشخص کنیم. این ویدئوها از دوربینی که روی خودرو قرار داده شده گرفته شده است. در این مقاله ، من در مورد چیزهایی که در انجام این پروژه آموخته ام صحبت می کنم. "> اگر این مقاله به نوعی به شما کمک کرد ، در نظر داشته باشید که برای من قهوه بخرید :)

GITHUB LINK | گزارش کامل فنی

به طور خلاصه ، I ' مراحل زیر را برای انجام این کار انجام داده اید:

برای اعوجاج دوربین پیکسل های خط فیلتر دریافت "نمای آسمان" منحنی “Best-Fit” را تنظیم کنید خط را به تصویر "نمای خودرو"

1 بازگردانید. CALIBRATION CAMERA

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

< img src = "https://cdn-images-1.medium.com/max/426/1*sq1BRcJGSvm3fdxnbS08yw.png">

2. TRANSFORMATION چشم انداز

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

3. پیش بینی درجه و رنگ

برای برآورد خمیدگی جاده ، ما به تمام اطلاعات از تمام پیکسل های یک تصویر جاده نیاز نداریم. خطوط راه جاده از جریان ویدئو زرد و سفید است ، بنابراین ما می توانیم همه چیز را به جز رنگ زرد و سفید تصویر پنهان کنیم. به عنوان یک احتیاط اضافی ، زیرا ممکن است برخی از خطوط زرد و خطوط غیر خطی را مشاهده کنیم ، یا ممکن است خطوطی وجود داشته باشد که به طور مشخص زرد و سفید نیستند ، ما از آنچه اپراتور Sobel نامیده می شود استفاده می کنیم. یک اپراتور Sobel اساساً میزان تغییر ارزش (و جهت آن) را بین دو مکان تصویر اندازه گیری می کند. این همچنین از نظر فنی مشتق یا گرادیان نامیده می شود. در مورد این بعداً بیشتر

من رنگها را نشان دادمبا فرمت HSL مقدار Hue نشان دهنده تعداد رنگ درک شده بر اساس ترکیب قرمز ، سبز و آبی است. مقدار اشباع میزان میزان رنگ آمیزی یا کسل کننده بودن آن است. سبکی این است که رنگ چقدر به سفید نزدیکتر است. خطوط زرد به خوبی با ترکیبی از سبکی و اشباع بالای مقدار مشخص می شوند. خطوط سفید بدون در نظر گرفتن میزان اشباع و رنگ بسیار روشن می شوند.

من عملگر Sobel را به مقدار روشنایی تصویر اعمال کردم. ما از ترکیبی از آستانه شیب مولفه افقی ، بزرگی شیب و جهت شیب استفاده کردیم. من می خواهم مکان های گرادیان را که تغییر اندازه کافی چندانی ندارند ، کنار بگذارم. آستانه اندازه گرادیان و همچنین x جزء شیب کار خوبی را در این زمینه انجام می دهد. من فقط شیب های یک جهت خاص را در نظر می گیرم. کمی بالاتر از 0 درجه (یا حدود 0.7 در رادیان) ، و زیر 90 درجه (یا حدود 1.4 در رادیان). صفر دلالت بر خطوط افقی و نود خطوط عمودی دارد و خطوط ما (در نمای خودرو) بین آنها قرار دارد.

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

4. CURVE FITTING

ما می توانیم یک منحنی برای هر خط خط با یک تابع چند جمله ای درجه دوم x = y² + By + C قرار دهیم. ما باید ضرایب مربوط به هر خط [A ، B ، C] را پیدا کنیم. ما می توانیم از تابع داخلی polyfit () استفاده کنیم تنها کاری که باید انجام دهیم تغذیه نقاط آن است و ضرایب چند جمله ای از یک درجه مشخص از منحنی را که متناسب با نقاط تغذیه شده است ، بیرون می آورد.

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

< p> من می توانم یک "تکنیک پنجره کشویی" را انجام دهم - یکی از پنجره ها روی پنجره دیگر که از خطوط بالای قاب پیروی می کند. پیکسل های داخل یک "پنجره" به عنوان "پیکسل های مورد علاقه" علامت گذاری می شوند و به لیست نقاط در خط اضافه می شوند. ما مقادیر x این پیکسل ها را متوسط ​​می کنیم تا به خوبی نقطه پایه پنجره بعدی بالا را نشان دهیم. ما می توانیم این کار را بارها و بارها تکرار کنیم تا به بالای خط برسیم. به این ترتیب ما تمام پیکسل هایی را که به آن علاقه داریم جمع کرده ایم و به تابع polyfit () که ضرایب چند جمله ای درجه 2 را مشخص می کند ، تغذیه می کنیم. ما می توانیم شعاع انحنای هر خط را محاسبه کنیموقتی معادلات منحنی را می دانیم.

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

5. پروژه LANE برای مشاهده وسیله نقلیه

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

چون ما در حال حاضر پارامترهای منحنی خط خط را داریم نقاط منحنی ها و تابع fillPoly () برای کشیدن ناحیه خط روی تصویر. اکنون می توانیم اندازه گیری خود را در مسیر تصویر نشان دهیم. ما این را به زیبایی در یک عملکرد کوچک و شیک به نامbirdsEye.project ()

< /img>

خلاصه و بعد از اندیشه ها

بنابراین به طور خلاصه ، این تقریباً تمام مراحلی است که باید برای تشخیص خطوط خط انجام دهیم. ما همچنین می توانیم شعاع خمیدگی را تخمین زده و موقعیت خودرو را با توجه به هر یک از این خطوط خط تخمین بزنیم. ابتدا ، اعوجاج دوربین را تصحیح کردیم ، همه چیز را به جز پیکسل های خط خط پنهان کردیم. ما تصویر را به "نمای آسمان" تغییر دادیم و از این پیکسل های خط استفاده کردیم تا با استفاده از تکنیک "sliding-window" و تابع polyfit () بهترین منحنی را پیدا کنیم. ما همچنین می توانیم خطوط خمیده را برای نمای فوق العاده به تصویر "نمای خودرو" بازگردانیم :). منحنی که منطقی است من فکر می کنم هنوز باید تغییراتی ایجاد کنم تا شعاع تخمین خمیدگی بهتری حاصل شود. من همچنین فکر می کنم اگر بیشتر فکر کنم می توانم الگوریتم پنجره کشویی را با خواندن تمیزتری انجام دهم تا پیکسل های مورد علاقه هر خط را بدست آورم. به نظر می رسد کلاس Curves مسئول بسیاری از موارد است ، شاید بتوانم این را به چند کلاس کوچکتر تقسیم کنم. نکته دیگر این است که من فکر می کنم عملکرد پروژه () در کلاس BirdsEye من نامناسب است ، شاید من باید به جای درخواست ضرایب اتصالات منحنی ، خطوط خط خارج را محاسبه کنم ، تابع باید برای نمایش تصویر درخواست کند در عوض.

پیوند GITHUB | گزارش فنی کامل

اگر این مقاله به نوعی به شما کمک کرد ، برای من قهوه بخرید :)

راهنمای متقاضیان یادگیری عمیق با تمرکز بر دانش آموزان غیر کامپیوتر

راهنمای متقاضیان یادگیری عمیق با تمرکز بر دانش آموزان غیر کامپیوتر

منبع: https://imgur.com/gallery/ulEBFF

یک س veryال بسیار رایج که من دریافت می کنم این است ، "چگونه می توان با یادگیری عمیق شروع کرد؟". در حال حاضر ، در حال حاضر پاسخ های بسیار خوبی در مورد این موضوع مانند این و این وجود دارد (آنها منابع زیادی را ذکر کرده اند و شما قطعاً باید آنها را بررسی کنید). این فقط تلاشی است برای پاسخ به این س basedال بر اساس تجربه من ، ارائه یک مسیر دقیق تر و دقیق تر و سفری از طریق چالش های مختلفی که احساس کردم. این پست با آشنایی با مبانی علوم کامپیوتر و ریاضی شروع می شود ، از طریق شروع به یادگیری ماشین و یادگیری عمیق ، به تخصص و مشاوره در پروژه ، ساختن مشخصات خود ، شبکه و اهمیت و در نهایت با نکاتی که من به آنها می دادم پایان می یابد. خود جوانتر من.

دلیل اینکه عنوان عنوان می کند در درجه اول برای دانش آموزان غیر CS است زیرا آنها مانع ذاتی را در مسیر خود احساس می کنند و فقط به دلیل رشته تحصیلی خود در دانشگاه احساس محدودیت می کنند ، در حالی که تعداد زیادی منابع آنلاین در حال حاضر این مشکل را حذف کرده اند (تا حدی ، هنوز نمی توانید نمرات در رشته دانشگاهی خود را بهم بزنید ، نمی توانید).

مبانی علوم کامپیوتر و ریاضیات

اکنون بر هیچ کس پوشیده نیست که MOOC (دوره های آنلاین گسترده گسترده) مانند Coursera ، Udacity ، NPTEL ، Stanford Online & MIT Opencourseware چشم انداز آموزش را تغییر داده و دوره های مدارس فوق لیسانس را در دسترس مخاطبان گسترده تری قرار می دهد. آنها منبع اصلی یادگیری من برای موضوعات مختلف بوده اند و روش مبتنی بر تکلیف درک واضح تری از مفاهیم زیرین را تضمین می کند. من لیست دوره هایی را که توصیه می کنم به کسی که قبلاً چیزی به او آموزش نداده اند توصیه می کنم ، بنابراین با خیال راحت از دوره هایی که قبلاً با آنها آشنایی دارید صرف نظر کنید.

ریاضیات

دوره احتمال توسط دانشگاه هاروارد جبر خطی * آکادمی خان * ماهیت جبر خطی توسط 3Blue1Brown (کوتاه تر ، بصری تر) حساب دیفرانسیل * Calculus One توسط دانشگاه ایالتی اوهایو در Coursera * Essence of Calculus by 3Blue1Brown آمار توسط سباستین ترون در مورد Udacity

علوم کامپیوتر (نه برای برنامه نویسی رقابتی)

ساختارها و الگوریتم های داده * فیلم های دوره IIT دهلی (نظریه) * تخصص UC San Diego در Coursera (پیاده سازی) * InterviewBit (تمرین) سیستم عامل ها توسط UC Berkeley ریاضیات برای علوم کامپیوتر توسط MIT (برای علاقه مندان)

شروع کار با یادگیری ماشین و عمیق یادگیری < /h1>

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

بنیادها

یادگیری ماشین توسط دانشگاه استنفورد در Coursera و YouTube (CS 229) ، تدریس اندرو نگ. تخصص یادگیری عمیق توسط deeplearning.ai ، تدریس توسط اندرو نگ. آموزش عمیق عملی برای برنامه نویسان توسط fast.ai

دامنه خاص

یادگیری عمیق برای دید رایانه ای توسط دانشگاه استنفورد یادگیری عمیق برای زبان طبیعی پردازش توسط دانشگاه استنفورد یادگیری تقویتی توسط دیوید سیلور (UCL/DeepMind) یادگیری تقویت عمیقتوسط UC Berkeley

برنامه های پولی

مهندس اتومبیل خودران Nanodegree نانو درجه Robotics نانو درجه اتومبیل پرواز هوش مصنوعی نانو درجه

منابع آموزشی اضافی

کانال سراج راوال در YouTube (فیلم های هفتگی و چالش های کد نویسی) وبلاگ WildML کریستوفر وبلاگ Olah (بسیار مفید) وبلاگ Distill وبلاگ Andrew Trask وبلاگ تحقیقاتی Google وبلاگ OpenAI وبلاگ DeepMind کتاب یادگیری عمیق اخبار NLP- توسط سباستین رودر (http://newsletter.ruder.io/) inFERENCe- توسط فرنس هوسر (http://www.inference.vc/about/) BAIR - از UCB (http://bair.berkeley.edu/) offConvex - توسط موریز هاردت و دیگران (http://www.offconvex.org/) وبلاگ Otoro - توسط hardmaru— (http://blog.otoro.net/)

تخصص و مشاوره پروژه < /h1>

به من اعتماد کنید وقتی می گویم من در بسیاری از موارد دست خود را امتحان کرده ام ( بینایی رایانه ای ، پردازش زبان طبیعی ، تصویربرداری پزشکی ، ژنومیک) همانطور که من مجذوب هر چیزی و هر چیزی که این زمینه ارائه می دهد ، شدم. اما بزرگترین درسی که آموخته ام اهمیت تمرکز بر روی یک (دو ، حداکثر) چیز خاص است. من قبلاً به این موضوع اعتقاد نداشتم ، اما پس از انجام چندین کار ، برایم واضح است که اگر می خواهیم واقعاً به چیزی برسیم ، باید در یک کار صفر عمل کنیم و بهترین کار را انجام دهیم. قسمت سخت این است که نگذارید سر و صدا حواس شما را پرت کند. من این زمان را برای افزودن یک نقل قول که خلاصه ای از آنچه می خواهم بگویم ، اختصاص می دهم:

اکثر مردم آنچه را که می توانند در یک سال انجام دهند ، بیش از حد ارزیابی می کنند و آنچه را که در ده سال می توانند انجام دهند دست کم می گیرند. - بیل گیتس

در حال حاضر ، بهترین راه برای یادگیری چیزی ساختن چیزی است. نه تنها به شما در درک مفاهیم کمک می کند ، بلکه به رزومه شما نیز ارزش می بخشد (بیشتر در مورد ایجاد نمایه در بخش بعدی). منابع مختلفی برای دریافت پروژه ها وجود دارد و مطمئن شوید که در هر زمان یکی (حداکثر دو مورد) را انتخاب می کنید.

پروژه زیر نظر استاد: برای دانش آموزان ، این بهترین گزینه است. شما با مرور ادبیات بیانیه مشکل شروع می کنید ، که به شما طعم و مزه ای از تاریخ و پیشرفت های اخیر در حوزه مربوط می دهد. سپس ، ممکن است چیزی را که پروفسور در مورد آن فکر کرده است پیاده سازی کنید یا ممکن است چند بحث در مورد نحوه حل مشکل داشته باشید. در هر صورت ، فرصتهای یادگیری بسیار زیاد است و باید مطمئن باشید که صادقانه کار می کنید (برای کسانی که به راحتی حواسشان پرت می شود ، ایده خوبی می تواند رزرو یک مکان باشد ، مانند آزمایشگاهی که توسط استاد نظارت می شود ، جایی که روزانه به محل کار می روید). به سرانجام ، اگر پروفسور احساس کند که شما مشارکت خوبی داشته اید ، او با خوشحالی (در بیشتر موارد) به شما توصیه می کند و اعتبار اخلاق کاری شما از طرف پروفسور در حرفه حرفه ای و تحصیلی شما بسیار پیش می رود. مشارکت منبع باز: من از طرفداران بزرگ توسعه منبع باز هستم. بسیاری از چیزها در دنیای امروز ما بدون مشارکت منبع باز میلیون ها نفر در سراسر جهان وجود نداشت. من خودم یادگیری ماشین را با مشارکت در یادگیری اسکیت شروع کردم. این امر نه تنها مهارت های برنامه نویسی من را بسیار افزایش داد ، بلکه مفاهیم آموخته شده من را نیز بسیار شفاف تر کرد. همچنین ، شرکت ها برای کارهای منبع باز ارزش زیادی قائل هستند ، تقریباً در صفحه مشاغل هر شرکتپیوندی به نمایه Github شما می پرسد. به این پست و این صفحه HackerEarth نگاهی بیندازید که چگونه می توانید با مشارکت منبع باز شروع کنید. این نیز می تواند یک خواندن خوب باشد - دانش آموزان و منبع باز: 3 پیش فرض رایج. کارآموزی از راه دور: این گزینه شما است در صورتی که اولین مورد به نتیجه نرسد. وب سایت های زیادی مانند Internshala & AngelList وجود دارد (به نظر من بهترین آنها) که در آن ها قطعاً می توانید استارتاپ هایی را پیدا کنید که برای مناطق مورد علاقه خود کار از راه دور ارائه می دهند. انگیزه شما در این برهه از زمان نباید کسب درآمد باشد ، بلکه باید بیشتر بر روی یادگیری متمرکز باشد. یک نکته خوب در مورد درخواست برای استارتاپ ها این است که می توانید از بنیانگذاران خود جستجو کرده و مستقیماً (از طریق ایمیل یا LinkedIn) در مورد برنامه خود با آنها تماس بگیرید تا روند را تسریع کنید.

ایجاد نمایه ، شبکه و اهمیت

این نکته باید بسیار تأکید شود. مشخصات شما مهم است برای دانش آموزان ، درست است که در موقعیت های شما چندان اهمیتی نخواهد داشت ، اما پس از فارغ التحصیلی و تمایل به تغییر شرکت چه می شود؟ این تصور اشتباه وجود دارد که ساختن مشخصات شما فقط برای یافتن شغل است. خیلی بیشتر است شما می توانید خود را در اینترنت ، کل سابقه خود و شخصی که به عنوان یک شخص هستید قرار دهید. نمایه شما یک لایه اصالت به حضور آنلاین شما می افزاید و دسترسی افراد با شما را بسیار آسان می کند. 3 مورد وجود دارد که شما باید از آنها مراقبت کنید - LinkedIn ، نمایه های Github و وب سایت شما. مال منم همینطور. یک وب سایت شخصی از یک الگوی کلی پیروی می کند و شما می توانید برای سرفصل ها و محتوایی که باید در هر عنوان قرار داده شود به این قسمت مراجعه کنید. شبکه اجتماعی است ، اما یک شبکه اجتماعی حرفه ای است. شما این فرصت را پیدا می کنید که با افراد همفکر خود در آنجا ارتباط برقرار کنید ، ایده های خود را به اشتراک بگذارید ، برای مشاغل درخواست دهید و اساساً ، ارتباطات خود را تقویت کنید. افرادی که بیشترین فعالیت را در LinkedIn دارند دائماً محتوای ارزشمندی ایجاد می کنند و هر دقیقه صرف شده در LinkedIn مفید است (تا حدی). در هر درگاه درخواست کار ، از شما خواسته می شود که پیوند نمایه LinkedIn خود را ارائه دهید. یک USP بزرگ LinkedIn قابلیت جستجوی عالی است. شما به معنای واقعی کلمه می توانید تمام فارغ التحصیلان خود را در آنجا جستجو کنید و حتی افرادی را که در یک شرکت /موسسه کار می کنند بررسی کنید. نمایه LinkedIn شما به شما این امکان را می دهد که کل سابقه خود را مشخص کنید و آنها اخیراً شروع به مطابقت شما با مربیان احتمالی کرده اند. برای اطلاع از نکات مربوط به بهینه سازی پروفایل LinkedIn خود به اینجا مراجعه کنید.

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

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

در نهایت ، موضوع شبکه بسیار کمتر از آنچه که باید صحبت می شود. باز هم ، این می تواند یک پست جداگانه داشته باشد ، اما من سعی می کنم در اینجا خلاصه کنم. شبکه به دنبال استخدام احتمالی بعدی شما نیست. این در حال ایجاد روابط واقعی با افرادی است که با آنها ارتباط برقرار می کنید. امروزه بسیاری از ما بر تفکر "چه چیزی برای من خوب است" متمرکز شده ایم و به مشخصات یک شخص بیشتر از شخص او اهمیت می دهیم. همیشه مراقب باشید تا با هر کسی و هر کسی که ملاقات می کنید (حتی به صورت مجازی) روابط ثمربخش داشته باشید. آنها نه تنها می توانند برای شما ضمانت کنند که واقعاً به کمک آنها نیاز دارید ، بلکه این در طبیعت انسان است که احساس خوشبختی و رضایت داشته باشید تا واقعاً با همسالان خود ارتباط عمیقی برقرار کنید. من در سال 2015 در استارتاپی به نام Twango (فریاد تیم اگر کسی در حال خواندن آن بود) کارآموزی کرده بودم و اگرچه کارآموزی فقط یک ماه بود ، اما پیوندی که ما با هم داشتیم تا به امروز ادامه دارد و من هنوز توصیه نامه ای برای کارم در آنجا دریافت می کنم. آن را بخواهید یک نکته کوچک: وقتی از نظر فیزیکی با افراد ملاقات می کنید یا با شخصی در LinkedIn ارتباط برقرار می کنید ، به دنبال راه هایی نباشید که طرف مقابل می تواند به شما کمک کند. در عوض ، اطمینان حاصل کنید که در صورت هرگونه کمک مورد نیاز ، به شخص اطلاع دهید که شما آنجا هستید. سرانجام ، این ویدئو وقتی اولین بار آن را دیدم واقعاً دیدگاه من را تغییر داد و من درس هایی را که از آن آموختم ، همیشه به خودم یادآوری می کنم: > روی چیزهای کمتر تمرکز کنید شبکه بیشتر (بیشتر بدهید) بیشتر همدل باشید بیشتر کمک کنید شما هم فکر نکنید خیلی وظیفه خود را انجام دهید ، بقیه در جای خود قرار می گیرند

نتیجه گیری

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

سلام!

من فکر می کنم این امکان وجود دارد که مردم عادی انتخاب کنند که فوق العاده باشند - ایلان ماسک

> اگر چیزی هست که شما بخواهید با من در میان بگذارید یا به من بدهید نوعی بازخورد در مورد نوشتار/افکار من ، دوست دارم آن را از زبان شما بشنوم. با خیال راحت با من در توییتر ، LinkedIn یامن را در Github دنبال کنید برای اینکه از پست های من مطلع شوید ، من را در Medium دنبال کنید.

هوش مصنوعی قابل توضیح

هوش مصنوعی قابل توضیح

تفسیر مدل های یادگیری عمیق برای بینایی رایانه ای

تفسیر مدل های شبکه عصبی متحرک ساخته شده با TensorFlow

یک مدل یادگیری عمیق واقعاً چه چیزی را می بیند؟

مقدمه

هوش مصنوعی (AI) دیگر حوزه ای نیست که فقط به مقالات پژوهشی و دانشگاهی محدود شود. مشاغل و…