Игнорирование дисбаланса классов в визуальных данных ведет к катастрофическому падению 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.
