×Закрыть

Как освоить Computer Vision

Сфера Computer Vision бурно развивается. В Украине открываются новые офисы компаний, разрабатывающих продукты с Computer Vision, существующие компании расширяют штат и активно конкурируют за специалистов.

AI Booster сделал обзор общих требований и рекомендаций для старта в Computer Vision перед стартом первой в Киеве профильной конференции по Computer Vision.

Шаг 1. Исходные данные

Для того, чтобы начать изучать Computer Vision, желательно знать английский, поскольку русскоязычных материалов практически нет — статьи, ресурсы, курсы — все на английском.

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

Также необходимо освоить базовые навыки программирования — чаще всего в мире Data Science используют Python, но самое главное — знания основ программирования. Для написания нейронных сетей могут использоваться и C, C#, Matlab и тд

Андрей Никишаев советует новичкам сразу использовать полученные знания на практике:

Во время обучения учишь теорию и параллельно делаешь проект. Потом когда имеешь уже нормальную базу идешь на Kaggle и находишь интересную задачу для себя и делаешь. А потом идешь куда уже хочешь. Однако, потом наступает очень большое количество рандома в работе, и это психологически выматывает + логика и нейронные сети зачастую плохо совместимы (то что кажется человеку ок для НН может быть не очень и наоборот).

CV — это область где нужно жестко учиться/делать ресерчи. Потому как большинство типа state-of-the-art алгоритмов не очень эффективны на практике, и если говорить о продакшен сетках то нужно зачастую выдумывать что то свое, а это требует огромного потока информации для того чтобы иметь хороший скоуп.

Но скажем так — самое главное для хорошего МЛ инженера — это образное мышление и воображение. Потому как почти все крутые решение это не решение математических задач в лоб, а хитрый подход сбоку. И потому специалист с воображением почти всегда сделает проект лучше умного математика. А математик с воображением сделает вообще кого хочешь)

Как попасть в классную компанию на работу

Нужно иметь хорошее портфолио и понимание проблем бизнеса которые решаешь.

Что самое сложное в изучении CV?

Сложнее всего — это неточности в научных статьях, их фильтровать крайне тяжело.

На вопрос о сложностях также ответил Гонта Владимир:

Самое сложное в работе с CV — данные! Работа с данными занимает больше 70% времени. С на втором месте — глубокое понимание Нейронных Сетей.

С чего ты порекомендуешь начать обучение?

Все проходят этапы изучения: статистические алгоритмы и плавно переходят к нейронным сетям. Я рекомендую сразу начать изучение data science и neuron networks — как базовые знания.

Шаг 2. Самостоятельное изучение

В интернете есть множество бесплатных курсов, книг, форумов и чатов, которые помогут в изучении.
Приводим обзор самых популярных ресурсов:

Книги:

Sebastian Raschka’s book, Python Machine Learning — github.com/...​hon-machine-learning-book
Ян Гудфеллоу «Deep Learning»
Сергей Николенко и др ГЛУБОКОЕ ОБУЧЕНИЕ. ПОГРУЖЕНИЕ В МИР НЕЙРОННЫХ СЕТЕЙ

Бесплатные ресурсы для самостоятельного изучения Data Science и Neural Networks:

mlcourse.ai
ru.coursera.org/...​ne-learning-data-analysis
www.fast.ai
www.deeplearning.ai
opencv.org
www.dataquest.io
Введение в компьютерное зрение — МГУ Факультет вычислительной математики и кибернетики — www.lektorium.tv/course/22847
CS231n: Convolutional Neural Networks for Visual Recognition — cs231n.stanford.edu
Обучение на размеченных данных — www.coursera.org/...​learn/supervised-learning

Программирование на Python — stepik.org/course/67
Туториалы по Python — www.scipy-lectures.org
ML тренировки от ods.ai — www.youtube.com/...​vC9SVsfhfKnSvM9w/featured

Опыт коллег:

Рекомендуем изучить опыт коллег, например, в статьях есть много полезного:
dev.by/news/angarsk-minsk
medium.com/...​ing-engineer-a7d5dc9de4a4
www.youtube.com/watch?v=C95FgeekrSw
www.youtube.com/watch?v=fXnzjJMbujc

Шаг 3. Образование и возможности в Украине

Высшее образование и ВУЗы:

УКУ — магистерская программа по Data Science — практически единственный ВУЗ в Украине, который готовит специалистов по DS.
В КПИ и КНУ им. Шевченко есть специальности, которые могут стать основой для старта.

Мероприятия:

Computer VISIONers Conference — это конференция где можно узнать, как стать крутым CV инженером и куда развиваться. Пройдет 6 октября в Киеве.
В программе выступления международных спикеров, практические воркшопы, чтобы сразу использовать полученные знания на практике и выйти с готовым кодом и отработанными навыками, нетворк со специалистами, посоветуют направления для дальнейшего развития, помогут разобраться с тяжелыми задачами. Знакомство с компаниями, работающими в области компьютерного зрения.

