چگونه برنامه نویسی کامپیوتری مقدماتی باید آموزش داده شود

چگونه برنامه نویسی کامپیوتری مقدماتی باید آموزش داده شود

نکته: این امر با نوشتن سلام نیست ، جهان! first

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

نظریه آموزش برنامه نویسی کامپیوتر

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

بیایید این مراحل را بیشتر تقسیم کنید تا ببینید در هر مرحله چه کارهایی باید انجام شود.

ردیابی متغیرها

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

 const int SIZE = 5؛
نمرات int [SIZE] = {71 ، 82 ، 77 ، 92 ، 84} ؛
int کل = 0؛
برای (int i = 0 ؛ i  

اثری که دانش آموزان می نویسند به این شکل است:

SIZE: 5

i: 0، 1، 2، 3، 4، 5

مجموع: 0 ، 71 ، 153 ، 230 ، 332 ، 416

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

نوشتن کد برنامه

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

نمونه ای از مقاله Xie ، et.al. در حال توضیح نحوه چگونگی مبادله مقادیر دو متغیر و تبدیل آن به یک برنامه است. توضیحات آنها به این شکل است:

متغیر x را تعریف کنید. آن را روی 1 تنظیم کنید. متغیر y را تعریف کنید. آن را روی 2 تنظیم کنید. p> دانش آموزی که نحو اصلی نوشتن دستورات تکلیف را درک می کند ، باید بتواند این توصیف را به یک برنامه کامل تبدیل کند ، همانطور که در زیر نشان داده شده است:

 int x = 1؛
int y = 2 ؛
int temp = x؛
x = y ؛
y = temp؛ 

مشکل اکثر برنامه نویسی این است که انتظار می رود دانش آموزان بتوانند بدون تمرین لازم برای یادگیری خواندن و درک کد ابتدا کد بنویسند.

خواندن الگوها

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

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

نوشتن الگوها

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

چرا دستورالعمل برنامه نویسی فعلی خوب کار نمی کند

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

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

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

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

اگر به تنهایی برنامه نویسی می آموزید

می توانید این دنباله های موضوعات را دنبال کنید اگر برنامه نویسی کامپیوتر را به تنهایی یاد می گیرید و نه در کلاس درس. برای کسب اطلاعات بیشتر در مورد ردیابی متغیر ، در اینجا یک سایت عالی از بخش علوم کامپیوتر دانشگاه ویسکانسین وجود دارد: http://bit.ly/2OogxOg. بسیاری از وب سایت ها برای آموزش نحوه نوشتن کد به افراد اختصاص داده شده است. بسیاری از آنها به شما امکان می دهند در محیطی تحت وب کار کنید تا بتوانید با اجرای کد خود در مرورگر ، بازخورد فوری دریافت کنید. مدتی را در w3schools.com یا tutorialspoint.com بگذرانید تا ببینید آیا آن سایت ها را دوست دارید یا فقط به سلیقه خود یکی دیگر را جستجو کنید. در مورد کار با قالب ها ، مقاله Xie ، et.al. اطلاعات مقدماتی بسیار خوبی در مورد استفاده از الگوها برای آموزش برنامه نویسی کامپیوتر ارائه می دهد. اگر بسیار شجاع هستید ، کتاب Designing Pascal Solutions: A Case Study Approach ، نوشته مایکل کلنسی و مارسیا لین ، الگوهای زیادی را برای برنامه نویسان مقدماتی ارائه می دهد. مشکل این است که این کتاب برای زبان پاسکال نوشته شده است ، بنابراین اگر سابقه برنامه نویسی نداشته باشید ، ممکن است دنبال کردن آن دشوار باشد. من در مورد استفاده از الگوها برای یادگیری برنامه نویسی کامپیوتر در وبلاگم بیشتر خواهم نوشتآینده.

یادگیری برنامه نویسی می تواند راحت تر باشد

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

در ابتدا در https://thelearningprogrammer.com در 4 فوریه 2020 منتشر شد.

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

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

در بخش مبتدیان ما ، موضوع به خطر انداختن حریم خصوصی در دو دستگاه پرکاربرد شما را لمس کردیم: تلفن و رایانه شما. در مقاله ما تلفن شما به طور خاص در مورد یک تلفن صحبت کردیم و از آنجا که تلفن های هوشمند امروزی تقریباً رایانه های کوچکی هستند ، بیشتر این موارد در مورد این مقاله نیز صدق می کند. بردارها نیز متنوع هستند. فروشگاه های برنامه های غیر رسمی و وب سایت ها نیز خطرناک هستند. هیچ کس اعتبار و صداقت را در آنجا بررسی نمی کند و مهاجمان اغلب از این امکان به شدت استفاده می کنند. پایبندی به فروشگاه های رسمی برنامه و وب سایت های شرکت برای هر سیستم عامل ضروری است. برنامه های ترک خورده منبع دیگری برای به خطر انداختن حریم خصوصی هستند. ترک ها اغلب شامل بدافزارهایی هستند که توسط آنتی ویروس و نرم افزار ضد ویروس قابل تشخیص نیستند و به مهاجمان این امکان را می دهد که حتی دستگاه شما را تحت کنترل خود درآورند و با شما استراق سمع کنند. این امر به ویژه برای سیستم عامل های Windows و Mac OS X بسیار مهم است. استفاده از روش های حفاظتی مدرن مانند Secure Boot ضروری است زیرا آنها از کامپیوتر شما در حین دنباله بوت محافظت می کنند. Wi-Fi رایگان هزینه دارد-باز کردن شبکه Wi-Fi به این معنی است که داده های ارسال شده رمزگذاری نشده اند و مهاجمان ممکن است بتوانند اطلاعات حساس مهم مانند رمزهای عبور را استراق سمع و ربوده کنند و نرم افزارهای معمولی مانند مرورگرها می توانند مورد استفاده قرار گیرند حریم خصوصی خود را نیز تغییر دهید این امر برای رایانه ها بسیار مهم است زیرا آنها دستگاههای اصلی فعالیتهای مرور روزانه اینترنت ما هستند. بسیاری از شرکت ها از داده های شناسایی منحصر به فرد ارسال شده توسط مرورگر شما برای ردیابی و ارائه محتوای مربوطه استفاده می کنند. اطلاعات بیشتر در مورد آنها را می توانید در بخش ابزار ما بخوانید: مرورگر و زیر در بخش خواندن بیشتر.

فعال کردن رمزگذاری کامل دیسک یکی دیگر از راه های عالی برای محافظت در برابر نشت داده ها است. هر سیستم عامل چنین امکانی را ارائه می دهد و می توانید برای این کار از BitLocker در Windows و FileVault در Mac OS X استفاده کنید. طعم های لینوکس نیز امکانات متنوعی را در این زمینه ارائه می دهد و شما همیشه می توانید از راه حل چند پلتفرمی مانند VeraCrypt استفاده کنید ، که می تواند برای رمزنگاری فایل های جداگانه ، ظروف یا ایجاد حجم های رمزگذاری شده نیز استفاده شود.

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

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

ابتدا در https://academy.horizen.global منتشر شده است.

برنامه های بینایی رایانه ای در اتومبیل های خودران

برنامه های بینایی رایانه ای در اتومبیل های خودران

نسخه به روز شده این مقاله در https://www.thinkautonomous.ai/blog/؟p=computer-vision-applications-in منتشر شده است اتومبیل های خودران این مقاله تجدید نظر از مقاله قبلی من AI ... و خودرو به صورت خودمختار رفت و در آنجا رویکردهایی را برای یافتن خطوط و موانع در جاده شرح دادم. من می خواهم از تجربیات اخیر خود در این زمینه برای افزودن به آنچه قبلاً در مورد هوش مصنوعی در وسایل نقلیه خودران نوشتم و همچنین در مورد دیگر ، پیشرفته ترین کاربردهای بینایی رایانه در وسایل نقلیه خودران بحث کرد.

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

مقالات پرطرفدار هوش مصنوعی:

1. مبانی شبکه عصبی 2. ترکیدن حباب اصطلاحات اصطلاحاتی - آموزش عمیق 3. چگونه می توانیم کیفیت داده های خود را ارتقا دهیم؟ 4. یادگیری ماشین با استفاده از رگرسیون لجستیک در پایتون با کد

AI ... و وسیله نقلیه خودکار رفت

این اولین مقاله را هنگام یادگیری اتومبیل های خودران با Udacity به عنوان بخشی از نانو درجه آنها نوشتم. برنامه.

در این مقاله ، من 3 مشکل ادراک عمده را برای حل با استفاده از بینایی رایانه ذکر کردم. /uli> محاسبه زاویه فرمان

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

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

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

یادگیری ماشین برای تشخیص وسیله نقلیه >

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

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

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

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

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

مقاله قبلی من از شبکه های عصبی متحد (CNNs) به عنوان روشی جدید برای حل مشکلات بینایی رایانه یاد کرد.

< p> CNN ها معماری خاصی از شبکه های عصبی هستند که می توانند با استفاده از Convolutions شکل های خاصی (مانند اتومبیل ، عابر پیاده و ...) را بیاموزند. از داده های بیشتری نسبت به الگوریتم های یادگیری ماشین استفاده می کند ، و آموزش سخت تر است ، اما نتایج بسیار بهتر است.

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

تشخیص خودرو

هنگام تشخیص موانع ، نتیجه به طور کلی فراتر از خروج ساده خودرو یا عدم رانندگی است. ما به مختصات کادر محدود کننده (x1 ، y1 ، x2 ، y2) نیاز داریم که قبلاً با پنجره کشویی داشتیم. ما به اطمینان نمره (تا آستانه مقادیر اطمینان پایین) و کلاس (خودرو ، عابر پیاده ،…) که الگوریتم SVM بدست آورده ایم نیاز داریم. در انتهای شبکه عصبی.

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

معماری CNN برای تشخیص موانع < /img> در روش یادگیری ماشین سنتی ، یک نورون خروجی وجود دارد که بسته به اینکه آیا اتومبیل در پنجره خاصی وجود دارد یا خیر ، مقدار 0 یا 1 را می گیرد. یادگیری خروجی جعبه محدود به طور مستقیم امکان محاسبه بسیار سریعتر و نتایج دقیق تر را می دهد. الگوریتم هایی مانند YOLO امروزه به عنوان پیشرفته ترین هنر در نظر گرفته می شوند ، آنها می توانند با فرکانس بسیار بالا (بیش از 50 فریم بر ثانیه) اجرا کنند و تقریباً هرگز موانع را از دست ندهند.

تشخیص خطوط مسیر

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

نقش ایجاد ضرایب معادله خط خط است. خطوط خط را می توان با معادلات ضرایب درجه اول ، دوم یا سوم تقریب زد. معادله مرتبه اول به سادگی ax+b (یک خط مستقیم) است در حالی که ابعاد بالاتر اجازه ایجاد منحنی ها را می دهد.

خطوط 1D در مقابل خط دو بعدی

در CNN ، لایه های کانولوشن ویژگی ها را می آموزند ، در حالی که آخرین لایه ها ضرایب خط (a ، b و ج).

این ممکن است ساده به نظر برسد: چند لایه پیچشی تنظیم کنید ، چند لایه متراکم تنظیم کنید و معماری خروجی را تنها با 3 نورون برای ضرایب a ، b و c تنظیم کنید.

< در واقع ، این راه سخت تر است. مجموعه داده ها همیشه ضرایب خطوط خط را ذکر نمی کنند و همچنین ممکن است بخواهیم نوع خط (خط کشی ، جامد ،…) و همچنین اینکه آیا خط متعلق به خط وسیله نقلیه ego است یا به یک خط مجاور تشخیص دهیم. ویژگیهای متعددی وجود دارد که ممکن است بخواهیم داشته باشیم و آموزش یک شبکه عصبی واحد بسیار دشوار و تعمیم آن دشوارتر است.

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

یک رنگ در هر کلاس

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

نمونه تصویر خروجی

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

معماری U-Netبرای تشخیص خطوط

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

موارد دیگر برای یادگیری عمیق در اتومبیل های خودران-ردیابی

I اخیراً مقاله ای منتشر شد که بسیار مورد توجه قرار گرفت: چشم انداز رایانه ای برای ردیابی.

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

در اینجا ، جعبه های محدود کننده مانند یک روش کلاسیک YOLO رنگ ها را از قاب 1 به قاب 2 تغییر نمی دهند. اتومبیل سمت راست دارای یک جعبه محدود مشکی در قاب 1 و در قاب 2 به دلیل ارتباط است. اشیاء همرنگ جعبه های رنگی یکسانی ندارند.

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

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

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

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

به نظر می رسد که از مختصات پیکسل این امر بسیار دشوار است:

بدست آوردن x و y به این معنی است که ما می توانیم فاصله خودرو را نسبت به دوربین خود دقیق و دقیق داشته باشیم فاصله جانبی و طولی ، از مختصات جعبه محدود. بدست آوردن z به معنای آن است که ما برای مانع نیز یک عدد بالا داریم ، که فقط از کلاس جسم قابل تخمین است. جعبه های محدود کننده 2 بعدی در مقابل 3D (منبع)

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

معماری شبکه عصبی برای برآورد سه بعدی

در این رویکرد ، Deep Learning مجدداً برای یادگیری ویژگی (ابعاد ، زاویه ، اطمینان) استفاده می شود. سپس از هندسه برای ترجمه اطلاعات به جهان سه بعدی استفاده می شود.

داشتن جعبه های محدود کننده سه بعدی می تواند امکان مطابقت سه بعدی با سنسورهای سه بعدی مانند LiDAR ها را فراهم کند. این اجازه می دهد تا درک بهتری از جهت یک وسیله نقلیه و سپس پیش بینی رفتار آن داشته باشید. جعبه های دوبعدی اغلب هنگامی ارائه می شود که مردم تکنولوژی اتومبیل های خودران را بیاموزند. با این حال،جعبه های محدود کننده سه بعدی بسیار بیشتر با مشکل مرتبط هستند.

تشخیص فضای آزاد

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

معماری شبیه بخش تقسیم بندی با مشکل تشخیص خط است.

SegNet

روش رمزگذار-رمزگشایی مشابه روش U-Net است. رمزگذار به معنای پیچیدگی و ویژگی های یادگیری ، رمزگشایی به معنی بازسازی نقشه ویژگی ها است.

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

نتیجه گیری

ما در مورد روش های متعدد استفاده از Computer Vision و Deep Learning در خودروهای خودران بحث کرده ایم. هدف همیشه یکسان است ؛ پیدا کردن موانع و خطوط ، برآورد سرعت ، جهت و موقعیت. یادگیری عمیق از بسیاری از تکنیکهایی که به راحتی در دسترس هستند مانند دید رایانه ای سنتی و یادگیری ماشین پیشی می گیرد. این تکنیک ها هنوز برای تکمیل یادگیری عمیق در کار نهایی مورد نیاز هستند. رویکردها همیشه در حال تغییر هستند و اگر نمی دانید چگونه با استفاده از تکنیک های جدید به طور مکرر سازگار شوید ، چالش برانگیز است. در نهایت ، دوربین ها قادر به انجام بسیاری از کارها هستند. یادگیری عمیق تقریباً هرگز تنها نیست. همیشه الگوریتم هایی وجود دارد که راه حل را قوی تر می کند یا نتیجه شبکه های عصبی را با خروجی مورد نظر ما تطبیق می دهد. ما می توانیم راه حل های بیشتری مانند برآورد فاصله با استفاده از اندازه ها و کلاسهای محدوده یا ترکیب ردیابی در طول زمان تصور کنیم. با جعبه محدود 3D برای ایجاد یک ردیاب موانع 3D با استفاده از یک دوربین تک چشمی. استفاده از زمان عامل مهمی است زیرا ممکن است بخواهیم رفتارهای دیگر وسایل نقلیه را در آینده پیش بینی کنیم. camera. قبل از نتیجه گیری ، می خواهم شما را به لیست پستی خصوصی دعوت کنم. هر روز ، ایمیلی ارسال می کنم که در آن تجربه خود را در زمینه هوش مصنوعی و فناوری خودمختار به اشتراک می گذارم. از فردا ، شما مشاوره های شغلی تغییر دهنده زندگی ، محتوای فنی مانند این یا تخفیف برای دوره های من دریافت خواهید کرد. در اینجا مشترک شوید ، امیدوارم شما را در ایمیل فردا ببینم. جرمی کوهن. (منبع)

فراموش نکنید که your خود را به ما بدهید!

بینایی رایانه ای در تسلا

بینایی رایانه ای در تسلا

این مقاله در https://www.thinkautonomous.ai/blog/؟p=computer-vision-at-tesla عکس توسط Vlad Tchompalov در Unsplash

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

به عنوان مثال ، شما ممکن است در یک دوره آنلاین نحوه اجرای یک شبکه YOLO را بیاموزید ، اما یک مورد استفاده در دنیای واقعی ممکن است 7 شبکه YOLO را در GPU های توزیع شده درخواست کند. و معماری HydraNet این چه عجایبی است؟ ما همه اینها را در Coursera نیاموختیم!

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

امیدوارم متوجه شوید که هیچ چیز را نمی توانید درک کنید ، حداقل از یک مفهوم سطح بالا. < /p>

عمیقاً در زیر فرو می رویم:

وظایف - تسلا چه می کند؟ سنسورها - خلبان خودکار از چه حسگرهایی استفاده می کند؟ شبکه های عصبی - تسلا چگونه شبکه های عصبی خود را معماری می کند؟ آموزش - آموزش شبکه چگونه اتفاق می افتد؟ مرور کامل پشته - مرور کلی سیستم کامل آنها.

به طور خاص ، ما به یکی از نگرانی های مهم تسلا می پردازیم: 50 کار باید روی رایانه انجام شود ، به طور همزمان ، در رایانه ای که فضای زیادی را اشغال نمی کند.

رایانه FSD

پس بیایید به آن برسیم!

قبل از آن

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

1. وظایف

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

دستیابی تسلا به سطح 5 برابر است با راجر بانیستر ورزشکار که برای اولین بار یک مایل را در 4 دقیقه می دوید. این کار کاملاً غیرممکن بود ، تا اینکه راجر بنیستر آن را انجام داد ، و سپس همه ناگهان دنبال کردند.

یک وسیله نقلیه تسلا چه کار می کند؟

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

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

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

2. حسگرها

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

نمای از 8 دوربین

8 دوربینبا RADAR های اضافی ترکیب می شوند تا بتوانند موانع را به طور م locateثر شناسایی و آنها را شناسایی کنند. RADAR ها حسگرهای مکمل بسیار خوبی هستند زیرا می توانند سرعتها را مستقیماً تخمین بزنند. می توانید در مقاله RADAR من بیشتر بیاموزید.

این تصاویر دوربین چگونه پردازش می شوند؟ استفاده از شبکه های عصبی.

نگران از دست دادن آخرین اخبار ML نباشید. مشترک شوید و اجازه دهید آن را پیدا کنیم و هر هفته با شما و 14000 نفر دیگر به اشتراک بگذاریم.

3. شبکه های عصبی

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

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

شبکه عصبی تسلا < /img>

شبکه های عصبی با استفاده از PyTorch ، یک چارچوب یادگیری عمیق که ممکن است با آن آشنا باشید ، آموزش می بینند.

هر تصویر با ابعاد (1280 ، 960 ، 3) ، از طریق این عصب خاص منتقل می شود. شبکه. ستون فقرات یک ResNet 50 اصلاح شده است - اصلاح خاص استفاده از "Dilated Convolutions" است. سرها بر اساس تقسیم بندی معنایی - معماری FPN/DeepLab/UNet به با این حال ، به نظر نمی رسد "پایان کار" باشد زیرا تبدیل بین پیکسل های دو بعدی و سه بعدی مستعد خطا است. من هر دو این مفاهیم را در درس خود آموزش می دهم SEGMENTATION IMAGE: تکنیک های پیشرفته برای کامپیوترهای مشتاق کارشناسان بینایی من این دوره را برای همه کسانی که می دانند چگونه backpropagation کار می کند طراحی کردم-این تنها شرط لازم در کنار پایتون مبتدی است.

چیز دیگری که تسلا استفاده می کند نمای چشم پرنده است

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

احضار هوشمند در تسلا با استفاده از نمای چشم پرنده

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

برآورد عمق از 2 دوربین با استفاده از این دید استریو و ادغام سنسور ، تسلا نیازی به LiDAR ندارد. آنها می توانند برآورد فاصله را تنها بر اساس این دو دوربین انجام دهند. تنها ترفند این است که دوربین ها از لنزهای یکسان استفاده نمی کنند: در سمت راست ، فاصله های بیشتر بسیار نزدیک تر به نظر می رسند.

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

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

problem مشکل اصلی تسلا این است که از 8 دوربین ، 16 مرحله زمانی (مکرر معماری) ، و اندازه دسته ای 32.

به این معنی است که برای هر پاس رو به جلو ، 4096 تصویر پردازش می شود. من در مورد شما اطلاعی ندارم ، اما MacBook Pro من هرگز نمی تواند از این پشتیبانی کند. در واقع ، GPU نمی تواند این کار را انجام دهد - نهحتی 2 GPU!

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

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

8 شبکه عصبی اصلی مورد استفاده تسلا

4. آموزش

آموزش شبکه با استفاده از PyTorch انجام می شود. چندین کار مورد نیاز است و آموزش بر روی 48 سر شبکه عصبی می تواند زمان زیادی را صرف کند. در حقیقت ، آموزش برای تکمیل به 70،000 ساعت GPU نیاز دارد. تقریباً 8 سال است.

تسلا در حال تغییر حالت آموزش از "رفت و برگشت" به "استخر کارگران" است. در اینجا ایده وجود دارد: در سمت چپ - گزینه طولانی و غیرممکن. در وسط و راست ، گزینه های جایگزین مورد استفاده آنها.

من جزئیات زیادی برای به اشتراک گذاشتن آن قسمت ندارم ، اما اساساً ، این مجموعه از کارگران به موازات وظایف سریعتر شدن شبکه به هم نزدیک می شوند.

5. بررسی کامل پشته

امیدوارم اکنون ایده روشنی از نحوه کار در آنجا داشته باشید. درک آن غیرممکن نیست ، اما قطعاً متفاوت از چیزی است که ممکن است به آن عادت کرده باشیم. چرا؟ از آنجا که این شامل مشکلات بسیار پیچیده ای در دنیای واقعی است.

در یک دنیای کامل ، شما نیازی به معماری HydraNet ندارید-فقط از یک شبکه عصبی در هر تصویر و در هر کار استفاده کنید ... اما امروزه ، انجام این کار غیرممکن است.

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

این حلقه کامل است. پشته کامل تسلا

بیایید پشته را از پایین به بالا تعریف کنیم.

داده-تسلا داده ها را از وسایل نقلیه و تیمی برچسب می زنند. GPU Cluster - تسلا از چندین GPU (که خوشه ای نامیده می شود) برای آموزش شبکه های عصبی آنها و اجرای آنها استفاده می کند. DOJO - تسلا از چیزی استفاده می کند که آنها دوجو می نامند فقط بخشی از کل معماری را برای یک کار خاص آموزش دهد. این بسیار شبیه به آنچه آنها در استنباط انجام می دهند است. آموزش توزیع شده PyTorch - تسلا از PyTorch برای آموزش استفاده می کند. ارزیابی - تسلا آموزش شبکه را با استفاده از توابع ضرر ارزیابی می کند. استنتاج ابری - پردازش ابری به تسلا اجازه می دهد تا ناوگان خودروهای خود را به طور همزمان بهبود بخشد. استنتاجFSD - تسلا رایانه خود را ساخته است که دارای واحد پردازش عصبی (NPU) و GPU های خود برای استنتاج است. حالت سایه-تسلا نتایج و داده های خودروها را جمع آوری کرده و آنها را با پیش بینی هایی که برای بهبود حاشیه نویسی مقایسه می شود مقایسه می کند: این یک حلقه بسته است!

⏩ در اینجا ویدئویی است که همه چیز را شرح می دهد. فقط تصاویری را که به شما نشان دادم نوشتم و جمع آوری کردم.

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

در اینجا خلاصه ای از همه مواردی است که ما در مورد آن بحث کردیم:

تسلا همزمان روی 50 وظیفه کار می کند ، که باید همه آنها بر روی یک کامپیوتر بسیار کوچک به نام FSD (Fully Self-Driving) اجرا می شوند. برای انجام این کار ، آنها از معماری HydraNet استفاده می کنند که به آنها اجازه می دهد از شبکه یکسانی برای هر کاری ، فقط با سرهای مختلف استفاده کنند. همه سرها شامل تقسیم بندی تصویر می شوند. تسلا از 8 دوربین استفاده می کند که با هم ادغام شده اند. هر دوربینی برای یک کار واحد استفاده نمی شود. آموزش با استفاده از PyTorch و مجموعه ای از معماری کارگران (برخی از وظایف به طور همزمان آموزش می بینند) انجام می شود. یک حلقه کامل اجرا می شود: رانندگان داده ها را جمع آوری می کنند ، تسلا این داده های دنیای واقعی را برچسب گذاری می کند و سیستم آنها را بر روی آن آموزش می دهد.

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

امیدوارم داستان امروز به شما در بررسی نحوه "دنیای واقعی" کمک کرده باشد. انجام می دهد! اگر می خواهید بیشتر پیش بروید ، در ایمیل های خصوصی من مشترک شوید و اطلاعات ، راهنمایی ها و داستانهای روزانه در مورد AI ، Computer Vision و Autonomous Vehicles را دریافت کنید! جرمی کوهن

>

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

مستقل از نظر ویرایش ، Heartbeat توسط Fritz AI ، پلت فرم یادگیری ماشینی که به توسعه دهندگان کمک می کند تا دستگاه ها را ببینند ، بشنوند ، حمایت و منتشر می شود. حس کنید و فکر کنید ما به مشارکت کنندگان خود پرداخت می کنیم و تبلیغات نمی فروشیم.

اگر می خواهید مشارکت داشته باشید ، به تماس ما برای مشارکت کنندگان سر بزنید. همچنین می توانید برای دریافت خبرنامه های هفتگی ما (هفته نامه یادگیری عمیق و خبرنامه هوش مصنوعی Fritz) ثبت نام کنید ، در Slack به ما بپیوندید و Fritz AI را در توییتر دنبال کنید تا آخرین یادگیری ماشین تلفن همراه را مشاهده کنید.

تبلیغات اساسی: Atualização do Motorola Milestone for Android 2.1 pela Vivo

تبلیغات اساسی: Atualização do Motorola Milestone for Android 2.1 pela Vivo

Olá povo،

از این طریق می توانید مشتریان خود را از طریق Vivo منعکس کنید. از وبلاگ خود استفاده کنید (ver imagem abaixo) منطقه ای را در دسترس قرار دهید (2010/01/05) از طریق OTA برای Motorola Milestone برای ورژن 2.1 در Android استفاده کنید. No entanto até agora، 19:30 do domingo، 02/05/2010، essa atualização não está disponível.

Segundo conversa com o suporte da Vivo (*474663) ، مقاله atualização não está disponível ، o que caracteriza uma propaganda enganosa.

Vivo، um sinal de descaso com o cliente.

4br4ç05،

nglauber