Про конференции в ML

Этой осенью попал на две разные конференции по машинному обучению и его применению. Одну организовывал Роман (UseData – она была акцентирована скорее на разработчиков/тимлидов), вторая AiStories – она была скорее для бизнеса, о том как и куда внедрять.

Это не первые конференции на которых я был. Бывал и на более научных, и на более практических (хакатонах, семинарах). Но в глаза бросается сразу несколько вещей:

Continue reading “Про конференции в ML”

Самая базовая штука для любого DS’а

Может я скажу банальную вещь. Но очень часто натыкаюсь на то что многие люди этого не делают. Процесс берёт верх над результатом. И люди не используют критическое мышление. А ведь критическое мышление – это именно то что требуется от человека который должен делать Data Scince | Computer Vision.

Поймите, каждое исследование, каждый результат, каждое утверждение – могут содержать ошибку. И вам важно находить и опираться на те их них которые наиболее вероятные. Ну, из последнего – https://habr.com/ru/post/471282/ (изначальную версию статьи автор поправил, статья тут – https://www.kaggle.com/natevegh/pneumonia-detection-98-acc-fastai-2019-update сильно ближе).

Человек написал статью на Хабре о том как по какому-то датасету получил точность на порядок выше чем любой другой исследователь. Причём как получил… Взял очередной ML-автообучатель, написал пять строчек запуска – получил результат. Его (а так же кучу читателей) не смутило что:

  • В фреймворке нет ничего нового по сравнению с другими решениями
  • Есть другие решения на базе той же сетки с точностью сильно ниже
  • Все остальные решения +-сходились к одной и той же точности

Если бы это был единичный случай… Но я видел много таких примеров в продакшне. Человек делает явно ошибочную метрику/решению и начинает затирать какой он классный вместо того чтобы искать ошибку.
Например в CherryLabs я очень долго добивался чтобы все члены команды машинного обучения относились критично к любой проделанной работе.
Причём это проблема чаще всего свойственна тем кто в своей жизни не делал ничего кроме машинного обучения.

Правильная тактика, на мой взгляд, сомневаться вообще во всём. В любом утверждении. Это во многом противоестественно, но сильно помогает. Причём помогает в многих вариантах. Недавно Александр (автор сайта https://spark-in.me/ и соответствующего телеграмм канала ) прислал такое видео (человек сделал детектор оружия и предлагает гонять его для камер безопасности в школах):

Я долго ржал с этой идеи, ответив вот этим кадром:

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

Короче. Это должен был быть краткий пост с общим посылом – “будьте критичнее”. И краткий набор советов:

  • Смотрите как решают задачу другие люди. Используйте это в качестве референса.
    • Вы сделали что-то на порядок круче? Ищите ошибку. Проверьте все возможные варианты прежде чем утверждать это.
    • Никто не решает вашу задачу? Хотите стать первопроходцем? Обычно это очень плохая идея. Скорее всего есть скрытые причины почему вашу задачу никто не смог решить. Вообще это очень плохая идея делать что-то первым. С вероятностью 90% вы обречены на провал.
  • Сделайте прототип в котором вместо алгорита работает человек. Цена такого прототипа в миллион раз меньше чем у системы на базе машинного обучения. Не надо собирать базу/размечать/настраивать. Зато соберёте самую важную метрику – “максимально допустимая точность”. Это критичный параметр в котором нельзя сомневаться (кстати, для того примера с пневманией, с которого я начал – этот параметр более менее известен: человек по рентгенограммам ошибается примерно в 5-7% случаев).
  • Нашли новую модель которая на голову лучше старой? Исследуйте граничные условия и консистентность датасета. Например, из практики. OpenPose и AplhaPose – две самых популярных модели для поиска скелета человека. AlphaPose сильно точнее по открытым датасетам… Но вот только есть такой момент. В открытых датасетах люди обычно большие и хорошо видны. И OpenPose во многих примерах даёт точность на порядки выше за счёт лучшего потенциала детекции.
    Помните что “универсальные метрики” – нифига не универсальны.
  • Сомневайтесь в любом утверждении пока не проверите его.

Уфф. Надеюсь это вам немного поможет)

Tesla – взгляд через замочную скважину на правильную систему

