caffe-ubuntu1604-gtx850m-i7-4710hq----VGG_ILSVRC_16_layers.caffemodel
c++调用vgg16:
./build/install/bin/classification \
/media/whale/wsWin10/wsCaffe/model-zoo/VGG16//deploy.prototxt \
/media/whale/wsWin10/wsCaffe/model-zoo/VGG16/VGG_ILSVRC_16_layers.caffemodel \
data/ilsvrc12/imagenet_mean.binaryproto \
/media/whale/wsWin10/wsCaffe/model-zoo/VGG16/synset_words.txt \
/media/whale/wsWin10/images/person/2.jpg
然后就报错了。
然后
whale@sea:/media/whale/wsWin10/wsUbuntu16.04/DlFrames/caffe$ ./build/install/bin/classification /media/whale/wsWin10/wsCaffe/model-zoo/VGG16//deploy.prototxt /media/whale/wsWin10/wsCaffe/model-zoo/VGG16/VGG_ILSVRC_16_layers.caffemodel data/ilsvrc12/imagenet_mean.binaryproto ./3labels.txt /media/whale/wsWin10/images/person/2.jpg labels_.size() = 3 output_layer->channels() = 3 ---------- Prediction for /media/whale/wsWin10/images/person/2.jpg ---------- 0.3333 - "1000" 0.3333 - "2000" 0.3333 - "3000" whale@sea:/media/whale/wsWin10/wsUbuntu16.04/DlFrames/caffe$ ./build/install/bin/classification /media/whale/wsWin10/wsCaffe/model-zoo/VGG16//deploy.prototxt /media/whale/wsWin10/wsCaffe/model-zoo/VGG16/VGG_ILSVRC_16_layers.caffemodel data/ilsvrc12/imagenet_mean.binaryproto ./3labels.txt /media/whale/wsWin10/images/person/3.jpg labels_.size() = 3 output_layer->channels() = 3 ---------- Prediction for /media/whale/wsWin10/images/person/3.jpg ---------- 0.3333 - "1000" 0.3333 - "2000" 0.3333 - "3000"
只能给3个标签,不然就报错。然后,。。。,这个模型是假的吗?
还是什么是假的?
keras-python调用vgg16:
python-keras接口调用模型要简单些,只需要标签文件,和keras模型就可以了。
from keras.applications.vgg16 import VGG16 from keras.preprocessing import image from keras.applications.vgg16 import preprocess_input from keras.models import Model import numpy as np import matplotlib.pyplot as plt # get_ipython().magic(u'matplotlib inline') # ### 显示图像 # In[2]: img_path = './data/elephant.jpg' img_path = '/media/whale/wsWin10/images/dog/0c02094a98d126cf541c4318188699a5.jpg' img_path = '/media/whale/wsWin10/images/dog/dd92db98b99479db3619f62c724757a4.jpg' img = image.load_img(img_path, target_size=(224, 224)) plt.imshow(img) plt.show( ) # ### 加载VGG16模型(包含全连接层) # In[3]: model = VGG16(include_top=True, weights='imagenet') print(" type(model) = ", type(model)) # In[4]: x = image.img_to_array(img) x = np.expand_dims(x, axis=0) x = preprocess_input(x) print( "x.max() = ", x.max()) scores = model.predict(x) # In[10]: class_table = open('./data/synset_words', 'r') lines = class_table.readlines() print(" scores type: ", type(scores)) print(" scores shape: ", scores.shape) print(" np.argmax(scores) = ", np.argmax(scores)) print('result is ', lines[np.argmax(scores)]) class_table.close() import sys sys.exit()
。。。/wsWin10/wsPycharm/sklearnStu/Keras-Tutorials/08.vgg-16.py Using TensorFlow backend. 2018-01-16 17:35:28.541700: I tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA 2018-01-16 17:35:28.627059: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:892] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero 2018-01-16 17:35:28.627317: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Found device 0 with properties: name: GeForce GTX 850M major: 5 minor: 0 memoryClockRate(GHz): 0.9015 pciBusID: 0000:01:00.0 totalMemory: 3.95GiB freeMemory: 3.63GiB 2018-01-16 17:35:28.627334: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1120] Creating TensorFlow device (/device:GPU:0) -> (device: 0, name: GeForce GTX 850M, pci bus id: 0000:01:00.0, compute capability: 5.0) (' type(model) = ', <class 'keras.engine.training.Model'>) ('x.max() = ', 151.061) (' scores type: ', <type 'numpy.ndarray'>) (' scores shape: ', (1, 1000)) (' np.argmax(scores) = ', 235) ('result is ', 'n02106662 German shepherd, German shepherd dog, German police dog, alsatian\n') Process finished with exit code 0
翻译下: 德国牧羊犬,德国牧羊犬,德国警犬,阿尔萨斯
_________________________________________________________________________________________________________________________________________________
每一个不曾起舞的日子,都是对生命的辜负。
But it is the same with man as with the tree. The more he seeks to rise into the height and light, the more vigorously do his roots struggle earthward, downward, into the dark, the deep - into evil.
其实人跟树是一样的,越是向往高处的阳光,它的根就越要伸向黑暗的地底。----尼采
每一个不曾起舞的日子,都是对生命的辜负。
But it is the same with man as with the tree. The more he seeks to rise into the height and light, the more vigorously do his roots struggle earthward, downward, into the dark, the deep - into evil.
其实人跟树是一样的,越是向往高处的阳光,它的根就越要伸向黑暗的地底。----尼采