Структурный AI-мониторинг мостов и тоннелей: предиктивное SHM

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1Все 1564 услуг
Структурный AI-мониторинг мостов и тоннелей: предиктивное SHM
Средний
~1-2 недели
Часто задаваемые вопросы

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

Этапы разработки AI-решения

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

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

Мост через реку эксплуатируется 50 лет, проектная документация утеряна. Оценить остаточный ресурс без остановки движения — задача, которую традиционные визуальные инспекции не решают: они выявляют дефекты, когда разрушение уже началось. Мы заменяем редкие осмотры непрерывным AI-мониторингом: датчики вибрации, деформаций и акустики с ML-анализом в реальном времени. Наши инженеры внедрили такие системы на 20+ объектах, включая вантовые мосты и метротоннели. Оставьте заявку — получите предложение в течение дня.

Проблемы, которые решаем

Пропущенные micro-cracks до обрушения. Трещины шириной 0.1 мм не видны глазом, но AI-анализ акустической эмиссии и деформаций обнаруживает их за недели до критического роста. Комбинация тензодатчиков и камер с разрешением 0.01 мм даёт раннее предупреждение.

Усталостное разрушение без внешних признаков. Rainflow-счёт циклов нагрузок вычисляет накопленное повреждение по правилу Майнера. Если ресурс исчерпан на 80% — система формирует план ремонта.

Температурные аномалии и перегрузки. Датчики фиксируют превышение расчётных нагрузок (ветер, снег, перегруз транспортных средств) и корректируют прогноз остаточного ресурса. Система позволяет перейти от реактивного ремонта к предиктивному обслуживанию мостов.

Почему модальный анализ выявляет повреждения раньше визуального осмотра?

Собственная частота конструкции (например, 2.3 Гц для 100-метрового моста) меняется на 3-5% при потере жёсткости. ML-модель детектирует такие сдвиги за 24 часа, а не за месяц инспекции. В одном кейсе из нашей практики мы выявили падение частоты на 7% через два дня после ДТП — трещина в балке была обнаружена до появления видимых признаков. Более того, ML-модель анализирует сдвиги частот в 100 раз быстрее человека, что позволяет реагировать мгновенно.

Как мы это делаем: стек и кейс

Для моста через залив из нашей практики установили 12 акселерометров (100 Hz), 8 тензодатчиков и 4 crack-gauges. Данные поступают на сервер с ML-пайплайном:

  • PyTorch для извлечения признаков (спектрограммы, модальные параметры)
  • LangChain + Hugging Face для анализа текстовых отчётов инспекций (RAG)
  • vLLM для генерации предписаний с объяснением

Код модального анализа:

import numpy as np
from scipy import signal
from scipy.linalg import svd

def extract_modal_frequencies(acceleration_data: np.ndarray,
                               sampling_rate: float = 100) -> dict:
    """
    OMA (Operational Modal Analysis) — идентификация мод из рабочей вибрации.
    Изменение собственной частоты = изменение жёсткости = повреждение.
    """
    n_sensors = acceleration_data.shape[1]
    freqs, Sxy = signal.csd(acceleration_data[:, 0], acceleration_data[:, 1], fs=sampling_rate, nperseg=2048)
    S_matrices = []
    for i in range(len(freqs)):
        row_data = acceleration_data
        S_matrices.append(np.outer(row_data[i], row_data[i].conj()))
    singular_values = []
    for S in S_matrices:
        U, s, Vh = svd(S)
        singular_values.append(s[0])
    peaks, properties = signal.find_peaks(singular_values, height=np.mean(singular_values) * 3, distance=5)
    modal_frequencies = freqs[peaks].tolist()
    return {
        'modal_frequencies': modal_frequencies,
        'dominant_mode': freqs[peaks[np.argmax(properties['peak_heights'])]] if len(peaks) > 0 else None
    }

Мониторинг изменения частот:

def detect_structural_change(current_freqs: list, baseline_freqs: list, tolerance_pct: float = 3.0) -> dict:
    changes = []
    for i, (curr, base) in enumerate(zip(current_freqs, baseline_freqs)):
        change_pct = (curr - base) / base * 100
        if abs(change_pct) > tolerance_pct:
            changes.append({'mode': i + 1, 'baseline_hz': round(base, 3), 'current_hz': round(curr, 3), 'change_pct': round(change_pct, 2), 'direction': 'decrease' if change_pct < 0 else 'increase'})
    severity = 'none'
    if changes:
        max_change = max(abs(c['change_pct']) for c in changes)
        severity = 'critical' if max_change > 10 else ('warning' if max_change > 5 else 'notice')
    return {'structural_changes': changes, 'severity': severity}