Eastern European Computer Vision Conference в Одессе — закрытая конференция для разработчиков с опытом в сфере компьютерного зрения. Мероприятие бесплатное, но проводится отбор участников, проходит летом на берегу Черного моря. Собирает международных докладчиков и специалистов с опытом, которые делятся знаниями, могут обсудить свою работу, найти единомышленников и просто хорошо и полезно провести время в Одессе.

AISaturdays — формат бесплатных занятий по субботам, где все желающие могут узнать об искусственном интеллекте, изучить техническую сторону, отработать на практике или устроить дискуссию с коллегами за чашкой кофе. Первая встреча 22 сентября в DATA ROOT!

Возможности для трудоустройства:

Компании, которые работают в сфере Computer Vision и активно ищут новых сотрудников, предлагают стажировки и трудоустройство:
Infopulse Ukraine
ЛУН
Videogorillas
Ring Ukraine
Lalafo
Let’s Enhance
Snap Inc
3DLOOK
Augmented Pixels
Ciklum
И многие другие.
Не всегда у компаний есть открытые вакансии, но разослать резюме в холодную или спросить про стажировку — всегда отличный вариант с высокой вероятностью успеха.

И напоследок, секрет успеха от Alexander Onbysh, который ещё будучи на втором курсе КПИ попал на работу в Ring Ukraine.

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

Также, мероприятия — это возможность показать себя и обзавестись нужными контактами. Собственно, после призового места на AI Spring Hackathon, Ring сами пригласили меня на собеседование.

И как бонус для тех, кто освоил базу, предлагаем подборку полезных статей и ссылок от Владимира Гонта и Егора Шкепу из компании Aisberg.

Image Captioning:

Image-to-Markup Generation with Coarse-to-Fine Attention
lstm.seas.harvard.edu/latex

Neural Markup Generation with Visual Attention
untrix.github.io/i2l

Neural Image Caption Generation with Visual Attention
kelvinxu.github.io/projects/capgen.html

Multi-Modal Methods: Image Captioning (From Translation to Attention)
medium.com/...​to-attention-895b6444256e

Visual Attention Model in Deep Learning
towardsdatascience.com/...​eep-learning-708813c2912c

Image Segmentation

Convolutional Neural Networks
www.youtube.com/watch?v=bNb2fEVKeEo
Image Classification
www.youtube.com/watch?v=OoUX-nOEjG0

Upsampling and Image Segmentation with Tensorflow and TF-Slim
warmspringwinds.github.io/...​h-tensorflow-and-tf-slim

Image Segmentation using deconvolution layer in Tensorflow
cv-tricks.com/...​onvolution-in-tensorflow

Up-sampling with Transposed Convolution
towardsdatascience.com/...​-convolution-9ae4f2df52d0

U-Net: Convolutional Networks for Biomedical Image Segmentation
arxiv.org/pdf/1505.04597.pdf

Tensorflow implementation of Learning Deconvolution Network for Semantic Segmentation
github.com/...​ow-DeconvNet-Segmentation

LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

А какие есть украинцы в топе рейтинга кагла?
Ну или какие самые высокие.

Опущен очень важный момент. Важно не прочитать эти книжки, а научиться делать то, что там описано.
То бишь параллельно с чтением нужно на основе описанного все это программировать самому и смотреть что получается и что не получается и почему.
И вот тут 10000 часов и появляются.

Это всегда так
Прочтение ничего не даёт без понимания

Изучаю CV и ML. Очень понравился курс
www.udacity.com/...​o-machine-learning—ud120

Я бы посоветовал для вхождения в отрасль CV следующие шаги:

1. Пройти курсы матстатистики и линейной алгебры. Очень качественные курсы — MIT OpenCourseWare. Решать все примеры, поскольку в примерах часто кроются инсайты. В конце курса надо научиться понимать матричную нотацию, разбираться в линейных трансформациях и понимать, что такое eigenvalues/eigenvectors.

2. Пройти курс по обработке изображений, чтобы получить представление о частотной области, дискретном преобразовании Фурье, конволюции, корреляции и частотных фильтрах. Там же морфологические операции. Хорошая книга по теме — Гонсалес «Цифровая обработка изображений». Помните, что правильная предобработка изображений упрощает решение задач!

3. Скачать/купить книги: Szeliski «Computer Vision» и Kaehler & Bradski «Learning OpenCV 3». Первая — это монументальная работа по описанию алгоритмов компьютерного зрения (книга 2010 года), а вторая в доступной форме обучает работе с самой популярной библиотекой комьютерного зрения — OpenCV.

4. По мере изучения мониторить Upwork на задачи компьютерного зрения. Брать самые простые, чтобы набить руку. Это может быть:
— написать скрипт, который повторяет операции в фотошопе
— считывать данные со скриншотов
— считывать показания счетчика с изображений стационарной камеры

