Технопарк, Техносфера, Технотрек: проекты выпускников +19

- такой же как Forbes, только лучше.


Каждые полгода в нашем офисе проходит защита проектов выпускников образовательных программ Mail.Ru Group. Ребята из Технопарка (наш совместный проект с МГТУ им. Н. Э. Баумана), Техносферы (проект в МГУ) и Технотрека (в МФТИ) представляют свои приложения, игры, сервисы и мессенджеры. Мы подготовили для вас топ-5 проектов выпуска летнего семестра с комментариями их создателей.


«Яркая память» — приложения для колоризации черно-белых фотографий времен войны



В чем суть
Приложение было запущено к 9 мая совместно с социальной сетью Одноклассники. Студенты отвечали за архитектуру нейронной сети (реализована на PyTorch, для обучения нейросети подготовлен и использован набор из 2,5 млн снимков — от фотографий с лицами людей в разных ракурсах и при различном освещении до подборок орденов и медалей, а также кадров из фильмов военной тематики) и за разработку бэкенда (за основу был взят сервис Artisto). Команда Одноклассников отвечала за фронтенд.



Приложение привлекло внимание 253 312 пользователей и вышло в топ-5 по году, получив освещение в СМИ («Дождь», РИА Новости и другие).


Проект в деталях
В команде нас было трое, и мы выделили три основных направления работы:


  • проектирование и программирование нейронной сети;
  • подготовка набора данных для обучения и тестирования;
  • внедрение решения в архитектуру проекта Artisto.

Первую задачу взял на себя Сева Викулин, поскольку на тот момент среди нас он имел самый большой опыт разработки нейронных сетей. Основным инструментом стал фреймворк PyTorch. Подготовку данных взял на себя я (Денис Кузьмин) — эта задача требовала постоянной синхронизации с проектированием нейронной сети, а в то время мы с Севой уже работали в одном отделе, поэтому нам было удобно обмениваться результатами. Мне приходилось много работать с библиотекой OpenCV для распознавания лиц на изображениях, генерации искусственных примеров и предобработки датасета. Задача по изучению архитектуры Artisto и подготовке к внедрению была более независима от остальных, ее взял Боря Копин. Ему пришлось разобраться с фреймворком Torch на Lua, написать конвертер модели нейронной сети в него из PyTorch.


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


С самого начала мы с нашим техническим ментором Лешей Воропаевым условились, что проект будет обязательно связан с нейронными сетями. Мы долго изучали последние разработки, придумывали, в какой области было бы интересно и полезно применить наши знания. В какой-то момент мы наткнулись на статью, в которой описывалось применение нейронных сетей для автоматической колоризации черно-белых изображений. Пока мы придумывали, как можно улучшить этот подход, наш продуктовый ментор Оля Шуберт рассказала об этой технологии команде проекта Одноклассники. Мы встретились с ними и в процессе обсуждения пришли к итоговой цели — приложение с функцией колоризации памятных военных снимков. Ко Дню Победы у Одноклассников было запланировано несколько проектов, и мы также присоединились к общему информационному поводу.


Visearch — поиск по фрагментам видео



В чем суть
По небольшому (до 5 минут) фрагменту видео любого качества и разрешения пользователь может найти ссылку на его полную версию на IMDb. Даже если в самом фрагменте скомпилированы отрывки из нескольких фильмов (как часто бывает в видеообзорах), сервис найдет их все.


Проект в деталях



Наша идея появилась случайно — просто подумали, что это был бы классный сервис. В самом начале мы четко распределили роли между четырьмя членами команды: CEO, CTO, фронтенд- и бэкенд-разработчик. В основном мы общались в мессенджере, но иногда встречались лично в офисе Mail.Ru Group, где уже работал один из членов команды.


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


Примененные технологии:


  • Telegram bot — Python;
  • веб — Polymer + Redux-архитектура;
  • пользовательские микросервисы — NodeJs + pm2;
  • алгоритмические микросервисы — C++ Boost, FFMPEG;
  • СУБД — Mongo.

Отдельно хочется отметить два важных момента. Во-первых, сервис загрузки клиентского отрывка на алгоритмическую обработку не сохраняет видео на диск, а стримит его через UNIX-сокет. Во-вторых, обработанные фильмы хранятся и в СУБД, и в оперативной памяти благодаря их маленькому весу.