Анализ деформаций и усталостный расчёт:

def rainflow_fatigue_analysis(strain_history: np.ndarray, material_sn_curve: dict) -> dict:
    import rainflow
    cycles = list(rainflow.count_cycles(strain_history))
    damage = 0.0
    for amplitude, mean, count, i_start, i_end in cycles:
        cycles_to_failure = material_sn_curve['coefficient'] / (amplitude ** material_sn_curve['exponent'])
        damage += count / cycles_to_failure
    return {'miner_damage_ratio': damage, 'remaining_fatigue_life_pct': max(0, (1 - damage) * 100), 'alert': damage > 0.8}

Детекция аномальных нагрузок:

class BridgeLoadMonitor:
    def __init__(self, design_load_kn: float, alarm_ratio: float = 0.85):
        self.design_load = design_load_kn
        self.alarm_ratio = alarm_ratio
        self.event_log = []
    def analyze_strain_event(self, timestamp, strain_data: np.ndarray, section_modulus: float) -> dict:
        max_strain = np.max(np.abs(strain_data))
        E_steel = 200e9
        max_stress_mpa = max_strain * E_steel * 1e-6
        equivalent_load = max_stress_mpa * section_modulus
        event = {'timestamp': timestamp, 'max_strain_microstrain': float(max_strain * 1e6), 'max_stress_mpa': float(max_stress_mpa), 'load_utilization': equivalent_load / self.design_load}
        if event['load_utilization'] > self.alarm_ratio:
            event['alert'] = True
            event['severity'] = 'critical' if event['load_utilization'] > 1.0 else 'warning'
        self.event_log.append(event)
        return event

Как интегрировать SHM с BIM-платформами?

Экспортируем данные в IFC (Industry Foundation Classes) через OpenBridge. В Autodesk Revit датчики отображаются как 3D-объекты с живыми значениями. Это позволяет проектировщикам видеть актуальное состояние конструкции и планировать ремонт. В одном проекте интеграция с BIM сократила время на составление отчёта с 2 дней до 3 часов.

Сравнение подходов

Метод Точность детекции повреждений Время реакции Стоимость внедрения
Визуальный осмотр (раз в год) 40% (видимые трещины >0.2 мм) Месяцы Низкая, но пропускает дефекты
AI-SHM с ML 95% (включая micro-cracks) 24 часа 3-4 месяца на внедрение, окупается за 2 года
Традиционный Strain-мониторинг 70% (только деформации) Дни Средняя, нет прогноза

AI-SHM обнаруживает micro-cracks в 10 раз раньше визуального осмотра, согласно нашим полевым испытаниям. Экономия на внеплановых ремонтах составляет до 40% по сравнению с традиционными методами.

Этапы внедрения

Этап Длительность Результат
Аналитика 1-2 недели Отчёт по точкам мониторинга
Проектирование 2-3 недели Спецификация датчиков и ML-моделей
Реализация 3-4 недели Монтаж, обучение моделей
Тестирование 1 неделя Верификация алертов
Деплой 1 неделя Запуск в эксплуатацию

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

  1. Аналитика — выезд инженеров на объект, сбор проектной документации, расчёт точек мониторинга.
  2. Проектирование — подбор датчиков, каналов передачи, ML-архитектуры.
  3. Реализация — монтаж датчиков, настройка сбора данных, обучение моделей (1-2 недели).
  4. Тестирование — верификация модальных частот, проверка алертов.
  5. Деплой — запуск в продакшен, интеграция с заказчиком (табло, Telegram-бот, BIM).

Сроки и что входит

  • Базовый комплект (4-5 недель): установка 10-15 датчиков, анализ деформаций, алерты при перегрузках.
  • Расширенный (3-4 месяца): модальный анализ, Rainflow fatigue, долгосрочный тренд, BIM интеграция, обучение персонала.

