(4) The difference between caffe.io.load_image() and cv2.imread() reading images

cv2.imread()

If you use the cv2.imread() interface to read the image, the read is directly in BGR format and 0~255

So no need to rescale to [0,255] and channel transformation [2,1,0], no need for transformer.set_raw_scale('data',255) and transformer.set_channel_swap('data',(2,1,0)

caffe.io.load_image()

If caffe.io.load_image() reads in RGB format and 0~1 (float)

So before feature extraction, set transformer.set_raw_scale('data', 255) in the transformer (scale to 0~255)

and transformer.set_channel_swap('data',(2,1,0)(convert RGB to BGR)

complete!


Call the caffe model for feature extraction and classification. Pay attention to distinguish which method the image is read in.

Demo


#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

#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

Original link

  1. About the difference between reading images with cv2.imread() and caffe.io.load_image() during feature extraction

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325162647&siteId=291194637