نامه ای از رایانه من

نامه ای از رایانه من

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

کاربر عزیز ،

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

علوم کامپیوتر در مقابل مهندسی نرم افزار: کدام برنامه نویسان بهترین را می سازند؟

علوم کامپیوتر در مقابل مهندسی نرم افزار: کدام برنامه نویسان بهترین را می سازند؟

هر دو زمینه برنامه نویس می سازند ، اما دقیقاً کدام زمینه برنامه نویس برجسته می سازد؟

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

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

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

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

اگر در علوم کامپیوتر تسلط داشته باشید چه؟ h1>

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

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

اگر به جای مهندسی نرم افزار تسلط داشته باشید چه؟

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

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

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

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

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

نتیجه گیری

توسعه نرم افزارهای مدرن در مقایسه با نرم افزارهای اولیه بسیار متفاوت است. رویکردهای توسعه در حال حاضر تقریباً تمام سیستم های نرم افزاری بر اساس چارچوب های نرم افزاری به دلیل ارائه سریع ویژگی ساخته شده اند. به عنوان مثال ، چارچوب Electron تقریباً از همه برنامه های رومیزی چند پلتفرمی پشتیبانی می کند. همچنین ، Flutter و React Native برای برنده شدن در زمینه توسعه برنامه تلفن همراه با یکدیگر رقابت می کنند. بنابراین ، سطح تجربه این چارچوب ها ممکن است ویژگی های یک برنامه نویس خاص را امروزه مشخص کند. با توجه به این سناریو ، بسیاری از برنامه نویسان اشاره می کنند که آنها حتی از نظریه علوم رایانه در زندگی روزمره خود استفاده نمی کنند. سیستم های نرم افزاری از سوی دیگر ، مهندسی نرم افزار یک ذهنیت فرآیند محور ایجاد می کند تا در بازار توسعه نرم افزار مدرن قرار گیرد. این امر بر مهارت های برنامه نویس تأثیر بسزایی می گذارد. ممکن است شما برای هر قطعه کدی که می نویسید تجزیه و تحلیل مجانبی انجام ندهید ، اما برنامه نویسان را تربیت می کند تا کد بهتری بنویسند.دانش اول برای فیلتر کردن بهترین برنامه نویسان است.

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

چرا هر توسعه دهنده ای باید برنامه نویسی با C را شروع کند می توانید برنامه نویسی را با هر زبانی شروع کنید - اما شروع با C مزایای بیشتری دارد! betterprogramming.pub

اوراکل با 1060 رایانه Raspberry Pi یک ابر رایانه می سازد

اوراکل با 1060 رایانه Raspberry Pi یک ابر رایانه می سازد

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