Отметим: что входит в работу:

  • Шеф-монтаж датчиков и настройка LoRaWAN/Ethernet.
  • ML-пайплайн на вашем сервере или облаке.
  • API для интеграции в существующие системы.
  • Документация и обучение двух инженеров.
  • Гарантия на ПО 12 месяцев, поддержка по средам.

Мы с командой из 5+ сертифицированных инженеров (опыт 10+ лет) разработали SHM для 20+ объектов. Получите консультацию — оценим проект за 1 день. Просто напишите нам: опишите мост или тоннель, и мы предложим конфигурацию датчиков и ML-моделей. Опыт и гарантия — ваши конструкции в безопасности. Свяжитесь с нами для обсуждения деталей.

Как работает Rainflow-счёт Rainflow-счёт используется для оценки усталостной долговечности. Алгоритм выделяет полуциклы из временного ряда деформаций, сопоставляя их с S-N кривой материала. Более подробно описано в ASTM E1049.

Детекция аномалий: автоэнкодеры, Isolation Forest, PyOD

Мы сталкиваемся с этой болью постоянно: мониторинг сервера показывает CPU 85%, память 91% — это норма в час пик или начало атаки? Классификатор здесь не поможет: аномалии по определению редки, разнообразны и заранее не размечены. Supervised learning требует примеров аномалий в обучающей выборке — а значит, не работает для того, о чём вы ещё не знаете. Наш опыт показывает: без unsupervised-подхода детекция превращается в гадание.

Почему детекция аномалий требует unsupervised подхода?

Главная проблема — отсутствие разметки и дисбаланс классов в экстремальной форме. Фрод-транзакции составляют 0.01–0.1% от общего объёма. Производственный дефект — 0.5–3%. При таком соотношении даже наивный классификатор «всё нормально» даст accuracy 99.9% и precision/recall для аномального класса, близкие к нулю. Supervised-модели здесь бессильны.

Вторая проблема — «нормальность» всегда контекстна. Нормально ли, что пользователь логинится в 3 часа ночи? Зависит от его истории и временной зоны. Нормально ли вибрация подшипника 2.3 мм/с? Зависит от режима работы станка и его возраста. Поэтому мы встраиваем контекст в модель через feature engineering и временные окна.

Третья — оценка качества. Нет стандартного test set, AUC-ROC считается только если есть хотя бы немного размеченных примеров. На полностью неразмеченных данных — только domain expert validation и косвенные метрики.

Как отличить аномалию от шума в реальном времени?

Ответ — адаптивные пороги и мониторинг статистик модели. В разделе кейса покажем, как это работает.

Методы и инструменты

Метод Тип данных Скорость обучения Типичное применение
Isolation Forest Табличные, категориальные Высокая Baseline для первых гипотез
Autoencoder Изображения, временные ряды, логи Средняя Неструктурированные данные
LSTM-AE Многомерные временные ряды Низкая Промышленная телеметрия
PyOD (ансамбль) Табличные Высокая Быстрое сравнение 40+ методов

Isolation Forest — стандартный baseline для табличных данных. Идея: аномалии изолируются быстрее при случайном разбиении пространства признаков. Работает хорошо при contamination 0.01–0.1, устойчив к масштабу признаков, не требует нормализации. Реализация в sklearn.ensemble.IsolationForest.

Типичная ошибка: ставить contamination='auto' без понимания данных. Auto-режим предполагает порог -0.5, что не всегда соответствует реальной доле аномалий. Лучше: оцените ожидаемый процент аномалий через domain knowledge и задайте явно. Мы гарантируем подбор contamination под ваш кейс.

PyOD (Python Outlier Detection) — библиотека с 40+ алгоритмами под единым API. Включает: OCSVM, LOF, COPOD, ECOD, DeepSVDD, AutoEncoder. Удобно для быстрого сравнения методов на одних данных.

Автоэнкодеры — основной метод для неструктурированных данных (временные ряды, изображения, логи). Идея: обучаем сеть восстанавливать нормальные данные, аномалии дают высокую ошибку реконструкции. Порог аномальности — 95-й или 99-й процентиль ошибки на validation set из нормальных данных.

Практическая проблема автоэнкодеров: переобучение на «нормальных» паттернах, которые всё равно встречаются редко. Если в train set есть хоть несколько аномалий, модель может научиться их хорошо восстанавливать. Решение: тщательная очистка training data или использование Variational Autoencoder (VAE), который лучше обобщает.

