Своими рукамипрактическая инструкция

Запускаем готовую нейросеть на Raspberry Pi: диагноз болезни по фото листа

Редакция Фермозавра·25 июля 2026 г.·6 мин чтения

Не обязательно обучать нейросеть с нуля. Берём готовую модель по болезням листьев, ставим на Raspberry Pi с камерой и за вечер получаем подсказку: «похоже на…, уверенность столько-то».

Запускаем готовую нейросеть на Raspberry Pi: диагноз болезни по фото листа

Самый частый тупик: «пока сам не обучу нейросеть — даже не подходить». Неверно. Для первого результата достаточно готовой модели, которую уже учили на большой коллекции фото листьев (часто опираются на открытый набор PlantVillage и похожие). Вы ставите её на Raspberry Pi, снимаете свой лист — и получаете не «истину в последней инстанции», а ранжированный список гипотез с процентами.

Эта статья — практическая. Теория типов сетей — в материале про CNN, RNN и LLM, зачем всё это хозяйству — во вводной. Потом, когда увидите ошибки на своих сортах, перейдёте к обучению на своих фото.

Что вы получите в итоге вечера

  • коробку Raspberry Pi, которая принимает фото;
  • команду в терминале: «вот файл листа — вот три самых вероятных класса»;
  • понимание, почему «87% фитофтора» — это повод посмотреть куст, а не сразу мешать бак.

Если этого достаточно, чтобы загореться дальше — цель пилота достигнута.

Что купить и подготовить

  • Raspberry Pi 4 лучше с 4 ГБ памяти (2 ГБ тоже живут, но теснее);
  • карта microSD 32 ГБ+, питание 5 В достаточно мощное (дешёвые зарядки от телефона любят «проседать»);
  • камера: модуль Pi Camera или обычная USB-вебкамера;
  • монитор/HDMI на первый вечер или настройка «головы» по SSH с ноутбука.

Ориентир по деньгам: плата + БП + карта часто укладываются в 6–10 тыс. ₽, камера — ещё 2–5 тыс. ₽. Сравните с ценой одной вспышки болезни, замеченной на неделю позже.

Почему именно Pi, а не сразу ESP32-CAM

ESP32-CAM отлично снимает и дёшево размножается по рядам. Но тяжёлую модель ей тяжело «крутить» на борту. Разумная схема: камера в ряду → мозг на Pi в бытовке/щитке. Связку соберём в статье про нейросеть + ESP32-CAM. Сейчас учимся на одном устройстве, чтобы отладить модель.

Установка окружения простыми словами

Ставите Raspberry Pi OS (лучше 64-bit). Дальше в терминале создаёте «песочницу» для Python, чтобы не ломать систему:

sudo apt update
sudo apt install -y python3-pip python3-venv
python3 -m venv ~/plant-ai
source ~/plant-ai/bin/activate
pip install --upgrade pip
pip install tflite-runtime pillow numpy
# для USB-камеры иногда удобен opencv-python-headless

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

Модель и подписи классов

Вам нужны два файла:

  • model.tflite — сама сеть;
  • labels.txt — список имён классов по одному на строку, в том же порядке, в каком учили модель.

Ищите проверенные сборки MobileNet/PlantVillage под TFLite (на GitHub их несколько). Кладите в папку ~/plant-ai/model/. Если labels перепутаны — на выходе будет красивая ерунда: модель «уверена», но подписи чужие.

Минимальный скрипт распознавания

#!/usr/bin/env python3
import numpy as np
from PIL import Image
import tflite_runtime.interpreter as tflite

MODEL = "model/model.tflite"
LABELS = "model/labels.txt"
SIZE = 224

interpreter = tflite.Interpreter(model_path=MODEL)
interpreter.allocate_tensors()
inp = interpreter.get_input_details()[0]
out = interpreter.get_output_details()[0]
labels = [l.strip() for l in open(LABELS) if l.strip()]

def predict(path, top_k=3):
    img = Image.open(path).convert("RGB").resize((SIZE, SIZE))
    x = np.expand_dims(np.asarray(img, np.float32) / 255.0, 0)
    interpreter.set_tensor(inp["index"], x)
    interpreter.invoke()
    p = interpreter.get_tensor(out["index"])[0]
    idx = np.argsort(p)[::-1][:top_k]
    return [(labels[i], float(p[i])) for i in idx]

