Баннер мобильный (1) Пройти тест

Кто такой CV Engineer, чем он занимается и сколько зарабатывает

И какие скиллы нужны, чтобы стать успешным инженером по компьютерному зрению

Гид по профессии

25 апреля 2024

Поделиться

Скопировано
Кто такой CV Engineer, чем он занимается и сколько зарабатывает

Содержание

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

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

    Что такое компьютерное зрение

    Компьютерное зрение (Computer Vision) — это область искусственного интеллекта, в которой разрабатывают алгоритмы и технологии обработки изображений и видео. Они используются для распознавания, классификации и отслеживания объектов, жестов, эмоций. 

    Как это работает

    Этапы обработки изображений с помощью CV можно разделить по уровням сложности.

    Низкоуровневое компьютерное зрение

    На низком уровне происходит анализ изображения на основе его базовых характеристик, таких как цвет, яркость, текстура. Алгоритм извлекает основную информацию об объекте, с которой предстоит работать на следующих уровнях анализа.

    Низкоуровневое компьютерное зрение
    Низкоуровневое компьютерное зрение. Источник

    Методы и инструменты:

    • фильтры изображений (например, фильтры Гаусса, медианный фильтр);
    • преобразования изображений (например, преобразование Фурье);
    • дескрипторы текстур (например, текстурные характеристики, такие как гистограммы ориентированных градиентов);
    • методы выделения краев (например, оператор Собеля).

    Среднеуровневое компьютерное зрение

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

    Методы и инструменты:

    • детекторы объектов (например, каскады Хаара, метод опорных векторов);
    • сегментация изображений (например, алгоритмы пороговой обработки, алгоритмы кластеризации);
    • функции распределения ориентированных градиентов (HOG);
    • определение ключевых точек (например, метод SIFT, SURF).
    Среднеуровневое компьютерное зрение
    Среднеуровневое компьютерное зрение. Источник

    Высокоуровневое компьютерное зрение

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

    Высокоуровневое компьютерное зрение
    Высокоуровневое компьютерное зрение. Источник

    Методы и инструменты:

    • глубокое обучение и нейронные сети (например, сверточные нейронные сети, рекуррентные нейронные сети);
    • методы классификации и распознавания образов;
    • методы сегментации с использованием сверточных сетей;
    • методы генерации изображений (например, генеративно-состязательные сети).

    Где используют компьютерное зрение

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

    Распознавание по отпечаткам пальцев
    Распознавание по отпечаткам пальцев. Источник

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

    Поиск по картинке
    Поиск по картинке. Источник: автор статьи 
    Распознавание текста
    Распознавание текста. Источник

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

    Видеоаналитика
    Видеоаналитика. Источник

    Обработка снимков со спутников. Алгоритмы CV могут обрабатывать большие объемы данных, полученные со спутников. Это позволяет улучшать карты, обнаруживать природные катаклизмы.

    Обработка снимков со спутника
    Обработка снимков со спутника. Источник

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

    Графический редактор
    Графический редактор. Источник

    Автопилоты и системы предотвращения ДТП. Системы компьютерного зрения анализируют данные с камер, радаров и других датчиков для обеспечения безопасности и управления автомобилем.

    Автопилот
    Автопилот. Источник: Freepik

    Реконструкция архитектурных сооружений. С помощью алгоритма CV можно создать трехмерные модели на основе множества изображений. Например, восстановить форму зданий или других объемных объектов.

    Реконструкция сооружений
    Реконструкция. Источник

    Какие задачи выполняет Computer Vision Engineer

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

    В его обязанности входит:

    • Разработка алгоритмов обработки изображений и видео. Сюда относится создание алгоритмов, которые позволяют компьютеру распознавать и анализировать содержимое изображений и видео.
    • Построение моделей машинного обучения. Включает разработку моделей и их тренировку на большом объеме размеченных данных. Сначала собирают данные (вручную, автоматически или полуавтоматически), затем определяют их характерные признаки (предикторы) и выбирают алгоритм обучения.
    • Тестирование и оптимизация систем компьютерного зрения. CV-инженер оценивает точность и скорость работы алгоритмов, улучшает и оптимизирует модели.
    • Интеграция компьютерного зрения в приложения и системы. Вместе с другими разработчиками CV-инженер внедряет системы компьютерного зрения в программы.
    Игорь Матвеев
    Machine Learning Engineer в RNT Group и создатель проекта «MI Tech»

    На работе я занимаюсь разнообразными задачами — от проведения собеседований до обучения алгоритмов. В роли Machine Learning Engineer я разрабатываю гипотезы, провожу исследования, обучаю алгоритмы и в меньшей степени занимаюсь интеграцией этих алгоритмов в приложения. Как в любой IT-команде, у нас есть ежедневные встречи — дейлики. На них мы обсуждаем, что получилось, а что нет, говорим про текущие задачи и ставим цели по спринтам.

    Чаще всего я использую Python. Также я работал с Kotlin, когда интегрировал алгоритм детектирования в приложение под Android. А при разработке цифровых систем управления главным инструментом был С++. Но это были единичные случаи: Python остается основным языком программирования.

    Что нужно знать инженеру по компьютерному зрению

    Навыки CV-инженера
    Навыки CV-инженера. Источник

    Для работы CV-инженером нужны знания в области математики и статистики, владение языками программирования и понимание принципов машинного и глубокого обучения. 

    Дорожная карта изучения CV может выглядеть так.

    Шаг 1 — Основы программирования и математика

    • Языки программирования. Для разработки систем CV чаще всего используют Python за счет большого количества библиотек и активного сообщества. Также подойдут C++ и MATLAB.
    • Математика. Фреймворки для работы с CV используют математические концепции. Для их понимания стоит изучить: линейную алгебру (матрицы и векторы), математическую оптимизацию, теорию вероятностей и статистику, геометрию и теорию графов.

    Шаг 2 — Основы компьютерного зрения и обработки изображений

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

    Шаг 3 — Основы машинного и глубокого обучения

    • Машинное обучение. Классификация, регрессия и кластеризация.
    • Глубокое обучение. Основы нейронных сетей, включая сверточные нейронные сети (CNN), которые пригодятся для решения многих задач Computer Vision.

    Шаг 4 — Продвинутые темы в компьютерном зрении

    • Распознавание объектов, сегментация и отслеживание. Методы и архитектуры, такие как YOLO, SSD для распознавания объектов, U-Net для сегментации изображений.
    • Предобученные модели. Умение использовать предобученные модели и fine-tuning для улучшения производительности.

    Шаг 5 — Практика и проекты

    Это может быть участие в соревнованиях по анализу данных на Kaggle или в открытых проектах на GitHub, собственные пет-проекты.

    Книги для обучения компьютерному зрению

    Practical Machine Learning for Computer Vision

    Авторы: Valliappa Lakshmanan, Martin Görner, and Ryan Gillard

    Practical Machine Learning for Computer Vision
    Источник

    Инженеры Google показывают на практике, как разрабатывать архитектуры ML для задач CV, выбирать подходящие модели и обрабатывать изображения перед обучением.

    Компьютерное зрение. Теория и алгоритмы

    Автор: Рейнхард Клетте

    Компьютерное зрение. Теория и алгоритмы
    Источник

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

    Deep Learning for Computer Vision

    Автор: Rajalingappaa Shanmugamani

    Deep Learning for Computer Vision
    Источник

    Пособие по DL для опытных программистов, которое научит создавать проекты с CV и работать с TensorFlow и Keras. Есть практические упражнения и примеры к каждой теме.

    Какие языки программирования и фреймворки используют в CV

    Для исследований и разработки в области компьютерного зрения применяют Python, C++ и MATLAB.

    Python

    У него простой и понятный синтаксис и множество инструментов для работы с CV. А с его веб-фреймворками Flask и Django можно использовать OpenCV.

    Библиотеки и инструменты для работы с CV

    Используется для классификации и детектирования объектов, сегментации и генерации изображений. Подходит для разработки сложных моделей глубокого обучения, таких как CNN, RNN (рекуррентные нейронные сети), GAN (генеративно-состязательные сети) и т. д. Предоставляет высокоуровневые API для удобства работы и обучения моделей.

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

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

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

    Другие библиотеки Python: scikit-image, PIL/Pillow, NumPy, SciPy.

    C++

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

    Библиотеки и инструменты для работы с CV

    • OpenCV

    Библиотека OpenCV написана на C++, поэтому знание этого языка позволит при необходимости ее модифицировать. OpenCV также работает с Python, Java, JavaScript и Ruby.

    • CUDA

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

    • Dlib

    Содержит алгоритмы машинного обучения и компьютерного зрения для определения лицевых ориентиров, отслеживания объектов и т. д. Также в нем есть Python API.

    MATLAB

    Язык программирования и среда для численных вычислений. Используют для прототипирования и разработки алгоритмов компьютерного зрения в академических и исследовательских целях. MATLAB имеет дорогостоящую лицензию. 

    Библиотеки и инструменты для работы с CV

    • Image Processing Toolbox

    Может улучшать, сегментировать изображения, использовать шумоподавление и геометрические преобразования. Поддерживает обработку 2D- и 3D-изображений произвольного размера.

    • Computer Vision Toolbox

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

    Какие еще языки используют для работы с готовыми решениями

    • JavaScript

    Так же, как и Python, работает с TensorFlow. TensorFlow.js позволяет строить модели машинного обучения в браузере. OpenCV также имеет свою версию для JavaScript. Еще есть tracking.js для обнаружения лиц, three.ar.js для определения поверхностей и библиотека WebGazer.js, отслеживающая движение глаз.

    • Java

    Работает с OpenCV Java API. Также есть специальный набор инструментов DeepLearning4j для глубокого обучения, который позволяет взаимодействовать с библиотеками на Python через фреймворк Keras. 

    • C#

    Также использует OpenCV. Есть инструменты AForge.NET, являющиеся частью фреймворка Accord.NET, которые позволяют обрабатывать изображения с помощью AForge.Imaging.

    Зарплата Computer Vision Engineer

    По данным hh.ru, зарплаты специалистов по компьютерному зрению и ML составляют от 70 000 ₽ для джунов до 400 000 ₽ для сеньоров и тимлидов. В феврале 2024 года в России было 230 вакансий для специалистов по CV:

    Вакансии с зарплатами специалиста по компьютерному зрению 2024
    Источник

    Согласно статистике Хабр Карьеры, на февраль 2024 года средняя зарплата по всем специалистам по компьютерному зрению составляет 241 666 ₽.

    средняя заработная плата Computer Vision Engineer в 2024
    Источник
    Игорь Матвеев
    Machine Learning Engineer в RNT Group и создатель проекта «MI Tech»

    В поисках вакансий нужно быть готовым к тому, что CV-инженеры в России востребованы не везде. В основном они нужны в госорганах и больших компаниях, которые занимаются исследованиями. Однако если у вас хорошо с английским, то смело рассматривайте зарубежный рынок вакансий — там на CV-инженеров хороший спрос.

    Если вы только начинаете свой путь в CV, то советую перед курсами освоить теоретическую базу. Я закончил бакалавриат по специальности «Инженер-конструктор авиационных двигателей» и магистратуру по специальности «Цифровые системы управления». И там, и там было очень много математики. Образование дало мне понимание, как работают алгоритмы, практические навыки пришлось осваивать позже. Если вы освоите теорию, то практика, которую дают на обучающих курсах, вам будет даваться легко, и вы вынесете из учебы максимум пользы.

    Узнать о программах высшего образования в Skillfactory и подготовиться к поступлению можно, подписавшись на наш Telegram-канал.

    Скопировано
    0 комментариев
    Комментарии