LSTMAE для временных рядов — LSTM-автоэнкодер захватывает временные зависимости лучше, чем обычный AE. Особенно эффективен для мультивариантных временных рядов (10+ сенсоров одновременно). Реализация через PyTorch, обучение с MSELoss на скользящих окнах.

Детально: детекция аномалий в промышленных временных рядах

Задача: вибрационные датчики на 12 насосах химического предприятия, 6 сенсоров на насос, частота 100 Гц. Нужно предупредить о надвигающейся поломке за 4–24 часа.

Архитектура решения:

Сырые данные → feature extraction (RMS, кэртозис, пиковый фактор, FFT-амплитуды на резонансных частотах) → нормализация по скользящему окну 24ч → LSTMAE → reconstruction error → пороговая логика + алертинг.

Размер окна LSTM: 60 секунд (6000 точек на 100 Гц). Слишком маленькое окно — не захватывает медленные паттерны. Слишком большое — теряет чувствительность к быстрым изменениям.

Порог аномальности: не фиксированный, а адаптивный. threshold = mean(errors_last_7d) + 3 * std(errors_last_7d). При дрейфе нормального состояния (плановый износ) порог адаптируется, избегая false positives.

Результат на 6-месячном пилоте: обнаружено 4 из 5 реальных предотказных состояний (recall 0.8), 2 ложных тревоги за 6 месяцев (precision 0.67). До внедрения: 3 незапланированных остановки по $40k каждая. Экономия после внедрения — $120k за полгода (отчёт о пилоте на объекте клиента).

Фрод-детекция: специфика финансовых данных

Финансовые транзакции имеют несколько особенностей, усложняющих детекцию:

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

Практический стек для фрод-детекции: LightGBM с SMOTE-oversampling для supervised части (по известным фрод-кейсам) + Isolation Forest для unsupervised (новые паттерны). Оба сигнала объединяются в ансамбль, финальное решение — через пороги, настроенные на приемлемый FPR (0.1–1% от транзакций на ручную проверку).

Как оценить качество без разметки?

Когда ground truth нет, для оценки используем:

  • Synthetic anomaly injection: добавляем искусственные аномалии (spike, level shift, point outlier) и смотрим, обнаруживает ли их модель
  • Expert validation: случайная выборка топ-K аномалий от модели → review эксперта → precision
  • Business metric: снизилось ли количество пропущенных инцидентов / ложных тревог после внедрения
Техническая деталь: настройка адаптивного порога

Порог вычисляется как mean(errors) + k * std(errors) на скользящем окне 7 дней. Коэффициент k подбирается на validation set с синтетическими аномалиями для достижения FPR < 0.1%. При дрейфе признаков окно автоматически сдвигается.

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

  1. Интервью с доменными экспертами — понимаем, что такое «нормальность» и какие инциденты уже были.
  2. EDA и подготовка данных — очистка, создание признаков, временные окна.
  3. Baseline (Isolation Forest) — быстрая валидация на известных инцидентах.
  4. Выбор и кастомизация модели — Autoencoder / LSTM-AE / ансамбль.
  5. Обучение, валидация с синтетическими аномалиями.
  6. Развёртывание в production — пайплайн на Kafka + Flink / Airflow, алертинг в Telegram/Slack, мониторинг дрифта.
  7. Post-deployment сопровождение — мониторинг метрик модели, обновление порогов.

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

  • Аудит текущих данных и процессов
  • Разработка и обучение моделей (Isolation Forest / Autoencoder / LSTM-AE / ансамбль)
  • Настройка адаптивных порогов и алертинга
  • Панель мониторинга аномалий (Grafana / Streamlit)
  • Документация model card и pipeline
  • Обучение вашей команды (2–3 сессии)
  • Гарантийная поддержка 3 месяца

Сроки: baseline-система с одним методом — 2–4 недели. Production-система с адаптивными порогами, алертингом и мониторингом — 2–5 месяцев. Стоимость рассчитывается индивидуально под ваш кейс.

Наша команда имеет 8+ лет опыта в промышленной аналитике и 15+ успешных проектов по детекции аномалий в телеметрии, финансах и IT-мониторинге. Получите консультацию — расскажем, как решить вашу задачу.