if __name__ == "__main__":
    import sys
    for name, prob in predict(sys.argv[1]):
        print(f"{prob*100:5.1f}%  {name}")

Запуск: python predict.py leaf.jpg

Съёмка с камеры Pi (пример):

libcamera-still -o leaf.jpg --width 1280 --height 960
python predict.py leaf.jpg

Как читать ответ, чтобы не навредить

Модель выдаёт вероятности, не приговор суда. «Tomato Late Blight 0.87» значит: «из того, что я видела при обучении, это больше всего похоже на late blight». Это может быть:

  • правда;
  • похожий по картинке ожог/дефицит;
  • артефакт грязного объектива и контрового света.

Практическое правило хозяйства:

  1. смотрите топ-3, не только первое место;
  2. если максимум ниже 0.60 — пишите в журнале «не уверен» и идите смотреть сами;
  3. никогда не заводите опрыскиватель «по проценту модели» без осмотра и регламента.

Почему на ваших томатах будет хуже, чем в демо

Готовые датасеты часто снимали лист на однотонном фоне, при ровном свете, иногда даже сорванный. У вас:

  • блики плёнки и капли конденсата;
  • тень от шпалеры;
  • свой сорт и своя фаза;
  • пыль на объективе.

Это нормально. Пилот показывает принцип. Точность «под вас» появляется после своего датасета и дообучения. Не выбрасывайте Pi — вы его ещё используете.

Как организовать съёмку, чтобы меньше злиться

  • один лист в кадре, по возможности фон из картона;
  • одни и те же 30–40 см до листа;
  • не снимайте только «самые страшные» кусты — нужны и здоровые для сравнения;
  • подписывайте файлы датой и номером ряда: 2026-08-01_t2_r3.jpg.

Типичные технические ямы

  • нормализация: модель ждала 0…1, а вы подали 0…255 — ответы случайные;
  • перегрев Pi в закрытом ящике на солнце — троттлинг и «вечный думатель»;
  • слабое питание — внезапные перезагрузки в момент съёмки;
  • несовпадение labels и модели после скачивания «с другого репозитория».

Что делать с результатом дальше

На старте ведите простую таблицу: дата, фото, топ-1 модели, что решили вы, чем закончилось. Через две недели станет видно, врёт ли система систематически на ваш свет. Эти же фото потом пойдут в обучение.

Когда надоест носить Pi к кусту — повесьте камеру и оставьте Pi «мозгом» в сухом месте (отдельная статья).

Сценарий первого полевого дня

Не гонитесь за красотой. Сделайте так:

  1. Снимите 10 здоровых листьев с разных рядов.
  2. Снимите 10 листьев, которые вас реально тревожат.
  3. Прогоните через модель, запишите топ-1 и ваше мнение.
  4. Вечером посчитайте: в скольких случаях модель хотя бы «попала в тему».

Если из тревожных десяти она в семи случаях направила мысль правильно — пилот удался, даже при ошибках. Если почти всегда мимо — не выбрасывайте идею: переходите к своим фото, смените фон съёмки, проверьте labels. Часто виноват не «ИИ вообще», а несовпадение условий.

Безопасность и этика в одном абзаце

Модель не знает ваш регламент СЗР, остатки на продукции и соседний участок. Она не несёт ответственности за обработку. Внутреннее правило хозяйства стоит проговорить вслух: процент на экране никогда не включает насос опрыскивателя. Максимум — ставит задачу «осмотреть ряд» в чат бригады.

Что подготовить к следующей статье

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

Главное

Готовая нейросеть на Raspberry Pi — это не финал автоматизации теплицы, а первый рабочий прототип глаз. Вы за вечер получаете ощущение инструмента: фото вошло, гипотезы вышли. Дальше — честность к ограничениям готовой модели и переход к своим данным. График серии — в плане.

💬 Комментарии

Чтобы оставить комментарий, войдите или зарегистрируйтесь

Загрузка комментариев...

Похожие статьи