Я уже писал большую статью о том как запускать нейронные сети на телефонах. Точнее, статья была про разные аппаратные платформы и библиотеки выполнения нейронных сетей. Но, она абсолютно не рассматривала вопрос запуска нейронных сетей. Ведь библиотеку можно позвать из разных сред, можно из Java разрабатывая на Android studio/Eclipse/Idea. Можно на с++ модулях. Можно из JS, сделав веб-страничку (кстати, на эту тему я тоже делал ролик, а на Хабре была не моя неплохая статья на эту тему). А можно и другими способами.
В этой статье я чуть подробнее расскажу те способы которые мне нравятся и понятны.
Category: Обзор статей
Tesla – взгляд через замочную скважину на правильную систему
Всегда когда я разговариваю с человеком который хочет сделать новую систему распознавания я рассказываю о том что машинное обучение неидеально. Что всегда есть ошибки. Что всегда что-то будет идти не так. И что цель – не обучить один раз систему распознавания. А цель – выстроить систему которая будет стабильна к любым ошибкам распознавания.
Continue reading “Tesla – взгляд через замочную скважину на правильную систему”
Double trouble
Где-то с прошлого года у меня лежали две недописанные статьи. На прошлой неделе собрался с силами и в выходные их добил. Одна статья про то, как каждый день я сталкиваюсь с хренью в своей работе. И о том насколько бажет человеческое восприятие когда дело доходит до технологий.
Статья традиционно на хабре – https://habr.com/ru/company/recognitor/blog/446038/
Вторая статья – экспериментальная. Она про то, что машинное обучение – очень сложная штука, зачастую в современных реалиях чересчур сложная – и её не нужно лепить направо и налево. Статья экспериментальная в том числе потому что публикую её на платформе где ни разу раньше не писал – https://vc.ru/life/63227-mashinnoe-zrenie-ne-nuzhno-o..
Обе немного не в формате блока, так что тут только ссылка.
Почему искуство не позволит заработать денег
Но в работе мы стараемся держаться от всего этого дела как можно дальше. И всем советуем того же. В этой статье я попробую обяснить почему.
Continue reading “Почему искуство не позволит заработать денег”
Caffe2
Сегодня утром пока просыпался прочитал странные заголовки про Caffe2. Помедитировал над парочкой статей с маркетинговым булшитом – и пошёл разбираться что же это всё-таки такое на самом деле. Всё же 90% текущих проектов именно на Caffe. Надо быть в курсе всё же.
Запуск Caffe на RPi + SqueezeNet
Продолжение идеи про кормушку для синичек.
Фабула прошлой части: за окном стоит прозрачная кормушка. На неё смотрит камера, подключённая к Raspberri Pi. Хочу автоматическую съёмку птичек с распознаванием + с анализом того сколько. Плюс хочу чтобы кадры сохраняло, а лучшие – мне выкладывало куда-нибудь.
Установка Caffe и разметка базы птичек внезапно прошла ударными темпами. Плюс начитал много интересной инфы. Так что решил разбить пост на две части. В текущем посте – установка Caffe на RPi + рассказы про забавную сеточку SqueezeNet. В следующем посте (будет завтра-послезавтра) – разметка базы, обучение, оптимизация архитектуры сети/сетей.
Функция потерь в обучении
На выходных учил жену кататься на беговых лыжах (она второй раз в жизни на них встала). И у нас возник забавный спор про теорию обучения. “Отталкиваться палками, – говорю, – нужно непрерывным движением, направленным вдоль тела сверху-вниз, назад. Вот смотри, у тебя палки загораживают лыжи во время такого действия – значит ты что-то делаешь неправильно. Старайся не допускать такого”. Жена же у меня – хирург. И таких объяснений не понимает. “Скажи мне лучше, какими мышцами толкаться. Вот ты делаешь это движения, что ты используешь?”. И тут в ступоре уже я. Я не врач. Я даже не знаю, где у меня мышцы и чем я толкаюсь.
Зато я понял, что ровно такой же казус встаёт при обучении нейронных сетей. Сеть можно обучать набором внешних умозрительных правил, расставив там Softmax/EuclidianLoss. “Видишь что рука заслонила лыжу – попробуй сделать что-нибудь по-другому”. А можно заложить куда более глубокую модель в которой персонализировать цену ошибки каждого конкретного случая. “Если запущена сначала мышца 1, а потом мышца 2 – ошибка”. Тут, конечно, сложнее. Нужно придумать такую модель. Зато эффективнее. В статье – небольшая подборочка интересных решений, которые мне попадалась и которые били существующие по эффективности за счёт персонализации функции потерь.
Post-Residual
Мне всегда любопытно наблюдать как движется развитие нейронных сеток и искать какие-то соответствия тому, как обработка инфы устроена в мозгах. Особенно прикольно в этом отношении смотреть на пост-ResNet сети. Вроде как и хороший результат, но привязки к мозгам – никакой. Просто экстраполяция идей. Residual connection заработали? Ладненько, ладненько. Как мы можем запихать ещё кучу в нашу сетку?
Про детектирование объектов
Наткнулся на интересную работу, которая во многом подтверждает мои мысли, высказанные ещё в начале года. Мысли были о том, что сетка YOLO – очень интересный шаг в детектировании объектов и что стоит идти по этому пути.
Новая работа называется SSD (Single Shot MultiBox Detector) и сделала её российская компания(?) deepsystems.io (не доглядел, сделали конечно не они, это просто обзор от них). По сути, вся работа про то, как довести до ума YOLO. Результаты у них получились неплохие:
3D
Последний непобеждённый рубеж в машинном зрении, куда ещё не добрались нейронные сети – 3D. Но он потихоньку трещит. Всё началось с алгоритмов восстановления глубины, которые появились в 2015 году. Кстати, на статью стоит обратить внимание – она от группы ЛеКуна.