Caffe : cifar 10_quick 测试问题

Caffe : cifar 10_quick testing issue

我已经使用 caffe 训练了 CIFAR QUICK,但是当我使用 python 包装器测试 cifar10_quick_iter_5000.caffemodel.h5 时,我得到的准确度约为 52-54%,而它应该是 75%。我不明白为什么我的准确性如此低,因为当我测试 Lenet MNIST 时,我得到了 caffe 网站上 MNIST 示例的预期准确性。为了验证我的方法是否正确,我尝试了来自 Clasificador_Cifar-10 的 cifar 训练模型文件,我得到了 68% 的准确率。

如果我在测试模型时遗漏了什么,请告诉我。

import sys
import caffe
import cv2
import Image
import matplotlib
import numpy as np
import lmdb
caffe_root = '/home/fred/CIFAR_QUICK/caffe'

MODEL_FILE = '/home/fred/CIFAR_QUICK/caffe/examples/cifar10/cifar10.prototxt'
PRETRAINED = '/home/fred/CIFAR_QUICK/caffe/examples/cifar10/cifar10_60000.caffemodel.h5'

net = caffe.Net(MODEL_FILE, PRETRAINED,caffe.TEST)
caffe.set_mode_cpu()
db_path = '/home/fred/CIFAR_QUICK/caffe/examples/cifar10/cifar10_test_lmdb'
lmdb_env = lmdb.open(db_path)
lmdb_txn = lmdb_env.begin()
lmdb_cursor = lmdb_txn.cursor()
count = 0
correct = 0
for key, value in lmdb_cursor:
    print "Count:"
    print count
    count = count + 1
    datum = caffe.proto.caffe_pb2.Datum()
    datum.ParseFromString(value)
    label = int(datum.label)
    image = caffe.io.datum_to_array(datum)
    image = image.astype(np.uint8)
    out = net.forward_all(data=np.asarray([image]))
    predicted_label = out['prob'][0].argmax(axis=0)
    print out['prob']
    if label == predicted_label:
        correct = correct + 1
    print("Label is class " + str(label) + ", predicted class is " + str(predicted_label))

print(str(correct) + " out of " + str(count) + " were classified correctly")

查看我的回答。您没有减去导致准确性低的平均值。上面发布的代码的 link 会处理这个问题。除此之外,您的方法没有任何问题。