Как делать модель более устойчивой к входному шуму?
можно назвать это продолжением рубрики #просвещение ч.2
Раз у меня канал про компьютерное зрение, давайте расскажу про такую штуку как аугментации поподробнее.
📌Аугментации - это такие преобразования изображений, которые нужны для большей устойчивости обучаемых моделей.
Представим у вас есть набор изображений машин на улице и разметка номеров для распознавания.
©️Вы обучили модель детектировать и распознавать эти номера, запустили модель в прод, а она перформит плохо.
©️Начали отсматривать вручную предсказания и поняли, что ночью модель не находит номера, в дождь и туман не находит и т.д.
©️Посмотрели датасет, а там и правда только изображения в ясную погоду днём. Привет,
data distribution shift.
❗️Как вариант можно набрать новых данных, разметить и дообучить модели, но это долго и дорого.
Тут на помощь приходят аугментации.
©️Мы можем симулировать разнообразие данных за счёт различных трансформаций входных изображений — без необходимости ручного сбора новых сэмплов. Плюс, это ещё и регуляризация, которая помогает избежать
оверфита.
Можно задать набор аугментаций с параметрами и вероятностью применения, и каждый раз на обучении изображения будут "чуть-чуть другими".
Вот самые популярные и часто используемые трансформации:
🔸Resize — изменение размера до нужного для модели (например, 224×224). Обычно обязательная операция, но не считается "обогащением" данных. Также можно делать изображения чуть больше, чем нужно на вход модели, а затем делать random crop до нужного размера.
🔸Random crop — случайно вырезает участок изображения. Помогает учить модель фокусироваться не только на центре.
🔸Random rotation — поворот изображения на случайный угол. Работает хорошо, если объект в кадре не зависит от ориентации.
🔸Horizontal/Vertical flip — отражение по горизонтали/вертикали.
🔸Translation / Shift — смещение изображения по осям.
🔸Scaling — увеличение или уменьшение масштаба. Помогает при обучении моделей, которые должны быть инвариантны к размеру объектов.
🔸Color jitter — изменение яркости, контраста, насыщенности, оттенка. Хорошо симулирует разные условия освещения.
🔸Noise / blur — добавление шума и размытия. Полезно при обучении на изображениях с реальными искажениями (например, камеры на дорогах, старые сканы).
Из не настолько базовых и очевидных:
🔸Jpeg Compression — сжатие изображения с потерей качества. Нужна для большей устойчивости к jpeg форм
ату. Есть статья, где исследуется проблема jpeg
сжатия.
🔸CutMix — у
поминал её тут. Вместо того, чтобы просто удалять пикс
ели, как в вырезании, мы заменяем удаленные области на патч из другого изображения. Хорошо работает в классификации, где мы сглаживаем метку пропорционально площади замены. [напр. p(dog) = 0.6, а p(cat
) = 0.4]
🔸Mosaic - она включает в себя создание составных изображений (или мозаики), объединяя несколько изображений в один образец обучения. Пример на картинке 2.
Не забываем что у нас к изображениям идут метки (labels) и они тоже меняются вместе с картинкой. Пример можно посмотреть на картинке 3.
⭐️Есть кстати бородатая задача с собеседований: "Нам нужно распознавать дорожные знаки для автопилота, какие аугментации мы можем/не можем применять?" Спойлер: если делать например horizontal flip, то знаки поворота будут неправильно распознаны.
Полезно буде
т почитать:
Искусство аугментации: как улучшить модели компьютерного зрения без сбора новых данных