Я уже писал большую статью о том как запускать нейронные сети на телефонах. Точнее, статья была про разные аппаратные платформы и библиотеки выполнения нейронных сетей. Но, она абсолютно не рассматривала вопрос запуска нейронных сетей. Ведь библиотеку можно позвать из разных сред, можно из Java разрабатывая на Android studio/Eclipse/Idea. Можно на с++ модулях. Можно из JS, сделав веб-страничку (кстати, на эту тему я тоже делал ролик, а на Хабре была не моя неплохая статья на эту тему). А можно и другими способами.
В этой статье я чуть подробнее расскажу те способы которые мне нравятся и понятны.
Category: Open Source
GNN в Computer Vision
Computer Vision достаточно необычная область. Далеко не все алгоритмы из машинного обучения сюда заходят быстро, далеко не все приживаются. Примером того, что я не видел в варианте “в кассу” – были Graph Neural Network (GNN – сети работающие на графах).
Но, внезапно натолкнулся, об этом и рассказ.
Caffe2
Сегодня утром пока просыпался прочитал странные заголовки про Caffe2. Помедитировал над парочкой статей с маркетинговым булшитом – и пошёл разбираться что же это всё-таки такое на самом деле. Всё же 90% текущих проектов именно на Caffe. Надо быть в курсе всё же.
Промежуточный итог: Заворачиваем и запускаем
При работе с системами машинного зрения я всегда говорю заказчикам, что в первую очередь нужно сделать минимально рабочий прототип. Так и с кормушкой. Первичная моя цель – это не сделать как можно более хорошую систему, с максимальной точностью, а запустить чтобы работало. Более менее стабильно.
И уже после этого набирать статистику, лечить баги, и.т.д. Прототип готов, работает, висит на окне и шлёт мне сообщения про каждую птичку, которая прилетает в кормушку.
А теперь чуть подробнее что я докрутил:)
Continue reading “Промежуточный итог: Заворачиваем и запускаем”
Когда машинное обучение сталкивается с реальностью
Когда я говорю, что машинное обучение в конкурсах и в реальности – это две не имеющих отношения друг к другу вещи – на меня смотрят как на психа.
Задачи на машинное обучение на конкурсах – вопрос оптимизации сеток и поиска лазеек. В редком случае – создания новой архитектуры.
Задачи машинного обучения в реальности – вопрос создания базы. Набора, разметки, автоматизации дальнейшего переобучения.
Задача с кормушкой мне понравилась во многом из-за этого. Она с одной стороны очень простая – делается практически мгновенно. А с другой стороны – очень показательная. 90% задач тут – это не имеющая отношения к конкурсам тягомотина.
Continue reading “Когда машинное обучение сталкивается с реальностью”
Запуск Caffe на RPi + SqueezeNet
Продолжение идеи про кормушку для синичек.
Фабула прошлой части: за окном стоит прозрачная кормушка. На неё смотрит камера, подключённая к Raspberri Pi. Хочу автоматическую съёмку птичек с распознаванием + с анализом того сколько. Плюс хочу чтобы кадры сохраняло, а лучшие – мне выкладывало куда-нибудь.
Установка Caffe и разметка базы птичек внезапно прошла ударными темпами. Плюс начитал много интересной инфы. Так что решил разбить пост на две части. В текущем посте – установка Caffe на RPi + рассказы про забавную сеточку SqueezeNet. В следующем посте (будет завтра-послезавтра) – разметка базы, обучение, оптимизация архитектуры сети/сетей.
NVIDIA DIGITS
В ближайший месяцок попробую опубликовать на хабре несколько статей по DIGITS. По-моему это именно то направление куда должны двигаться все нейронные сети. “Я не хочу прогать, я хочу чтобы всё работало!”. Конечно, там пока нет многого функционала. Пока что многие трюки делать нельзя. Но уже 90% рутины, связанной с сетями фреймворк берёт на себя без единой строчки кода. Пользователю доступен набор менюшек, в которых он должен выбрать что как и зачем будет распознаваться:
Есть десятки способов загрузки данных, разные способы выгрузки-обработки-тестирования. Шик. При этом есть далеко нетривиальные решения: свёрточные сети для поиска большого числа однотипных объектов.
Библиотека dlib
*На дворе 2020 год. И уже не нужно использовать Dlib. Нигде. Вот тут я сделал популярный рассказ на что нужно переходить, что на порядок лучше и работает в любых условиях – https://youtu.be/2fnNhYCpToE
А вот тут моя краткая заметка почему для ComputerVision не читать статьи старше 3 лет – http://cv-blog.ru/?p=327
Есть одна замечательная библиотека, которая известна куда менее, чем OpenCV, но несущая в себе ряд замечательных функций + на полной OpenSource лицензии. Это Dlib. Библиотека включает в себя много чего, например: несколько реализаций SVM, несколько реализаций нейронных сетей, подборку функций матричной геометрии, подборку алгоритмов градиентного спуска, SURF|HOG.