«Мне 30, а я в Ангарске». Сисадмин-самоучка из Сибири попал в топ Kaggle и теперь тренирует нейросети в минской Mapbox (+список курсов по Computer Vision)

Работа
19 сентября 2018, 09:03
«Мне 30, а я в Ангарске».

Сергей Мушинский — Computer Vision Engineer в минском центре разработки Mapbox, делает нейросети для мобильного приложения-видеорегистратора. Ещё он — в топ-100 онлайн-площадки для научного моделирования Kaggle, неоднократный призёр соревнований на этой платформе. Пикантность в том, что компьютерным зрением Сергей занялся лишь четыре года назад, а до этого даже программистом себя не считал. Без высшего образования, он долго пытался покинуть родной Ангарск. Каким был путь из Прибайкалья в Минск, Сергей рассказал dev.by.

Участие в соревнованиях

3-е место (из 419 команд, 539 участников): сегментация спутниковых снимков для британской DSTL. Описание решения.

Топ-5 среди 717 участников в соревновании DSTL по детекции автомобилей на аэрофотосъёмке на улицах Лондона.

4-е место (из 735 команд, 895 участников): сегментация автомобилей от фона. Описание решения.

Топ-7 (из 1 315 команд, 1 603 участника): анализ голосовых команд от Google.

1-е место (из 582 команд, 766 участников): определение модели камеры IEEE’s Signal Processing Society — Camera Model Identification. Описание решения.

«Компьютера не было: дома прокручивал в голове Norton Commander»

Для белорусов Ангарск — это бесконечно далеко. Для них есть Беларусь, Европа, Урал, а всё что за Уралом — тёмное место. Мне говорят, ты же из Сибири, там Новосибирск рядом. Я говорю: ну да, в 1 800 км. Мой брат сейчас путешествует на велосипеде из Калининграда в Ангарск, он ехал всё лето, и до дома ему осталось совсем немного — 900 км.

Ангарск — это два больших завода, нефтехимический и по обогащению урана, и к нему — спальный район. Там — интересная адресная схема: деление не по улицам, а по микрорайонам, которые имеют несквозную нумерацию и расположены достаточно хаотично. Например, 5-й, 6-й, 12-й, 17-й. Или используется двойная нумерация: квартал В/улица такая-то. Всё — чтобы запутать врага.

Моё детство пришлось на 90-е. Школьная среда постепенно становилась депрессивной, и, чтобы извлечь меня из неё, после 9-го класса родители отправили меня в физико-математический лицей. Там я первый раз сел за компьютер. Дома компьютера не было: я рос в бедной семье. Помню, как нам в школе показывали Norton Commander. У меня ничего не получалось, и дома я прокручивал в голове урок, пытаясь понять логику.

Мы с товарищем участвовали в олимпиадах по информатике, занимали призовые места и надеялись, что благодаря им легко поступим в вуз. Однако на экзаменах в Иркутский государственный технологический университет мне не хватило проходного балла.

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

У своего дома в Ангарске. Фото из личного архива

У своего дома в Ангарске. Фото из личного архива

Отработал там три года, параллельно поступил в ангарский вуз на информатика-экономиста.

Первый курс там проучился нормально, а второй не окончил. Помню, пришёл на экзамен по мировой экономике: познакомился с преподавателем, взял билет — что-то про экономические циклы. Посмотрел немного в телефоне, вспомнил всё, что знал про Великую американскую депрессию и экономические кризисы в России, составил план и стал слушать, как отвечают мои однокурсники. Это было примерно так:

— Что такое бюджет?

— Эээ, наверное, это когда бабушки пенсию получают.

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

Получается, я самоучка. Сейчас, конечно, чувствую нехватку высшего образования. Некоторые вещи требуют тренировки и погружения: надо не просто прочитать что-то по высшей математике, но хорошо отработать это на практике. Это возможно в любом возрасте, но это большая инвестиция времени, которым проще пожертвовать в юности.

«Мне сказали: ставь программу, которая будет за всеми следить»

