Пътят от начинаещ до опитен: безплатни ресурси за обучение, които да ви насочат

Компютърното зрение се превърна в една от най-динамичните области днес, намирайки приложения в различни области, от лицево разпознаване на смартфони до насочване на автономни космически роувъри. Нещо повече, има безброй нерешени предизвикателства в тази област, които чакат да бъдат проучени.

Ако сте човек, който иска да навлезе в компютърното зрение и не знаете откъде да започнете, вие сте на правилното място. Ще очертая стъпка по стъпка ръководство за стартиране на начинанието ви за компютърно зрение и ще предоставя ценни безплатни ресурси за всеки етап. Този път може най-общо да бъде разделен на три основни части.

  1. Основи на математиката
  2. Програмен език и пакети
  3. Архитектури на компютърно зрение

Преди да се задълбочим във всеки модул, бих искал да предложа кратка дума за мотивация. Когато започнах собственото си пътуване в тази област, често бях изгубен и несигурен откъде да започна и какво да уча. Трябваше да навигирам през всичко сам и това беше дълго пътуване. Въпреки това, едно нещо ме поддържаше във всеки момент: визията за моята крайна цел. Мога да ви уверя, че след като достигнете етап, в който изследвате напреднали концепции, ще погледнете назад и ще разберете, че всяко усилие си е струвало.

И накрая, важно е да разберете, че това пътуване не е линейно и няма крайна „дестинация“. Пътят, който ще очертая, ще ви отведе от начинаещ до опитен практикуващ, но е подобен на изстрелването на ракета от повърхността на Земята в космоса. В космоса ще влезете в огромна вселена на компютърното зрение и възможностите са неограничени.

Имайки това предвид, нека се впуснем в нашето вълнуващо пътешествие в царството на компютърното зрение.

Математика

Трябва да призная, че математиката е голяма работа в компютърното зрение. Не можете наистина да го игнорирате. Но ето добрата новина - не е нужно да сте умник по математика. Просто трябва да разберете основите правилно. По-конкретно, има четири ключови математически теми, върху които трябва да се съсредоточите:

  1. Линейна алгебра - Това е основен стълб в компютърното зрение. По същество изображенията се представят като n-измерни матрици и разбирането на линейната алгебра е от решаващо значение за ефективното манипулиране и разбиране на тези матрици на изображения.
    Някои добри ресурси за начало:
    1. Пълен курс по линейна алгебра за начинаещи до експерти
    2. Khan Academy (Предлага основни основи с изключителна интуиция)
  2. Изчисление — Същността на откриването на различни характеристики на изображението зависи от анализа на техните градиенти и разграничаването им от околните елементи. За по-задълбочено вникване в значението на смятането в този контекст, препоръчвам да прочетете моята статия за Градиенти на изображения.
    1. Пълен курс по смятане за начинаещи | Изчисление за машинно обучение
    2. 3Blue1Brown (Осигурява първокласна интуиция)
  3. Конвексна оптимизация — Компютърното зрение и машинното обучение вървят ръка за ръка. Говорейки за машинно обучение, от решаващо значение е да разберете конвексната оптимизация.
    1. Конвексна оптимизация — Станфорд
    2. Визуално обяснено (Много нежно въведение)
  4. Вероятност — Тъй като имаме работа със значителна несигурност в компютърното зрение, трябва да имаме добро разбиране на вероятността.
    1. Пълен курс по статистика и вероятност || Статистика за наука за данни
    2. Вероятностно машинно обучение

Програмен език и пакети

Сега, след като сме запознати с основните теми по математика, нека насочим фокуса си към аспекта на програмирането. В Computer Vision най-разпространените езици са Python, C++ и Matlab. Python, със своите обширни библиотеки, е отличен за бързо създаване на прототипи. От друга страна, C++ и Matlab, като езици от по-ниско ниво, наблягат на оптимизацията и ефективността. Бих предложил да започнете с Python и бавно да преминете към C++ и Matlab, докато придобивате повече умения. Ще се съсредоточа върху библиотеките на Python по-долу. freeCodeCamp.org има чудесен курс по Python, който можете да разгледате.

