Многие модели современных автотранспортных средств оснащаются комплексом систем, предназначенных для поднятия уровня активной и пассивной безопасности. Одни удерживают машину в рамках полосы, другие препятствуют блокировке колес, третьи облегчают вхождение в повороты и т. д. Особняком стоит система по распознаванию знаков дорожного движения. На английском она часто обозначается аббревиатурой TSR.
Как работает система распознавания дорожных знаков.
ПРЕДМЕТ И МЕТОД
Типичные ситуации для проверки устройств в избытке предоставляют дороги общего пользования. Подмосковные трассы богаты различными ограничениями скорости, более узкие шоссе — запрещающими обгон «леденцами», магистраль и скоростное кольцо в черте города — нестандартными знаками, которые видеоглазок должен считать на довольно быстром ходу. Маршрут мы прошли дважды: в светлое время и в темноте. Причем днем ветровое стекло периодически смачивал дождь, а большегрузные фуры щедро обдавали грязью. В общем, от дорожных реалий не отступили.
В отличие от большинства электронных ассистентов, ответственный за распознавание знаков устроен сравнительно просто. Камера выхватывает и сверяет со своей картотекой таблички, схожие по форме, набору и расположению символов. На похожие ограничения максимальной массы или высоты автомобиля (тоже крупные цифры в красной окантовке) сканеры не реагируют. Правда, доходит до курьезов. При обгоне очередного грузовика «Опель» неожиданно высветил на дисплее «30». Оказалось, сканер считал миниатюрный знак ограничения скорости на цистерне поливальной машины.
Похожие разработки у разных автопроизводителей
Разработкой систем распознавания знаков занимается большинство современных компаний. Названия решений от разных производителей:
- Speed Limit Assist от Mercedes-Benz.
- Road Sign Information от Volvo.
- Traffic Sign Recognition (TSR) встречается в таких авто, как Audi, Ford, BMW, Volkswagen.
- Opel Eye от одноименного производителя.
Отличие систем заключается в качестве используемого оборудования и логики работы алгоритмов распознавания объектов на дороге.
ПРОВЕРКА НА ДОРОГАХ
БМВ разочаровывает в первые минуты: знаки «80» на правой обочине широких московских магистралей он замечает редко. «Опель» чуть внимательнее. Но чувствуется, что для систем эти условия нештатные: на столь широкой дороге нужно дублировать информацию на растяжках, верхней рампе или разделительном барьере.
За городом помощники заработали увереннее: отвлекающей информации меньше, а знаки гораздо ближе. Однако и в этом горшочке меда не обошлось без дегтя. «Опель» чувствителен к ориентации знака. Если тот чуть наклонен или развернут, камера пропускает его. У БМВ свои причуды. В штатной навигации «баварца» зашиты ограничения скорости для всех дорог. Если сканер не видит придорожных знаков, компьютер опирается на данные дорожных карт. Но лучше бы он этого не делал! Электронный Сусанин не всегда четко отслеживает границы населенных пунктов, переключая лимиты «60» и «90». А иной раз высвечивает совершенно необъяснимые ограничения в 50 или 70 км/ч, причем смена происходит в лесу или чистом поле. Система «Опель ай» лишена привязки к навигации, отслеживает только реальную придорожную информацию, а потому и дезинформирует водителя реже.
Вариантное EOL кодирование Киа
Опубликовано: 13.05.2020
Вариантное EOL кодирование автомобилей Киа. Услуга бесспорно необходима при замене электронных блоков управления вышедших из строя. Разумеется после устранения причин, приведшим к их повреждению. В следствие чего необходимо восстановить или изменить заводские установки. Что разумеется необходимо для их последующей правильной Читать дальше …
нет комментариев
ДЕФЕКТЫ ЗРЕНИЯ
Кратковременный, но сильный дождь подпортил «Опелю» оценку за точность. Капли на стекле, которые не успевают смахивать щетки, снижают бдительность ассистента вдвое. Аналогично влияет на остроту его зрения и включенный в ночное время дальний свет: электроника стабильно игнорировала знаки, попадающие в свет фар. БМВ таких капризов себе не позволяет.
Но не надейтесь, что система предупредит вас о знаке заранее. При заявленной стометровой дальнобойности, камеры и «Опеля», и БМВ передают информацию на дисплеи не раньше, чем знак поравняется с передним бампером. А «баварец» и вовсе выдерживает театральную паузу и выдает сообщение, лишь когда столбик замаячит в зеркале заднего вида. Причем это не зависит от погодных условий или времени суток.
Что такое система распознавания дорожных знаков
Разработка предназначена для увеличения безопасности на дорогах, а также облегчение процесса вождения. Инженеры создают решения, которые будут автоматически распознавать дорожные знаки, фиксировать информацию о допустимых скоростях и ограничениях, включая направление движения, наличие перекрестков, поездных перегонов и других данных.
Система распознавания дорожных знаков
Чем больше предупреждений получает система от внешней среды, тем надежнее становится автомобиль и процесс вождения. Водителю физически тяжело следить за всеми параметрами дороги, особенно в длительных поездках. Программное решение способно решить проблему с невнимательностью и уменьшить влияние человеческого фактора во время движения.
Распознавание дорожных знаков является одной из составляющих, необходимых для беспилотных автомобилей. Машина должна самостоятельно определять разметку, ограничения, знаки и условия движения.
Кирилл Милешкин
«Появляющиеся на проекционном дисплее цветные символы запрета обгона и его отмены просмотреть невозможно, а вот реальные знаки на обочине дорог — запросто. Темнота, капли или грязь на ветровом стекле камере не помеха. Мне бы такие зоркие глаза! В итоге БМВ превосходит „Опель“ по двум ключевым параметрам — качеству сканирования и подаче информации. Что касается неправильных подсказок навигации об ограничении скорости, то она ни разу их не завысила относительно реального лимита».
Максим Сачков:
Утечка тока в автомобиле: что это и как с этим бороться!
Опубликовано: 13.01.2021
Утечка тока в автомобиле, так же как и севший аккумулятор, могут произойти в любом не зависимо от марки авто. Будь то бюджетная Lada минимальной комплектации или премиальный Porsche. Входная цена автомобиля, увы, не гарантирует вечного качества. Оно и понятно, автомобиль Читать дальше …
нет комментариев
Максим Сачков
«Я предпочел бы „Опель ай“. Электронный ассистент „баварца“ напоминает чересчур заботливую бабушку, тщательно оберегающую от всякого рода напастей своего любимого внука, а его земляк из Рюссельсхайма — молодого папашу, который предоставляет ребенку достаточно свободы и подстраховывает лишь в опасных ситуациях. Мне больше по душе, когда человек полагается на себя и не ждет постоянно помощи от других. Хотя и таким людям в трудную минуту дельный совет пригодится».
Установка автономного отопителя Eberspacher
Опубликовано: 12.01.2021
Установка автономного отопителя, в данном случае далеко не нового Eberspacher D4W S. Который был благополучно переделан в D5W. И помимо прочего, стал дизельным из бензинового, коим являлся изначально. Более подробно я уже писал об этом в статье: Автономный отопитель Eberspacher: Читать дальше …
нет комментариев
Система полного привода KIA Sportage 4 (QL;QLE)
Опубликовано: 15.04.2019
Система полного привода KIA Sportage 4 (QL;QLE). Сегодня как вы разумеется догадываетесь из названия, мы поговорим о системе полного привода «Динамакс». Разработанной австрийским отделением . Специально для автомобиля Киа Спортейдж 4-го поколения. Пример HTML-страницы Безусловно пробежимся из чего состоит, Читать дальше …
нет комментариев
Полный привод KIA SPORTAGE (QL;QLE) vs SORENTO PRIME (UM)
Опубликовано: 08.09.2019
Пример HTML-страницы Полный привод KIA SPORTAGE (QL;QLE) vs SORENTO PRIME (UM) Бытует много споров на просторах интернета. KIA SPORTAGE (QL;QLE) vs SORENTO PRIME у кого какой полный привод. А есть ли отличия? Вот в чем главный вопрос. Мы уже Читать дальше …
нет комментариев
Круиз контроль KIA RIO (QBR) миф или реальность
Опубликовано: 23.09.2019
Круиз контроль своими руками Штатный круиз контроль KIA RIO. Как вы уже догадались, речь пойдет о круиз контроле. Которыми обделены RIO поставляемые на Российский рынок. Тем не менее это функция вполне доступна для владельцев данных автомобилей. Но ее внедрение потребует Читать дальше …
нет комментариев
Шины и диски на Киа Спортейдж KIA Sportage 4 (QLE) 2.0 crdi
Опубликовано: 06.05.2019
Шины и диски на KIA Sportage 4 (QLE) 2.0 crdi, какой размер выбрать? Шины и диски на KIA решено было поставить внезапно, просто появилось время. Так что написано спонтанно, поэтому подготовки мойки и т.д не производилось. Может и к лучшему. Читать дальше …
нет комментариев
Полезные мелочи
Держатель с GPS-приёмником крепится на стекло
за счёт 3M-скотча. Она очень крепко держится на стекле. Однако в комплекте есть ещё одна полоска на всякий пожарный случай.
Мне очень нравится магнитное крепление у всех видеорегистраторов серии G-Tech X. Чтобы снять регистратор, нужно всего лишь потянуть его с небольшим усилием на себя — достаточно даже одной руки. А развернуть регистратор объективом в салон нельзя. В таком случае питание прерывается, девайс попросту не работает.
Дата, время, госномер, координаты с широтой и долготой — всё это фиксируется прямо поверх видео, достаточно лишь один раз настроить и забыть. Таким образом, Neoline G-Tech X77 можно запросто использовать в качестве доказательной базы в суде
. Главное — не выкидывать коробку и сопроводительную документации — всё это может пригодиться в судебном процессе, если дело дойдёт.
Введённые ранее данные и актуальные настройки никуда не пропадут, даже если снять регистратор и унести с собой домой на несколько недель. Это особенно актуально для лютых морозов в зимний период или во избежание перегрева девайса на солнце. У G-Tech X77 есть встроенный суперконденсатор
— это своеобразная замена аккумулятора, только стабильнее, по крайней мере, так утверждают в Neoline. Без прямого подключения к бортовой сети автомобиля или к павербанку девайс, разумеется, не работает. Однако для сохранения настроек суперконденсатора более чем достаточно.
Neoline G-Tech X77 умеет следить за автомобилем в режиме парковки
. Даже при выключенном двигателе встроенный акселерометр будет отслеживать перемещение автомобиля или толчки. А объектив отслеживает движение спереди. В обоих случаях девайс начинает экстренную запись. Такого рода видео помещаются в особую защищённую папку на флешке, откуда файлы можно удалить лишь при полном форматировании. Кстати, начать экстренную запись можно и вручную. Для этого на левом торце есть большая физическая кнопка.
Режим парковки активируется через меню и работает при подключении регистратора напрямую к блоку предохранителей авто. Для этого нужно докупать специальный аксессуар Neoline Fuse Cord X7
за 990 рублей. Важно помнить, что в таком режиме девайс активно расходует аккумулятор машины, поэтому он должен быть качественный и не изношенный, с отличным уровнем заряда.
Предпусковые подогреватели двигателя Eberspacher
Опубликовано: 08.08.2019
Пример HTML-страницы Eberspacher — 15 лет эксплуатации Зимы у нас все таки холодные что не говори. И в 2003 году пожалуй я впервые задумался об автономном отопителе. Хотелось разумеется удобства, тепла и комфорта. Также как и работы устройства отдельно Читать дальше …
нет комментариев
Обзор state of the art подходов
Начиная примерно с 2012 года, когда на очень известном в сообществе computer vision соревновании по распознаванию изображений ImageNet победила команда университета Торонто под руководством Джеффри Хинтона, показав при этом значительный отрыв в точности от других команд, state of the art методом для распознавания изображений считается использование глубоких свёрточных нейронных сетей (Convolutional neural network, CNN), которые, в свою очередь, являются представителем класса алгоритмов машинного обучения deep learning (глубокое или, если угодно, глубинное обучение). Очень многие лучшие на сегодняшний день системы машинного зрения основаны на CNN, например система распознавания лиц от Facebook (к слову, глава Facebook AI Research Ян Лекун является одним из пионеров в исследовании CNN и deep learning).
В области детектирования предметов на изображении одним из самых эффективных является метод Regions with CNN features или R-CNN, представленный в 2014 году. Этот метод можно разделить на следующие этапы:
- Определение областей изображения, которые могут содержать интересующие нас объекты, с помощью алгоритма Selective search;
- Выделение из полученных областей признаков, используя свёрточную нейронную сеть;
- Эти признаки подаются на вход SVM (support vectors machine), которая классифицирует объект.
Существуют и другие успешные методы детектирования, основанные на CNN, например построение регрессии для нахождения четырёхмерного вектора ROI (т.е. на последнем уровне CNN находятся не вероятности, а целые значения). Однако, идея алгоритма, который мы будем строить, вдохновлена в первую очередь R-CNN, благодаря его простоте и эффективности, и реализует три его этапа, хотя имеет ряд значительных отличий.
Инструмент 3: Онлайн-аугментация данных
Ни для кого не секрет, что добавление новых разнообразных данных в выборку снижает вероятность переобучения нейронной сети. В нашем случае мы можем сконструировать искусственные изображения путем трансформации имеющихся картинок c помощью вращения, зеркального отражения и аффиных преобразований. Несмотря на то, что мы можем провести данный процесс для всей выборки, сохранить результаты и затем использовать их же, более элегантным способом будет создавать новые изображения «на лету» (онлайн), чтобы можно было оперативно корректировать параметры аугментации данных.
Для начала обозначим все планируемые преобразования, используя numpy и skimage:
import numpy as np from skimage import transform from skimage.transform import warp, AffineTransform def rotate_90_deg(X): X_aug = np.zeros_like(X) for i,img in enumerate(X): X_aug
= transform.rotate(img, 270.0) return X_aug def rotate_180_deg(X): X_aug = np.zeros_like(X) for i,img in enumerate(X): X_aug = transform.rotate(img, 180.0) return X_aug def rotate_270_deg(X): X_aug = np.zeros_like(X) for i,img in enumerate(X): X_aug = transform.rotate(img, 90.0) return X_aug def rotate_up_to_20_deg(X): X_aug = np.zeros_like(X) delta = 20. for i,img in enumerate(X): X_aug = transform.rotate(img, random.uniform(-delta, delta), mode=’edge’) return X_aug def flip_vert(X): X_aug = deepcopy(X) return X_aug[:, :, ::-1, :] def flip_horiz(X): X_aug = deepcopy(X) return X_aug[:, ::-1, :, :] def affine_transform(X, shear_angle=0.0, scale_margins=[0.8, 1.5], p=1.0): «»»This function allows applying shear and scale transformations with the specified magnitude and probability p. Args: X: numpy array of images. shear_angle: maximum shear angle in counter-clockwise direction as radians. scale_margins: minimum and maximum margins to be used in scaling. p: a fraction of images to be augmented. «»» X_aug = deepcopy(X) shear = shear_angle * np.random.rand() for i in np.random.choice(len(X_aug), int(len(X_aug) * p), replace=False): _scale = random.uniform(scale_margins[0], scale_margins[1]) X_aug = warp(X_aug, AffineTransform(scale=(_scale, _scale), shear=shear), mode=’edge’) return X_aug Масштабирование и рандомные повороты rotate_up_to_20_deg увеличивают размер выборки, сохраняя принадлежность изображений к исходным классам. Отражения (flips) и вращения на 90, 180, 270 градусов могут, напротив, поменять смысл знака. Чтобы отслеживать такие переходы, создадим список возможных преобразований для каждого дорожного знака и классов, в которые они будут преобразованы (ниже приведен пример части такого списка):
label_class | label_name | rotate_90_deg | rotate_180_deg | rotate_270_deg | flip_horiz | flip_vert |
13 | Yield | 13 | ||||
14 | Stop | |||||
15 | No vehicles | 15 | 15 | 15 | 15 | 15 |
16 | Vehicles over 3.5 ton prohibited | |||||
17 | No entry | 17 | 17 | 17 |
Часть таблицы преобразований. Значения в ячейках показывают номер класса, который примет данное изображение после трансформации. Пустые ячейки означают, что данное преобразование недоступно для этого класса.
Обратите внимание, что заголовки столбцов соответствуют названиям трансформирующих функций, определенных ранее, чтобы по ходу обработки можно было добавлять преобразования:
import pandas as pd # Generate an augmented dataset using a transform table augmentation_table = pd.read_csv(‘augmentation_table.csv’, index_col=’label_class’) augmentation_table.drop(‘label_name’, axis=1, inplace=True) augmentation_table.dropna(axis=0, how=’all’, inplace=True) # Collect all global functions in global namespace namespace = __import__(__name__) def apply_augmentation(X, how=None): «»»Apply an augmentation function specified in `how` (string) to a numpy array X. Args: X: numpy array with images. how: a string with a function name to be applied to X, should return the same-shaped numpy array as in X. Returns: Augmented X dataset. «»» assert augmentation_table.get(how) is not None augmentator = getattr(namespace, how) return augmentator(X) Теперь мы можем построить пайплайн, который применяет все доступные функции (преобразования), перечисленные в augmentation_table.csv ко всем классам: import numpy as np def flips_rotations_augmentation(X, y): «»»A pipeline for applying augmentation functions listed in `augmentation_table` to a numpy array with images X. «»» # Initializing empty arrays to accumulate intermediate results of augmentation X_out, y_out = np.empty([0] + list(X.shape[1:]), dtype=np.float32), np.empty([0]) # Cycling through all label classes and applying all available transformations for in_label in augmentation_table.index.values: available_augmentations = dict(augmentation_table.ix[in_label].dropna(axis=0)) images = X[y==in_label] # Augment images and their labels for kind, out_label in available_augmentations.items(): X_out = np.vstack([X_out, apply_augmentation(images, how=kind)]) y_out = np.hstack([y_out, [out_label] * len(images)]) # And stack with initial dataset X_out = np.vstack([X_out, X]) y_out = np.hstack([y_out, y]) # Random rotation is explicitly included in this function’s body X_out_rotated = rotate_up_to_20_deg(X) y_out_rotated = deepcopy(y) X_out = np.vstack([X_out, X_out_rotated]) y_out = np.hstack([y_out, y_out_rotated]) return X_out, y_out Отлично! Теперь у нас есть 2 готовые функции аугментации данных:
- affine_transform: кастомизируемые аффинные преобразования без вращения (название я выбрал не очень удачное, потому что, что вращение является одним из аффинных преобразований).
- flips_rotations_augmentation: случайные вращения и преобразования на основе augmentation_table.csv, меняющие классы изображений.
Финальный шаг — это создать генератор батчей: def augmented_batch_generator(X, y, batch_size, rotations=True, affine=True, shear_angle=0.0, scale_margins=[0.8, 1.5], p=0.35): «»»Augmented batch generator. Splits the dataset into batches and augments each batch independently. Args: X: numpy array with images. y: list of labels. batch_size: the size of the output batch. rotations: whether to apply `flips_rotations_augmentation` function to dataset. affine: whether to apply `affine_transform` function to dataset. shear_angle: `shear_angle` argument for `affine_transform` function. scale_margins: `scale_margins` argument for `affine_transform` function. p: `p` argument for `affine_transform` function. «»» X_aug, y_aug = shuffle(X, y) # Batch generation for offset in range(0, X_aug.shape[0], batch_size): end = offset + batch_size batch_x, batch_y = X_aug[offset:end,…], y_aug[offset:end] # Batch augmentation if affine is True: batch_x = affine_transform(batch_x, shear_angle=shear_angle, scale_margins=scale_margins, p=p) if rotations is True: batch_x, batch_y = flips_rotations_augmentation(batch_x, batch_y) yield batch_x, batch_y Объединив датасеты с разным числом num_bins в CLAHE в один большой train, подадим его в полученный генератор. Теперь у нас есть два вида аугментации: по контрастности и с помощью аффинных трансформаций, которые применяются к батчу на лету:
Сгенерированные с помощью augmented_batch_generator изображения
Замечание: аугментация нужна для train-сета. Test-сет мы тоже предобрабатываем, но не аугментируем.
Давайте проверим, что мы нечаянно не нарушили распределение классов на расширенном трейне по сравнению с исходным датасетом:
Слева: гистограмма распределения данных из augmented batch generator. Справа: изначальный train. Как видно, значения различаются, но распределения схожи.
Kia Sportage 4 дизель, прошел год
Опубликовано: 25.12.2019
Пример HTML-страницы Kia Sportage 4 дизель, прошел год эксплуатации или 15000 тысяч километров. Время как и показания одометра бежит неудержимо. Кажется что только вчера брал его новым из салона, а нет уже прошел целый год. Год, который Читать дальше …
нет комментариев
Автономный отопитель Eberspacher: из бензина в дизель
Опубликовано: 08.10.2019
Изучение мануалов и каталогов Eberspacher сформировало некое представление о задуманном. Воплощение идеи представлялось более чем реальным. Безусловно и с финансовой точки зрения, значительно дешевле замены отопителя на новый. Но теория так и будет теорией если ее не опробовать на практике. Читать дальше …
нет комментариев
KIA SPORTAGE (QL;QLE), TPSM (система контроля давления в шинах)
Опубликовано: 04.05.2019
Система контроля давления в шинах Kia Sportage Система контроля давления в шинах — TPSM. При покупке колесных дисков например под зимнюю или летнею резину, возникает необходимость приобретения датчиков TPSM (система контроля давления в шинах) на KIA sportage. Иначе, придется лицезреть, Читать дальше …
нет комментариев
Характеристики Neoline G-Tech X77
- запись видео при разрешении 1920 x 1080 точек, 30 или 60 кадр/с
- угол захвата 140°
- IPS-экран 2 дюйма, не сенсорный
- поддержка карт памяти Micro SD (теперь до 256 ГБ)
- суперконденсатор для автономного питания (см. обзор)
- подключение Micro USB
- GPS-модуль в креплении на стекло
- датчики: акселерометр
- режимы: HDR, ночная съёмка, интервальная или непрерывная (циклическая) запись
- температура работы / хранения -10˚ / -20˚ до +60˚ / +70˚
- питание: 5 В, 1,5 А (в штекере есть порт USB для аксессуаров или зарядки смартфона)
- габариты: 74 x 42 x 35 мм / 93 грамма