Что обсуждать с заказчиком на первом разговоре

Любой разговор с заказчиками начинается с того что нужно как можно подробнее понять задачу. Чем дальше заказчик от ML, тем хуже он понимает какие есть варианты, как он собирается интегрировать решение, как оно должно работать и какие его ждут риски.
Разговор повторяется каждый раз. И надо не забывать все аспекты, все проблемы и все беды которые могут ждать готовое решение. У меня есть некоторый чек-лист/список, по которому я прохожусь каждый раз. По сути он был ещё лет пять назад, но тогда он был в голове, и был ограничен теми знаниями которые в тот момент были. В какой -то момент я решил его структурировать. Понимать не забыл ли что-то спросить (особенно это актуально когда большая задача и долго проговариваешь по каждому пункту). 

Собственно какую-то версию текущего списка я решил и опубликовать. Вдруг кому пригодиться. Список не претендует на полноту (особенно если начать закапываться в глубину какого-нибудь пункта). Более того, какие-то пункты списка пересекаются, но это скорее про направление разговора, как подводить к одним и тем же мыслям с разных сторон, убеждаясь что заказчик понимает тяжесть своих решений. Но перед началом любой работы я стараюсь иметь полное представление по вопросам которые в нём подняты. 

Continue reading “Что обсуждать с заказчиком на первом разговоре”

Разбираем пример автоматического магазина

Иногда на своем канале я разбираю как работают различные системы машинного зрения. Точнее, анализирую как бы я реализовал какую-нибудь интересную систему, исходя из тех проявлений что я вижу. Для меня это полезно, так как позволяет понять “а не упускаю ли я какие то подходы или технологии”. Но, возможно для кого-то будет полезно, чтобы понимать как устроены кишки какой-нибудь системы.
Сегодня мы будем препарировать “Магазин без касс” от Азбуки Вкуса. Чуть подробнее агитку можно посмотреть вот тут. А в статье разберем как он сделан с технической стороны, и как бы я его сделал с алгоритмической.

Continue reading “Разбираем пример автоматического магазина”

Нейронные сети на телефоне (запуск через Unity, Flutter и JS)

Я уже писал большую статью о том как запускать нейронные сети на телефонах. Точнее, статья была про разные аппаратные платформы и библиотеки выполнения нейронных сетей. Но, она абсолютно не рассматривала вопрос запуска нейронных сетей. Ведь библиотеку можно позвать из разных сред, можно из Java разрабатывая на Android studio/Eclipse/Idea. Можно на с++ модулях. Можно из JS, сделав веб-страничку (кстати, на эту тему я тоже делал ролик, а на Хабре была не моя неплохая статья на эту тему). А можно и другими способами.
В этой статье я чуть подробнее расскажу те способы которые мне нравятся и понятны.

Continue reading “Нейронные сети на телефоне (запуск через Unity, Flutter и JS)”

Про хакатоны

Недавно помогал в подготовке одной задачки и ее проведении на хакатоне. Обещал сделать некоторый обзор того что там происходило. Плюс решил вообще рассказать про то где мы участвовали и своё отношение к хакатонам.

Continue reading “Про хакатоны”

Как поставить камеры для Computer Vision

Один из самых распространённых вопросов которые задают мне коллеги и заказчики – не имеет ни малейшего отношения к ComputerVision. Ну, как не имеет. Без этого вопроса большинство задач ComputerVision решить нельзя. Но вопрос этот не решается в удобном кабинете, его не преподают на курсах. Для его решения требуется тыкать в железо, много экспериментировать, лазить по стремянкам с дрелью, и.т.д., и.т.п.

И, скажу честно, зачастую ответить на этот вопрос более чем общими рекомендациями не могу. Собственно вопрос даже не один, а их несколько:

  • Какую камеру выбрать?
  • Как установить камеру?
  • Что ещё нужно сделать чтобы распознавать?
