我想在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]))
color\u normalize的输出似乎不正确,因为某些数字的绝对值大于1。
这是我从ImageNet下载的猫的图片。
这些是我的作品。
概率=0.218258,等级=n01519563,食火鸡概率=0.172373,
等级=n01519873鸸鹋、新喉猴科、新喉猴科
概率=0.128973,等级=n01521399 rhea,rhea americana
概率=0.105253,等级=n01518878驼鸟
概率=0.051424,等级=n01517565 ratite,ratite bird,不会飞
鸟