Hard Negative Mining
Узнай, как хард-негатив майнинг снижает количество ложноположительных срабатываний в компьютерном зрении за счет выявления запутанных негативных примеров и улучшения обучения моделей YOLO.
Майнинг сложных негативов — это стратегия использования обучающих данных, которая определяет негативные примеры, кажущиеся модели необычно убедительными, и уделяет им больше внимания в процессе обучения. Негативный пример не принадлежит к целевой классу, в то время как сложный негатив достаточно близко напоминает позитивный, чтобы вызывать высокий балл, неверную детекцию или находиться рядом с эмбеддингом. Сосредоточившись на этих запутанных случаях вместо многократного показа модели простых фоновых примеров, майнинг сложных негативов позволяет заострить границы решений и снизить количество ложноположительных срабатываний.
Как работает майнинг сложных негативов#
Процесс обычно начинается с базовой модели, обученной на репрезентативных обучающих данных. Затем модель оценивает больший пул кандидатов, такой как неразмеченные производственные изображения, чисто негативные сцены или примеры в каждом обучающем батче. Кандидаты, получающие высокие позитивные баллы несмотря на то, что они являются негативными, отбираются для проверки и будущего обучения.
То, что считается «сложным», зависит от задачи:
- В детекции объектов фоновая область является сложной, когда детектор ошибочно принимает её за целевой объект.
- В классификации это пример неправильного класса, которому присвоена высокая уверенность для целевого класса.
- В поиске или метрическом обучении это нерелевантный элемент, расположенный близко к запросу в пространстве эмбеддингов. Рекомендации Google по негативной выборке для рекомендательных моделей описывают сложные негативы как негативные элементы с высокими баллами, которые сильно влияют на градиент.
- В триплетном обучении негатив располагается слишком близко к анкору по сравнению с соответствующим ему позитивом. Документация PyTorch TripletMarginLoss объясняет структуру «анкор-позитив-негатив», используемую для изучения относительной схожести.
Майнинг может происходить оффлайн путём периодического запуска модели по большому набору данных или онлайн путём выбора сложных негативов из текущего мини-батча. Слой майнинга сложных негативов Keras предоставляет пример выбора на основе запроса на основе логитов кандидатов.
Почему важны сложные негативы#
Большинство негативных примеров просты: пустое небо вряд ли запутает детектор вилочных погрузчиков. Как только модель классифицирует такие примеры правильно, они вносят небольшой полезный сигнал обучения. Сложные негативы обнажают точные визуальные или семантические особенности, которые модель неправильно поняла.
Они особенно ценны, когда ложные тревоги снижают точность. Анализ точности и полноты помогает определить, действительно ли дообучение снижает количество ложноположительных срабатываний без недопустимого падения полноты, как показано в руководстве scikit-learn по точности и полноте.
Майнинг сложных негативов отличается от связанных техник:
- Негативная выборка выбирает управляемый поднабор всех негативов; майнинг сложных негативов расставляет приоритеты для наиболее запутанных.
- Активное обучение обычно выбирает неопределенные примеры для разметки человеком, включая возможные позитивы. Майнинг сложных негативов специально нацелен на подтвержденные негативы, которые бросают вызов модели.
- Фокусная функция потерь меняет то, как взвешиваются примеры внутри функции потерь, в то время как майнинг меняет то, какие примеры выбираются или выделяются.
- Ребалансировка классов решает проблему неравной частоты классов. Руководство Google по наборам данных с дисбалансом классов охватывает понижающую дискретизацию и взвешивание, но частые негативы не обязательно являются сложными негативами.
- Аугментация данных создает вариации существующих семплов; она не может надежно привнести неизвестный режим сбоя в продакшене.
Реальные приложения#
Детекция безопасности на складе: Предположим, что детектор вилочных погрузчиков неоднократно определяет гидравлические тележки, отражения на стеллажах и ножничные подъемники как вилочные погрузчики. Эти ложноположительные срабатывания могут вызывать ненужные оповещения и снижать доверие оператора. Инженеры могут собрать эти сцены в качестве негативных изображений без аннотаций вилочных погрузчиков, добавить их в набор данных и дообучить детектор отличать цель от похожего оборудования.
Визуальный поиск товаров: Клиент ищет конкретные черные кроссовки для бега, но поисковая система ставит визуально похожие кроссовки из других линеек продукции слишком высоко. Эти несоответствующие продукты становятся сложными негативами. Обучение на их основе побуждает модель эмбеддингов сохранять тонкие различия, такие как форма подошвы, расположение логотипа и материал. Пример сиамской сети Keras демонстрирует, как изображения-анкоры, позитивные и негативные изображения поддерживают обучение схожести.
Практический рабочий процесс майнинга#
Надежный рабочий процесс носит итеративный характер:
- Запусти предсказания на репрезентативных данных валидации и продакшена.
- Проверь ложноположительные срабатывания с высокой уверенностью и паттерны путаницы классов с помощью режима валидации Ultralytics и матрицы ошибок.
- Подтверди, что каждый кандидат действительно является негативным; неверные метки могут научить модель подавлять реальные объекты.
- Найди похожие семплы, удали дубликаты и сохрани разнообразные фоны, точки обзора и условия.
- Дообучи модель, затем сравни производительность как на полном тестовом наборе, так и на специальном срезе сложных негативов, используя рабочий процесс тестирования моделей компьютерного зрения.
Поиск по сходству в Ultralytics Explorer может помочь найти изображения, напоминающие известное ложноположительное срабатывание:
from ultralytics import Explorer
# Build an embedding index for the example dataset
explorer = Explorer(data="coco128.yaml", model="yolo26n.pt")
explorer.create_embeddings_table()
# Retrieve visually similar candidates for human review
candidates = explorer.get_similar(
img="https://ultralytics.com/images/bus.jpg",
limit=12,
)
print(candidates.head())Само по себе сходство не доказывает, что кандидат является сложным негативом; проверяющий должен подтвердить его истинную метку. Команды могут использовать Ultralytics Platform для организации изображений-кандидатов, разметки или их исправления, обучения обновленных моделей и мониторинга развертываний.
Избегай выбора только абсолютно самых сложных примеров. Некоторые из них могут быть неверно размечены, неоднозначны или являться предельными выбросами, которые дестабилизируют обучение. Сбалансированная смесь простых, умеренно сложных и сложных негативов обычно сохраняет широкое покрытие, обучая при этом модель тому, где ее текущая граница дает сбой.






