Как стать автором
Обновить

Умная кормушка: Machine Learning, Raspberry Pi, Telegram, немножко магии обучения + инструкция по сборке

Время на прочтение15 мин
Количество просмотров38K
Всего голосов 73: ↑72 и ↓1+71
Комментарии58

Комментарии 58

Вопрос в тему — что насчет загаженного наружного подоконника (олива)?
Также можно доделать кормушку для отлова птиц. Понравилась птичка — дал команду и дверка закрылась (это как вариант показать детям птичку в живую, а потом ее вместе выпустить).
Кормушка висит где-то с начала января. Пока не загадили. Но летают на 100% синицы. У них тактика «подлетел-схватил-улетел». Тут время на поднасрать не остаётся:)
Понравилась птичка — дал команду и дверка закрылась

Я думаю, что после такого птички больше не прилетят)
Уже раз пойманные не прилетят. Прилетят другие :)
В местности проживает не бесконечное число птиц.
У меня кормушка на окне висит лет 7 уже. До февраля отливы чистые — пока синицы кормятся. Они «на месте» семечки не лузгают — хватают и улетают на ближайшую ветку. Больше секунды в кормушке не сидят.
А вот в феврале (в как раз сейчас) начинают прилетать снегири. Красивые, большие. Но ужасные грязнули — как засядет в кормушке, так тут же «и жрет и ...». И в результате весь отлив сразу же покрывается грязью.
Снегирей пока не было. Жду.
Я несколько не уверен, что они прилетят. Они крупнее синиц, а леток не очень большой.
НЛО прилетело и опубликовало эту надпись здесь
Классные к вам птички залетают :) Респект!
Идея классная — есть простор для развития!

Не понял, насчет роста нагрузки от числа подписчиков канала в Телеграм. Если вы пуляете фото в канал — его разве не Телеграм после этого хранит и раздает и не все равно, сколько подписчиков — 15 или 100500?
НЛО прилетело и опубликовало эту надпись здесь
Да, спасибо. Именно так. Как я понял, бот не может одно и то же фото отправить сразу 10 людям.
Я нашёл один чит, но прикрутил его только в Inline mode. Можно отправить не фото, а ссылку на фото выложенное в канал. Это тратит меньше мощности.
Возможно у такого подхода есть подводные камни. Не испытывал.
Да, там есть сам бот, которому придется каждый запрос обрабатывать отдельно. А есть канал, в который нужно загрузить фото единожды и дальше все на мощностях телеграма, да.
Прикольно. Только, не понятно, почему кормушка не открытая, а закрытая.
Смею предположить, что «Снег подтаял. Капель застучала.» повлечет за собой лужи и кашу в корме. А так все закрыто и сухо. Да и дверка для птичек есть :)
Да, хотелось чтобы она была устойчивая к дождю. Бывают ещё кормушки, которые имеют «крышу», а вместо летка щель. Но жене больше понравилась эта:)
Решал похожую проблему таким стеком: ip камера hikvision с датчиком движения и отправкой на почту, а с почты через ifttt в telegram
Это близко, да. Но у детектора движения главный минус — ложные срабатывания. Особенно, если камера на заднем фоне видит дорогу.
У детекторов движения очень эмпирические алгоритмы.
Птиц мало потому, что кормушка закрытая и тесная. Голубь в такой леток вообще не просочится никак, а синицы пугливые и в закрытые коробки редко лезут. На открытые кормушки птицы налетают толпами.

PS: есть вероятность, что это были не синицы двух типов, а всего две разные синицы. Так что для полной статистики надо сделать распознавание «лиц», чтобы определять уникальность птиц и не считать два раза одну и ту же ;)
Тьфу-тьфу-тьфу, но голубей на окне не нужно. Не люблю их.
Это не две синицы. Это стайка штук на 20 особей. Она по двору летает. Лазоревка да, может одна и та же. Распознавание лиц это хорошо. Но сначала нужно самому их смочь распознать. Чтобы обучить систему.
image

Автор, что за присоски вы испльзуете? И как страхуете кормушку, чтобы она вниз не упала?

