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 会处理这个问题。除此之外,您的方法没有任何问题。
我已经使用 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")
查看我的回答