Разработка AI-системы точного земледелия Precision Agriculture
Точное земледелие — это управление полем не как единицей, а как мозаикой микрозон с разными свойствами. AI объединяет спутниковые снимки, дроны, почвенные данные и погоду в единый контур управления: каждый квадрат поля получает нужное вмешательство.
Data Fusion — слияние разнородных данных
Точное земледелие работает с несколькими слоями пространственных данных, которые нужно совместить:
import numpy as np
import rasterio
from rasterio.enums import Resampling
from rasterio.warp import reproject, calculate_default_transform
class FieldDataFusion:
"""Совмещение разнородных пространственных слоёв поля"""
def __init__(self, target_resolution_m=10):
self.resolution = target_resolution_m
def align_to_reference(self, source_path, reference_path, output_path):
"""Привести все слои к единой сетке и разрешению"""
with rasterio.open(reference_path) as ref:
ref_meta = ref.meta
ref_transform = ref.transform
ref_crs = ref.crs
with rasterio.open(source_path) as src:
transform, width, height = calculate_default_transform(
src.crs, ref_crs, src.width, src.height, *src.bounds
)
meta = src.meta.copy()
meta.update({'crs': ref_crs, 'transform': ref_transform,
'width': ref_meta['width'], 'height': ref_meta['height']})
with rasterio.open(output_path, 'w', **meta) as dst:
reproject(
source=rasterio.band(src, 1),
destination=rasterio.band(dst, 1),
src_transform=src.transform,
src_crs=src.crs,
dst_transform=ref_transform,
dst_crs=ref_crs,
resampling=Resampling.bilinear
)
def create_feature_stack(self, layer_paths):
"""Стек признаков для ML: [NDVI, NDRE, elevation, slope, EC, pH]"""
arrays = []
for path in layer_paths:
with rasterio.open(path) as src:
arrays.append(src.read(1))
return np.stack(arrays, axis=0) # (n_layers, height, width)
Зонирование поля (Management Zones)
Деление поля на управленческие зоны:
Кластеризация пикселей по многолетнему NDVI + EC почвы + рельеф:
- k-means / Fuzzy C-Means на нормализованном многомерном признаковом пространстве
- Оптимальное K: elbow method на within-cluster variance
- Постобработка: sieve filter для устранения мелких несвязных кластеров
Типичный результат: 3–5 зон с существенно разными агрохимическими свойствами.
Компьютерное зрение для агрокультур
Мониторинг всходов и густоты посева:
import cv2
import numpy as np
from ultralytics import YOLO
class SeedlingCounter:
"""Подсчёт всходов по снимкам дрона для контроля густоты"""
def __init__(self, model_path='seedling_yolov8n.pt'):
self.model = YOLO(model_path)
self.calibration = None # ГСД (Ground Sampling Distance) в см/пиксель
def count_seedlings(self, image_path, gsd_cm=2.0, plot_size_m2=25):
"""
Подсчёт всходов на снимке.
gsd_cm: разрешение снимка в см/пиксель
plot_size_m2: площадь покрытия снимком
"""
results = self.model(image_path, conf=0.4, iou=0.3)
count = len(results[0].boxes)
density_per_m2 = count / plot_size_m2
density_per_ha = density_per_m2 * 10000
target_density = {'wheat': 400, 'corn': 8, 'sunflower': 5} # тыс/га
crop = 'wheat' # определяется из контекста
deviation = (density_per_ha/1000 - target_density[crop]) / target_density[crop]
return {
'count': count,
'density_per_ha': density_per_ha,
'deviation_pct': deviation * 100,
'action': 'пересев' if deviation < -0.15 else 'норма'
}
Идентификация сорняков для точечной обработки:
Drone + YOLO: карта засорённости поля → prescription map для спот-спрея:
- Обработка только засорённых зон (30–40% поля) → экономия гербицидов 60–70%
- Сельскохозяйственные дроны (DJI Agras T40): автономное опрыскивание по prescription map
Прогноз урожайности
Многопризначная модель:
| Источник данных | Признаки | Горизонт прогноза |
|---|---|---|
| Спутник (Sentinel-2) | Временной ряд NDVI по фазам | 30–60 дней |
| Погодная станция | Сумма осадков, GDD, стресс | Весь сезон |
| Почва | EC, pH, N/P/K, OM% | Неизменны |
| История | Урожайность прошлых лет | Baseline |
Ensemble: LightGBM + XGBoost + CatBoost → средневзвешенное. RMSE: 0.3–0.5 т/га для пшеницы при прогнозировании за 30 дней.
Карты урожайности и обратная связь
Yield Mapping:
Комбайн с GPS и массовым расходомером → растровая карта урожайности в реальном времени:
- Калибровка расходомера → точность ±3–5%
- Очистка данных: удалить краевые эффекты (разворот), скорость <3 и >12 км/ч
- Геостатистика: вариограмма → кригинг для сглаживания шумов
Закрытый цикл:
- Карта урожайности → корреляция с VRA prescription → что сработало?
- Многолетний анализ: стабильно высокие/низкие зоны → инвестировать в почвоулучшение
Интеграция в АПК
- Телематика техники: John Deere Operations Center, CLAAS telematics → трекинг работы, учёт ресурсов
- Агробухгалтерия: 1С:Агропромышленный комплекс → себестоимость/га по культурам
- Прогноз погоды: API Meteomatics, WeatherAPI (16-дневный прогноз по ECMWF)
Срок разработки: 5–8 месяцев для полноценной precision agriculture платформы с зонированием, CV-мониторингом, VRA и yield mapping.