5. Ах, да, программирование. Подойдет С++ и Python. Это, пожалуй, самый простой скилл в CV.

Работников в CV гораздо меньше, чем работы, а сама работа очень интересная.

Для изучения CV С++ не нужен. Он нужен только для реализации многих алгоритмов в проде. В том же ОpenCV реализация многих алгоритмов медленная.
А выбирать выкоуровневый язык можно любой python, matlab, julia. Лично мне Питон очень не нравиться, а стыковать его с С++ жуткий гемор.

А с работой. В просто программировании спрос и предложение лучше, чем в СМ для работника.
Т.е. если нет особой тяги к CV, то лучше просто программировать на понравившемся языке.

Дочитал тока до этого

. Глубинных знаний для начала не надо, но уметь читать и понимать научные статьи обязательно.

дальше неинтересно стало.

Барышня объясните мне, как с начальными мат. знаниями можно понять хотя бы вот эту статью —

www.robots.ox.ac.uk/...​ications/Apostoloff04.pdf

Пожалуйста, прочитайте следующее предложение:

Желательно повторить или выучить высшую математику, математический анализ и иметь понимание математической статистики.

если у вас есть свои рекомендации, пожалуйста, напишите их :)

всем peace

как с начальными мат. знаниями можно понять хотя бы вот эту статью —

www.robots.ox.ac.uk/...​ications/Apostoloff04.pdf

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

Я с этой статьей неделю сидел, чтобы все это разобрать

обычный бг экстракшен к которому прикрутили немного предикта для более гладкого вырезания.
только вот такая тема будет крайне хреново работать. как и любой «тупой» алгоритм.
Если нужна сегментация качественная, рекомендую посмотреть вот сюда cfg.mit.edu/...​g.mit.edu/files/sss_3.pdf — очень крутая тема(правда не для риал тайм пока)

ну и то что что-то назвали научной статьей не делает ее хорошей или правильно написаной.
Очень часто стаатьи фейковые для получения грантов.

Эту не смотрел. Но со многими и полгода надо. чтобы их понять.

Только это 3 курса, а не уровень 5 класса, что обычно понимают под начальными.
И да если ты эти 3 курса учился хорошо и старательно, то ничего сложного (с математикой) для тебя будет ни в одной области знаний, где математика нужна. Будь-то образы или квантовая механика.

уровень 5 класса, что обычно понимают под начальными

Рівень 5-го класу при застосуванні до дорослої людини... як би то Вам сказати... трохи по-іншому називається, а не «початковим рівнем».

Щодо статті, то я би хотів підкреслити таких дві думки:
* Кількість часу, необхідна на її розуміння, аж ніяк не показник складності застосованого апарату — можна і підручник для 3-го класу так написати, що сам чорт ногу зломить, але жодних складних концепцій там не буде. Та й більшість наукових статей так написані, що «pass me the sick bucket».
* В цій статті на перший погляд навіть для 3-го курсу нічого нема. Якщо чесно, я не читав сам текст, але прогортав формули (їх там всього чуть більше десятка) і подивився, що там за значки використовуються. За мехмат не скажу, а за фізфак розпишусь: градієнт — 2 семестр 1 курсу, матан; транспонування та множення матриць — 1 семестр 1 курсу, лінал; знак суми — школа, або 1 семестр 1 курсу, матан; знак норми — школа, або 1 семестр 1 курсу, лінал; експонента, логарифм, плюс-мінус, корінь квадратний, число пі — школа. А більше там нічого нема, ну чи хіба я недодивився. З формул явно впізнається формула Баєса (теж школа). Не думаю, що там є якійсь надскладні концепції в тексті, що так прямо потребують НЕ початковий рівень математики. Взагалі так виглядає, що які-небудь ліцеїсти могли би то все ще до випуску знати.

это же пошаговый гайд, сначала математика — потом дальше в лес)

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

Согласна) но параллельно тоже надо учить что-то согласно логики, потому что, закапываться в непонятные вещи не зная основ, не имеет смысла)

а что для вас в данной статье такого сложного? если человек с головой то после прочтения нескольких статетй, просмотра 1 курса на курсере все стане ясно и понятно.
для этого не нужно 6 лет изучать математику.
а база это матан, тв, статистика, ну может еще функан и то базовые вещи.
В нейронках зачастую нету сложных алгоритмов и теорий, потому что все упирается в градиент, а зачастую все сложное очень хреново диферинциируемо, а остюда его очень напряжно юзать с нейронками. Тобишь сама структура обучения НН сильно ограничивает то что можно юзать.

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

как то не видно побед на кагле у вас, Андрей

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

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

понимает как работают базовые стейт оф зе арт сетки и принципы

Можно поточнее?

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

Ничего себе гайд надетектили!

Подписаться на комментарии