Привіт всім читачам 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. Головна зміна для нас – люди стали розуміти, що смартфон можна використовувати не тільки для ігор, а й для вирішення складних завдань. У нас з’явилися запити з різних університетів. Ми навіть посіли третє місце на першому агрохакатоні України (проводився в Тернополі).

Зараз більше зворотного зв’язку йде від учених. Нещодавно я отримав листа від нашого користувача в Тернопільському національному педагогічному університеті, кафедра біології та хімії. Вони тестували Петіоль уздовж і поперек в контексті виміру площі. Результат – площа статистично достовірна, вимірювання відбуваються швидко і зручно для користувача.

фото Petiole

Від агрономів ми фідбек дочекаємося хіба що в 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.

Спасибі за відповіді з технічними подробицями. Тепер я пропоную тепер все трохи систематизувати. Чи можна на твою досить коротко сформулювати послідовність дій для тих хлопців, у яких немає професійної підтримки, але які хотіли все-таки висунутися зі своїм технічним рішенням проблеми. Так щоб про них дізналися потенційні інвестори.

Досить складне питання. Але можна спробувати. Для початку необхідно зрозуміти, що ми вкладаємо в “професійну підтримку”. Якщо це гроші, то необхідно, перш ніж вплутуватися у всю цю історію, їх попередньо заробити на звичайній роботі або фрілансі. Якщо це заступництво, то тут як кому пощастить. Якщо це медіапокриття, то потрібні знайомства в середовищі журналістів (страждатиме печінка) або хороший медіапривід (виграли хакатон, наприклад). Наявність одного, а краще відразу всіх факторів, підвищить ваші шанси, що про вас дізнаються потенційні інвестори. Але є одне “але”. Дізнатися – не дорівнює інвестувати. Про наш проект знають практично всі потенційні інвестори в Україні, але жоден з них не інвестував ні копійки. Чому? Питання риторичне.

Автор: Євгеній Шморгун
Орігинал інтерв”ю: Geektimes