Sobes.tech
Back to questions
Middle — Senior
15

Какие особенности active learning в CV?

Companies where asked
ПАО Газпром нефть
Тензор
Sensemitter

Answer from AI

sobes.tech AI

Что хотят услышать интервьюеры:

Active learning в CV — это подход, где модель сама помогает выбирать, какие изображения или разметки дадут максимальную пользу для обучения. Обычно ожидают упоминание высокой стоимости разметки, стратегии отбора самых информативных примеров и итеративного цикла «обучение → выбор данных → разметка → дообучение». Важно показать понимание, что в computer vision особенно критичны шум, дисбаланс классов и дорогая аннотация.

Определение:

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

Особенность именно для CV в том, что один кадр может содержать много информации, поэтому можно выбирать не только целые изображения, но и конкретные области, объекты, а иногда и video frames. Также важно учитывать, что предсказательная неопределённость модели в визуальных задачах часто зависит от качества изображений, плотности объектов, редкости классов и доменного сдвига.

Пример использования:

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

# Псевдокод active learning для CV

labeled = initial_labeled_set
unlabeled = large_unlabeled_pool

for round in range(num_rounds):
    model = train_detector(labeled)

    scores = model.predict(unlabeled)

    # Выбираем самые полезные примеры:
    # - с высокой неопределённостью
    # - или с редкими классами
    # - или с максимальным разнообразием
    batch = select_informative_samples(scores, unlabeled, k=100)

    new_labels = annotate(batch)   # отправляем на разметку
    labeled += new_labels
    unlabeled -= batch

Пояснение кода:

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

В CV это может быть реализовано не только на уровне целых изображений, но и на уровне:

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

Ключевые моменты:

  • Active learning особенно полезен в CV, когда разметка изображений, bbox или масок дорогая.
  • Основная идея — выбирать не случайные, а наиболее информативные примеры для разметки.
  • Частые стратегии: uncertainty sampling, diversity sampling, query by committee, margin/entropy-based selection.
  • В CV важно учитывать пространственную и визуальную похожесть данных, чтобы не выбрать много дублей.
  • Для детекции и сегментации можно выбирать не только изображения, но и отдельные объекты или регионы.
  • Риски: смещение выборки, переоценка неопределённости и нестабильность при маленьком стартовом датасете.