Из Ангарска уехал в Иркутск — работать системным администратором в Мерседес-центре.

Там проработал два года, по 2009 год. Потом случились разногласия с руководством. Типичная история для сисадмина: ты всё настроил, система работает без сбоев, и руководству кажется, что ты больше не нужен.

После этого долго не мог найти хорошую работу. Привозил из Таиланда украшения — металлические безделушки, которые в Иркутске продавались в 5-7 раз дороже. За счёт этого и жил.

Работу сисадмина я так и не нашёл и устроился менеджером по продажам в компанию-системный интегратор местного значения. Видимо, там совсем было плохо с адекватными людьми, раз позвали на собеседование технаря без опыта продаж. Я пришел — тихий, скромный парень. Начальник, как водится на таких собеседованиях, попросил продать ему ручку. Я: ну вот, ручка, блин…

Мне сказали: будешь помогать инженерному отделу находить клиентов для установки кабельных сетей. Сама идея звонить по телефону незнакомым людям и предлагать им что-то купить повергала меня в транс. Первое время результаты были отвратительные. Зато я прекрасно понимал техническую суть того, что мы продаём. Ребята рядом продавали строчки в прайсе, а я понимал, что это значит, и стал помогать. Постепенно всё завертелось: научился и разговаривать с людьми, и продавать.

В 2012 году случился конфликт с руководством. Так как в этой компании я подрабатывал еще и администратором, однажды мне сказали: ставь программу, которая будет за всеми следить (делать скриншоты, снимать переписку и т. д.). Когда такое начинается, значит, дела в компании идут не очень хорошо. Я ответил: не буду ставить, пока вы не предупредите сотрудников.

Закончилось всё тем, что моя подруга, с которой я познакомился в этой компании, решила увольняться и переезжать в Москву. Я — за ней. Разместил резюме на headhunter и получил неожиданный эффект: компании-интеграторы стали мне звонить и предлагать вакансии инженера по обслуживанию серверной техники, пресейл-инженера.

«Придумал трюк, позволяющий сильно удешевить систему — китайцы удивились»

Когда приехал в Москву, у меня было по два собеседования в день. Всё было хорошо, доллар стоил 30 рублей, я устроился инженером в компанию, которая занималась хранением больших систем данных. Если у клиента в стойке ломался жёсткий диск, самолётом в Москву вылетала запчасть, я садился в другой самолёт и летел её менять. Тогда вдоволь попутешествовал по России.

Потом мне стало скучно, и я стал думать о переходе в другую область. Горячей темой становился Data Science. Я подумал: хранение данных и анализ данных — очень близко. К тому времени я уже смирился с тем, что далёк от программирования.

В начале 2014 года прошёл онлайн-курс по машинному обучению Coursera.org. Однажды компания Huawei собрала команду инженеров со всего мира и пригласила на обучение в Китай. Я попал в эту группу и провёл отличную неделю в Шэньчжэне, где встретился с большой интернациональной командой инженеров.

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

В конце экзамена китаец показал правильный ответ: вот так надо было сделать, кто-нибудь готов улучшить результат? Я говорю: да. Вышёл и показал своё решение. Китаец убежал куда-то, привёл своего начальника, они посмотрели — удивились. Позже ко мне подошёл коллега из Италии и протянул визитку, мол, будешь в Европе — приходи на собеседование.

«Сняли квартиру в Паттайе. Оказалось, что рощица — это китайское кладбище, а озеро — болотце со сточными водами».

К тому моменту в России уже сгущались тучи. Я вернулся из Китая в рабочий офис, а там только и разговоров, что об Украине. Мол, нас там нет, и вообще, если кому-то что-то не нравится, тот может валить — словом, дикий всплеск патриотизма. Как раз упал «боинг», начал подкашиваться рубль, подругу сократили на работе. Я подумал: в самом деле, что я здесь делаю? Посчитали с подругой деньги, прикинули, что этого хватит на полгода жизни в Таиланде, и решили уехать. Я запланировал, что это время буду интенсивно учиться по выбранной специализации — анализу данных.