Разработка ведется в закрытых репозиториях из-за потенциальной коммерческой ценности проекта. Демонстрация работы приложения по ссылке.


OKHear — социальный проект: приложение-самоучитель дактильной азбуки (языка глухонемых)



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


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


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


Основные задачи приложения — подготовка и отправка кадров на каскад Хаара и оттуда на сервер, а также обработка ответов от сервера. Решение о том, засчитывать символ или нет, принимается на основе информации от сервера и набора условий, индивидуально подобранных для каждого символа. Для лаконичности кода использовалась библиотека AndroidAnnotations, для работы с каскадом Хаара — OpenCV. Для детектирования руки в видеопотоке был применен каскадный классификатор, использующий признаки Хаара.



Раз в 400 мс клиент присылает на TCP-балансировщик запрос — сжатую картинку в виде набора байт. Балансировщик с помощью алгоритма Round Robin распределяет запросы между Docker-контейнерами, на которых находится сам сервер и обученная модель нейронной сети.


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


Проект состоит из клиентской и серверной части. Клиентская часть — это мобильное приложение для Android на Java, серверная — TCP-сервер на Python. Нейросеть обучена с помощью библиотеки Keras. Также в мобильном приложении используются средства языка C++ для детектирования руки.


FindBird — агрегатор объявлений о потерянных и найденных вещах



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


Проект в деталях
Приложение анализирует тексты объявлений, выявляя ключевые слова.



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


ShoZaSong — сервис поиска музыкальной композиции по фрагменту текста



В чем суть
Сервис анализирует фрагмент текста (набранный английским, транслитом или с использованием голосового набора) и проигрывает предложенные композиции, содержащие аналогичный текст, с того места, где встречается этот фрагмент.


Проект в деталях


На слайде представлена архитектура проекта с указанием использованных технологий


Первая и, пожалуй, самая серьезная проблема, с которой мы столкнулись — это поиск интересной идеи. К итоговому выбору мы пришли только спустя месяц после начала выпускного семестра. Что касается распределения ролей и рабочего процесса — тут мы отработали очень слажено. Каждый член команды был способен заменить другого, хоть и имел свою специализацию. Я (Валерия) занималась бэкендом и машинным обучением, Саша пилил фронтенд, а Никита занимался инфраструктурой. Часто мы собирались вне учебы, где-нибудь в Старбаксе и кодили все выходные, это реально приносило удовольствие и приближало нас к результату. Мы не боялись использовать новые, плохо знакомые нам технологии. Так, Никита решил использовать React Active, хотя до этого не так много его изучал. Для Telegram-бота мы решили использовать язык Go для этого дополнительно окончили летние интенсивные курсы от Технопарка. Я в бэке использовала Python, для инфраструктуры — Docker. В общем, мы старались сделать максимально удобный и сильный продукт.


Сейчас существует проблема с контентной составляющей нашего проекта — ведь все права на музыку нужно приобретать у правообладателей, а это и материально и юридически непросто.
Ознакомиться с проектом можно на GitHub.




Кроме перечисленных проектов, в этом семестре успешно прошли защиту:


  • HauntedCity — мобильная игра на основе дополненной реальности (команда МГТУ им. Н. Э. Баумана),
  • Time for Print — приложение под Android, позволяющее начинающим фотографам и моделям найти друг друга (команда МФТИ),
  • CheckiePy — интеллектуальный сервис для проверки качества кода для Python 3 — (команда МГТУ им. Н. Э. Баумана),
  • MyKyzya.ru — cервис для подписки на товары по уходу за домом и за собой (МФТИ),
  • Corobox — мобильное приложение под iOS и Android, позволяющее удаленно управлять хранением вещей (МФТИ),
  • MyDressing.ru — сервис для виртуальной примерки одежды из интернет-магазинов (МГТУ им. Н. Э. Баумана),
  • Mazenark — игра на Unity (МГТУ им. Н. Э. Баумана),
  • CoinFinder — сервис по поиску коллекционных монет (МГУ).

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

Вы можете помочь и перевести немного средств на развитие сайта



Комментарии (2):

  1. ilyaplot
    /#10525262

    Было бы здорово увидеть некую библиотеку на github от FindBird. Такая библиотека может вызвать революцию в области агрегирования.

  2. ANL1M
    /#10525292

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

    Определенно Visearch. Хотел уже попробовать, но сайт пока пустой.
    Нужна опция по распознаванию фильма когда наводишь камеру телефона на экран.