Привет всем читателям Geektimes. Сегодня у нас появилась возможность поговорить о “живом” развитии своих собственных идей с основателем стартапа Petiole Андреем Селезнёвым. Мы постараемся обойти стороной победные реляции и внушения о том, как это всё легко (или тяжело) и как приятно чувствовать на себе внимание прессы.
Вместо этого мы хотим рассказать о достаточно длинном процессе: о том как зарождается идея, о теоретическом багаже знаний автора или авторов, о том, как идея приобретает осязаемые черты, и, самое главное, как она выходит в живой мир и завоёвывает аудиторию. Мы имеем ввиду честный рассказ о поиске инвесторов и дальнейшем развитии.
Мы бы хотели избежать рекламных заявлений, но сказать пару слов придётся. Речь идёт о технически специализированном приложении Petiole, которое при помощи камеры мобильного телефона позволяет определить площадь листьев растений и содержание хлорофилла.
Начнём с самого начала. На первый взгляд задача Petiole выглядит крайне специфичной. Как пришла в голову мысль заняться этой проблемой? Какая потенциальная аудитория у приложения ?
Да, Petiole решает вполне специфическую задачу. В этом наша особенность. Мысль пришла, когда эта проблема жила с тобой три месяца. Точнее, я жил с другом Вячеславом Быковым в одной комнате. Он в это время работал в Институте эволюционной экологии НАН Украины, занимался исследованием влияния негативных факторов на тополь пирамидальный. Для этого измерял площадь листьев. Процесс выглядел очень бюджетно и не оптимально — сканер, фотошоп, ImageJ через консоль, сведение данных в экселе. При этом лицензионное программное обеспечение находилось в режиме “бесконечная демо-версия”, что добавляло пикантности такого рода исследованиям. Вячеслав приходил домой поздно и с зелеными пальцами, от постоянного контакта с сухими и свежими листьями. Я захотел ему помочь и в один вечер поумничал, что задачу можно решить с помощью обычного смартфона. Слово за слово, завертелось закружилось, и в конце концов нам удалось это реализовать. Потенциальная аудитория у приложения разнообразная. Сначала это были ученые-биологи, экологи. Потом у нас появился интерес со стороны ученых-агрохимиков. Потом мы добавили хлорофилл и к нам начали звонить представители крупных агрохолдингов.
Фото Petiole
Если говорить цифрами, то они намного отличаются от аудитории популярных социальных сетей. Сейчас у нас 88 активных месячных пользователя. Рост небольшой от месяца к месяцу, но он есть, и это нас радует.
ОК, тогда уцепимся за “задачу можно решить с помощью обычного смартфона” и “Слово за слово, завертелось закружилось, и в конце концов нам удалось это реализовать”. Расскажи, пожалуйста, о своем опыте программирования и сколько времени заняло создание рабочего кода Petiole ?
Опыт программирования разный и своеобразный. Свою первую программу я написал в возрасте девяти лет на языке программирования FoxPro 2.5. Родители работали в Вычислительном центре Донецкой железной дороги. И после школы я любил захаживать в гости и рассматривать толстые книги с исходным кодом (обычно я их разрисовывал всякими картинками). Потом баловался Pascal, Delphi, Qt, Ruby on rails. Хочу заметить, что у меня нет классического компьютерного образования, сам я по диплому инженер — землеустроитель. И на “галерах” проработал в общей сложности не более, чем два года. Но это не помешало мне и моей молодой команде примерно за семь месяцев с перерывами написать рабочий код Петиоля. С учетом того, что мы три раза переписывали базовый алгоритм.
По ходу процесса уже было ясно, что у проекта должно быть какое-то будущее? Был создан блог, искались связи с инвесторами, было общение с целевой аудиторией ?
Нет, примерно до половины пути проект был изначально направлен на решение проблемы одного человека. Но в июне прошлого года мы стали финалистами GIST Tech-I. И с этого момента проект приобрел более глобальные задачи и цели. Блог был создан месяца три назад. С инвесторами мы общались активно осенью прошлого года. С целевой аудиторией постоянно пытаемся держать контакт и получать обратную связь. В основном это украинские ученые.
Можешь подробнее рассказать о GISTech-I. Понятно, что всё можно нагуглить, но интересно авторское отношение к этому. Почему это выгодно, круто, полезно? Кстати, насколько велика твоя команда ?
GIST Tech-I — глобальный конкурс технологических и научных проектов для развивающихся стран. Он организован при поддержке U.S. Department of State и реализуется силами AAAS (Американская ассоциация содействию науки). Кульминация конкурса проходит в рамках Global Enterpreneurship Summit. К слову, мы стали первыми финалистами из Украины за все время его проведения начиная с 2011 года. Главное отличие от других конкурсов — команды только из стран с развивающейся экономикой. Проекты оценивались по критериям нацеленности на благосостояние и улучшения микроэкономических показателей для общества. Лично нам был полезен этап полуфинала. Необходимо было собрать как можно больше голосов в онлайн голосовании на протяжении одного месяца. Фишка голосования — один человек может голосовать каждый день.
Мы собрали 5775 голосов, что позволило нам занять 15 место в категории “идеи” и пройти в финал. Сам финал заключался в двухдневном тренинге (как создать компанию, маркетинг, продвижение в социальных сетях) и три дня участия в саммите с питчем своего проекта на большой сцене. Лично у меня осталась куча впечатлений как от Африки, так и от саммита и конкурса. Главное — я познакомился с замечательными людьми из Африки, Мексики, Казахстана, Азербайджана, Малайзии, Чили, Перу, расширил свой кругозор и первый раз в жизни полетал на самолетах.
Наша команда состоит из 8 — 10 человек, которые сильно помогли на разных этапах становления проекта. К сожалению у нас нет бюджета платить заработную плату. Но несмотря на это люди работали в свободное время и за идею, что нас очень радовало. В основном, это мои друзья из стипендиальной программы “Завтра.ЮА”.
А где проходило все мероприятие? Как было обставлено? С кем приходилось конкурировать? И как вы попали в этот список ?
Мероприятие проходило в Найроби, столице Кении. Физически первые два дня тренинга проходили в конференц-зале пятизвездочного отеля Sarova Stanley. Остальные три дня на территории The United Nations Office. Обстановка в целом была рабочая. Каждый из финалистов был нацелен на победу. Постоянные тренировки питча и подготовка презентации до трех часов утра. Наш проект конкурировал в секции “идеи”. Из 15 человек, по моему мнению, все были как на подбор. Конкуренция была сильная и мой слабый разговорный английский немного снижал мои шансы на победу. Большую часть призов забрали команды из Африки и Южной Америки.
В список нас отобрали по результатам конкурса “Startup Open 2015”. Это глобальное соревнование стартапов, включая и развитые страны. Для нас это было приятной неожиданностью. И я горжусь, что наш проект попал в один список с такими проектами как Lishot, AeroAnalytics, AppleDoc, BethClip и Smart Mobile Farming.
ОК, давай вернемся к практической стороне вопроса. Приложение существовало до того, как вы приняли участие в GIST Tech-I. Потом вы приняли участие в различных меропритиях. Что изменилось? С другой стороны: какой фидбек вы получаете сейчас? От реальных агрономов или ученых?
Да, рабочее приложение существовало до того, как мы приняли участие в GIST Tech-I. Но, первое, мы использовали алгоритм с калибровочным квадратом. Он давал плохие измерения. Часто выскакивала систематическая ошибка в два квадратных сантиметра. Плюс нестабильность самого приложения в целом. Также у нас не была реализована функция измерения хлорофилла по индексу темного зеленого. Второе — к весне 2015 года активная разработка приложения была приостановлена. В целом я забыл ещё сказать, что у нас есть ещё и облако, где собираются данные измерений от всех пользователей. Но это отдельная история.
На тот момент был прототип с базовыми функциями. Осенью 2015 и весной 2016 мы приняли участие в около десяти мероприятиях (конференции, ярмарки, выставки, пикники), где рассказывали, показывали как работает приложение и что с ним можно делать. Больше всего выступлений было на “Научных Пикниках” в Киеве. Собственно там произошла первая публичная демонстрация летом 2014. Главное изменение для нас — люди стали понимать, что смартфон можно использовать не только для игр, а и для решения сложных задач. У нас появились запросы с различных университетов. Мы даже заняли третье место на первом агрохакатоне Украины (проводился в Тернополе).
Сейчас больше обратной связи идет от ученых. Недавно я получил письмо от нашего пользователя в Тернопольском национальном педагогическом университете, кафедра биологии и химии. Они тестировали Петиоль вдоль и поперек в контексте измерения площади. Результат — площадь статистически достоверна, измерения происходят быстро и удобно для пользователя.
От агрономов мы фидбека дождемся разве что в 3016 году. Причина, в том, что в целом агрономы не заинтересованы нашим приложением. Так как видят в нем конкурента. Наш клиент — это собственник агробизнеса, который хочет автоматизировать труд агронома и полностью исключить его из цепочки принятия решений. Но в решение в таком виде, как оно сейчас есть — ходить по полям с приложением — их мало интересует (в контексте Украины). Площадь полей среднего предприятия от 10 000 га. Если брать для сравнения Южную Корею, то там средняя площадь фермерского хозяйства 2 га. Петиоль — идеальное решение для них.
Насколько можно понять из фотографий, то к приложению необходимо иметь калибровочный стенд или нечто подобное? Можешь рассказать об этом? Сколько стоит приспособление? Не влияет ли его наличие на конечное решение об использовании Petiole ?
Калибровочный стенд — нужное и приятное дополнение к мобильному приложению. В нашей маркетинговой коммуникации я всегда забываю сказать, что он необходим только для измерения площади листа. Для измерения хлорофилла стенд не нужен. Почему мы решили сделать стенд для измерения площади? Его наличие снижает сложность алгоритма в разы. И дополнительно повышает общее быстродействие. В своих презентациях я люблю говорить, что с помощью стенда можно делать три вещи двумя руками. Держать смартфон, держать лист и нажимать кнопки на экране смартфона. Первая версия была из алюминия. Дороговато, но можно было менять высоту стенда.
Бывалые люди советовали отливать из пластика. Но, услышав стоимость изготовления формы для заливки, мы решили с этим подождать. Потом я случайно попал в большой строительный супермаркет и увидел ступени из бука и антибликовые листы полистирола. И понял, что это оно. Все режется на фрезере и собирается с помощью липучек.
Фото Petiole
Себестоимость стенда — наша коммерческая тайна. Цена продажи — тридцать долларов США. Для академического использования мы даем стенды бесплатно. Уже штук восемь раздали. Конечно, его наличие влияет на решение об использовании. Каждый из нас мечтает просто поднести камеру смартфона к растению и получить чуть ли не весь химический состав. Но если человек очень хочет, он сможет обойти данную проблему. Мы ему в этом помогаем — можно скачать файл с шахматкой и вместо стойки использовать стопку книг. Приложению две недели назад делали рецензию Greenappsandweb. Так они смогли выполнить весь цикл измерений без наличия стенда.
Ясно. А можно в общих чертах набросать алгоритм работы приложения? Какие библиотеки используются? Какие были проблемы и какие источники или консультанты использовались ?
На уровне android-приложения мы используем библиотеку OpenCV для вещей, связанных с компьютерным зрением. В приложении на данный момент есть два базовых алгоритма. Первый определяет площадь листа. Второй — индекс темного зеленого цвета. Для площади листа мы находим матрицу гомографии между плоскостью белой приемной пластины и плоскостью матрицы камеры смартфона. Процесс похожий на калибровку линзы камеры с использованием черно-белой шахматки. Дальше мы обрабатываем изображение с камеры (лист на белой пластине) с целью получить хороший контур.
Координаты точек контура пересчитываем из координат камеры в реальные координаты. По этим значениям находим площадь листа. Одновременно мы работаем с тенью (минимизируем) и с черешком (отсекаем). Для индекса темного зеленого мы переводим картинку из режима КЗС (RGB) в HSV. Делим на каналы и по каналу “Цветность” находим среднее значение по листу в заданном диапазоне. Нормализуем его к диапазону и получаем индекс. Используя зависимости хлорофилла от индекса темного зеленого (это обычно линейные модели, типа y = ax + b), полученные в нашей агро-лаборатории, мы пересчитываем его в содержание хлорофилла прямо в приложении. Кроме этого мы используем Fabric, Volley, Material Design.
Фото Petiole
На раннем этапе были проблемы с точностью измерений площади, но мы его решили, добавив в процесс измерений нахождение матрицы гомографии. Дальше были проблемы с производительностью. К сожалению, смартфон — это не компьютер, у него процессор относительно слабый. Google решил бы эту проблему просто отправляя данные в облако. Но не везде есть интернет-покрытие, 3G и другие прелести цивилизации. Особенно в поле на экспериментальных участках. Алгоритм работал медленно и часто вылетал с ошибками переполнения памяти типа void*cv::OutOfMemoryError(std::size_t). Но переписав его в третий раз, нам удалось побороть такое его странное поведение.
По источникам нам хорошо помогают электронные книги по OpenCV (Packt Publishing), база знаний answers.opencv.org, публичные репозитории на Github и хорошая документация на самом сайте библиотеки OpenCV. Понятно, что по Android тоже были необходимы знания. Особенно в плане настройки компиляции нативных алгоритмов в библиотеки, используя NDK, и чтобы это все хорошо работало. Но нам удалось быстро восполнить пробел, используя замечательный ресурс Udacity.
Значит часть кода написана не на Java, а на С++ ?
Да. Код отвечающий за работу приложения, сохранение данных в БД, написан на Java в рамках Android SDK. Код, отвечающий за работу алгоритма, написан на C++ и при помощи Android NDK преобразован в статическую библиотеку. Приложение при запуске загружает библиотеку и использует нативные вызовы функций библиотеки OpenCV. В целом есть java-библиотека для использования OpenCV прямо в коде приложения, без использования JNI. Но производительность отличается от нативных вызовов кода. Сейчас у нас производительность около 5FPS при измерении площади листа в режиме реального времени. С использованием java-библиотеки было бы наверное около 2FPS.
Спасибо за ответы с техническими подробностями. Теперь я предлагаю теперь все немного систематизировать. Можно ли по твоему достаточно кратко сформулировать последовательность действий для тех ребят, у которых нет профессиональной поддержки, но которые хотели всё-таки выдвинуться со своим техническим решением проблемы. Так чтобы о них узнали потенциальные инвесторы.
Довольно сложный вопрос. Но можно попробовать. Для начала необходимо понять, что мы вкладываем в “профессиональную поддержку”. Если это деньги, то необходимо, прежде чем ввязываться во всю эту историю, их предварительно заработать на обычной работе или фрилансе. Если это покровительство, то тут как кому повезет. Если это медиапокрытие, то нужны знакомства в среде журналистов (будет страдать печень) или хороший медиаповод (выиграли хакатон, например). Наличие одного, а лучше сразу всех факторов, повысит ваши шансы, что о вас узнают потенциальные инвесторы. Но, есть одно но. Узнать не равно инвестировать. О нашем проекте знают практически все потенциальные инвесторы в Украине, но ни один из них не инвестировал ни копейки. Почему? Вопрос риторический.
Автор: jeston