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

Последние года три большую часть наших доходов составляют различные работы где мы что-то делаем под заказ. Список таких работ проще всего посмотреть тут – 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”

Самый простой пример трекинга который работает

Разные алгоритмы трекинга мы делаем последние лет 12. Зачастую это очень простые алгоритмы трекинга. Иногда очень сложные и накрученные, как в Cherry.
Если честно, то очень часто мы собирали их с нуля руками. Что такое фильтр Калмана понимаем, как сделать выбор лучшего соответствия в целом тоже.

Но, если честно, недавно бомбануло. Я увидел, как в двух разных фирмах для трекинга используют это – https://www.pyimagesearch.com/2018/10/29/multi-object-tracking-with-dlib/ (или аналоги с того же сайта).
Для тех кто не хочет читать вкратце: детекция за счёт MobileNet-ssd, а связывание объектов за счёт трекера Dlib (или вариантов cv2).
В одной из таких фирм это даже заработало каким-то чудом.

Но… Не надо так. Не надо использовать бажный оптический трекер. Править все его ошибки это гигантская работа, на которую нет OpenSource исходников.
Я решил рассказать как сделать проще и стабильнее в несколько кликов.

Continue reading “Самый простой пример трекинга который работает”

Как подключить интернет через камеру к RPi

Статья несколько более инженерная чем обычно. Без рассказов почему ML не работает;)
Но зато, на мой взгляд, может помочь многим людям для их прототипов и домашних хоббийных проектов которые используют какой-то Computer Vision на embedded железках.

It Ain't Much, but It's Honest Work // PotterMore // Anomaly Memes ...
Continue reading “Как подключить интернет через камеру к RPi”

Спираль времени, или новый End-to-End Object Detection with Transformers

На днях прочитал новую статью от Facebook AI, и прямо таки воспоминания ударили в голову, заставляя написать эту статью. Ведь это мои любимые темы:

  • “Всё новое – это хорошо забытое старое”
  • “Почему не стоит гнаться за бэкбоном, когда можно подобрать правильную логику сети и функции потерь”
  • “Почему бы не рассказать офигенную байку!”
Continue reading “Спираль времени, или новый End-to-End Object Detection with Transformers”

DL in JS

Натолкнулся на весьма интересное мнение что использование DL в браузере это никому не нужные игрушки. Но, как ни странно, на сегодняшний день это достаточно уникальный способ инференса моделей. Этот способ поддерживает телефоны, intel, amd, nvidia и всё-всё-всё.
Конечно, производительность не максимальная. Но вам не нужно заботится о том что что-то у кого-то не пойдёт. Примерно 90% устройств будут поддержаны, и всё будет работать там.
Сделал краткий обзор на тему того почему это не страшно:)

Что делать если заказчик хочет 95% точности в ML задаче? – Часть два

Вчера я писал пост на тему того почему точность в качестве KPI на вход работы это плохо. Обещал сегодня несколько примеров. Поехали

Continue reading “Что делать если заказчик хочет 95% точности в ML задаче? – Часть два”