关于特征提取时用cv2.imread()和caffe.io.load_image()读图像的差别

10 篇文章 0 订阅
2 篇文章 0 订阅

如果用cv2。imread()接口读图像,读进来直接是BGR 格式and 0~255

所以不需要再缩放到【0,255】和通道变换【2,1,0】,不需要transformer.set_raw_scale('data',255)和transformer.set_channel_swap('data',(2,1,0)

###################分割线##########################

若是caffe.io.load_image()读进来是RGB格式和0~1(float)

所以在进行特征提取之前要在transformer中设置transformer.set_raw_scale('data',255)(缩放至0~255)

以及transformer.set_channel_swap('data',(2,1,0)(将RGB变换到BGR)

完毕!


调用caffe model进行特征提取 分类

要注意区分image用何种方法读进来,下面的是用cv2读取的

还可以用caffe.io.loadimage方法

#new model
		self.model_def = self.QSPath + '/SRC/model/NewModel/deploy.prototxt'
		self.model_weights = self.QSPath + '/SRC/model/NewModel/_iter_115000.caffemodel'
		self.mean_file= self.QSPath + '/SRC/model/NewModel/mean.npy'
	# net
		net = caffe.Net(self.model_def,self.model_weights,caffe.TEST)

	#transformer      
		transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})
		transformer.set_transpose('data', (2,0,1))
		transformer.set_mean('data', np.load(self.mean_file).mean(1).mean(1)) # mean ixel 
		# transformer.set_raw_scale('data', 255)# from [0,1] to [0,255]
		# transformer.set_channel_swap('data', (2,1,0)) 
		net.blobs['data'].reshape(1,3,size,size)

		return net, transformer


def caffe_predict(self, img, net, transformer):
        try: 
            # transform it and copy it into the net       
            net.blobs['data'].data[...] = transformer.preprocess('data', img)
            # perform classification
            net.forward()
            feat_vec = net.blobs['loss3/feature1'].data[0]

            output = net.forward()
            out_prob = output['prob'][0]# prob vector

            label = out_prob.argmax()#输出最大概率的那一类
            prob = out_prob[label]# the prob value correspoding to the predict catogory
            return feat_vec, label

        except Exception as e:
            print e
            return 0




  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值