Решил сделать несколько видео на те темы, на которые всё не хватает времени написать нормальную статью. Начнём с банальной темы по распознаванию по лицам!
Почему они не работают?
Tag: Face Recognition
Функция потерь в обучении
На выходных учил жену кататься на беговых лыжах (она второй раз в жизни на них встала). И у нас возник забавный спор про теорию обучения. “Отталкиваться палками, – говорю, – нужно непрерывным движением, направленным вдоль тела сверху-вниз, назад. Вот смотри, у тебя палки загораживают лыжи во время такого действия – значит ты что-то делаешь неправильно. Старайся не допускать такого”. Жена же у меня – хирург. И таких объяснений не понимает. “Скажи мне лучше, какими мышцами толкаться. Вот ты делаешь это движения, что ты используешь?”. И тут в ступоре уже я. Я не врач. Я даже не знаю, где у меня мышцы и чем я толкаюсь.
Зато я понял, что ровно такой же казус встаёт при обучении нейронных сетей. Сеть можно обучать набором внешних умозрительных правил, расставив там Softmax/EuclidianLoss. “Видишь что рука заслонила лыжу – попробуй сделать что-нибудь по-другому”. А можно заложить куда более глубокую модель в которой персонализировать цену ошибки каждого конкретного случая. “Если запущена сначала мышца 1, а потом мышца 2 – ошибка”. Тут, конечно, сложнее. Нужно придумать такую модель. Зато эффективнее. В статье – небольшая подборочка интересных решений, которые мне попадалась и которые били существующие по эффективности за счёт персонализации функции потерь.
Библиотека dlib
*На дворе 2020 год. И уже не нужно использовать Dlib. Нигде. Вот тут я сделал популярный рассказ на что нужно переходить, что на порядок лучше и работает в любых условиях – https://youtu.be/2fnNhYCpToE
А вот тут моя краткая заметка почему для ComputerVision не читать статьи старше 3 лет – http://cv-blog.ru/?p=327
Есть одна замечательная библиотека, которая известна куда менее, чем OpenCV, но несущая в себе ряд замечательных функций + на полной OpenSource лицензии. Это Dlib. Библиотека включает в себя много чего, например: несколько реализаций SVM, несколько реализаций нейронных сетей, подборку функций матричной геометрии, подборку алгоритмов градиентного спуска, SURF|HOG.