# Co-Mining: Deep Face Recognition with Noisy Labels Достаточно частая проблема датасетов в том, что они плохо чищены. Могут возникать следующие проблемы ![](https://i.imgur.com/MIe0zcF.png) * Некоторые фотки с перепутанными айдишниками * Есть мусорные фотки, которые не принадлежат ни к какому айдишнику, но с меткой * При объединении датасетов айдишники дублируются В работе [Co-Mining: Deep Face Recognition with Noisy Labels](http://openaccess.thecvf.com/content_ICCV_2019/html/Wang_Co-Mining_Deep_Face_Recognition_With_Noisy_Labels_ICCV_2019_paper.html) рассматриваются первые две проблемы. ## Idea Когда нейронка обучается, она сначала выучивает легкие, правильно размеченные примеры, а только потом выучивает сложные и плохо размеченные. Что если обучать сетку на чистых и хорошо размеченных примерах? (а что произойдет с хард кейсами?) Ок, гипотеза, что если мы обучаемся на примерах с чистой разметкой, то это не угробит модель. Если обучаться на грязной разметке, то это сделает только хуже. ## Bad cases detection У вас есть нейронка (пока одна). В начале обучения она чуть выучила примеров и больше всего тупит на плохой разметке, пытаясь заассайнить ей "неправильную метку". Нам надо сделать так, чтобы это поведение сохранялось. Самый простой способ это сделать, это не обучать на примерах с маленьким лоссом. Однако. Тогда мы делаем биас на то, как учится сеть и усугубляем ее ошибки. Нужно все-таки как-то смягчить проблему биаса на свои ошибки. Почему бы не добавить вторую сеть, которая бы говорила, какие примеры хорошие для обучения, а какие плохие. Ситуация симметрична, первая сеть тоже может выдавать набор хороших плохих примеров для второй сети. На этой идее строится весь предложенный авторами подход. ## Method ![](https://i.imgur.com/BetGcUW.png) * В обучении есть две нейронки * Подается одинаковый батч для каждой сети * Сеть 1 и 2 делят батч на хорошие ($1-r\%$) и плохие примеры ($r\%$) * Из обучения 1 выкидываются те, которые были признаны плохими 2. И наоборот * Для примеров которые обе сети признали хорошими, меняется лосс (baseline probability уменьшается). На них градиенты будут сильнее. * Для примеров нe из пересечения считается обычный ArcFace Ниже алгоритм и лоссы более формально из статьи. ![](https://i.imgur.com/y4pqNvo.png) ![](https://i.imgur.com/cQ3XALZ.png) ![](https://i.imgur.com/J2gdN9s.png) ![](https://i.imgur.com/BtJQtTt.png) ## Experiments Для начала CASIA, легкий датасет и легкие бенчмарки, чтобы проверить работоспособность и идею. Разметку они сделали хорошей вручную. * NLD -- их метод с детекции по лоссу * HCCFE -- обмен примерами * CFR -- увеличение важности хороших примеров ![](https://i.imgur.com/EqqCU0e.png) Интересные они графики приводят для оценки качества разметки (Further, we use the SEResNet100-IR model pre-trained on MS1Mdeepglint) ![](https://i.imgur.com/uJkJ3f0.png) ![](https://i.imgur.com/7RClvbe.png) ### More complicated datasets ![](https://i.imgur.com/gQQhgSy.png)