Московский начальник пошёл на большие уступки, и я улетел, сохранив удалённую работу в режиме фриланса.

Первый месяц в Паттайе всё шло наперекосяк: очень жарко, еда безумно острая, мы неудачно сняли квартиру. Посмотрели на карте: рядом зелёная рощица и озеро. Оказалось, что рощица — это китайское кладбище, а озеро — болотце со сточными водами, и всё это расположено возле трассы, ведущей в Бангкок. Ещё я потерял сим-карту, к которой был подключен банк-клиент, и токен для удалённого подключения к системе на работе. Всё навалилось в один момент, и я думал: боже, зачем я уехал?

Но вскоре всё наладилось: мы нашли классную квартиру на море, я поменял симку на местную. Но учёба в этой расслабленной обстановке не шла. С обеда до вечера я работал на Москву, потом купался и ложился спать.

Так прошло полгода, а в апреле 2015 года звонит начальник из Москвы и начинает такой разговор: мол, ты работаешь как офигевший, получаешь довольно много. Я сразу всё понял: когда увольнение? Через две недели. ОK, у меня своих планов — гора.

Таиланд. Фото из личного архива

Таиланд. Фото из личного архива

Удалённая работа к тому времени стала напрягать. Администрирование ушло, остался подбор оборудования. А пресейл — это такая работа, когда ты для клиента составляешь спецификацию, уточняешь много деталей, а потом всё это идёт в мусорку, потому что клиент ничего не покупает. Или покупает, но ты об этом не знаешь. Мы отдавали работу продажникам, а они нам ничего не сообщали о результатах.

Когда работа закончилась, начали таять деньги. И я, наконец, начал учиться — прошёл онлайн-курс по анализу данных американской компании Udacity. Но как устраиваться с этим на работу, было совершенно непонятно: на headhunter не было вакансий, которые бы содержали Data Science. В итоге начал проверять работы студентов в Udacity.

Компания американская, платила $50 за проверку одного проекта, которая занимала час. Отличный рейт. Единственный недостаток — проекты однообразные, студенты — ленивые, стараются максимально срезать углы. И тебе в фидбэке надо написать, что в целом всё отлично, а потом заново повторить все требования курса. Ты раз за разом сталкиваешься с нежеланием студентов работать, но тебе надо их воодушевлять. И за это студент тебе ставит 1 балл: дескать, я сделал всё как надо, а меня завалили. От этого выгораешь.

В Таиланде я провёл полтора года — в три раза больше, чем планировал. Там хорошо, но невозможно ассимилироваться, ты навсегда останешься «бледнолицым», тебе не дадут гражданства, и каждые три месяца придётся выезжать за границу, чтобы поставить штамп.

В то время мой брат пошёл в армию и освободил квартиру в Ангарске, оставшуюся в наследство от отца. Я подумал: вот там-то меня точно ничто не будет отвлекать от учёбы. И мы с подругой решили вернуться.

«Вернулся в Ангарск: люди — злые, вместо белого дома — клетушка с зелёной ванной»

Но к тому времени в Таиланде я очень расслабился. Тайцы — южный народ, который относится к жизни легко и спокойно. У них есть понятия сабай и санук, которые означают спокойствие души и тела. Там все улыбаются, никто не спешит, в транспорте не толкаются и уступают друг другу место.

И вот в таком расслабленном состоянии я вернулся в Ангарск в марте 2016 года. После плюс 30 я попал в минус 25, и сразу заболел, теплых вещей нет, из дома не выйдешь. Все вокруг злые, нахмуренные, плюс все говорят по-русски, а не по-тайски, и ты всё понимаешь. После полутора лет тишины это давило на уши.

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

Ещё в Таиланде я стал проходить курс Яндекса по машинному обучению. Это было прикольно, но в процессе я понял, что анализ табличек, который лежит в основе Data Science, мне не очень интересен, и стал склоняться в сторону компьютерного зрения.

