2016-04-12 2 views
0

Я пытаюсь классифицировать цифры (0-9), используя LeNet.caffe.io.Transformer для использования в классификации LeNet

Я читал изображения размера 28x28, транспонировал их и отправлял один цветный канал в сеть.

bild = mpimg.imread('pathToImg') 
bild = np.transpose(bild,(2,0,1)) 

И получить предсказания, которые не имеют никакого смысла. Я вижу, что у PyCaffe есть Трансформатор, который выполняет эту работу, но я не знаю, как использовать его для LeNet.


Я использую сеть от Caffe/примеры/mnist (надеюсь, что ответы, какие данные чистые ожидает).

Единственное, что отличается тем, что вход в настоящее время:

input_shape { 
    dim: 1 
    dim: 1 
    dim: 28 
    dim: 28 
} 
+0

какой ввод ожидает ваша сеть? 'float32' в диапазоне [0..255], диапазон [0..1]? ваша сеть вычитает среднее значение изображения? почему бы вам не перейти на серый? как были обработаны материалы во время обучения сети? – Shai

+0

Обновлен вопрос –

ответ

1

Поскольку вы непосредственно с помощью Deploy prototxt, вы должны взглянуть на слой «данных» в lenet_train_test.prototxt (или файл с похожим именем), который даст вам представление о том, как данные предварительно обрабатываются.

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

transform_param { 
    scale: 0.00390625 
} 

Так что это одно, чего вам не хватает. Посмотрите на imagenet tutorial для указателей на предварительную обработку (esp Transformer). Во-вторых, вы читаете в образе, как

bild = np.transpose(bild,(2,0,1)) 

Это выглядит как сообщение об ошибке на основе канала свопы вы выполняете, поэтому убедитесь, что данные, передаваемые в сеть имеет размеры - 1 (размер партии) х 1 (каналы) x 28 (высота) x 28 (ширина).