我在用 咖啡 </跨度> 在python中进行分类。我从这里得到代码。在这里,我只使用简单的代码,如
plt.rcParams [‘figure.figsize’] =(10,10)plt.rcParams [‘image.interpolation’] =‘最近’,),raw_scale = 255,image_dims =(256,256))
但是,我得到了错误
Traceback(最近一次调用最后一次):文件“cnn_age_gender_demo.py”,第25行,inimage_dims =(256,256))档案“/ home / john / Downloads / 咖啡 </跨度> 鈥
我非常害怕重建代码,因为caffe安装对我来说并不容易。 但要修复,调整大小的解决方案需要in_shape(user8264的响应),这是在caffe / classifier.py内部设置的。
无论如何,我调试并找到了age_net.caffemodel的in_shape =(3,227,227)的值
因此,用于年龄和性别预测的模型将发生以下变化:
age_net_pretrained='./age_net.caffemodel' age_net_model_file='./deploy_age.prototxt' age_net = caffe.Classifier(age_net_model_file, age_net_pretrained, mean=mean, channel_swap=(2,1,0), raw_scale=255, image_dims=(227, 227))
但是需要首先修改平均值:
m_min, m_max = mean.min(), mean.max() normal_mean = (mean - m_min) / (m_max - m_min) in_shape=(227, 227) mean = caffe.io.resize_image(normal_mean.transpose((1,2,0)),in_shape) .transpose((2,0,1)) * (m_max - m_min) + m_min
这将消除“ValueError:平均形状与输入形状不兼容”。但我不确定准确性。显然,对我来说,跳过平均参数给出了更好的年龄预测:)
编辑deploy_gender.prototxt并设置: input_dim:256 input_dim:256
不知道为什么写错了......
我遇到了同样的问题,基于imagenet网络演示我使用这种方式修改脚本来加载第95行的平均文件
mean = np.load(args.mean_file).mean(1).mean(1)
让我们去caffe / python / caffe / io.py中的第253-254行 更换
if ms != self.inputs[in_][1:]: raise ValueError('Mean shape incompatible with input shape.')
通过
if ms != self.inputs[in_][1:]: print(self.inputs[in_]) in_shape = self.inputs[in_][1:] m_min, m_max = mean.min(), mean.max() normal_mean = (mean - m_min) / (m_max - m_min) mean = resize_image(normal_mean.transpose((1,2,0)),in_shape[1:]).transpose((2,0,1)) * (m_max - m_min) + m_min #raise ValueError('Mean shape incompatible with input shape.')
重建。希望它有所帮助