В канун 2017 года оглянулся назад и понял, что за три года почти ничего не сделал. Я, конечно, двигался в нужном направлении, но прогулочным шагом. Думаю: мне 30 лет, а я по-прежнему в Ангарске, и никакого просвета не видно. Тогда написал пост в блоге на Open Data Science (ODS): блин, парни, меня надо попинать. И — тишина, никто не отреагировал. Я разозлился: чего я жду, ведь это моя жизнь, и она нужна только мне.

Вообще, сообщество Open Data Science сыграло большую роль в моей судьбе. С тех пор, как пошёл на курс Яндекса по машинному обучению, я начал вращаться в этом комьюнити и познакомился с интересным народом.

«Потратил две недели, чтобы просто понять код, который товарищ сделал за два вечера»

Итак, я разозлился, собрался и решил участвовать в соревновании на Kaggle. Агентство DSTL (Defence Science and Technology Laboratory, подразделение Министерства обороны Великобритании) дало задание на сегментацию спутниковых снимков. Там были даны снимки непонятной местности, и их нужно было преобразовать в карту: отметить дома, дороги, машины, водоёмы и т. д.

Я постучался в команду к более опытному товарищу по ODS — разработчику Владимиру Игловикову, который живёт в Калифорнии. Когда ты один, то, вроде как, никому ничего не должен, а в команде работаешь более интенсивно. Сначала мы вошли в ТОП-50, потом стали подниматься выше и захотели войти в десятку. За день до окончания соревнований мы были на 8-м месте.

А там такая схема: данные, на которых проверяется решение, разделены на две части. Одна — открыта, а другая — невидима, она открывается лишь в конце соревнования, и именно этот результат считается финальным. Это делается для того, чтобы нельзя было подстроить свои модели под открытую часть, чтобы ты делал действительно хорошие решения, а не просто подходящие.

Соревнование шло три месяца. Для обучения сетей были даны 24 больших картинки, 1 км х 1 км, а в тесте — 450 картинок. Используя 24 картинки, надо было научить нейронную сеть отличать дома от озёр, чтобы потом на всех 450 картинках она нашла нужные элементы.

Прежде чем приступить к соревнованиям, надо было преодолеть технический барьер: изображения были в сложном формате, его надо было преобразовать. И Вова кинул клич: давайте все вместе соберёмся и прорвёмся через этот порог. И наш товарищ Артур Кузин, известный в чате как Noise, сел и за пару вечеров собрал и выложил набросок основного решения. На таких соревнованиях участники делятся набросками, особенно на начальном этапе, когда все очень быстро идут к хорошему решению, а потом уже начинается борьба за миллионные доли.

Помню, я потратил две недели только на то, чтобы понять код, который Артур сделал за пару вечеров. Это произвело на меня отрезвляющее действие: оказалось, я очень мало понимаю в этой области. Понял, что надо изучать всё, что связано с разработкой: алгоритмы, шаблоны проектирования — кучу всего.

На публичном leader board мы были 8-ми, а когда вскрыли закрытую часть и объявили результаты, мы с Вовой неожиданно оказались на 3-м месте. Там были некоторые тонкости, которые позволили нам взять приз. Водоёмы надо было разделить на реки и озера. С точки зрения компьютера это было совершенно непостижимо, но небольшая разработка помогла озёрам остаться озёрами.

Это был успех. Обычно в таких соревнованиях призы считаются чем-то недосягаемым. Когда участников несколько тысяч, какой у тебя шанс попасть на самый верх? И тут оказалось, что простые парни, из Калифорнии и Ангарска, могут выигрывать призы.

Призы были $50 тысяч, $30 тысяч и $20 тысяч за первые три места. На втором месте был Артур со своим напарником. Это воодушевило.

Потом был ещё один конкурс. DSTL очень понравилось: по государственным меркам, получить хорошее решение за $ 100 тысяч — это очень дёшево. И они решили организовать соревнование уже на своей площадке. Задание было детектировать машины со спутниковых снимков. Мы с Вовой стали участвовать по отдельности, он оказался на 2-м месте, я — в Топ-5.

