Перейти к содержимому
На этой странице

Компьютерное зрение и сверточные сети

Все темы Data Scientist

Подтемы:

Какие методы компьютерного зрения можно использовать для определения цвета объектов на изображении?

Для определения цвета объектов на изображении в компьютерном зрении можно использовать следующие методы:

  1. Цветовые пространства: Преобразование изображения в другие цветовые пространства, такие как RGB, HSV, Lab и т. д., и анализ компонент цвета для определения цвета объектов.

  2. Кластеризация: Применение алгоритмов кластеризации, таких как k-means, для группировки пикселей изображения по цветовым признакам и определения доминирующих цветов объектов.

  3. Цветовая сегментация: Применение алгоритмов сегментации изображений, таких как пороговая обработка, разделение на основе регионов и сегментация на основе графов, для выделения объектов определенного цвета на изображении.

  4. Машинное обучение: Использование методов машинного обучения, таких как классификация или сегментация с использованием нейронных сетей, для обучения моделей на изображениях с размеченными объектами определенного цвета.


Какие классические методы поиска границ объектов on изображении существуют?

Некоторые классические методы поиска границ объектов на изображении включают:

  1. Методы градиентов: Основаны на анализе изменений яркости пикселей. Примеры включают оператор Собеля и оператор Прюитта.

  2. Методы пороговой обработки: Основаны на установлении порога яркости, при котором пиксели считаются частью объекта. Примеры включают глобальную и адаптивную пороговую обработку.

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

  4. Методы активных контуров (змеев): Используют модель формы объекта и энергетические функции для активного перемещения контура объекта к его границе.

  5. Методы детекторов краев: Используются алгоритмы обнаружения краев, такие как оператор Кэнни и детектор Марр-Хилдет.


Как определить цвет объекта, если освещение на изображении меняется?

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

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

  2. Преобразование цветового пространства: Меняет цветовое пространство изображения на другое, которое менее подвержено изменениям яркости. Например, переход из RGB в Lab или HSV.

  3. Нейронные сети: Можно использовать глубокие нейронные сети, обученные на большом наборе данных, для обнаружения и классификации цветов при различных условиях освещения.


Какие морфологические методы используются для анализа изображений?

Морфологические методы анализа изображений включают в себя следующие основные операции:

  1. Эрозия (Erosion) : Уменьшает яркость объектов на изображении путем удаления пикселей на границах объектов.

  2. Дилатация (Dilation) : Увеличивает яркость объектов на изображении путем добавления пикселей на границах объектов.

  3. Открытие (Opening) : Сочетание эрозии и дилатации. Первоначально применяется эрозия, а затем дилатация. Это помогает удалить шумы на изображении, сохраняя форму объектов.

  4. Закрытие (Closing) : Сочетание дилатации и эрозии. Сначала применяется дилатация, а затем эрозия. Это помогает закрыть небольшие пространства внутри объектов.

  5. Градиент (Gradient) : Разница между изображениями, полученными дилатацией и эрозией. Помогает выделить границы объектов.


Какой обратный метод эрозии применяется при морфологическом анализе изображений?

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

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


Какие алгоритмы используются для векторизации изображений в компьютерном зрении?

Для векторизации изображений в компьютерном зрении часто используются алгоритмы глубокого обучения, такие как:

  1. Convolutional Neural Networks (CNN) : Эффективно извлекают признаки из изображений, позволяя создавать компактные векторные представления.

  2. Autoencoders: Могут использоваться для сжатия изображений и извлечения значимых признаков.

  3. Pre-trained Models: Заранее обученные модели, такие как VGG, ResNet, и Inception, могут быть использованы для извлечения высокоуровневых признаков из изображений.


Как skip connections помогают U-Net восстанавливать маску?

Encoder U-Net постепенно уменьшает разрешение и извлекает контекст, но при pooling теряются точные границы. Skip connections передают карты признаков с соответствующего уровня encoder прямо в decoder, где они объединяются с повышенным разрешением. Decoder получает одновременно семантический контекст и локальные детали, поэтому лучше восстанавливает контуры маски. Эти связи отличаются от обычного residual addition: в классической U-Net признаки чаще конкатенируют. Финальный слой выдает logits классов для каждого пикселя.


Чем one-stage детекторы отличаются от two-stage?

Two-stage детекторы сначала предлагают регионы объектов, затем классифицируют их и уточняют рамки. Семейство Faster R-CNN обычно точнее на сложных сценах и малых объектах, но имеет большую latency. One-stage модели, например YOLO и SSD, сразу предсказывают классы и координаты по плотной сетке признаков. Они проще и быстрее для real-time, хотя современная граница по точности размыта. Выбор делают по AP на нужных размерах объектов, latency, памяти и целевому железу.


Чем назначение U-Net отличается от ResNet?

U-Net решает dense prediction: для каждого пикселя восстанавливает маску, используя encoder-decoder и связи между одинаковыми разрешениями. ResNet прежде всего описывает глубокую сеть с residual-блоками, где shortcut помогает оптимизации; типичный классификатор выдает один вектор на изображение. Это не взаимоисключающие архитектуры. ResNet можно использовать как encoder внутри U-Net, а decoder добавит повышение разрешения и сегментационную голову. Назначение определяет выход и loss, а не одно название backbone.


Как anchor-free детектор находит объекты без anchor boxes?

Anchor-free детектор не перебирает заранее заданные рамки. Он может предсказывать heatmap центров объектов, а в найденных точках регрессировать ширину, высоту и смещение, либо оценивать расстояния от точки до четырех сторон рамки. Keypoint-подходы восстанавливают углы или другие опорные точки. Это убирает подбор размеров и aspect ratio anchors, но остаются решения о назначении положительных точек, масштабе feature pyramid и подавлении дублей. Качество сравнивают по AP и latency.