Всегда когда я разговариваю с человеком который хочет сделать новую систему распознавания я рассказываю о том что машинное обучение неидеально. Что всегда есть ошибки. Что всегда что-то будет идти не так. И что цель – не обучить один раз систему распознавания. А цель  – выстроить систему которая будет стабильна к любым ошибкам распознавания.

Continue reading “Tesla – взгляд через замочную скважину на правильную систему”

Double trouble

Где-то с прошлого года у меня лежали две недописанные статьи. На прошлой неделе собрался с силами и в выходные их добил. Одна статья про то, как каждый день я сталкиваюсь с хренью в своей работе. И о том насколько бажет человеческое восприятие когда дело доходит до технологий.
Статья традиционно на хабре – https://habr.com/ru/company/recognitor/blog/446038/
Вторая статья – экспериментальная. Она про то, что машинное обучение – очень сложная штука, зачастую в современных реалиях чересчур сложная – и её не нужно лепить направо и налево. Статья экспериментальная в том числе потому что публикую её на платформе где ни разу раньше не писал – https://vc.ru/life/63227-mashinnoe-zrenie-ne-nuzhno-o..

Обе немного не в формате блока, так что тут только ссылка.

Детектирование объектов. Как это сделать проще всего?

Давно я ничего не публиковал. Но в последнюю неделю набросал несколько статей, которые скоро выложу + записал это видео.
Как проще всего детектировать объекты? Почему обычно что-то не будет работать? Попытался максимально кратко записать гайд и ответить на вопросы.

MIPS 2019

На прошлой неделе сходил на Mips. Очень прикольно смотреть как год от года меняется стек основных технологий на выставке. При этом одно дело – изменение стека. А второе дело – изменение применения.
Ну, условно. За последние два года взлетели компании распознавания по лицу. Компании то взлетели. И на выставке появилось куча демо стендов с прикрученным face detection. Но вот до embedded устройств доступа технология дошла так, что практически нет изменений по качеству, применению, функционалу по сравнению с решениями два года назад, пять лет назад.
Реальному бизнесу не нужно распознавание лиц в толпе, которое не даёт 100% результата по огромной базе. Или нужно, но очень кастомное под бизнес задачу. А предложить что то базовое, что ощутимо изменит существующий стек технологий для 90%девайсов ntech вижнлабс и прочие не могут.
Или распознавание номеров. Как работало, так и работает. Нет новых решений, которые смогли закрыть новые ниши или создать их.
Ну, то есть они есть. Но они штучные и не на этой выставке. А масс продакшн как ест мутные плохо работающие системы, так и ест.
Менять систему и изобретать новое применение никто не готов.
К чему это все. Выставка отрезвляет. Ты понимаешь насколько все решения в мире стары и банальны. И как сложно что то изменить. Даже если технология новая и принципиально круче всего что есть, то люди не смогут её применить и найти новые смыслы.
Тем смешнее смотреть на выставке стенды по PoseRecognition где люди которые следят за экспозицией даже не могут ответить зачем нужно всё то что у них представлено.
Сначала думал записать на выставке видео.Но мне стало грустно – и не стал…:)

Почему не работает 3D сканирование

Есть одна огромная тема, которая лежит на границе старого машинного зрения, (где нет нейронных сетей и чистая математика), и нового машинного зрения, где всё делается сеточками.
Это 3D. Лезть в него без знания аналита, матана и теорвера – сложно. Но тем не менее, именно различные способы 3D сканирования – это единственное, что позволяет решать многие задачи. Тут я попробовал сделать кратенький обзор по тому какие способы существуют.

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

Нормальная часть любого процесса разработки любой нейронной сети – портировать её на нужную платформу. Конечно, мы обычно стараемся это не делать, завёртывать сети в облако, создавать облачные подключения, и.т.д.

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

Продолжаем в ютубчег

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

Заказчики в CV, какие они бывают

Эта статья – некоторое обобщение опыта, который появился у меня за последние лет 10. Я не претендую что он однозначно правильный. Или на то, что наша стратегия единственная рабочая. Но для себя я его использую как некоторую априорную оценку того имеет шанс на жизнь договор или нет.

Continue reading “Заказчики в CV, какие они бывают”