Компьютерное зрение (CV) просто учит компьютер тому, как видеть и понимать содержимое изображений и видео. Мы уже используем множество приложений CV на наших телефонах и компьютерах. Например, когда вы публикуете на Facebook фотографию себя и своих друзей, Facebook затем использует CV для обнаружения лиц на картинке, а затем предлагает, кем могут быть эти друзья. Кроме того, в Google Фото вы можете выполнить поиск кошек на своем изображении, и он покажет вам изображения, на которых есть кошки, даже если в названии изображения нет слова «кошка».

В этом посте я объясню один из возможных путей изучения компьютерного зрения с помощью машинного обучения. Приведенные ниже предложения основаны на моем опыте и немного самоуверенны, поэтому я отбросил множество похожих альтернатив и перечислил только то, что я считаю коротким путем, но достаточно хорошим для начала. Я также ничего не буду упоминать о традиционных методах компьютерного зрения, использующих OpenCV, что тоже очень важно, но «это сделает пост слишком длинным».

Если вы хотите построить что-то сегодня, чтобы получить представление о том, что вы собираетесь делать, ознакомьтесь с этим кратким руководством.

1. Машинное обучение

Теперь начнем снизу вверх. Первый курс — Машинное обучение Эндрю Нг. мл-класс. Эндрю Нг. является соучредителем Coursera, и мл-класс был одним из первых 3 курсов в Coursera еще до того, как была запущена сама Coursera. Вы можете думать об этом как о ML-101, потому что этот курс установит все основы, необходимые для понимания любой продвинутой темы машинного обучения. Это даст интуитивное представление о том, что и как работает машинное обучение, и важные концепции, такие как обучение модели, перекрестная проверка, переобучение и настройка гиперпараметров и т. д. Он также охватывает широкий спектр типов машинного обучения. Он начинается с простой версии алгоритма линейной регрессии и приводит вас к простейшей версии нейронных сетей — это будет вашим первым шагом в следующем курсе.

Совет. В этом курсе не торопитесь и старайтесь понять каждую концепцию и не торопитесь, чтобы получить интуицию обучения модели простой линейной регрессии в начале курса, поэтому нарисуйте графики и понять математику и реализовать каждую часть самостоятельно.

Совет 2: не тратьте слишком много времени на изучение Octave (язык программирования, используемый в курсе), потому что, вероятно, вы больше не будете его использовать!

Вам могут понадобиться некоторые предварительные условия по исчислению, линейной алгебре и вероятностям, но сам курс перенаправит вас к ресурсам для изучения в самом начале.

Контрольная точка: с этого момента вам нужно будет знать Python, и вы будете писать больше кода. Независимо от того, знаете ли вы Python или нет, я предлагаю пройти этот курс MIT CS-101. Это не только научит вас Python, но и, что более важно, сделает вас хорошим разработчиком. Я использую концепции, которые я изучил из этого курса, почти ежедневно, так как я впервые прошел его более 5 лет назад.

2. Глубокое обучение

Второй курс — Нейронные сети и глубокое обучение, и основным инструктором также является Эндрю Нг. Это расширит то, что вы изучали в машинном обучении об искусственных нейронных сетях, но с более подробной информацией. Будет хорошей идеей начать использовать одну из самых известных библиотек машинного обучения, такую ​​как Tensorflow и Keras, и вы можете объединить обе в этом учебнике. Этот курс также является первым курсом Специализации глубокого обучения на Coursera, который представляет собой набор из 5 курсов, и если вы хотите пройти их все, я предлагаю пройти их в следующем порядке (1–4–5–2– 3). Вам может понравиться или не понравиться эта идея, но это всего лишь мое предложение.

(Необязательно) Глубокое обучение Джеффри Хинтона, одного из героев глубокого обучения (ссылка). Курс сейчас как-то устарел, поэтому я не предлагаю бросать его весь, но он все равно дает очень хорошее теоретическое введение в глубокое обучение. Я предлагаю вам смотреть лекции только с бумагой и карандашом до видео (7e — долговременная кратковременная память).

(Ярлык) Если вы больше занимаетесь самообучением и любите сложные способы обучения, то вы можете прочитать часть II книги по глубокому обучению (ссылка) и пропустить последний курс. Вы должны применять каждую модель с Tensorflow и/или Keras и ожидать, что некоторые части будут не так просты для понимания, и вам нужно будет гуглить, читать некоторые учебники и смотреть несколько видео, пока вы не сделаете это.

3. Сверточная нейронная сеть

Итак, третий и последний курс на нашем пути обучения — Сверточная нейронная сеть, и это наиболее распространенная модель, которая используется в компьютерном зрении. Во время изучения курса этот курс является 4-м курсом по специализации глубокого обучения. А теперь я бы порекомендовал начать применять концепции, которые вы изучаете, к чему-то более практическому. Вы можете поискать несколько хороших наборов данных, которые можно использовать для применения своих знаний, и есть известный веб-сайт соревнований по науке о данных под названием Kaggle, где вы начинаете с набора данных и цели и пытаетесь найти лучшую модель машинного обучения. Вы также можете проверить Google Colab; Это веб-среда, которая позволяет вам бесплатно писать код и проводить эксперименты в облаке Google!

Примечание. Одна важная модель, которую я не смог найти (пока) в курсах, называется Генеративно-состязательная сеть (GAN).

Практика

Последний и самый захватывающий шаг (ы) — прочитать исследовательские работы, выбрать одну из них и попытаться реализовать ее самостоятельно и посмотреть, сможете ли вы получить аналогичные результаты. Вы можете выбрать свою любимую статью из papers-with-code. Сначала попробуйте найти интересную статью и реализовать ее самостоятельно, а затем, если/когда вы застряли, посмотрите на код. Если вас вдохновила одна из этих статей, вы можете попробовать реализовать приложение, использующее эту модель, и, возможно, начать свой стартап :D

Совет. Документов слишком много, и вы можете потратить недели на реализацию одного документа, поэтому, прежде чем выбрать один, просмотрите множество документов, прочитав аннотацию и заключение, а также пару разделов, которые могут быть актуальными, а затем решите пойти дальше или перейти к другому документу.

Я надеюсь, что после прочтения этой статьи у вас появилось лучшее представление о том, как вы можете самостоятельно изучать компьютерное зрение, и если у вас есть какие-либо вопросы, задавайте их в разделе комментариев ниже.

Наслаждайтесь и увидимся снова через 6 месяцев!

Первоначально опубликовано на https://dosht.github.io 22 августа 2019 г.