Втрата часу на пошук місця та низька оборотність — типовий біль, який вирішує система моніторингу парковки на базі відеоаналітики. Ультразвукові датчики вимагають установки на кожне місце і часто виходять з ладу. Ми використовуємо комп'ютерний зір: одна камера покриває до 50 машиномісць, точність визначення зайнятості — 99%. Система працює цілодобово — ІЧ-підсвітка та low-light enhancement, модель навчена на нічних кадрах, що зберігає точність до 97% у темряві. Досвід — 5+ років, 30+ впроваджених проектів. Гарантуємо стабільну роботу та надаємо безкоштовний пілот на одній камері для демонстрації точності. Замовте оцінку вашого проекту — наші інженери зв'яжуться з вами протягом дня.
Проблеми, які вирішує відеоаналітика парковки
Відвідувачі витрачають 10–20 хвилин на пошук вільного місця, що знижує лояльність і пропускну здатність. Відеоаналітика в реальному часі показує кількість вільних місць на кожному поверсі, спрямовуючи водія до найближчого. Ультразвукові та магнітні датчики виходять з ладу раз на 2–3 роки, потребують заміни та калібрування. Камери служать 5–7 років, оновлення ПЗ відбувається віддалено. Відеоаналітика фіксує номери автомобілів, час в'їзду/виїзду, повторні візити — ці дані дозволяють оптимізувати тарифи та планувати завантаження.
Відеоаналітика vs ультразвукові датчики: порівняння
| Параметр | Відеоаналітика | Ультразвукові датчики |
|---|---|---|
| Вартість установки | Низька (одна камера на 10–50 місць) | Висока (датчик на кожне місце) |
| Обслуговування | Віддалене, ПЗ оновлюється | Заміна датчиків при поломці |
| Функціональність | Визначення номера, трекінг, фіксація порушень | Тільки зайнятість |
| Точність | 96–99% | 95–98% |
Відеоаналітика не тільки дешевша, але й дає більше даних: номери автомобілів, швидкість руху, час перебування. Це дозволяє оптимізувати роботу парковки та збільшити дохід. Витрати на обслуговування скорочуються до 80% порівняно з ультразвуковими датчиками. > Ultralytics: YOLOv8 демонструє високу точність детекції на різних сценах.
Забезпечення точності визначення зайнятості 99%
Використовуємо алгоритми комп'ютерного зору на базі YOLOv8 (детекція автомобілів) та бібліотеки Ultralytics. Модель навчена на 50 000 розмічених кадрах, включаючи нічні, дощові та снігові сцени. У продакшені застосовуємо постобробку: перевірка центра об'єкта та overlap bounding box з полігоном місця. Фільтр за часом (автомобіль стоїть більше 5 секунд) виключає хибні спрацьовування від проїжджаючих машин. Інференс виконується на NVIDIA GPU з TensorRT, p99 latency не перевищує 150 ms на кадр.
Код класу ParkingMonitor (Python, PyTorch)
from ultralytics import YOLO
import numpy as np
import cv2
import json
class ParkingMonitor:
def __init__(self, model_path: str, parking_config_path: str):
self.detector = YOLO(model_path) # детекція автомобілів
self.parking_spaces = self._load_parking_config(parking_config_path)
def _load_parking_config(self, config_path: str) -> list[dict]:
"""Завантаження конфігурації машиномісць (полігони зон)"""
with open(config_path) as f:
config = json.load(f)
spaces = []
for space in config['spaces']:
spaces.append({
'id': space['id'],
'polygon': np.array(space['polygon'], dtype=np.int32),
'zone': space.get('zone', 'default')
})
return spaces
def analyze(self, frame: np.ndarray) -> dict:
"""Визначення зайнятості всіх машиномісць"""
detections = self.detector(frame, conf=0.4,
classes=[2, 5, 7]) # car, bus, truck
# Визначаємо центри виявлених ТЗ
vehicle_centers = []
for box in detections[0].boxes.xyxy:
x1, y1, x2, y2 = map(int, box)
cx, cy = (x1 + x2) // 2, (y1 + y2) // 2
vehicle_centers.append((cx, cy))
# Перевіряємо кожне машиномісце
occupied_spaces = []
free_spaces = []
for space in self.parking_spaces:
occupied = self._is_space_occupied(space['polygon'],
vehicle_centers,
detections[0].boxes.xyxy)
space_status = {
'id': space['id'],
'zone': space['zone'],
'occupied': occupied
}
if occupied:
occupied_spaces.append(space_status)
else:
free_spaces.append(space_status)
return {
'total_spaces': len(self.parking_spaces),
'occupied': len(occupied_spaces),
'free': len(free_spaces),
'occupancy_rate': len(occupied_spaces) / max(len(self.parking_spaces), 1),
'spaces': occupied_spaces + free_spaces
}
def _is_space_occupied(self, polygon: np.ndarray,
vehicle_centers: list,
vehicle_boxes: list) -> bool:
"""Перевірка: чи є транспортний засіб на машиномісці"""
# Метод 1: центр ТЗ всередині полігону
for cx, cy in vehicle_centers:
result = cv2.pointPolygonTest(polygon, (float(cx), float(cy)), False)
if result >= 0:
return True
# Метод 2: overlap bounding box з полігоном > 40%
space_mask = np.zeros((720, 1280), dtype=np.uint8)
cv2.fillPoly(space_mask, [polygon], 255)
space_area = cv2.contourArea(polygon)
for box in vehicle_boxes:
x1, y1, x2, y2 = map(int, box)
vehicle_mask = np.zeros_like(space_mask)
cv2.rectangle(vehicle_mask, (x1, y1), (x2, y2), 255, -1)
intersection = cv2.bitwise_and(space_mask, vehicle_mask)
overlap = intersection.sum() / 255
if overlap / space_area > 0.4:
return True
return False
Розмітка машиномісць
Первинна розмітка зон машиномісць виконується один раз через веб-інтерфейс. Розмітка займає близько 2 годин на типову парковку.
class ParkingSpaceLabeler:
"""Інтерактивна розмітка машиномісць на кадрі"""
def __init__(self, image_path: str):
self.image = cv2.imread(image_path)
self.spaces = []
self.current_polygon = []
def interactive_label(self):
"""Запуск інтерактивної розмітки (для ручного використання)"""
cv2.namedWindow('Label Parking Spaces')
cv2.setMouseCallback('Label Parking Spaces', self._on_click)
while True:
display = self.image.copy()
for space in self.spaces:
cv2.polylines(display, [space['polygon']], True, (0, 255, 0), 2)
if self.current_polygon:
cv2.polylines(display,
[np.array(self.current_polygon)], False, (0, 0, 255), 2)
cv2.imshow('Label Parking Spaces', display)
key = cv2.waitKey(1)
if key == ord('s') and len(self.current_polygon) >= 4:
self.spaces.append({
'id': f'space_{len(self.spaces)+1}',
'polygon': self.current_polygon.copy()
})
self.current_polygon = []
elif key == ord('q'):
break
return self.spaces
Інтеграція з системою навігації
Які можливості відкриває інтеграція з навігацією?
Наше рішення легко вбудовується в існуючу інфраструктуру:
- Digital signage: екрани з картою парковки, оновлення в реальному часі.
- Мобільний додаток: бронювання місць, навігація до вільного місця.
- Розумні світлофори: зелений/червоний індикатор над кожним рядом.
- ANPR інтеграція: автоматичний в'їзд/виїзд за номером, розрахунок вартості.
Чи можна налаштувати автоматичний в'їзд/виїзд?
Ми надаємо API для інтеграції з будь-якими системами. Дані передаються у форматі JSON через WebSocket або REST. Детальніше про YOLO — алгоритм детекції, що лежить в основі.
Етапи впровадження
- Аудит парковки — виїзд інженера, оцінка планування, вимог до точності.
- Проектування — вибір камер, розрахунок кутів огляду, підготовка специфікації.
- Установка та налаштування — монтаж камер, навчання моделі на кадрах вашої парковки.
- Інтеграція — підключення до навігації, мобільного додатку, систем контролю доступу.
- Тестування — перевірка точності (A/B тест з реальними даними), стрес-тест.
- Деплой та супровід — запуск в експлуатацію, SLA 99.9%, віддалений моніторинг.
Що входить в роботу
Ми здаємо проект під ключ:
- Налаштована система відеоаналітики з точністю 99%.
- Вихідний код моделей і конфігурацій.
- REST API та документація.
- Веб-інтерфейс для перегляду статистики та управління.
- Навчання персоналу (2 години).
- Гарантія на обладнання та ПЗ — 12 місяців.
Терміни та вартість
| Масштаб системи | Термін |
|---|---|
| 1–4 камери, 50–200 місць | 3–4 тижні |
| 10–20 камер, багаторівнева | 6–9 тижнів |
| Enterprise, навігація + API | 10–16 тижнів |
Вартість розраховується індивідуально після аудиту. Ми пропонуємо безкоштовний пілот на одній камері для демонстрації точності. Замовте оцінку проекту — наші інженери зв'яжуться з вами протягом дня. Отримайте консультацію: зв'яжіться з нами для обговорення вашого завдання.