«Вот мы на 1% улучшили распознавание лица, но никто не восхищается»

Как без специального образования стал занимать топовые места на соревнованиях?

Вообще-то всё это время, прокрастинируя в Таиланде и Ангарске, я фоново поглощал информацию: смотрел курсы, читал статьи. Интерес к компьютерному зрению появился благодаря стэнфордскому курсу на Youtube по нейросетям и компьютерному зрению CS 231N, который вёл Андрей Карпаты, нынешний директор по AI и нейросетям компании Tesla.

Это был невероятно свежий курс: я первый раз увидел, чтобы преподаватель рассказывал о том, что он сам прочитал только два дня назад или услышал на конференции. Мол, представляете, на конференции мы научились определять позу человека! Шёл 2016 год, и прогресс в Computer Vision был каждый день и по всем фронтам.

Прогресс и сейчас есть, просто многие задачи уже решены, и движение ушло в более узкие сферы. Так, компьютерное зрение определяет уже не просто человека, а его позу, выражение лица и т. д. Вот мы на 1% улучшили распознавание лица, но это уже никого не восхищает. А когда вчера мы не умели определять объекты, а сегодня видим их уже тысячу — вот это было невероятно.

Курс Андрея Карпаты был изложен доступным языком, я его смотрел и понимал, что там нет ничего сверхъестественного. В нейросетях используется материал, грубо говоря, первого курса института, который я всё-таки окончил. Линейная алгебра, начала матанализа, обычное программирование. Плюс к тому времени стали делать фреймворки и библиотеки, которые позволяют взять готовые строительные блоки, с умом их скомбинировать и получить решение.

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

«В настольном теннисе мячик летит с такой скоростью, что для камер почти исчезает»

В июле 2017 года я получил приглашение из Москвы от компании Constanta: мы тут делаем интересные системы видеоаналитики и компьютерного зрения — приезжай на собеседование. По всем параметрам я был джуниор-разработчик, и брать меня было рискованно. Но слетал, и меня взяли. Так в сентябре 2017 года я снова уехал в Москву.

Там было несколько интересных проектов: подсчёт очков в настольном теннисе, бильярде и вырезание рекламы. Это нужно букмекерским компаниям, которые на все матчи отправляют человека с мобильным телефоном. В специальном приложении он нажимает кнопки: очко левому, очко — правому. Соответственно принимаются ставки. Человек может отвлечься или заснуть, поэтому задача — заменить его камерой.

Настольный теннис кажется простой игрой, но мячик в момент удара летит с огромной скоростью и для камеры почти исчезает. У нас была камера, которая снимает 120 кадров в секунду (обычная — 25 кадров), и всё равно мяч «размазывался». Увидеть траекторию теннисного мяча камере также очень сложно: пролетел он ближе или дальше. А кроме того, мяч вращается, и за счёт этого летит не по той траектории, которая кажется правильной, поэтому предсказать место отскока очень сложно.

Бильярд кажется сложнее, но в реальности он проще: поле ограничено, есть стационарный стол яркого цвета, игра происходит в плоскости. Мяч упал в лузу — значит, ты забил. Сетям всё это легко изучить.

Пока работал в Constanta, принял участие в ещё парочке соревнований, в составе команд занял там 4-е и 1-е места.

В одном соревновании был вращающийся подиум, на котором стоит автомобиль, его фотографируют под 16-ю углами. Задача была автоматически вырезать изображение автомобиля со всех картинок, чтобы потом вставлять их в рекламные материалы. Нам дали несколько тысяч картинок с автомобилями, которые были обведены вручную. И нужно было сделать алгоритм, который научится на оставшихся картинках делать то же самое. То есть стояла задача «уволить» фотошопера из компании, торгующей подержанными автомобилями.

