AI-мониторинг хода строительства по видео
Отставание от графика на стройке — причина штрафов и срывов контрактов. Ручной мониторинг требует выезда инспектора, занимает часы и субъективен. На объектах площадью от 10 000 м² ручной обход может занимать до 6 часов в день, при этом субъективная оценка расходится с реальным прогрессом на 15–20%. Мы разрабатываем нейросетевые системы, которые по видео с камер или дронов автоматически оценивают прогресс, сравнивают с BIM-планом и выявляют отклонения. Наш опыт — 15 лет в AI и 80+ проектов в строительном компьютерном зрении. Экономия времени контроля — до 20%, точность — 97%. Согласно отраслевым отчетам, автоматический мониторинг снижает количество ошибок планирования на 40%.
Почему AI-мониторинг эффективнее традиционных методов?
Традиционные методы (выезды инспекторов, спутниковые снимки, ручные чеклисты) имеют недостатки: субъективность, задержка отчетности, сложность масштабирования. AI-мониторинг использует компьютерное зрение и 4D BIM для объективной оценки в реальном времени. Сравнение:
| Метод | Скорость (1000 м²) | Точность | Масштабирование |
|---|---|---|---|
| Ручной обход | 4-6 часов | ±15% | Ограничено |
| AI-мониторинг | 5 минут | ±3% | Неограниченно |
Как внедрить систему мониторинга на стройке?
Процесс внедрения включает пять этапов:
- Аудит объекта: съемка эталонов, разметка зон, привязка камер.
- Обучение детектора: дообучение YOLO на специфические элементы (опалубка, арматура, бетон и т.д.).
- Интеграция с BIM: подключение к Autodesk BIM 360, Procore или другой платформе через API.
- Пилотный запуск: мониторинг одной зоны в течение 2–3 недель, калибровка модели.
- Масштабирование: развертывание на все камеры, настройка отчетов и уведомлений.
Техническая реализация: 4D BIM + Computer Vision
Ключевой компонент — детектор конструктивных элементов, обученный на тысячах размеченных изображений со стройплощадок. Используем YOLOv8, PyTorch, SSIM для сравнения ортофото. Ниже — пример класса на Python.
Технические детали обучения детектора
Модель дообучается на наборе из 15 000 размеченных кадров, собранных на объектах разной сложности. Используется аугментация: повороты, изменение освещения, шум. Батч-сайз — 32, learning rate — 0.001, optimizer Adam. Обучение занимает 12–15 часов на NVIDIA A100. Достигаем [email protected] = 0.92 на валидации.import cv2 import numpy as np import torch from ultralytics import YOLO from datetime import datetime class ConstructionProgressMonitor: def __init__(self, config: dict): # Детектор конструктивных элементов и этапов работ self.detector = YOLO(config['model_path']) # дообучен на стройке # Классы: formwork, rebar, concrete_pour, brickwork, # roofing, glazing, scaffolding, crane self.progress_classes = config['progress_classes'] # Эталонный план прогресса (из BIM/графика) self.schedule = config['schedule'] # {week: {zone: expected_stage}} self.camera_zones = config['camera_zones'] # привязка камер к зонам def analyze_frame(self, frame: np.ndarray, camera_id: str, timestamp: datetime) -> dict: results = self.detector(frame, conf=0.45) zone = self.camera_zones.get(camera_id, 'unknown') detected_stages = {} for box in results[0].boxes: cls = self.detector.model.names[int(box.cls)] conf = float(box.conf) x1, y1, x2, y2 = map(int, box.xyxy[0]) area = (x2-x1) * (y2-y1) if cls in self.progress_classes: detected_stages[cls] = max( detected_stages.get(cls, 0), conf * (area / (frame.shape[0] * frame.shape[1])) ) # Определяем текущую стадию строительства по detected stages current_stage = self._determine_stage(detected_stages) # Сравнение с планом week_number = self._get_week_number(timestamp) expected_stage = self.schedule.get(week_number, {}).get(zone) progress_status = self._compare_with_schedule( current_stage, expected_stage ) return { 'zone': zone, 'timestamp': timestamp.isoformat(), 'current_stage': current_stage, 'expected_stage': expected_stage, 'status': progress_status, 'detected_elements': detected_stages } def _determine_stage(self, elements: dict) -> str: """ Иерархия строительных этапов. Если видим арматуру без опалубки → armature stage. Если видим опалубку → formwork stage. Если видим бетонирование → concrete pour. """ if elements.get('concrete_pour', 0) > 0.3: return 'concrete_pour' if elements.get('formwork', 0) > 0.2: return 'formwork' if elements.get('rebar', 0) > 0.2: return 'rebar' if elements.get('brickwork', 0) > 0.3: return 'masonry' if elements.get('glazing', 0) > 0.2: return 'finishing' return 'site_preparation' Дроны для мониторинга прогресса: автоматические облёты
Для крупных объектов используем дроны с RTK-приёмником (например, DJI Phantom 4). Автоматический облёт по заданным путевым точкам создаёт ортофотоплан. Сравнение ортофото текущей и предыдущей недели через SSIM-анализ позволяет оценить площадь изменённых элементов.
class DroneProgressSurvey: def __init__(self, flight_plan_path: str): self.waypoints = self._load_flight_plan(flight_plan_path) self.ortho_processor = OrthoPhotoProcessor() def generate_weekly_report(self, current_photos: list[np.ndarray], baseline_photos: list[np.ndarray], gps_tags: list[dict]) -> dict: """ Сравниваем ортофото текущей недели с предыдущей. Изменения в пикселях = прогресс строительства. """ # Ортофото: сшиваем перекрывающиеся снимки в единую карту current_ortho = self.ortho_processor.stitch(current_photos, gps_tags) baseline_ortho = self.ortho_processor.load_baseline() # Попиксельное сравнение через change detection diff_map = self._detect_changes(current_ortho, baseline_ortho) # Площадь изменений в квадратных метрах changed_area_m2 = self._pixels_to_sqm( diff_map, gps_tags ) return { 'week': datetime.now().isocalendar()[1], 'changed_area_m2': changed_area_m2, 'diff_map': diff_map, 'progress_percent': self._estimate_progress(diff_map) } def _detect_changes(self, current: np.ndarray, baseline: np.ndarray) -> np.ndarray: """SSIM-based change detection между двумя ортофото""" from skimage.metrics import structural_similarity as ssim # Конвертируем в grayscale cur_gray = cv2.cvtColor(current, cv2.COLOR_BGR2GRAY) base_gray = cv2.cvtColor(baseline, cv2.COLOR_BGR2GRAY) # Выравниваем размеры if cur_gray.shape != base_gray.shape: base_gray = cv2.resize(base_gray, cur_gray.shape[::-1]) score, diff = ssim(cur_gray, base_gray, full=True) diff = (1 - diff) * 255 diff = diff.astype(np.uint8) # Пороговая бинаризация _, mask = cv2.threshold(diff, 30, 255, cv2.THRESH_BINARY) return mask Интеграция с Procore, Autodesk Construction Cloud
Результаты мониторинга через API интегрируются в строительные платформы:
- Procore — автоматические наблюдения (observations) по выявленным отставаниям
- Autodesk BIM 360 — обновление прогресса в 4D-модели
- MS Project / Primavera P6 — факт vs. план в виде обновления задач
Сбор и разметка обучающих данных
Для обучения детектора мы используем комбинацию синтетических данных (рендеры из BIM-моделей) и реальных изображений с 20 объектов. Разметку выполняют инженеры-строители: выделяют контуры опалубки, арматуры, бетонных конструкций, кирпичной кладки и т.д. Каждый кадр проходит верификацию — 30% данных проверяет второй эксперт. Это гарантирует качество разметки и точность детекции.
Кейс: торговый центр, 45 000 м²
Наш клиент — девелопер крупного торгового центра. Еженедельные облёты дроном (DJI Phantom 4 RTK), 350–400 снимков за облёт. AI-анализ прогресса по 12 зонам.
За 12 недель система зафиксировала отставание в секции D (монолитные работы): ожидаемый прогресс 65%, фактический по видеоанализу 48%. Это позволило скорректировать график за 3 недели до критического срока, перераспределив бригады. Суммарная экономия на штрафах и перерасходе материалов составила более $18k–26k.
Что входит в разработку решения
| Этап | Результат |
|---|---|
| Обучение детектора | Модель, распознающая 10+ классов элементов |
| Интеграция с камерами | API для потоковой загрузки видео |
| Пилотный запуск | Отчёты по одной зоне, калибровка |
| Полное развёртывание | Мониторинг всех зон, уведомления, дашборд |
| Техподдержка | 3 месяца гарантийного сопровождения |
Ориентировочные сроки внедрения
| Тип проекта | Срок |
|---|---|
| Базовый детектор строительных элементов | 4–6 недель |
| Система мониторинга прогресса (камеры + отчёты) | 8–12 недель |
| Полная платформа с дроном + BIM интеграция | 14–22 недели |
Стоимость рассчитывается индивидуально под задачи объекта.
Свяжитесь с нами для обсуждения вашего объекта и получите предварительную оценку. Закажите пилотный запуск на одной из зон, чтобы убедиться в эффективности решения.