ابر رایانه Raspberry Pi (

انسان تعاریف متمرکز از علوم رایانه برای آموزش عمومی

ردیابی طرح کلی مفاهیم مبهم به منظور پیشرفت.

انسان تعاریف متمرکز از علوم رایانه برای آموزش عمومی

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

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

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

مطالعه اصول و استفاده از رایانه (فرهنگ انگلیسی آکسفورد). این اصول عرفانی چیست؟ مطالعه رایانه ها و فرایندهای الگوریتمی شامل اصول آنها ، طراحی سخت افزاری و نرم افزاری آنها ، پیاده سازی آنها و تأثیر آنها بر جامعه (ACM). الگوریتم چیست؟ پیاده سازی چیست؟ تأثیر بر بخش جامعه منطقی است ، اما آیا اقتصاددانان این کار را نمی کنند؟ مطالعه فرایندهایی که با داده ها تعامل دارند و می توانند به عنوان داده در قالب برنامه ها نمایش داده شوند (ویکی پدیا). فرآیندها؟ برنامه چیست؟ "بازنمایی" چیست؟ مطالعه رایانه ها و پدیده های پیرامون آنها. (نیول ، پرلیس و سیمون 1967). من این یکی را دوست دارم زیرا از نظر فکری بسیار فراگیر است (و من یک آلوم مغرض کارنگی ملون هستم). اما آیا این فقط نمی گوید که علم کامپیوتر چیزی است که شامل رایانه می شود؟ آموزش شامل رایانه است ، آیا این علم کامپیوتر است؟ مطالعه سیستماتیک فرایندهای الگوریتمی که اطلاعات را توصیف و تغییر می دهد: نظریه ، تجزیه و تحلیل ، طراحی ، کارآیی ، پیاده سازی و کاربرد آنها (Denning 1988). "تبدیل" به چه معناست؟ "اطلاعات" چیست؟ "طراحی" چیست؟

من به عنوان یک دانشمند کامپیوتر ، ایده بسیار خوبی از آنچه که همه تعاریف بالا سعی در بدست آوردن آن دارند ، دارم ، اما می توانم از صحبت با بسیاری از دانش آموزان ، والدین ، ​​معلمان ، مدیران ، سرپرستان و دانشکده های آموزش عالی غیر CS که آنها توسط دانشمندان کامپیوتر برای دانشمندان کامپیوتر نوشته شده اند. چارچوب ها و استانداردهای آموزشی K-12 CS خیلی بهتر عمل نکرده اند زیرا اساساً از تعریف ACM فوق به عنوان پایه استفاده می کنند.

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

من چند اصل را دنبال کردم:

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

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

و با این تنظیم ، تعاریف پیشنهادی من در اینجا آمده است:

نرم افزار. برنامه ها ، وب سایت ها و سایر محصولات و خدمات مورد استفاده مردم در رایانه ها ، لپ تاپ ها ، رایانه های لوحی ، تلفن های هوشمند و سایر دستگاه های دیجیتالی که رایانه در آنها قرار دارد. فناوری آموزشی. نرم افزاری که برای پشتیبانی از یادگیری و آموزش طراحی شده است (به عنوان مثال ، نرم افزار درجه بندی ، نرم افزار تمرین ریاضی). استفاده از کامپیوتر. کلیک ، ضربه زدن و تایپ کردن روی رایانه برای کنترل کارهای بعدی کامپیوتر. برنامه نویسی کامپیوتر. کلیک ، ضربه زدن و تایپ کردن روی رایانه برای نوشتن ، آزمایش و تجدید نظر دستورالعمل هایی که کنترل می کند کامپیوتر در آینده چه کاری انجام می دهد. کدگذاری. مترادف برنامه نویسی کامپیوتر. برنامه. محصول نهایی برنامه نویسی کامپیوتر ؛ بخش مهمی از نرم افزار. مهندسی نرم افزار. برنامه نویسی ، معمولاً در تیم ها ، با هدف ایجاد نرم افزاری برای استفاده دیگران. تفکر محاسباتی. استدلال انتزاعی ، دقیق و خلاقانه در مورد نحوه حل مشکلات با برنامه ها. علم داده. استفاده از داده ها ، آمار و برنامه ها برای پاسخگویی به سوالات مربوط به جهان. هوش مصنوعی. برنامه هایی که می توانند کارهایی را انجام دهند که انسان می تواند انجام دهد ، مانند صحبت کردن ، درک زبان ، درک جهان ، پاسخ به س questionsالات و تصمیم گیری های پیچیده (به عنوان مثال ، روبات های خودران می توانند مانند مردم در جهان حرکت کنند ، دستیاران دیجیتالی می توانند برخی کارها را که دستیاران انسان می توانند انجام دهند) انجام دهند. انجام دهید ، جستجوی وب می تواند کارهایی را که کتابداران می توانند انجام دهند) انجام دهد. یادگیری ماشین. الگوریتم هایی که از داده ها برنامه ایجاد می کنند ، اغلب برای فعال کردن هوش مصنوعی (به عنوان مثال ، استفاده از مجموعه داده های بزرگ تصاویر پزشکی که برچسب سرطانی دارند یا طبقه بندی نکردن اینکه آیا تصاویر آینده حاوی سرطان هستند) استفاده می شود. علوم کامپیوتر. رشته تحصیلی که هم جنبه های انسانی و هم تکنیکی استفاده از کامپیوتر ، تفکر محاسباتی ، برنامه ها ، برنامه نویسی ، نرم افزار و مهندسی نرم افزار را مطالعه می کند. محاسبات. علوم کامپیوتر ، به علاوه سایر رشته های دانشگاهی که پدیده های مرتبط را مطالعه می کنند ، از جمله 1) سخت افزار کامپیوتر و طراحی و ساخت آن. 2) اطلاعات و نحوه جمع آوری ، پردازش ، ذخیره و توزیع آن در جامعه ؛ 3) چگونه کامپیوترها و جامعه متقابلاً یکدیگر را شکل می دهند. آموزش علوم کامپیوتر. هر زمینه ای از آموزش رسمی که مفاهیم و مهارت های مورد مطالعه در علوم کامپیوتر را آموزش دهد. آموزش محاسبات. هر زمینه ایآموزش رسمی که مفاهیم و مهارتهای مورد مطالعه در محاسبات را آموزش می دهد.

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

نظر شما در مورد تعاریف؟ اگر شما دانشمند کامپیوتر هستید ، آیا از غیر رسمی بودن و عدم دقت آنها و حذف کلمه "الگوریتم" عصبانی شده اید؟ اگر شما دانشمند کامپیوتر نیستید ، آیا آنها منطقی هستند؟

آموزنده

آموزنده

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

مقدمه ای دوستانه برای یکی از زمینه های مهم هوش مصنوعی

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

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

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

افزایش پذیرش برنامه های هوش مصنوعی به افزایش تعداد مشاغل و دوره های مرتبط با بینایی رایانه

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

بینایی رایانه ای

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

عکس توسط v2osk در Unsplash

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