Я покупал готовую кормушку российского производителя. На сайте он утверждает, что присоски держат очень серьёзный минус. У меня висит с начала января — пока не оторвалась, минус 30 было. Страховка есть. Верёвочка небольшая, её нужно протянуть через окно, или подвязать к чему-нибудь снаружи.
Я бы еще измерял температуру, влажность и прочие погодные условия, менял вид корма, и пытался предсказать когда какая птица может прилететь, после чего при возможности идентификации конкретной птицы, пытался приучить к определенному виду вкусняшек для конкретной птицы, одного типа, после приучения(если получится) пробовал бы смещать время выдачи вкусняшек и смотреть обучаются ли птицы.
Меня очень смущает надёжность использования присосок в качестве крепления :(

PS упс! не заметил, что этот вопрос уже задали.
У производителя кормушек есть группа в вконтакте. Изучал там комментарии. Про «отвалилась» не нашёл ни одного. Учитывая, что страховка есть — не очень парюсь. Максимум придётся корм заменить.
У вас статичная картинка и интересующий объект (птица) движется по экрану. Не лучше ли будет выделять его из фона каким-нибудь простым методом, а нейронную сеть тренировать только на данный объект. Скорее всего, качество распознавания будет выше.
Также можно попробовать оперировать и вовсе не изображением, а размером движущегося объекта, его формой, скоростью.
Нет, не проще:
1) Точка подвеса камеры движется. Положение летка тоже. Пришлось бы ручную разметку использовать.
2) Это не решает проблему движущегося фона.В моём случае — качающихся деревьев.
3) Задача сегменации от фона — это вообще жесткач, если у объекта есть хоть часть цвета совпадающего с фоном.
4) Еще до появления нейронных сетей я делал такие алгоритмы. Это очень сложно. И очень много эмпирик. А после того как появиться контровое солнце — всё равно всё перестанет работать, пока вручную ещё пяток эмпирик не воткнуть. Нейронная сеть тем и хороша, что она сама ищет эмпирики. И потенциально, при большой базе может использоваться везде.
1. Камеру можно и закрепить
2. Деревья мелкие, амплитуда движения низкая. Птица большая, цельная, двигается быстро. Да, эмпирика, но сильно упростит жизнь. Если вы переложите эту логику отфильтровывания деревьев на нейронную сеть, то неизбежно должны будете сделать ее более сложной.
3. Зачем цвет? Зачем Full HD? Переводите картинку в низкое разрешение, в hsv. Оперируйте яркостью, а не RGB значениями.
4. Мне кажется, сеть это не магический черный ящик, который сделал вжух-вжух, и решил задачу. Тут нужно самому понять, как можно словами описать алгоритм распознавания птицы. Если пытаться запихать в сеть и фоновые деревья, и солнце, и снег, то ничего не получится. А если вы не можете словами описать процесс выделения птицы, то сеть тем более не справится.
Не хочу с вами спорить. Задачами CV занимаюсь уже лет 8. Делал крупные проекты ещё до прихода нейросетей. В том числе в сфере безопасности. То что вы тут написали простите — полная чушь.
Могу лишь предложить сделать стабильное решение предложенным вами способом, а потом написать статью почему это не работает:)
Да, сделать детекцию без сетей можно (но не так как вы пишите). Огромный труд, где-то 3-5 человекомесяцев. При этом работать будет хреново. А на половине окон вообще не будет.
Ни в коем случае не сомневаюсь в Ваших способностях и достижениях в области CV.
Просто странно видеть, что Вы пытаетесь решить такую сложную задачу «в лоб». С Вашей то квалификацией, Вы наверняка знаете много разных алгоритмов, «отфильтровывающих» и подготавливающих картинку с камеры для более надежного распознавания.
Для современных алгоритмов эта предварительная фильтрация не нужна. Они и так работают. От фильтрации всё может стать только хуже.
Главное — база. Чем больше, тем лучше!
Спасибо за интересную статью.
Почему бы не добавить в бот команду, которая помечала бы последнее отправленное фото, как ложное срабатывание? Возможно это ускорит разбор фотографий.
Очень хорошая идея! Да, мы это с коллегами обсуждали очень активно. Сейчас думаем может прикрутить в свои серьёзные проекты этот подход. Когда есть распознавание чего-то и хочется на первых порах контролировать систему.
Тут не стал прикручивать пока. Возможно в следующую итерацию сделаю.
В телеграмме можно для этого удобные кнопочки посылать вместе с фото. Чтобы не пришлось писать на клаве ничего.

Отличная работа!

«Иди кормушки вешай!»
НЛО прилетело и опубликовало эту надпись здесь
Наберёте базу — присылайте!:)
НЛО прилетело и опубликовало эту надпись здесь
Да, таких работ море.
Но вам скорее нужен тот кто в Data Scince специализируется.
CV — это несколько другое.

Здравствуйте! За блогом автора следим с первой его статьи. Спасибо Антон за Ваши труды и любовь к нашим пернатым друзьям! Всё пытались придумать как использовать наработки автора в реальных кормушках, но не смогли. Может у кого-то есть идеи на этот счёт? Будем рады выслушать!
С уважением, Никита.
Арт-Кормушка.рф

