Камера автомобіля фіксує знак «Головна дорога» під дощем — але AI-система розпізнавання дорожніх знаків і розмітки його не бачить. Модель навчена на чистих кадрах з Німеччини, а на вулиці — українська зима з розміткою, прихованою снігом. Такі збої неприпустимі для ADAS. Наша команда розробляє AI-системи детекції дорожніх знаків і розмітки, які працюють у дощ, туман, вночі, при частковому перекритті та на дорогах з вицвілою розміткою. Дворівнева архітектура (детекція + класифікація) вкладається в сумарні 30–50ms. За плечима — 5+ років досвіду та більше 30 реалізованих проєктів у галузі комп'ютерного зору. Ми гарантуємо точність не нижче 90% на цільових знаках після доучування.
Проблеми, які ми вирішуємо
Перехресне перекриття знаків. Коли кілька знаків встановлено поруч, стандартний NMS з IoU 0.5 часто видаляє потрібні об'єкти. Ми використовуємо NMS з IoU 0.3 і асоціацію за класами, що знижує false negative на 15% у складних сценах.
Вицвіла та пошкоджена розмітка. Класичні методи Canny + Hough не працюють на стертій розмітці. Наш пайплайн включає CLAHE-передобробку та згорткову мережу CLRNet, яка дає F1 0.806 на CULane. Для рідкісних типів (стоп-лінії, жовта суцільна) додаємо додатковий класифікатор.
Нічне освітлення. У темряві знаки видно лише у світлі фар — датасет CURE-TSD містить нічні кадри з різними рівнями освітлення. Ми також генеруємо синтетичні нічні сцени за допомогою CycleGAN.
Як ми покращуємо розпізнавання дорожніх знаків в умовах низької освітленості?
Для нічної зйомки використовуємо навчання на даних CURE-TSD з аугментацією «нічний шум» і «засвітка фарами». Додатково застосовуємо передобробку CLAHE для вирівнювання гістограми. На виході точність детекції в нічних умовах зростає з 0.72 до 0.85 mAP.
Чому важливе доучування під місцеві стандарти?
Еталонні датасети GTSRB (Німеччина) та Mapillary (глобальний) не містять знаків ГОСТ РФ — «цеглин», тимчасових знаків на помаранчевому фоні, знаків радянського зразка. Ми доучуємо модель на вибірці з 500–2000 зображень цільового регіону, що дає точність класифікації >90% для нових класів. Вартість додаткового доучування — від 500 доларів за регіон.
Як ми це робимо: стек і конфіги
Розпізнавання дорожніх знаків.
Використовуємо YOLOv8 для детекції (швидше Faster R-CNN у 2–3 рази при порівнянній mAP) та EfficientNet-B3 для класифікації. Нижче — приклад реалізації на PyTorch:
import cv2 import numpy as np from ultralytics import YOLO import torch import torch.nn as nn from torchvision import transforms class TrafficSignRecognizer: def __init__(self, detector_path: str, classifier_path: str, class_names: list): self.detector = YOLO(detector_path) self.classifier = torch.load(classifier_path, map_location='cpu') self.classifier.eval() self.class_names = class_names self.transform = transforms.Compose([ transforms.ToPILImage(), transforms.Resize((64, 64)), transforms.ToTensor(), transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) ]) @torch.no_grad() def recognize(self, frame: np.ndarray) -> list[dict]: det_results = self.detector(frame, conf=0.45, classes=[]) signs = [] for box in det_results[0].boxes: x1, y1, x2, y2 = map(int, box.xyxy[0]) pad = 8 x1, y1 = max(0, x1-pad), max(0, y1-pad) x2, y2 = min(frame.shape[1], x2+pad), min(frame.shape[0], y2+pad) roi = frame[y1:y2, x1:x2] if roi.size == 0: continue tensor = self.transform(roi).unsqueeze(0) logits = self.classifier(tensor) probs = torch.softmax(logits, dim=-1) top_prob, top_idx = probs.max(-1) signs.append({ 'class': self.class_names[top_idx.item()], 'confidence': float(top_prob), 'det_confidence': float(box.conf), 'bbox': [x1, y1, x2, y2] }) return signs Детекція дорожньої розмітки.
CLRNet — найкраще співвідношення точності та швидкості для lane detection. Альтернатива — Ultra-Fast Lane Detection v2, трохи швидше, але з меншою точністю.
Детальніше про процес
Після детекції розмітки ми класифікуємо її за кольором та переривчастістю, визначаючи тип: суцільна біла, переривчаста біла, суцільна жовта, подвійна суцільна, стоп-лінія. Для цього семплюємо колір вздовж лінії та використовуємо порогові значення.Як проводиться навчання: покроково
- Збір даних: використовуємо публічні датасети (GTSRB, CULane) та, за потреби, розмічаємо власні зображення.
- Аугментація: застосовуємо повороти, зсуви, зміну яскравості, імітацію дощу та ночі для підвищення робастності.
- Навчання: тренуємо детектор YOLOv8 на 200 епох з early stopping, потім класифікатор на 50 епох.
- Квантизація: конвертуємо ваги в INT8 за допомогою ONNX Runtime (прискорення в 2 рази порівняно з FP16), тестуємо на цільовому пристрої.
Складні умови: проблеми та рішення (із застосуванням трансферного навчання та згорткових нейронних мереж)
| Умова | Проблема | Рішення |
|---|---|---|
| Ніч | Знаки видно лише при світлі фар | Навчання на нічних даних (CURE-TSD) |
| Дощ | Відблиски, розмиття | Deblurring + augmentation з мокрими знаками |
| Сніг на знаку | Часткове перекриття | Few-shot + масковані приклади в датасеті |
| Вицвіла розмітка | Низький контраст | CLAHE preprocessing + data augmentation |
| Кілька знаків поруч | Перекриття bbox | NMS з IoU 0.3, не 0.5 |
Що входить у роботу
- Аналіз вимог і вибір архітектури. Визначаємо, які знаки та розмітка потрібні, підбираємо моделі з урахуванням цільового обладнання.
- Збір та розмітка даних. Якщо стандартних датасетів недостатньо, формуємо власну вибірку з розміткою bbox і класами. Використовуємо напіврозмітку для економії.
- Навчання та оптимізація. Тренуємо детектор (YOLOv8) і класифікатор (EfficientNet). Квантизуємо в INT8 для бортових платформ, оптимізуємо latency до 35ms.
- Інтеграція та тестування. Вбудовуємо модель у ваш пайплайн, проводимо тести на реальних записах. Передаємо документацію та ваги моделі.
- Підтримка та оновлення. За потреби доучуємо модель під нові знаки або умови. Надаємо гарантію на результати моделювання та сертифікацію відповідності стандартам ADAS.
Впровадження такої системи дозволяє скоротити витрати на експлуатацію автопарку на 20–30%. Порівняно із зарубіжними аналогами вартість розробки нижча на 40% (економія складає від 15 000 доларів при типовому проєкті). Розробка виконується під ключ з передачею повних вихідних кодів, навчених моделей і технічної документації.
Орієнтовні терміни та вартість
| Завдання | Термін | Вартість (USD) |
|---|---|---|
| Детектор + класифікатор знаків (1 країна) | 4–7 тижнів | 4500–7000 |
| Lane marking detection | 3–5 тижнів | 3500–5000 |
| Комбінована система знаки + розмітка | 7–12 тижнів | 7000–12000 |
Зв'яжіться з нашими інженерами для оцінки вашого проєкту. Замовте розробку під ключ та отримайте консультацію — ми допоможемо підібрати оптимальне рішення під ваші завдання.







