Подтвердить что ты не робот

Глубокое обучение классификации изображений

Прочитав несколько статей по глубокому обучению и глубоким сетям убеждений, я получил общее представление о том, как это работает. Но все же застрял с последним шагом, т.е. На этапе классификации. Большая часть реализации, которую я нашел в Интернете, связана с поколением. (Цифры MNIST)

Есть ли какое-нибудь объяснение (или код) где-нибудь, где говорится о классификации изображений (предпочтительно естественных изображений или объектов) с использованием DBN?

Также некоторые указатели в направлении были бы действительно полезны.

4b9b3361

Ответ 1

Основная идея

В наши дни глубокое углубленное изучение проблем классификации изображений (например, ImageNet) обычно представляет собой "глубокие сверточные нейронные сети" "(Deep ConvNets). Они выглядят примерно так, как эта конфигурация ConvNet: Крижевский и др.: enter image description here

Для вывода (классификации) вы загружаете изображение в левую сторону (обратите внимание, что глубина на левой стороне равна 3, для RGB), хруст через ряд фильтров свертки и он выплескивает 1000-мерный вектор с правой стороны. Эта картинка особенно подходит для ImageNet, которая фокусируется на классификации 1000 категорий изображений, поэтому 1000d-вектор - это "оценка того, насколько вероятно, что это изображение соответствует категории".

Обучение нейронная сеть лишь немного сложнее. Для обучения вы в основном выполняете классификацию повторно, и каждый раз вы часто делаете backpropagation (см. Лекции Andrew Ng), чтобы улучшить фильтры свертки в сети. В основном, backpropagation спрашивает: "Что правильно классифицировало сеть/неправильно? Для ошибочно классифицированных материалов, немного исправьте сеть".


Реализация

Caffe - это очень быстрая реализация с открытым исходным кодом (быстрее, чем cuda-convnet от Крижевского и др.) глубоких сверточных нейронных сетей. Код Caffe довольно легко читается; там в основном один файл С++ для типа сетевого уровня (например, сверточные слои, слои с максимальным пулом и т.д.).

Ответ 2

Вы должны использовать слой softmax (http://en.wikipedia.org/wiki/Softmax_activation_function) поверх сети, которую вы использовали для генерации, и использовать backpropagation для тонкой настройки конечная сеть.

Ответ 3

В эти дни люди начинают использовать SVM в слое классификации.

Глубокое обучение развивается очень свободно и широко.