Промежуточный итог: Заворачиваем и запускаем

При работе с системами машинного зрения я всегда говорю заказчикам, что в первую очередь нужно сделать минимально рабочий прототип. Так и с кормушкой. Первичная моя цель – это не сделать как можно более хорошую систему, с максимальной точностью,  а запустить чтобы работало. Более менее стабильно.
И уже после этого набирать статистику, лечить баги, и.т.д. Прототип готов, работает, висит на окне и шлёт мне сообщения про каждую птичку, которая прилетает в кормушку.
А теперь чуть подробнее что я докрутил:)

Continue reading “Промежуточный итог: Заворачиваем и запускаем”

Когда машинное обучение сталкивается с реальностью

Когда я говорю, что машинное обучение в конкурсах и в реальности – это две не имеющих отношения друг к другу вещи – на меня смотрят как на психа.
Задачи на машинное обучение на конкурсах – вопрос оптимизации сеток и поиска лазеек. В редком случае – создания новой архитектуры.

2
Задачи машинного обучения в реальности – вопрос создания базы. Набора, разметки, автоматизации дальнейшего переобучения.
Задача с кормушкой мне понравилась во многом из-за этого. Она с одной стороны очень простая – делается практически мгновенно. А с другой стороны – очень показательная. 90% задач тут – это не имеющая отношения к конкурсам тягомотина.

Continue reading “Когда машинное обучение сталкивается с реальностью”

Запуск Caffe на RPi + SqueezeNet

Продолжение идеи про кормушку для синичек.

1

Фабула прошлой части: за окном стоит прозрачная кормушка. На неё смотрит камера, подключённая к Raspberri Pi. Хочу автоматическую съёмку птичек с распознаванием + с анализом того сколько. Плюс хочу чтобы кадры сохраняло, а лучшие –  мне выкладывало куда-нибудь.

Установка Caffe и разметка базы птичек внезапно прошла ударными темпами. Плюс начитал много интересной инфы. Так что решил разбить пост на две части. В текущем посте – установка Caffe на RPi + рассказы про забавную сеточку SqueezeNet. В следующем посте (будет завтра-послезавтра) – разметка базы, обучение, оптимизация архитектуры сети/сетей.

Continue reading “Запуск Caffe на RPi + SqueezeNet”

the bird is the word

Bastion_portrait

Я люблю различных птичек. С детства дома жила куча попугаев и прочей живности. А ещё я люблю писать на Хабр и в прочие места странные нравственно-поучительные статьи на тему «как делать какие-то системы». Ну да. И нейронные сети.
Придумал как это объединить. Недавно Анне попались акриловые прозрачные кормушки на окно. Засыпаешь семки — смотришь как птички прилетают-кормятся. Но только птички пугливые, летают не по расписанию. И я понял: хочу такую кормушку на окно, но чтобы она сама распознавала кто прилетает и сообщала мне. Плюс фоточка.
В блоге я буду публиковать то, как я эту систему строю. С исходниками, размышлениями на тему того что нужно, что не нужно + с открытыми базами, которые собираю с устройства. Во многом, то что тут будет — оверкилл. Например Сaffe на Rasberry Pi, которое я планирую запустить. Это обусловлено тем, что мне интересно потренироваться делать те или иные вещи.
Всего я планирую уложиться в 3-4 заметки. И, одна итоговая, на Хабр. Сегодня первая: «Введение. Проект системы. Инфраструктура. Инфраструктура сбора базы.»
Continue reading “the bird is the word”

Функция потерь в обучении

На выходных учил жену кататься на беговых лыжах (она второй раз в жизни на них встала). И у нас возник забавный спор про теорию обучения. “Отталкиваться палками, – говорю, – нужно непрерывным движением, направленным вдоль тела сверху-вниз, назад. Вот смотри, у тебя палки загораживают лыжи во время такого действия – значит ты что-то делаешь неправильно. Старайся не допускать такого”. Жена же у меня – хирург. И таких объяснений не понимает. “Скажи мне лучше, какими мышцами толкаться. Вот ты делаешь это движения, что ты используешь?”. И тут в ступоре уже я. Я не врач. Я даже не знаю, где у меня мышцы и чем я толкаюсь.

Neural+network+art+part+1+source+http+wwwboredpandacom+inceptionism+neural+network+deep+dream+art+man+combines+random+peoples_695771_5900164

Зато я понял, что ровно такой же казус встаёт при обучении нейронных сетей. Сеть можно обучать набором внешних умозрительных правил, расставив там Softmax/EuclidianLoss. “Видишь что рука заслонила лыжу – попробуй сделать что-нибудь по-другому”. А можно заложить куда более глубокую модель в которой персонализировать цену ошибки каждого конкретного случая. “Если запущена сначала мышца 1, а потом мышца 2 – ошибка”. Тут, конечно, сложнее. Нужно придумать такую модель. Зато эффективнее. В статье – небольшая подборочка интересных решений, которые мне попадалась и которые били существующие по эффективности за счёт персонализации функции потерь.

Continue reading “Функция потерь в обучении”