Когда для бинарных масок лучше признаки формы, а не CNN?

Если вход уже является чистой бинарной маской, классы различаются простой геометрией, а данных мало, разумный baseline строят на площади, периметре, отношении сторон, округлости, выпуклости и моментах. Такие признаки дешевы и объяснимы. Они ломаются при шумной сегментации, сложной текстуре, деформациях и сильной вариативности ракурса. CNN оправдана, когда нужна инвариантность и достаточно размеченных примеров. Решение принимают по cross-validation и ошибкам на важных подгруппах.


Что такое ядро свёртки?

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


Что такое pooling?

Pooling - это операция, которая выполняется после свертки в сверточных нейронных сетях. Она используется для уменьшения размерности пространства признаков путем агрегации информации из набора соседних пикселей или признаков. Обычно в пулинге выбирается одно значение из набора соседних пикселей или признаков (например, максимальное значение в случае максимального пулинга, среднее значение в случае среднего пулинга) и используется как представление для этого набора. Это позволяет уменьшить количество параметров и вычислений в сети, улучшить инвариантность к масштабированию и улучшить обобщающую способность модели.


Что такое Receptive Field?

Receptive Field (рецептивное поле) в контексте сверточных нейронных сетей представляет собой область входных данных, которая влияет на активацию определенного нейрона в слое. Он определяет, какие пиксели или признаки во входном изображении влияют на вывод определенного нейрона. Размер рецептивного поля определяется архитектурой сети и параметрами слоев, такими как размер ядра свертки и размеры пулинга. Увеличение размера рецептивного поля позволяет модели анализировать более широкие контексты входных данных.


Какие есть способы решения проблем оптимизации сверточных сетей?

Вот несколько способов решения проблем оптимизации сверточных нейронных сетей:

  1. Использование предобученных моделей: Используйте предварительно обученные модели, такие как VGG, ResNet или Inception, и проводите дообучение на своих данных. Это может помочь избежать проблем с сходимостью и ускорить обучение.

  2. Использование адаптивных оптимизаторов: Вместо классического градиентного спуска используйте адаптивные оптимизаторы, такие как Adam, RMSProp или AdaGrad. Они могут более эффективно адаптироваться к изменчивости градиентов и ускорить сходимость.

  3. Регуляризация: Применение L1 или L2 регуляризации может помочь предотвратить переобучение и улучшить обобщающую способность модели.

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

  5. Использование более глубоких или узких архитектур: Иногда проблемы с оптимизацией могут быть связаны с архитектурными особенностями сети. Попробуйте изменить глубину или ширину сети и посмотрите, как это повлияет на процесс обучения.

  6. Использование других функций активации: Вместо стандартной функции активации ReLU попробуйте использовать другие функции, такие как Leaky ReLU, ELU или SELU, которые могут помочь в случае проблем с градиентами.


Как свертка будет обрабатывать цветное изображение?

Обычная свёртка цветного изображения использует фильтры с глубиной, равной числу входных каналов. Для каждого выходного значения суммируются произведения по пространственным координатам и всем входным каналам. Один фильтр создаёт одну карту признаков; число фильтров задаёт число выходных каналов. Независимую обработку каналов выполняет depthwise-свёртка.


Архитектура AlexNet и для какой задачи была изначально обучена?

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


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

Пулинг уменьшает пространственный размер карт признаков без обучаемого ядра и может повысить устойчивость к небольшим сдвигам. Он не обязателен: свёртка со stride больше 1 тоже уменьшает размер и обучает способ агрегации. Ни один из этих вариантов сам по себе не гарантирует инвариантность к масштабу и позиции.


Что будешь делать, если тебе надо обработать рукописный код (просил именно какие модели буду использовать).

Для обработки рукописного кода можно использовать следующие модели машинного обучения:

  1. CNN (Convolutional Neural Networks): Эффективны для распознавания визуальных паттернов в изображениях, включая рукописный текст.

  2. RNN (Recurrent Neural Networks): Подходят для работы с последовательными данными, что делает их хорошим выбором для интерпретации последовательности символов в рукописных строках.

  3. LSTM (Long Short-Term Memory): Разновидность RNN, особенно эффективная для длинных последовательностей данных и сохранения контекста в тексте.

  4. CRNN (Convolutional Recurrent Neural Network): Комбинирует CNN для извлечения признаков с RNN для обработки последовательностей, оптимально для распознавания рукописного текста.

  5. Transformer и BERT модели: Эти модели, основанные на механизме внимания, могут быть дообучены для обработки последовательностей символов, полученных после предварительной обработки изображений рукописного текста.

Выбор конкретной модели или комбинации моделей зависит от специфики задачи и доступности обучающих данных.

Собеседования: Data Science

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

Вопросы и ответы

Не нашли ответ? Напишите мне в чат. Я делаю Шпаргалку и сам отвечаю на сообщения. Расскажите, что не работает или чего вам не хватает. Может, смогу сразу взять это в работу.

Откуда взяты вопросы?

Из реальных собеседований. Основой подборки стал опыт Вадима Новосёлова: он проходил интервью и записывал вопросы. Подробнее о материалах.

Насколько эти вопросы актуальны?

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

На какой уровень рассчитана подборка?

Мы проходили собеседования на вакансии уровня Middle+, а иногда и на Senior-позиции. Вопросы из этих интервью вошли в подборку. Направления работы: Data Scientist, ML-инженер. Глубина обсуждения зависит от вакансии: будь готов объяснить основную идею, привести практический пример и разобрать ограничения и альтернативы решения.

Этот вопрос точно будет на моём собеседовании?

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