2017-02-12 9 views
1

どのようにこれを行うのでしょうか。今、私は各イメージを繰り返して転送しなければなりません。私は一度に複数の画像を設定して、あなたは、単一のバッチにすべての画像を入れた後、バッチ全体に対して一度net.forward()を実行することによってこれを行うことができますCaffe - 複数の画像をネットで並列に転送する

for f in fnames: 
    i+=1 
    print i,"/",len(fnames), f 
    img = Image.open(f) 
    # scale all images to 256x256 
    img = img.resize((256,256), PIL.Image.ANTIALIAS) 
    img = numpy.array(img).astype(numpy.float32) 

    transformed_image = transformer.preprocess('data', img) 
    #print transformed_image.shape 

    # use CNN to predict (but don't use predicted class) 
    net.blobs['data'].data[...] = transformed_image 

    output = net.forward() 

答えて

2

を介してそれらを転送できるかどうかを知りたいと思います。

bs = len(fnames) # batch size 
in_shape = net.blobs['data'].data.shape 
in_shape[0] = bs # set new batch size 
net.blobs['data'].reshape(*in_shape) 
net.reshape() 
for i, f in enumerate(fnames): 
    img = Image.open(f) 
    # scale all images to 256x256 
    img = img.resize((256,256), PIL.Image.ANTIALIAS) 
    img = numpy.array(img).astype(numpy.float32) 

    transformed_image = transformer.preprocess('data', img) 
    #print transformed_image.shape 

    # put the image into i-th place in batch 
    net.blobs['data'].data[i,:,:,:] = transformed_image 

# after reading all images into batch, forward once: 
net.forward() 
+0

は、私はちょうど、私のネットのサイズは10(10、3、224、224) – Raaj

+0

@Raajの整形がそれを解決しないで固定されているようで、残念ながらthat..but実行しようとしましたか? – Shai

+0

ここでは形状変更はできません。 3,244,244の部分はRGB画像を参照しています。 10はN個の画像を指す。私は何とかネットオブジェクトを追加/変更することを意味しますか? – Raaj

関連する問題