Привет народ!
Сегодня увидел себя на Пикабу и решил немного поведать вам об этой истории с моей точки зрения. Кстати, автор поста просто скопировал новость отсюда.
Меня зовут Женя. Я и @alxmamaev - разработчики проекта «Botanic». Я написал android-приложение, а мой друг создал нейросеть.
- "Мальчик, ты кто? Где пруфы?"
Начну с того, что пакет android приложения (com.hackerzhenya.flower), содержит мой ник.
Мало? Вот скрин из Google Developer Console
Хорошо, разобрались, мы - настоящие!
Собственно, сама история.
Год мы учились в IT школе Samsung. В конце года каждый должен был показать какой-либо финальный проект. Собственно, наше приложение таковым и является. Писать нужно было на java (это обязательное условие).
Вначале нейросеть умела распознавать только 5 цветков.
Мы выступили на региональном этапе и стали ждать вестей из samsung'а. Они прислали нам письмо, в котором говорилось, что мы прошли в финал. Еще там было это:
До финала оставалось пол месяца.
Мы подумали: "Грибочки? Ну, можно и грибочки!", и добавили их. Также увеличили количество цветов с 5-ти до 9-ти. Я добавил несколько UI фич в приложение. К этому моменту время закончилось. Я сделал сборку, выложил в маркет, отправил жюри и начал медленно собирать чемодан: впереди - Москва!
Вот мы на сцене (Я слева, Саша справа)
Тут жюри оценивает приложение. Для этого мы раздали им брошюры с фотографиями цветов и грибов.
Да, были и интересные и сложные работы. Вот список всех финалистов с их проектами.
Всего было 3 номинации: «Социальное приложение», «Игровое приложение» и «Программирование».
Вот результат наших стараний:
Отвечу на популярные вопросы:
- "Почему так плохо распознает?!"
- Потому что нейросеть не глубокая. Она состоит из четырех слоев свертки и трех слоев пуллинга. Если бы мы использовали более глубокую нейронную сеть, на ее тренировку с имеющимся у нас железом ушла бы не одна тысяча лет!
- "Почему так мало растений?!"
- На каждое растение Саша вручную отбирал по 1-1,5k картинок, ибо было много мусора в выдаче по запросу. Источником были Google и Flickr.
Вот пример: мы ищем ромашку (daisy). Но если опуститься ниже, то можно увидеть совсем не то, что нам нужно. К примеру такое:
Не очень похоже на ромашку, правда? :)
- "Почему не сделать ошибку при низкой вероятности?"
- Мы пытались. Все дело в особенности работы сервера. Картинка сжимается до 32x32 пикселей. Это равносильно тому, что смотреть на растение с расстояния 200м. При таком низком разрешении нейросеть не может точно определить, что находится на картинке. Поэтому она высказывает свое предположение, наиболее похожее на те материалы, которые участвовали в обучении.
Не забывайте, что проект дипломный, про продакшен на данном этапе никто не говорил!
Кстати, ничто не стоит на месте и теперь у нас есть железо для новых свершений!
На все вопросы я и Саша постараемся ответить в комментариях.
Спасибо за внимание!