Я пытаюсь использовать тест Кафе, чтобы проверить точность Каффеннета.Довольно просто, не правда ли?
Действительно НЕТ.Это не работает вообще.
Ниже я опишу шаги, которые я выполняю (На мой взгляд, все в порядке):
- Я скачал набор обучения и проверки imagenet.
Я использовал приложение "create_imagenet.sh" для создания базы данных LMDB.Здесь я изображаю свой «create_imagenet.sh» (я изменил некоторые вещи, так как мне нужна только база данных проверки):
RESIZE=true
if $RESIZE; then
RESIZE_HEIGHT=256
RESIZE_WIDTH=256
else
RESIZE_HEIGHT=0
RESIZE_WIDTH=0
fi
if [ ! -d "$VAL_DATA_ROOT" ]; then
echo "Error: VAL_DATA_ROOT is not a path to a directory: $VAL_DATA_ROOT"
echo "Set the VAL_DATA_ROOT variable in create_imagenet.sh to the path" \
"where the ImageNet validation data is stored."
exit 1
fi
echo "Creating train lmdb..."
GLOG_logtostderr=1 $TOOLS/convert_imageset \
-resize_height=$RESIZE_HEIGHT \
-resize_width=$RESIZE_WIDTH \
--shuffle \
$VAL_DATA_ROOT \
$DATA/val.txt \
$EXAMPLE/ilsvrc12_val_leveldb
echo "Done."
в $ VAL_DATA_ROOT Я храню путь к проверочным изображениям,в $ DATA путь к файлу tu val.txt и, наконец, пример пути, когда я хочу сохранить свою базу данных.Я МОГУ УБЕДИТЬСЯ, что пути абсолютно верны.
Получив базу данных, я скачал файл весов bvlc_reference_caffenet.caffemodel с официального сайта, и все в порядке.
Я изменил train_val.prototxt, чтобы связать базу данных.Далее я изобразил первые строки файла.Остальное не меняется вообще (по сравнению с оригиналом).
# mean pixel / channel-wise mean instead of mean image
# transform_param {
# crop_size: 227
# mean_value: 104
# mean_value: 117
# mean_value: 123
# mirror: true
# }
data_param {
source: "/home/paco/Caffe_Original/caffe/examples/imagenet/ilsvrc12_train_lmdb"
batch_size: 256
backend: LMDB
}
}
layer {
name: "data"
type: "Data"
top: "data"
top: "label"
include {
phase: TEST
}
# transform_param {
# mirror: false
# crop_size: 227
# mean_file: "/home/paco/Caffe/caffe/data/ilsvrc12/imagenet_mean.binaryproto"
# }
# mean pixel / channel-wise mean instead of mean image
transform_param {
crop_size: 227
mean_value: 104
mean_value: 117
mean_value: 123
mirror: false
}
data_param {
source: "/home/paco/imagenet_noformat/ilsvrc12_val_lmdb"
batch_size: 50
backend: LMDB
}
}
Я просто запускаю инструмент caffe следующим образом:
caffe test -model = / home/paco/Caffe/caffe/models/bvlc_reference_caffenet/train_val.prototxt -weights = / home / paco / Caffe / caffe / models / bvlc_reference_caffenet / bvlc_reference_caffenet.caffemodel -iterations = 2000 1030 **1030**Вы все можете видеть, что все выглядит ОТЛИЧНО, и я не получаю никакой ошибки вообще !!
Однако, это не работает, так как я получаю это на своей оболочке !!:
**
I1016 16:43:32.526727 22178 net.cpp:255] Network initialization done.
I1016 16:43:32.675029 22178 upgrade_proto.cpp:46] Attempting to upgrade input file specified using deprecated transformation parameters: /home/paco/Caffe/caffe/models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel
I1016 16:43:32.675051 22178 upgrade_proto.cpp:49] Successfully upgraded file specified using deprecated data transformation parameters.
W1016 16:43:32.675071 22178 upgrade_proto.cpp:51] Note that future Caffe releases will only support transform_param messages for transformation fields.
I1016 16:43:32.675122 22178 upgrade_proto.cpp:55] Attempting to upgrade input file specified using deprecated V1LayerParameter: /home/paco/Caffe/caffe/models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel
I1016 16:43:32.882395 22178 upgrade_proto.cpp:63] Successfully upgraded file specified using deprecated V1LayerParameter
I1016 16:43:32.943102 22178 caffe.cpp:281] Running for 2000 iterations.
I1016 16:43:34.434036 22178 caffe.cpp:304] Batch 0, accuracy = 1
I1016 16:43:34.434161 22178 caffe.cpp:304] Batch 0, loss = -nan
I1016 16:43:35.862941 22178 caffe.cpp:304] Batch 1, accuracy = 1
I1016 16:43:35.862982 22178 caffe.cpp:304] Batch 1, loss = -nan
I1016 16:43:37.310729 22178 caffe.cpp:304] Batch 2, accuracy = 1
I1016 16:43:37.310768 22178 caffe.cpp:304] Batch 2, loss = -nan
I1016 16:43:38.719712 22178 caffe.cpp:304] Batch 3, accuracy = 1
I1016 16:43:38.719833 22178 caffe.cpp:304] Batch 3, loss = -nan
I1016 16:43:40.171242 22178 caffe.cpp:304] Batch 4, accuracy = 1
I1016 16:43:40.171273 22178 caffe.cpp:304] Batch 4, loss = -nan
I1016 16:43:41.674332 22178 caffe.cpp:304] Batch 5, accuracy = 1
I1016 16:43:41.674373 22178 caffe.cpp:304] Batch 5, loss = -nan
I1016 16:43:43.160789 22178 caffe.cpp:304] Batch 6, accuracy = 1
I1016 16:43:43.160826 22178 caffe.cpp:304] Batch 6, loss = -nan
**
Это еще хуже с alexnet и Squeezenet, где, следуя одним и тем же шагам, я ВСЕГДА получаю 0 точности (в действительности, иногда я получаю 0,001 или что-то в этом роде).
ЧТО ПРОИСХОДИТ?Может быть, мне нужно предварительно обработать изображения перед тем, как выгрузить их в базу данных?НИКТО МОЖЕТ ПОМОЧЬ МНЕ?Я ДЕЙСТВИТЕЛЬНО ОЦЕНИЛ ЕГО.
Большое спасибо за ваше внимание и помощь.