Какие особенности active learning в CV?
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 важно учитывать пространственную и визуальную похожесть данных, чтобы не выбрать много дублей.
- Для детекции и сегментации можно выбирать не только изображения, но и отдельные объекты или регионы.
- Риски: смещение выборки, переоценка неопределённости и нестабильность при маленьком стартовом датасете.