چشم ها و مغز ما می توانند درک محیط ها را از طریق نور منعکس شده استنباط کنند.

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

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

تعریف مناسب برای بینایی رایانه به شرح زیر است:

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

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

برای ایجاد الگوریتم ها و سیستم هایی که قابلیت استخراج اطلاعات زمینه ای از تصاویر را دارند ، باید علت الگوها مشاهده شود. سپس راه حل ها را می توان از درک علل و تأثیر الگوهای خاص به دست آورد. //cdn-images-1.medium.com/max/426/0*E8cpdr5182XT2Vfq.gif"> سمت چپ: تشخیص چهره و ردیابی ویژگی های صورت. میانی: برآورد Pose توسط TensorFlow. راست: شبکه یولو برای تشخیص اشیا

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

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

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

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

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

رویکرد سنتی

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

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

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

تشخیص لبه

< p> Edges نمونه هایی از ویژگی های تصاویر هستند که می توانند برای توصیف محتوای درون تصاویر استفاده شوند. تشخیص لبه یکی از اولین تلاش ها برای توسعه الگوریتم هایی بود که می توانست برخی از دیدگاه های بصری را ارائه دهد.

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

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

چرا لبه ها ویژگی های مهمی در یک تصویر هستند؟

اطلاعات زیادی در مورد تصویری که می توان از تجزیه و تحلیل و ترکیب لبه های شناسایی شده بازیابی کرد. به عنوان مثال ، می توان ترکیب سه بعدی یک جسم را از اطلاعات لبه برآمد ، فقط با مشاهده ارتباطات و تداوم بین لبه های شناسایی شده. مانند تغییر در عمق و جهت گیری. لبه های خمیده نشان دهنده تغییرات جهت گیری هستند. چند نمونه از برخی از الگوریتم های تشخیص لبه سنتی: Canny Edge Detector ، Sobel Method و Fuzzy Logic.

توسط JonMcLooneدر ویکی پدیای انگلیسی ، CC BY-SA 3.0 ، https://commons.wikimedia.org/w/index.php؟curid=44894482

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

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

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

تصویر از https: //www.researchgate. net/

ویژگی های شبیه به Haar در کارهای بینایی رایانه مانند تشخیص اشیا یا تشخیص چهره استفاده می شود.

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

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

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

یکی دیگر از تکنیک های رایانه ای رایج برای تشخیص شیء SIFT (تغییر ویژگی تغییر اندازه مقیاس) نامیده می شود. این در اواخر دهه 90 توسعه یافت.

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

روش یادگیری عمیق

عکس توسط آلینا گروبنیاک در Unsplash

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

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

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

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

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

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

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

ارائه تصاویر برچسب زده شده به عنوان داده های آموزشی به شبکه عصبی ، ممکن است یک شبکه عصبی را برای شناسایی الگوهای مربوط به اشیاء خاص در داده های تصویر آموزش دهد.

اعتبار شبیه سازی شبکه عصبی به دنیس دمیتریف

این فرآیند برای بسیاری از اشیاء قابل تکرار است که لازم است شناسایی شوند.

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

ظرفیت شبکه و دسترسی به منابع محاسباتی همچنین می تواند تنگنایی برای رویکردهای یادگیری عمیق در بینایی رایانه باشد.

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

یادگیری عمیق

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

انواع پیکربندی وجود دارد شبکه ANN که در زمینه یادگیری عمیق وجود دارد و پیکربندی های قابل توجه عبارتند از: شبکه های عصبی کانولوشن (CNN) ، شبکه های عصبی مکرر (RNN) و شبکه های عصبی عمیق (DNN).

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

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

بنابراین ، یک خط دید بینایی رایانه ای شبیه تصویر زیر است.

خط لوله یادگیری عمیق. تصویر توسط نویسنده

نتیجه گیری

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

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

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

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

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

< h4> در حال حاضر ، می توانید مقالات زیر را بخوانید تا بفهمید نقش مهندس CV مدرن چگونه است و مطالعات انجام شده در یادگیری ماشین و بینایی رایانه شامل چه مواردی است. < /h4> 6 ماه به عنوان یادگیری ماشین /مهندس بینایی کامپیوتر گذراندن نیم سال در زمینه ای که در چند سال خود را ندیده ام چگونه است agotowardsdatascience.com آنچه از تحصیل در کارشناسی ارشد در بینایی کامپیوتر و یادگیری ماشین آموختم اگر قصد دارید هر نوع مطالعات پیشین را در زمینه بینایی رایانه یا یادگیری ماشینی انجام دهید ، این مقاله را بخوانید. با من یا مطالب بیشتری مشابه این مقاله پیدا کنید ، موارد زیر را انجام دهید:

در خبرنامه های هفتگی در لیست ایمیل من مشترک شوید من را با رسانه متوسط ​​دنبال کنید اتصال و با من در LinkedIn تماس بگیرید