SmartBio: нейросеть распознавания растений по фото

Обновлено:
ML Нейросети3 месяца

Мы разработали SmartBio — нейросеть, которая по одной фотографии определяет вид растения: достаточно снять лист, цветок или стебель. Проект вела команда полного цикла на Python и TensorFlow с применением компьютерного зрения; от постановки задачи до готового продукта прошло 3 месяца. Решение подходит садоводам, ботаникам, студентам и всем, кому интересна природа: пользователь получает название растения быстро, с высокой точностью и опорой на обширную базу видов — без справочников и ручного поиска по признакам.

SmartBio: нейросеть распознавания растений по фото

Задача

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

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

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

Определитель требует знаний

Классический ботанический определитель рассчитан на специалиста: нужно разбираться в морфологии и терминах. Садовод или студент теряется в признаках и не может уверенно дойти до вида, даже держа растение в руках.

Виды внешне похожи

Близкие виды различаются мелкими деталями, а одно растение выглядит по-разному на листе, цветке и стебле. Человеку без подготовки такие нюансы незаметны, и определение на глаз легко даёт ошибку.

Поиск по описанию не работает

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

Что делает система

Распознавание по фото

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

Нейросеть-классификатор

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

Предобработка изображений

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

База видов растений

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

Ранжирование предположений

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

Быстрый инференс

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

Простой интерфейс загрузки

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

Расширение и дообучение

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

Технологический стек

Python

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

TensorFlow

Фреймворк для построения и обучения нейросети. TensorFlow даёт готовые слои и инструменты для нейросетей-классификаторов, отлаженный цикл обучения и, что критично для нас, оптимизированный инференс. На нём удобно и обучать модель на большой базе изображений, и затем разворачивать её так, чтобы одно фото распознавалось за секунды — ровно то, что требовалось продукту.

Computer Vision

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

Image Processing

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

Neural Networks

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

PythonTensorFlowComputer VisionImage ProcessingNeural Networks

Как шла разработка

Сбор и разметка датасета

Готово

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

Конвейер предобработки

Готово

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

Проектирование архитектуры

Готово

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

Обучение и валидация

Готово

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

Оптимизация инференса

Готово

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

Сборка продукта и выпуск

Готово

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

Результаты

SmartBio делает ровно то, ради чего задумывался: определяет вид растения по одному снимку листа, цветка или стебля. Пользователь загружает фото и за секунды получает название с высокой точностью — а весь путь от разметки датасета до готового продукта занял 3 месяца. Компьютерное зрение сняло главный барьер: чтобы узнать растение, больше не нужно разбираться в ботанической морфологии и листать определитель. Инструмент одинаково полезен садоводу, ботанику, студенту и любому, кому интересна природа.

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

3 месяца

от датасета до готового продукта

1 фото

лист, цветок или стебель на входе

Высокая точность

распознавания вида растения

Секунды

на распознавание одного снимка

Вопросы о проекте

Обсудим похожий проект?

Расскажите о задачах вашего бизнеса — предложим архитектуру и оценим сроки