Інспекція високовольтних ЛЕП, мостів, нафтопроводів і вітрогенераторів — це дні ручної роботи промислових альпіністів або зупинка обладнання. Дрон із AI-аналітикою проходить той самий маршрут за години та фіксує дефекти, які людина часто пропускає при швидкому огляді. Ми розробляємо такі системи вже кілька років і реалізували понад 15 проектів з автоматизації інспекцій для промислових замовників. У цій статті розберемо, як будується реальна система детекції дефектів — від знімка до звіту.
Типові завдання інспекції
| Об'єкт | Виявляємі дефекти | Метод |
|---|---|---|
| ЛЕП, опори | Корозія, нахил опори, обрив проводу | Сегментація + anomaly detection |
| Лопаті вітрогенератора | Тріщини, розшарування, наліт льоду | High-res детекція дефектів |
| Міст, шляхопровід | Тріщини, спалінг, корозія арматури | Crack detection + classification |
| Нафтопровід | Вм'ятини, корозійні плями, витоки | RGB + тепловізор |
| Покрівля будівлі | Протікання, теплові аномалії | Тепловізор |
Як працює детекція дефектів на знімках?
Базовий метод — семантична сегментація тріщин на RGB-знімках. Ми використовуємо архітектуру UNet++ з encoder EfficientNet-B4 — вона дає піксельну точність і стійка до шумів. Модель навчається на розмічених даних (маски тріщин) і видає бінарну карту, за якою розраховуються площа та довжина дефекту. Код детектора:
import torch
import numpy as np
from PIL import Image
from torchvision import transforms
import segmentation_models_pytorch as smp
class InfrastructureDefectDetector:
def __init__(self, model_path: str, task: str = 'crack'):
# Для трещин — сегментационная задача (пиксельная точность)
# UNet++ с EfficientNet-B4 encoder = хорошее соотношение
self.model = smp.UnetPlusPlus(
encoder_name='efficientnet-b4',
encoder_weights=None, # загружаем свои веса
in_channels=3,
classes=1,
activation='sigmoid'
)
checkpoint = torch.load(model_path, map_location='cpu')
self.model.load_state_dict(checkpoint['model_state_dict'])
self.model.eval()
self.transform = transforms.Compose([
transforms.Resize((512, 512)),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406],
[0.229, 0.224, 0.225])
])
self.task = task
@torch.no_grad()
def detect(self, image: np.ndarray,
threshold: float = 0.5) -> dict:
img_pil = Image.fromarray(image)
tensor = self.transform(img_pil).unsqueeze(0)
pred = self.model(tensor)[0, 0].numpy() # (H, W)
mask = (pred > threshold).astype(np.uint8)
# Анализ маски
crack_pixels = int(mask.sum())
total_pixels = mask.size
crack_ratio = crack_pixels / total_pixels
# Контуры трещин
contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)
crack_regions = []
for cnt in contours:
area = cv2.contourArea(cnt)
if area < 50: # фильтр шума
continue
x, y, w, h = cv2.boundingRect(cnt)
length = cv2.arcLength(cnt, False)
crack_regions.append({
'bbox': [x, y, x+w, y+h],
'area_px': int(area),
'length_px': float(length),
'severity': self._classify_severity(area, length)
})
return {
'defect_ratio': crack_ratio,
'crack_regions': crack_regions,
'severity': 'HIGH' if crack_ratio > 0.02 else
'MEDIUM' if crack_ratio > 0.005 else 'LOW',
'raw_mask': mask
}
def _classify_severity(self, area: float,
length: float) -> str:
if length > 200 or area > 500:
return 'CRITICAL'
elif length > 80 or area > 100:
return 'HIGH'
return 'MEDIUM'
Поріг severity налаштовується під стандарти підприємства. Тріщини довжиною понад 200 пікселів позначаються як критичні — об'єкт потребує позапланового ремонту.
Технічні деталі навчання
Для кожної моделі ми проводимо augmentations: random rotation, brightness jitter, mosaic. Використовуємо оптимізатор AdamW з learning rate 1e-4 та cosine annealing. Валідація — IoU і F1-score. Після навчання — експорт в ONNX для інференсу на Jetson.
Чому тепловізійна зйомка незамінна?
Корозія та протікання часто не видимі на RGB-знімках, але дають аномалії температури. Тепловізор реєструє перегрів контактів ЛЕП (short circuit) або холодні зони покрівлі (протікання ізоляції). Наш аналізатор теплових кадрів шукає зони, де температура відхиляється від середньої більш ніж на 3 сигми:
class ThermalInspector:
def __init__(self, baseline_temp: float = 20.0):
self.baseline = baseline_temp
def analyze(self, thermal_frame: np.ndarray) -> list[dict]:
"""
thermal_frame: матрица температур в °C
Ищем аномально горячие (короткое замыкание, трение) и холодные
(протечки, отсутствие изоляции) зоны.
"""
anomalies = []
# Статистика кадра
mean_t = float(np.mean(thermal_frame))
std_t = float(np.std(thermal_frame))
# Аномалии: > mean + 3*std (горячие) или < mean - 2*std (холодные)
hot_mask = (thermal_frame > mean_t + 3 * std_t).astype(np.uint8)
cold_mask = (thermal_frame < mean_t - 2 * std_t).astype(np.uint8)
for mask_type, mask in [('hot', hot_mask), ('cold', cold_mask)]:
contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)
for cnt in contours:
if cv2.contourArea(cnt) < 20:
continue
x, y, w, h = cv2.boundingRect(cnt)
roi_temps = thermal_frame[y:y+h, x:x+w]
anomalies.append({
'type': mask_type,
'bbox': [x, y, x+w, y+h],
'max_temp': float(roi_temps.max()),
'min_temp': float(roi_temps.min()),
'delta': float(abs(roi_temps.mean() - mean_t))
})
return anomalies
Такий підхід дозволяє знаходити дефекти на ранній стадії, коли вони ще не призвели до аварії. За даними Thermography (Wikipedia), тепловізійний контроль широко застосовується для предиктивного обслуговування.
Фотограмметрія та 3D-модель: коли потрібна?
Для детального аналізу тріщин і деформацій ми будуємо 3D-модель за серією перекривних знімків. Інструменти: Agisoft Metashape (комерційний), OpenDroneMap (open-source), COLMAP. Рекомендоване перекриття — 80% передньо-бокове, GSD — 1–3 мм/піксель. З дрона з камерою Sony RX1R II (42 МП) можна отримати GSD 1 мм/піксель з висоти 8 м. 3D-модель дозволяє виміряти ширину розкриття тріщини з точністю до 0.5 мм.
Результати AI-інспекції
AI-детекція знаходить у 3 рази більше дефектів, ніж візуальний огляд, при цьому швидкість інспекції в 5 разів вища.
Кейс: інспекція 40 км ЛЕП для нашого клієнта
Один із наших клієнтів — мережева компанія — щорічно витрачав 5 робочих днів на інспекцію 40 км високовольтної ЛЕП силами трьох бригад. Ми запропонували рішення на базі дрона DJI M300 RTK з камерою Zenmuse H20T (RGB 20 МП + тепловізор). Автономний політ за GPS-маршрутом на висоті 30 м над проводом.
- Час збору даних: 6–7 годин на 40 км (2 дні з урахуванням перебазувань)
- AI-аналіз: YOLOv8l, донавчений на 3200 зображеннях дефектів опор і проводів
- Результат першої інспекції: 14 опор з корозією > 20%, 3 натяжні затискачі з тріщинами, 8 аномальних теплових точок
- Економія часу: інспекція стала виконуватися за 2 дні замість 5, а ризик пропуску дефектів знизився в 3 рази
Клієнт отримав повний звіт з координатами дефектів і фотографіями — це дозволило оперативно спланувати ремонтні роботи, не зупиняючи обладнання.
Що входить в роботу над проектом?
- Обстеження об'єкта та збір вимог. Визначаємо типи дефектів, частоту інспекцій, допустимі похибки.
- Підготовка розмічених даних. Якщо у вас немає знімків, проводимо пілотний обліт для збору датасету.
- Навчання та валідація моделей. Використовуємо transfer learning, експерименти з архітектурами (UNet, YOLO, ViT). Керуємо експериментами через MLOps – MLflow та Weights & Biases.
- Інтеграція з дроном та звітами. Розгортаємо модель на бортовому комп'ютері (NVIDIA Jetson) або на сервері.
- Тестування та приймання. Перевіряємо точність на контрольній вибірці, проводимо польовий тест.
- Передача документації та навчання. Передаємо model card, інструкцію з експлуатації, код пайплайну.
- Гарантійна підтримка 6 місяців. У разі зміни умов інспекції донавчаємо модель.
Скільки часу займає розробка?
| Тип інспекції | Термін розробки |
|---|---|
| Детектор одного типу дефектів | 4–6 тижнів |
| Комплексна інспекційна система | 8–14 тижнів |
| З фотограмметрією та 3D-звітами | 12–20 тижнів |
Для точної оцінки вашого проекту отримайте консультацію — ми проаналізуємо об'єкт і запропонуємо оптимальне рішення. Зв'яжіться з нами для демонстрації готових кейсів. Також ви можете замовити пілотний проект — ми підберемо обладнання та налаштуємо моделі під вашу інфраструктуру.
Підсумок: AI-інспекція дронів — це комплексна система збору, аналізу та звітності, яка окупається за рахунок зниження простоїв та підвищення безпеки.







