Структурний 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-SHM моніторингом мостів: датчики вібрації, деформацій та акустики з ML-аналізом у реальному часі. Наші інженери впровадили такі системи на 20+ об'єктах, включаючи вантові мости та моніторинг тунелів AI. Залиште заявку — отримайте пропозицію протягом дня.

Проблеми, які вирішуємо

Пропущені 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% (приблизно 150 000 євро на рік для середнього мосту). Наш AI-SHM в 10 разів ефективніший за традиційний моніторинг.

Етапи впровадження

Етап Тривалість Результат
Аналітика 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 незаплановані зупинки зі значними збитками. Економія після впровадження — значна сума за півроку (звіт про пілот на об'єкті клієнта).

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

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

  • 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-моніторингу. Отримайте консультацію — розкажемо, як вирішити вашу задачу.