Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Deep learning MxNet中的内置VGG16网络不工作_Deep Learning_Mxnet - Fatal编程技术网

Deep learning MxNet中的内置VGG16网络不工作

Deep learning MxNet中的内置VGG16网络不工作,deep-learning,mxnet,Deep Learning,Mxnet,我想在MxNet中测试经过培训的内置VGG16网络。实验是向网络提供来自ImageNet的图像。那么,我想看看结果是否正确 然而,结果总是错误的!嗨,网络真蠢!那不可能是真的。我一定是做错了什么 from mxnet.gluon.model_zoo.vision import vgg16 from mxnet.image import color_normalize import mxnet as mx import numpy as np import cv2 path=‘http://dat

我想在MxNet中测试经过培训的内置VGG16网络。实验是向网络提供来自ImageNet的图像。那么,我想看看结果是否正确

然而,结果总是错误的!嗨,网络真蠢!那不可能是真的。我一定是做错了什么

from mxnet.gluon.model_zoo.vision import vgg16
from mxnet.image import color_normalize
import mxnet as mx
import numpy as np
import cv2
path=‘http://data.mxnet.io/models/imagenet-11k/’
data_dir = ‘F:/Temps/Models_tmp/’
k = ‘synset.txt’
#gluon.utils.download(path+k, data_dir+k)
img_dir = ‘F:/Temps/DataSets/ImageNet/’
img = cv2.imread(img_dir + ‘cat.jpg’)
img = mx.nd.array(img)
img,_ = mx.image.center_crop(img,(224,224))
img = img/255
img = color_normalize(img,mean=mx.nd.array([0.485, 0.456, 0.406]),std=mx.nd.array([0.229, 0.224, 0.225]))
img = mx.nd.transpose(img, axes=(2, 0, 1))
img = img.expand_dims(axis=0)
with open(data_dir + ‘synset.txt’, ‘r’) as f:
labels = [l.rstrip() for l in f]
aVGG = vgg16(pretrained=True,root=‘F:/Temps/Models_tmp/’)
features = aVGG.forward(img)
features = mx.ndarray.softmax(features)
features = features.asnumpy()
features = np.squeeze(features)
a = np.argsort(features)[::-1]
for i in a[0:5]:
  print(‘probability=%f, class=%s’ %(features[i], labels[i]))
由于某些数字的绝对值大于1,因此颜色_normalize的输出似乎不正确

这是我从ImageNet上下载的cat图

这些是我的产出

概率=0.218258,等级=n01519563食火鸡概率=0.172373, 等级=n01519873鸸鹋、新黑腹驼科鸸鹋、新黑腹驼科鸸鹋 概率=0.128973,等级=n01521399 rhea,rhea americana 概率=0.105253,等级=n01518878驼鸟 概率=0.051424,等级=n01517565平纹,平纹鸟,不会飞 鸟

阅读您的代码:

path=http://data.mxnet.io/models/imagenet-11k/“

我认为您可能正在使用ImageNet 11k(11000个类)的synset,而不是1k(1000个)类。这可以解释这种不匹配


正确的语法集在这里:

非常感谢!我犯的另一个错误是导入BGR数据而不是RGB数据。img=cv2.imread(img_dir+'cat.jpg')应该是img=cv2.imread(img_dir+'n01751748_838.JPEG')img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)或img=plt.imread(img_dir+'n01751748_838.JPEG')。如果像我们在keras中所做的那样有“image.load_img”这样的话会更好。img=image.load\u img(img\u path+'cat.jpg',target\u size=(224224224))没问题,您可以在mxnet中使用
mx.image.imread
直接将图像作为数据数组加载。