【发布时间】:2016-02-23 01:16:16
【问题描述】:
我想在 python 中实现VGG Face Descriptor。但我不断收到错误:
TypeError:只能将列表(不是“numpy.ndarray”)连接到列表
我的代码:
import numpy as np
import cv2
import caffe
img = cv2.imread("ak.png")
img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
net = caffe.Net("VGG_FACE_deploy.prototxt","VGG_FACE.caffemodel", caffe.TEST)
print net.forward(img)
你能帮帮我吗?
更新 1
此工作代码是 matlab 中的示例
% Copyright (c) 2015, Omkar M. Parkhi
% All rights reserved.
img = imread('ak.png');
img = single(img);
Img = [129.1863,104.7624,93.5940] ;
img = cat(3,img(:,:,1)-averageImage(1),...
img(:,:,2)-averageImage(2),...
img(:,:,3)-averageImage(3));
img = img(:, :, [3, 2, 1]); % convert from RGB to BGR
img = permute(img, [2, 1, 3]); % permute width and height
model = 'VGG_FACE_16_deploy.prototxt';
weights = 'VGG_FACE.caffemodel';
caffe.set_mode_cpu();
net = caffe.Net(model, weights, 'test'); % create net and load weights
res = net.forward({img});
prob = res{1};
caffe_ft = net.blobs('fc7').get_data();
【问题讨论】:
-
你为什么不用
caffe.io.load_image? -
如果我尝试
caffe.io.load_image我得到同样的错误TypeError: can only concatenate list (not "numpy.ndarray") to list。如果我尝试将单个元素列表传递给方法,我会收到错误TypeError: unhashable type: 'numpy.ndarray' -
尝试使用
net.forward_all而不是forward。 -
同样的错误
TypeError: unhashable type: 'numpy.ndarray' -
你能得到一个堆栈跟踪来显示究竟是哪一行代码导致了这个错误吗?
标签: python matlab deep-learning caffe vgg-net