Мне всего 13 лет, и мне нужно подождать пару лет, прежде чем я смогу водить машину. С другой стороны, мои родители знают, как водить машину, и делают это каждый день. Я, будучи любопытным ребенком, я хотел знать, чего боялись мои родители, когда водили машину. Не попасть в аварию, а с точки зрения вещей, которые их постоянно беспокоят.

К моему удивлению, я не ожидал этого. Они сказали, что, вероятно, больше всего боятся не подчиняться дорожным знакам. Именно тогда меня осенило: если для людей важно умение подчиняться дорожным знакам во время вождения, то это означает, что это необходимо для автономного транспортного средства. В конце концов, если мы хотим достичь пятого уровня автономии, антивирусы должны делать все, что может делать человек за рулем.

Итак, я приступил к работе. Сначала я начал выяснять, как все это работает. Затем я перевел это в код. Самая важная вещь, о которой следует помнить, заключалась в том, что образец изображения должен пройти три шага, чтобы его классифицировала программа. Предварительная обработка, Сверточная нейронная сеть и, наконец, Вывод.

Шаг 1: предварительная обработка

Преобразование изображения в оттенки серого

Если бы я показал вам 3 изображения и сказал, чтобы вы извлекали из них информацию, это было бы не так сложно. Но вы знаете, что было бы проще - извлечь такой же объем информации из одного изображения. Вместо того, чтобы анализировать 3 канала цветного изображения (красный, зеленый и синий), компьютер просто анализирует один канал (Белый / Черный).

Это делает процесс намного более эффективным и делает его проще для понимания компьютером.

Уравнивание

Проблема с изображением только в оттенках серого заключается в том, что изображения обычно имеют небольшой диапазон значений пикселей. Это означает, что оттенки белого или черного очень близко друг к другу низкая контрастность, из-за чего нашему алгоритму намного сложнее попытаться проанализировать изображение.

Когда мы выравниваем изображение, оно расширяет распределение значений, создавая больший контраст в изображении.

Перед предварительной обработкой:

После предварительной обработки

Теперь, когда предварительная обработка, наконец, завершена, компьютер действительно может понимать различные части изображения. Следующим шагом является определение того, какой знак использует наше изображение с помощью CNN.

Шаг 2: сверточная нейронная сеть (CNN)

Цель нашего CNN - указать на особенности, которые составляют определенные признаки. Например, он может искать буквы STOP как знак остановки или как восьмиугольник.

Это похоже на то, как я пытаюсь определить дерево как дерево, подсознательно думая: «Есть ветви и листья, значит, это должно быть дерево».

На нашем изображении ниже CNN по существу говорит: «О, почти каждая деталь образца изображения соответствует автомобилю, но Это тоже может быть грузовик или байк. Но я думаю, что есть 95% шанс, что это будет машина ». Таким образом, CNN пойдет на все, что имеет наибольшие шансы на правильность, заявив, что это автомобиль.

Как нам получить эти изученные функции?

На изображении выше мы можем ясно видеть, что вся магия происходит в середине, где говорится о изученных функциях. В середине нейронная сеть фактически определила, что это автомобиль, используя несколько различных параметров.

Так как же это сделать? Ответ - через ядра и шаги. Думайте о шагах как о способе перемещения ядра по изображению, а ядро ​​как о способе наблюдения за особенностями нашего изображения.

В каждом ядре он проверяет, насколько близки определенные части изображения к тому, что ищет ядро. Существуют разные ядра для разных функций, каждое ядро ​​имеет свою собственную карту функций.

Эти карты функций затем складываются поверх каждой. Это делает так, что после того, как каждая карта получает данные об изображении для соответствующих функций, они объединяются вместе для получения выходных данных.

Переоснащение

Есть одна проблема: переоснащение. Здесь модель начинает запоминать изображения в наборе данных. Поначалу это может показаться хорошей идеей, но загвоздка заключается в том, что это снижает точность изображений, которых он никогда раньше не видел.

Моя модель обучается с помощью процесса проб и ошибок. Изображения в обучающем наборе данных проходят через модель, и модель позволяет предсказать, какое изображение оно представляет.

Добавление набора данных значительно ускоряет процесс, но есть признаки того, что набор данных не учтен. Если прогноз неверен, модель корректирует свои параметры, которые представляют собой значения весов и смещения.

По мере того, как модель становится все более и более точной, проходит больше времени, но при слишком большом испытаниях модель начнет запоминать данные обучения, а затем переобучится.

Шаг 3: Прогноз

Последняя часть процесса заключается в том, чтобы алгоритм фактически выдал результат. Как упоминалось ранее, сверточная нейронная сеть использует ядра и шаги для определения характеристик изображения, которое она берет из видеопотока.

После всего этого алгоритм в идеале должен иметь довольно хорошее представление о том, какой знак находится на изображении, выбирая тот знак, который имеет наибольший процент вероятности правильности.

Он выводит прогнозирующий знак, прикрепляя его к тому классу, который он считает.

Так что да, вот как я создаю свой собственный классификатор дорожных знаков с использованием сверточной нейронной сети.

Последние мысли

Подобно тому, как я создавал свой алгоритм определения полосы движения, я обнаружил, что еще я провалил, еще меня разочаровал но работал усерднее, чтобы заставить его работать.

Для меня разница заключалась в том, что на этот раз вместо использования гнева в качестве инструмента мотивации я думал о будущем. Я представлял, что завершу его и буду праздновать. Это то, что действительно поддерживало меня в конце концов.

Это напомнило мне, когда я впервые присоединился к Обществу знаний (TKS). В заявках я сказал, что конкуренция движет мной, потому что я хочу быть лучшим. Но теперь у меня совершенно другая точка зрения.

Моя новая мотивация для упорного труда - это думать о будущем и представить себе мир, в котором я буду основным участником. Я недавно думал о следующем:

Невозможно соединить точки, глядя вперед; вы можете соединить их, только глядя назад. Поэтому вы должны верить, что точки каким-то образом соединятся в вашем будущем.

Стив Джобс