Що се отнася до пакетите, по-долу е даден списък с пакети, с които трябва да владеете:

  1. OpenCV — Този пакет е от съществено значение за манипулиране на изображения и видео. С богато количество вградени операции, той играе важна роля в компютърното зрение. За изчерпателен урок по OpenCV можете да гледате видеоклипа на ProgrammingKnowledge.
  2. NumPy — NumPy не се ограничава до компютърно зрение; използва се в различни области на машинно обучение. Тъй като компютърното зрение включва работа с матрици, NumPy е безценен за ефективни матрични изчисления. Вижте урока на Siddharthan за NumPy.
  3. Tensorflow — Разработена от Google, тази рамка за машинно обучение ви позволява да работите с изображения, видеоклипове и ML архитектури. Той също така поддържа GPU ускорение за по-бързи изчисления. Разгледайте изчерпателен урок за Tensorflow от freeCodeCamp.org.
  4. PyTorch — Разработен от Meta, PyTorch е силен конкурент на TensorFlow, предлагащ широка функционалност за архитектури, свързани с компютърно зрение. Packt дава нежно въведение в PyTorch за компютърно зрение.

Този списък в никакъв случай не е изчерпателен. По време на пътуването си ще срещнете няколко други полезни библиотеки. Някои забележителни примери включват Matplotlib, Pillow, Pandas, Scipy и ScikitLearn. Въпреки това, като начало, фокусирането върху четирите пакета, споменати по-горе, е повече от достатъчно.

Архитектури на компютърно зрение

И накрая, нека се потопим във вълнуващите неща! Това е мястото, където ще си изцапате ръцете с реални архитектури като класифициране на изображения, откриване на обекти и др. С фона, който сте разработили до момента, тези архитектури ще имат много повече смисъл за вас. Тук отново, преди да скочите в голямата лига с неща като ResNet или YOLO, би било полезно да започнете с основни модели на машинно обучение като линейна регресия, логистична регресия и SVM и бавно да преминете към невронни мрежи. Причината е, че невронните мрежи са еволюция на тези основни ML модели, а напредналите архитектури като ResNet и YOLO са изградени върху невронни мрежи. И така, ето пътя:

  1. Машинно обучение – След като придобиете солидна представа за основите на линейната алгебра, ще ви бъде по-лесно да се потопите в основните модели на машинно обучение. Отделете известно време за разбиране на тези модели, включително функциите на загубите и магията на обратното разпространение. Това формира основата на по-напреднали концепции. едурека! е съставил добър курс по основите на машинното обучение.
  2. Обработка на изображения — Това включва алгоритми, различни от ML, като откриване на ръбове, откриване на линии и съвпадение на шаблони. Изграждането на здрава основа тук е от решаващо значение, защото някои напреднали архитектури разчитат на тези модули. Например, сърцето на конволюционните невронни мрежи (CNN) се корени в концепцията за съвпадение на шаблони. Вижте плейлиста на DigitalSreeni в Image Processing.
  3. Усъвършенствано компютърно зрение — Досега пътувахме по паралелни пътеки: едната чрез машинно обучение, а другата чрез обработка на изображения. Сега е време да ги съберем, за да изградим усъвършенствани архитектури. Конволюционните невронни мрежи са първата концепция, с която трябва да се докоснете. Голям брой алгоритми използват CNN като основа. Започнете с курса на „Станфордския университет“ по конволюционни невронни мрежи.

Това е, хора! Надявам се, че вече имате добре дефинирана пътна карта за вашето пътуване с компютърно зрение. Горещо препоръчвам да посветите достатъчно време на всеки модул по пътя. Този подход може да изглежда малко по-дълъг и по-преднамерен, но повярвайте ми, отплаща се щедро, когато се заемете с напредналите концепции. Наистина се вълнувам за теб в това пътуване.

Ако сте намерили тази статия за проницателна, последвайте ме в LinkedIn, Medium,иGitHub . Вашата подкрепа и ангажираност силно ще ме мотивират да създавам по-ценно съдържание в областта на компютърното зрение и дълбокото обучение.