0

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

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

Я также хотел бы знать, является ли python хорошим языком, чтобы начать это, так как мне это наиболее удобно.

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

Eg: Audi A4,Audi A6,Audi A8,etc 
+0

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

+0

@seaotternerd да точно – adil

ответ

3

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

Если вы можете использовать рамки, проверьте Theano, который написан на Python и является наиболее полной нейронной структурой сетей доступны на любом языке:

http://www.deeplearning.net/software/theano/

Если вам нужно написать реализацию из поцарапать, посмотреть на книгу «Машиноведение, алгоритмическая перспектива» Стивена Марсленда. Он содержит пример кода Python для реализации базовой многослойной нейронной сети.

Как для продолжения, вы захотите преобразовать свои изображения в одномерные входные векторы. Не беспокойтесь о потере двумерной информации, сеть узнает «восприимчивые поля» самостоятельно, чтобы извлекать 2-D функции. Нормализовать интенсивность пикселей в диапазоне от -1 до 1 (или, еще лучше, 0 со стандартным отклонением 1). Если изображения уже центрированы и нормализованы примерно до того же размера, что и достаточная простая сеть прямой пересылки. Если автомобили сильно разнятся под углом или на расстоянии от камеры, вам может потребоваться использовать сверточную нейронную сеть, но это намного сложнее реализовать (в документации Theano есть примеры). Для базовой сети пересылки попробуйте использовать два скрытых слоя и от 0,5 до 1,5 x количество пикселей в каждом слое.

Разделите свой набор данных на отдельные тренировочные, валидационные и испытательные комплекты (возможно, с соотношением 0,6, 0,2, 0,2 соответственно) и убедитесь, что каждое изображение отображается только в одном наборе. Тренируйтесь ТОЛЬКО на тренировочном наборе и не используйте никакую регуляризацию до тех пор, пока вы не приблизитесь к 100% учебных случаев правильно. Вы можете использовать набор проверки, чтобы отслеживать прогресс в тех случаях, когда вы не обучаетесь. Производительность должна быть хуже на основании проверки, чем набор тренировок. Прекратите тренировки, когда производительность на наборе проверки перестанет улучшаться. Как только вы это сделаете, вы можете попробовать различные константы регуляризации и выбрать тот, который обеспечивает наилучшую производительность набора. Набор тестов покажет вам, насколько хорошо ваш конечный результат выполняет (но не меняйте ничего на основании результатов тестового набора, или вы тоже рискуете переутомлением!).

Если ваши изображения автомобиля очень сложны и разнообразны, и вы не можете получить базовую сеть подачи вперед, чтобы хорошо работать, вы можете использовать «глубокое обучение». То есть, добавьте больше слоев и предварительно подготовьте их, используя неконтролируемое обучение. Там есть подробное руководство о том, как сделать это здесь (хотя все примеры кода в Matlab/октава):

http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial

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

+0

На самом деле нет необходимости реализовывать мою собственную нейронную сеть, но я бы предпочел сделать это сам, поскольку я многому научу. – adil

+0

Является ли регуляризация == смещением здесь? – adil

+0

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

Смежные вопросы