框架 Caffe 在测试时不起作用



我正在尝试使用咖啡测试来检查咖啡的准确性。很简单,不是吗?

真的不是。它根本不起作用。

下面我描述我正在遵循的步骤(在我看来,一切都认为是可以的(:

  1. 我已经下载了图像网训练和验证集。
  2. 我使用应用程序"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 文件,最后是我想保存数据库时的路径示例。我可以确保路径完全正确。

  1. 一旦我有了我的数据库,我就从官方网站下载了权重文件bvlc_reference_caffenet.caffemodel,没关系。
  2. 我已经修改了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
    }
    }
    
  3. 我只是执行咖啡工具,如下所示:

    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

正如你们所看到的一切看起来都很完美,我根本没有收到任何错误!!

但是,它不起作用,因为我在我的外壳上获得了这个!!!

**

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 或类似的东西(。

这是怎么回事?也许我必须在将图像转储到数据库之前对其进行预处理?有人可以帮助我吗?我将不胜感激。

非常感谢您的关注和帮助。

问题是 MKL 库。它不起作用,但我根本没有得到任何信息。我已经通过使用OpenBlas库再次编译caffe来解决这个问题。

谢谢你自己。

最新更新