Сравнение методов балансировки классов в изображениях для нейросетей: влияние недопредставленных категорий на точность F1-score

Игнорирование дисбаланса классов в визуальных данных ведет к катастрофическому падению F1-score: при соотношении мажоритарного и миноритарного классов 10:1 точность на редких категориях падает на 30-45%, даже если общая Accuracy кажется высокой. В промышленном CV побеждает не объем данных, а их репрезентативность, где критическим порогом считается отклонение доли класса более чем на 20% от реального распределения в продакшене.

Ловушка Accuracy и деградация F1-score

Ошибка новичка — оценивать модель по общей точности. В датасете, где 95% изображений относятся к классу «фон» и 5% к «дефект детали», модель, которая всегда предсказывает «фон», покажет Accuracy 95%, но F1-score для целевого класса будет равен 0. Это делает систему бесполезной. На практике, когда доля миноритарного класса падает ниже 10%, градиент при обучении начинает доминировать в сторону мажоритарного класса, фактически «затирая» признаки редких объектов.

Кейс: при разработке системы детекции трещин в бетоне сокращение выборки редких типов трещин с 1000 до 200 образцов снизило Recall с 0.88 до 0.62, что привело к пропуску 38% критических дефектов. Экспертный вывод: ориентируйтесь исключительно на Macro-F1 и Precision-Recall кривые; любой разрыв в количестве примеров между классами более чем в 3 раза требует принудительной балансировки.

Методы undersampling: фильтрация избыточности

Удаление дублей и визуально схожих кадров из мажоритарного класса — самый дешевый способ балансировки. В потоковых данных с камер наблюдения часто встречается избыточность до 80%: соседние кадры с частотой 25 fps почти идентичны. Применение косинусного сходства векторов признаков (Cosine Similarity) с порогом 0.95 позволяет отсечь шум, не теряя вариативности. Это сокращает время обучения на 40-60% без потери в качестве.

Пример: в датасете из 100 000 фото дорожных знаков удаление 40 000 избыточных снимков «стоп-сигналов» (мажоритарный класс) повысило F1-score для редких предупреждающих знаков на 12% за счет смещения внимания сети. Экспертный вывод: undersampling эффективнее оверсэмплинга, если у вас избыточный объем данных; всегда начинайте с очистки мажоритарного класса от семантических дублей.

Синтетическая генерация и аугментация миноритариев

Когда данных физически мало, применяется SMOTE для изображений или генеративные сети (GAN). Однако простой поворот или зеркалирование (flip) дают прирост F1-score не более 2-5%. Реальный профит приносит геометрическая трансформация и изменение освещенности в диапазоне ±20% по яркости и контрастности. Использование диффузионных моделей для генерации редких классов позволяет поднять Recall на 15-20%, но требует жесткого контроля артефактов.

Риск: чрезмерная аугментация (более 5-кратного увеличения выборки одного класса) ведет к переобучению (overfitting) на конкретных паттернах. Модель начинает узнавать не объект, а специфику фильтра аугментации. Экспертный вывод: используйте синтетику только для заполнения «белых пятен» в вариативности (ракурсы, свет), а не для механического раздувания количества картинок.

Весовые коэффициенты и модификация функции потерь

Если фильтрация данных невозможна, проблему решают через Weighted Cross-Entropy. Присвоение веса классу обратно пропорционально его частоте (например, вес 1.0 для мажоритарного и 5.0 для миноритарного) заставляет модель сильнее «штрафовать» себя за ошибку в редком классе. Это позволяет поднять F1-score на 10-15% без изменения состава датасета. В промышленном CV часто применяют Focal Loss, которая зануляет вклад легко классифицируемых примеров, фокусируя сеть на сложных, недопредставленных объектах.

Нюанс: слишком высокие веса (более 10:1) провоцируют рост False Positive — модель начинает видеть редкий класс там, где его нет. Экспертный вывод: подбирайте веса итеративно, начиная с соотношения 1:2, и следите за балансом между Precision и Recall, чтобы не превратить детектор в «паникёра».

Стратегии формирования сбалансированного датасета

Оптимальный пайплайн выглядит так: фильтрация дублей → целевой сбор данных для миноритариев → умеренная аугментация → весовые коэффициенты. Важно понимать, что изображения для нейросетей должны отражать реальное распределение домена. Если в реальности дефект встречается в 1% случаев, обучение на 50/50 датасете создаст разрыв между обучением и продакшеном, что приведет к заваливанию оператора ложными срабатываниями.

Сравнение: стратегия «равные классы» дает высокий F1 на тесте, но низкий в продакшене; стратегия «реальное распределение + Focal Loss» дает стабильный результат с отклонением точности не более 3-5% от расчетной. Экспертный вывод: стремитесь не к идеальному равенству классов, а к репрезентативности; идеальный баланс в датасете — это миф, который вредит точности в реальных условиях.

Вывод

Для максимизации F1-score при дисбалансе классов я рекомендую комбинированный подход: сначала жесткий undersampling мажоритарного класса через анализ косинусного сходства (удаление до 30-50% дублей), затем точечная синтетика для редких категорий и финальная доводка через Focal Loss. Избегайте слепого оверсэмплинга и ориентации на Accuracy. Начинайте с анализа разрыва между обучающей выборкой и реальными данными, так как именно здесь скрываются основные потери точности в промышленном CV.

Читайте также