Тут у всех результаты были очень хорошие: с точностью 99,6% определялось, где фон, а где машина. Только там, где через диски просвечивал фон, возникали сложности. У кого машина лучше отметила все элементы, тот и выиграл. Между 1-м и 2-м местами была разница всего в два пикселя. Моя команда заняла 4-е место.

«Традиционные методы академиков сработали хуже, чем наша нейронная сеть»

В другом конкурсе надо было определить модель камеры по фото. Область применения решения — компьютерная криминалистика. В условиях было несколько смартфонов, два айфона, несколько старых «моторолл» и парочка более профессиональных камер.

Как это делается традиционно? Фото сильно увеличивается, чтобы были видны шумы, особенные для каждой камеры. В этом конкурсе участвовали академики, которые посвятили этой теме жизнь. И мы впятером — другие парни из ODS и я.

Был один конкурсант из Испании, Андрес Торрубия, который поделился на форуме предварительным решением, давшим довольно высокий результат. Мы его взяли, стали улучшать и в какой-то момент обогнали самого автора.

Решение было очень наивным: ты просто берёшь нейросеть, на входе даёшь ей картинки, на выходе говоришь, какая это камера, и всё, посередине — чёрный ящик. Машина берёт картинку и сразу выдаёт ответ. Ты не знаешь, как она определяет, какие находит шумы. Но это отлично работает, с точностью, близкой к 100%. Оказалось, что традиционные методы, когда под микроскопом рассматривают сенсор камеры, работают хуже, чем сеть, обученная на нескольких тысячах картинок.

Правила не запрещали использовать дополнительные данные, и мы стали как бешеные качать с Flickr и Яндекс.Фото гигабайты фотографий. Люди любят обрабатывать фото, убирать шумы, поэтому пришлось разобраться в структуре файлов, где содержится информация об обработке, поставить фильтры, причём сделать это быстро, так как под конец работы к нам шёл поток из сотен тысяч фотографий. В итоге из 582 команд мы заняли 1-е место.

«Если иконы отражаются в лобовом стекле, это мешает компьютеру видеть дорогу»

После очередного конкурса в Telegram ко мне постучался мой нынешний начальник, Александр Матвеенко, и пригласил на собеседование в Минск. Я приехал, мы пообщались, и теперь я работаю в Mapbox.

Когда я устраивался, компания ещё занималась беспилотным управлением. Потом переключились на видеорегистратор, но для разработчиков это ничего не изменило, так как пока мы всё равно сосредоточены на восприятии.

В автономном вождении есть два ключевых момента: восприятие и контроль. С развитием хорошего восприятия контроль становится относительно простым. Конечно, он нетривиален, там масса тонкостей: чтобы хорошо ехать, надо хорошо предсказывать, как поведут себя другие объекты. Но, тем не менее, имея хорошее восприятие, мы можем поехать. А вот не видя ничего вокруг, точно никуда не поедешь.

Мы всё ещё учим компьютер видеть, и впереди — очень длинный путь. Да, зрение улучшается, но стабильности нет. Кажется, ты научил компьютер видеть, потом меняешь обстановку, включаешь другой свет, и машина начинает видеть хуже. Твое приложение определяет, что это кресло, потом ты лепишь на него наклейку с ярко-зелёными, переливающимися точками, и машине уже кажется, что это не кресло, а, например, слон. Несколько пикселей полностью сбивают восприятие сети. Это связано с тем, как в этом «чёрном ящике» оптимизируются параметры.

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

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

Но проблема в том, что компьютер работает не так, как человеческий мозг. Наши, человеческие, сети обучились на огромном количестве примеров, в наш мозг идёт непрерывный поток видео, и оно корректируется с учётом других органов чувств. У нас в голове есть «гироскоп», который позволяет нам видеть стабильную картинку, даже когда мы трясём головой. А когда мы двигаем телефон, то потом удивляемся, почему видео получилось таким «трясучим», ведь глазами всё было видно отлично.

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