Если развесить кормушки по местности, то можно отслеживать количественно и качественно популяции в разных районах.
в парках вао москвы установили 600 кормушек, тег птица ешь, может твой опыт пригодится организаторам
По моим замерам SqeezeNet v1.1 не быстрее AlexNet (правда это на gtx 1070, а не на встроенных системах), а в статье там обещают 50x fewer parameters.
Почти наверняка из-за накладных расходов. один forward на caffe с предв.загрузкой данных — это уже 10мс даже на 1070.
Я мерил forward pass через встроенную в Caffe утилиту как то так, не исключено, что какой то оверхед и от Caffe идёт.

Memory:
SqueezeNet has 50x fewer weights than AlexNet, but the activations are not particularly small.

https://github.com/DeepScale/SqueezeNet/issues/7

Speed:
https://github.com/DeepScale/SqueezeNet/issues/19
https://github.com/DeepScale/SqueezeNet/issues/29
Гм, а тут пишут что быстрее:
https://github.com/DeepScale/SqueezeNet/issues/16#issuecomment-250696943

Сравнение:
https://github.com/DeepScale/SqueezeNet/issues/19#issuecomment-234714578
https://github.com/DeepScale/SqueezeNet/issues/16#issuecomment-231955551
https://github.com/DeepScale/SqueezeNet/issues/3
https://github.com/mrgloom/kaggle-dogs-vs-cats-solution

В итоге для Caffe на практике меньше захламляет HDD своими снапшотами при тренировке.
Видно что-то не то прочитал про него.
Вообще снапшоты это не такая большая проблема. А вот ещё скорости, конечно, хочется.
Сейчас полистал инет. Натолкнулся что возможно сейчас самый осмысленный это некий QuickNet, но у него нет порта на Caffe.
Или что-то ещё сейчас есть более быстрое с разумной точностью?
Мне кажется надо смотреть в сторону что используется на mobile devices и embedded systems.
Типа http://libccv.org/post/how-to-run-a-state-of-the-art-image-classifier-on-a-iphone/

Есть работы где сеть 'сжимают' разными методами с небольшой потерей точности, где сеть 'учитель' учит сеть 'ученика' с ботлнеком, используют квантизацию, раскладывают свертки на сепарабельные, используют меньшую чем float32 точность, есть даже где используются бинарные активации.

В целом я не особо в теме в этой области и на Caffe готовое решение не видел.
Прикольно. Был уверен, что встречал фразу в 50раз быстрее. Но точно помню что не в статье. И не помню где.
Получается, что единственный смысл — уменьшение веса файла сетки?
В памяти то она тоже не мало жрёт.
Всё таки от железа видимо зависит на Tesla M2090:

AlexNet
GoogLeNet
NetworkInNetwork
ResNet-50
ResNet-101
SqeezeNet_v1.1
VGG16
VGG19
Average Forward pass: 9.08378 ms.
Average Forward pass: 23.7814 ms.
Average Forward pass: 6.9389 ms.
Average Forward pass: 44.6524 ms.
Average Forward pass: 82.9058 ms.
Average Forward pass: 5.77556 ms.
Average Forward pass: 55.3113 ms.
Average Forward pass: 67.9204 ms.
Спасибо, было крайне интересно прочесть о Вашем опыте.
Хочу один вопрос задать по теме доступа к картинкам.
WD MyBook Live вроде позволяет удаленный доступ организовать при помощи приложений от WD — почему таким вариантом не воспользовались?
Зачем это делать в локальной сети? Или вы про удалённый просмотр?
Там у WD проблемм и глюков море, если что. Он требует чтобы и устройство с которого и устройство на которое заходят прокидывалось через NAT. А сейчас море провайдеров NAT частично банят.
О, круто, спасибо. Сделаю себе ловушку для птичек, чтобы кошку живой едой порадовать.
Антон, попытался открыть ссылку с фотографиями, но она оказалась не валидна. Хотел посмотреть на размеченные фотографии. Так как только начинаю, хотел узнать как правильно делать заметку фотографий. Можете подсказать, где можно прочитать про это более подробно? Читал Вашу статью «Колыбель для АI», где как раз затрагивалась тема разметки, но хотелось бы понять нужно ли что-то писать на фото или только красным прямоугольником будет достаточно разметить. Поэтому хотел посмотреть правильно разметки фотографий на примере птиц. Буду благодарен за ответ.
Да, чтото файл затёр случайно. Заапдейтил ссылку. Вот файл.
Какой красный прямоугольник?!
Нужно на вход сетки подавать чистое изображение. А на выход — параметрическую модель результата. В той статье есть масса примеров описания такой модели на базе существующих датасетов.

Тоже подобный проект сделал. Правда используя каскад Хаара для распознавания, поскольку есть идея подсчитывать эпизоды кормления.


Фото

imageimage


Какой снегирь хороший)) Пухленький)
А в чём идея (подробнее) и почему каскад Хаара для неё лучше?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории