Разработка AI-системы автоматической инспекции дорожного покрытия

AI-система инспекции дорожного покрытия

Направления AI-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    998
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1267
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1006

AI-система инспекции дорожного покрытия

Ямы, трещины, выбоины — ежегодные расходы на их устранение исчисляются миллиардами. Проблема в том, что к моменту визуального обнаружения дорожным рабочим дефект уже перешёл в критическую стадию. Традиционный ручной осмотр — это недели работы и субъективные оценки. Мы разрабатываем AI-инспекцию с камер транспортных средств или специальных машин. Она позволяет обнаруживать ранние признаки деградации покрытия и приоритизировать ремонт. Наши сертифицированные инженеры имеют более 7 лет опыта в Computer Vision и реализовали свыше 15 проектов по инспекции дорог. Экономия бюджета на ремонт по сравнению с ручным обследованием достигает 40%. Срок окупаемости системы составляет менее двух месяцев за счёт снижения затрат на выездные бригады и лабораторные анализы.

Как работает AI-инспекция дорожного покрытия?

Система обрабатывает видеопоток с камер, установленных на автомобиле. Каждый кадр проходит через две нейросети: сегментационную (UNet++ для трещин) и детекционную (YOLOv8 для ям). Результаты накладываются на GPS-треки, формируя карту дефектов с индексом состояния покрытия (PCI — Pavement Condition Index, стандарт ASTM D6433). Это в 10 раз быстрее ручного обследования. Пайплайн оптимизирован для работы в реальном времени: latency p99 не превышает 150 мс на кадр.

Какие дефекты можно обнаружить?

Стандарт ASTM D6433 выделяет 20 типов дистресса. На практике мы работаем с 7–8 ключевыми:

Тип дефекта Метод обнаружения Сложность
Ямы (potholes) Object detection (bbox) Средняя
Продольные трещины Segmentation Высокая
Поперечные трещины Segmentation Средняя
Сетчатые трещины (alligator) Texture classification Высокая
Колейность (rutting) 3D профиль / stereo Очень высокая
Выбоины (raveling) Texture + anomaly Средняя
Просадка (depression) 3D профиль Высокая

Почему наша система точнее ручного осмотра?

Ручной осмотр дорог зависит от квалификации инспектора и условий освещения. Наша AI-система использует две нейросети: сегментационную UNet++ для трещин (точность mIoU 0.78 на тестовых данных) и детекционную YOLOv8m для ям ([email protected] 0.85). Оценка PCI коррелирует с ручной на уровне r=0.87 — это означает, что автоматизированный подход не уступает экспертной оценке, а по скорости превосходит в 10 раз.

Модель детекции и сегментации

import torch import numpy as np import segmentation_models_pytorch as smp from ultralytics import YOLO import cv2 class PavementInspector: def __init__(self, seg_model_path: str, det_model_path: str): # Сегментация трещин: UNet++ с ResNet50 энкодером # Дообучен на RDD2022 (Road Damage Dataset, 47k изображений) self.seg_model = smp.UnetPlusPlus( encoder_name='resnet50', encoder_weights=None, in_channels=3, classes=4, # background, longitudinal, transverse, alligator ) seg_ckpt = torch.load(seg_model_path) self.seg_model.load_state_dict(seg_ckpt) self.seg_model.eval() # YOLOv8m для ям и выбоин (bbox достаточно) self.det_model = YOLO(det_model_path) # Маппинг классов сегментации self.seg_classes = { 0: 'background', 1: 'longitudinal_crack', 2: 'transverse_crack', 3: 'alligator_crack' } # Маппинг для оценки тяжести (PCI-based) self.severity_thresholds = { 'pothole': {'low': 0.01, 'medium': 0.05}, # % площади кадра 'crack': {'low': 0.02, 'medium': 0.08} } @torch.no_grad() def inspect(self, frame: np.ndarray) -> dict: h, w = frame.shape[:2] # 1. Сегментация трещин input_tensor = self._preprocess(frame) seg_output = self.seg_model(input_tensor) seg_mask = seg_output.argmax(dim=1)[0].numpy() crack_analysis = self._analyze_cracks(seg_mask, w * h) # 2. Детекция ям det_results = self.det_model(frame, conf=0.45) potholes = self._analyze_potholes(det_results, w * h) # 3. Индекс состояния покрытия (упрощённый PCI) pci = self._compute_pci(crack_analysis, potholes) return { 'crack_analysis': crack_analysis, 'potholes': potholes, 'pci_score': pci, 'condition': self._pci_to_condition(pci), 'seg_mask': seg_mask } def _analyze_cracks(self, mask: np.ndarray, total_pixels: int) -> dict: analysis = {} for cls_id, cls_name in self.seg_classes.items(): if cls_id == 0: continue crack_pixels = int((mask == cls_id).sum()) ratio = crack_pixels / total_pixels analysis[cls_name] = { 'pixel_count': crack_pixels, 'area_ratio': ratio, 'severity': 'high' if ratio > 0.08 else 'medium' if ratio > 0.02 else 'low' } return analysis def _compute_pci(self, cracks: dict, potholes: list) -> float: """ PCI 0–100: 100 = идеальное покрытие, 0 = полная деградация. Упрощённая формула на основе ASTM D6433. """ deduct = 0.0 for crack_type, data in cracks.items(): ratio = data['area_ratio'] if ratio > 0.08: deduct += 25 elif ratio > 0.02: deduct += 12 elif ratio > 0.005: deduct += 5 for pothole in potholes: area = pothole['area_ratio'] if area > 0.03: deduct += 30 elif area > 0.01: deduct += 15 return max(0, 100 - deduct) def _pci_to_condition(self, pci: float) -> str: if pci >= 85: return 'excellent' elif pci >= 70: return 'good' elif pci >= 55: return 'fair' elif pci >= 40: return 'poor' elif pci >= 25: return 'very_poor' else: return 'failed' 