И в беспилотных автомобилях это важнейшая задача. Одна и та же дорога может выглядеть по-разному в зависимости от погоды, времени суток, лежит ли на ней снег или листва. А если на лобовом стекле отражаются иконы и попадают тебе в камеру, эти блики сильно мешают видеть дорогу. Человек понимает, что это блик, а как объяснить это компьютеру?

Кроме того, есть проблема ограниченности ресурсов. Мы сейчас запускаемся на телефоне, и это вызывает у всех удивление: неужели ресурсов айфона достаточно, чтобы несколько раз в секунду обрабатывать информацию об объектах? Но мы определяем людей, машины, знаки, светофоры. Плюс к этому делаем сегментацию, которая различает дорожное полотно, разметку на дороге, здания, деревья, бордюры — всего 14 видов объектов.

Мы делаем SDK (software development kit) — набор инструментов для разработчиков, который поможет нашим клиентам делать приложения.

Чтобы беспилотник мог ездить, ему надо не только всё видеть, но и иметь карты, с которыми можно сверяться. Их люди вносят фактически вручную. Соответственно там, где людей мало, никто ничего не вносит. Наша задача — чтобы люди установили наше приложение, проехались с ним по трассе и всё, что им понадобится для будущего передвижения, отсняли в фоновом режиме. Вы проехали, пользуясь навигатором, и одновременно обновили для всех карту.

«Московскую зиму видел, не думаю, что здесь будет хуже»

Минск очень похож на Иркутск, но без реки. После сибирских рек Свислочь, конечно, не река. Я и в Москве удивился: это и есть та самая Москва-река? Ручеёк какой-то.

Чего мне здесь не хватает, так это мраморной говядины. В Москве я научился готовить стейки и привык к ним. Мне все говорят, что плохо ищу, но я почему-то не могу найти.

Зимы в Минске не видел, но видел московскую зиму, не думаю, что здесь будет хуже. Московская мне не понравилась, но что делать? Я купил мощный фонарик, который греет как солнце, препятствуя депрессии.

Да, подруга, которая всё это время переезжала со мной, тоже в Минске. Через неделю у нас свадьба. По образованию она культуролог — очень полезная, нужная профессия. Но я её приучил к компьютерным делам, сейчас она занимается фотографией, 3D-графикой, учится моделировать.

Компьютерное зрение — очень большая область. В ней можно заниматься исключительно детекцией объектов, например, отличать стулья от не-стульев, и всё равно каждый день тебе будет идти нескончаемый поток обновлений, новостей и т. д.

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

А ещё всегда есть план «Г»: бросить всё и уехать на Гавайи заниматься сёрфингом.

Курсы и книги от Сергея Мушинского

Золотой стандарт для начинающих сейчас — это изучить Python (тут курсов куча, можно выбирать любой, например, этот на Stepik’e или начало специализации Яндекса, это и для введения в машинное обучение в целом отлично подходит).

Затем ещё два курса и на закуску стэнфордский курс.

После этого можно смело идти делать студенческие проекты или участвовать в соревнованиях на каггле и/или искать стажировку/первую работу.

Если требуется подтянуть/изучить необходимую математику, то нужны курсы по линейной алгебре и началам анализа. Например, курс Гильберта Странга из МIТ или от тех же ребят из fast.ai.

Книги по нейросетям:

  • Сергей Николенко. Глубокое обучение;
  • Франсуа Шолле. Глубокое обучение на Python;
  • Ян Гудфеллоу. Глубокое обучение

Книги по компьютерному зрению в целом:

  • Computer Vision: Algorithms and Applications — Szeliski (учебник, в свободном доступе, традиционные подходы);
  • Computer Vision Metrics Survey, Taxonomy, and Analysis Krig, Scott (высокоуровневый обзор);
  • Learning OpenCV 3: Computer Vision in C++ with the OpenCV Library Adrian Kaehler (традиционные подходы, описание работы с одной из самых популярных библиотек компьютерного зрения);
  • Multiple view geometry in computer vision;
  • Book by Richard Hartley (учебник, в свободном доступе)
Обсуждение