камер и подсветки мало не бывает
Continue reading “Как поставить камеры для Computer Vision”

Как мы задачи решаем + исходники сервера разметки

Последние года три большую часть наших доходов составляют различные работы где мы что-то делаем под заказ. Список таких работ проще всего посмотреть тут – http://cvml.ru/ . Есть далеко не все (многие фирмы не хотят светиться лишний раз). Но в целом спектр можно представить. Наверное основное это:

  • Распознавание буквенных и числовых последовательностей (номера/отметки/знаки/символы)
  • Биометрия и её интеграция
  • Детекция различных странных объектов
  • Трекинг объектов

И каждый третий раз делать надо одно и то же:

  1. Собрать данные
  2. Разметить
  3. Обучить модель
  4. Собрать больше данных и найти ошибки
  5. Goto п.2 пока качество неудовлетворительно

Ещё года два назад мы сделали сервер где весь пайплайн был достаточно удобно убран в одну сущность. Есть ли аналоги? Да. Но каждый раз когда смотришь как они устроены кажется “ну почему же всё так сложно”. Понятно, что у нас сдвинут биас. Но всё же нам кажется наш подход весьма симпатичным.
Где-то с прошлой осени мы решили что надо выложить сервер в OpenSource. Лежит он в открытом гитхабе уже месяца 4, но, наконец, решил сделать небольшое описание.

Continue reading “Как мы задачи решаем + исходники сервера разметки”

Простой пример про Толоку

Неожиданная завязка:

Два с половиной месяца назад, прямо в разгар карантина, у меня родился сын:)
Естественно, я взял отпуск и разгрузил всю ту работу, где отпуска быть не может. Но, оказалось, ребёнок крайне спокойный – сразу нормализовал режим. Так что образовалось свободное время. Решил добить старые проекты. И начать новые.

Один из них уже закончен, сейчас я его шлифую. По сути некая вариация “радионяни”. Камера, которая смотрит на ребёнка, шлёт уведомления, немного взаимодействует.
Как доделаю – выложу полный обзор на Хабре (ссылка будет тут).
Статья про одну небольшую часть я уже выложил.
Эта статья про то как использовать Толоку даже в хобийных проектах.

Continue reading “Простой пример про Толоку”

GNN в Computer Vision

Computer Vision достаточно необычная область. Далеко не все алгоритмы из машинного обучения сюда заходят быстро, далеко не все приживаются. Примером того, что я не видел в варианте “в кассу” – были Graph Neural Network (GNN – сети работающие на графах).
Но, внезапно натолкнулся, об этом и рассказ.

Continue reading “GNN в Computer Vision”

Техническое задание для ComputerVision

На днях меня тут спросили замечательный вопрос, который поставил меня в тупик: “А как написать правильное ТЗ для разработки чего-нибудь с нейронными сетями? Можете скинуть примеров?”.
Первое что я понял – скинуть не могу. Ибо любой ТЗ – это глубоко личное для того бизнеса, для которого он написан. Нельзя такое скидывать даже обезличенное.
Втрое, что я понял – нельзя сказать что такое хороший ТЗ. Один и тот же ТЗ может быть и замечательным, и омерзительным. ТЗ – это результат диалога двух сторон. Нет ТЗ на ресёрч написанного в пространство.
А вот как провести диалог, и какие общие правила есть – я могу попробовать рассказать.

Continue reading “Техническое задание для ComputerVision”

Про устаревание в ComputerVision

Мне часто пишут с вопросами. Больше всего вопросов приходит с Хабра. И, наверное, четверть вопросов – по моим статьям.

Половина – про старые статьи. Каждый месяц кто-то спрашивает как обучить каскад Хаара. Например как сделать не на версии OpenCV 7-летней давности, а на текущей.
И… Мне страшно. Страшно не то, что я не помню как 7 лет назад это делал. И не потому что эти алгоритмы могли давным давно выпилить из OpenCV.

Continue reading “Про устаревание в ComputerVision”