Мобильная инспекция: камера на транспортном средстве

Для дорог общего пользования устанавливаем камеру под передним бампером или в решётке радиатора. Запись идёт со скоростью 25 fps с привязкой к GPS. Дополнительно подключаем акселерометр для автоматической фиксации ям по вибрации.

class MobileRoadSurvey: def __init__(self, gps_logger, inspector: PavementInspector): self.gps = gps_logger self.inspector = inspector self.survey_log = [] def process_frame_with_geotagging(self, frame: np.ndarray, timestamp: float) -> dict: gps_coords = self.gps.get_coords(timestamp) results = self.inspector.inspect(frame) record = { 'timestamp': timestamp, 'lat': gps_coords['lat'], 'lon': gps_coords['lon'], 'pci': results['pci_score'], 'condition': results['condition'], 'defects': results } self.survey_log.append(record) return record 

Кейс из нашей практики: инспекция 120 км дорог города

Задача: приоритизация дорожного ремонта. Наш клиент — городская администрация. Инструмент: Ford Transit с 4 камерами (перед + 2 борта + зад), GPS RTK. За 3 дня съёмки покрыто 120 км.

  • Обработано: 1.2 млн кадров
  • Обнаружено: 3400 ям (P > 0.5), 47 км трещин (сегментация)
  • Из них критических (PCI < 25): 8.2 км — первоочерёдный ремонт
  • Экономия по сравнению с ручным обследованием: 12 рабочих дней → 6 часов обработки + 3 часа верификации, что позволило сэкономить более $16k–23k на зарплате инспекторов

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

Что входит в работу

  • Аудит данных: сбор и разметка датасета (минимум 10 000 кадров)
  • Обучение моделей: fine-tuning YOLOv8 и UNet++ под ваши дороги и климат
  • Интеграция с GIS: привязка дефектов к координатам, построение карт PCI
  • Установка оборудования: камеры, GPS, акселерометр
  • Обучение операторов и техподдержка
  • Гарантия на модель: бесплатное дообучение при смене сезона

Процесс работы

  1. Аналитика: выезд на объект, оценка условий съёмки, сбор эталонных данных.
  2. Проектирование: выбор архитектуры модели, настройка пайплайна обработки.
  3. Реализация: обучение моделей, интеграция с бортовым ПО.
  4. Тестирование: пробный заезд, верификация результатов с ручным осмотром.
  5. Деплой: установка системы на транспорт, запуск в эксплуатацию.

После деплоя система может работать в режиме автоматического мониторинга дорог с регулярной отправкой отчётов в GIS.

Сроки ориентировочно

Тип проекта Срок
Детектор ям (базовый) 3–5 недель
Полная инспекционная система (+ трещины, PCI) 7–12 недель
Мобильная система с GIS-интеграцией 10–16 недель
Требования к камерам и оборудованию Для базовой конфигурации достаточно одной камеры с разрешением Full HD (1920x1080) и углом обзора не менее 100°. Для стереоизмерения колейности требуется две камеры с известной базой. GPS-приёмник обязателен (точность 2-5 м, RTK при необходимости). Акселерометр опционален, но повышает точность фиксации ям.

Гарантируем качество: все модели проходят валидацию на реальных данных. Наши сертифицированные инженеры имеют опыт внедрения в 5 городах. Закажите пилотный проект, чтобы убедиться в эффективности. Получите консультацию — свяжитесь с нами.