2017-02-12 2 views
1

Wie genau würde man das machen? Im Moment muss ich jedes Bild durchlaufen und weiterleiten. Ich würde gerne wissen, ob ich mehrere Bilder auf einmal an und übermittelt sie durchCaffe - Mehrere Bilder parallel durch ein Netz weiterleiten

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() 

Antwort

2

Sie können dies tun, indem alle Bilder in einer einzigen Charge eingestellt und dann net.forward() einmal für die gesamte Charge läuft.

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

Ich habe gerade versucht that..but leider zu tun, es ist die Größe meines Netzes scheint (3 10, 224, 224) bei 10 befestigt ist – Raaj

+0

@Raaj Umbildung dass nicht lösen ist? – Shai

+0

Umformung würde hier nicht funktionieren. Der 3.244.244-Teil bezieht sich auf das RGB-Bild. 10 bezieht sich auf N Bilder. Meinst du ich irgendwie an das Netzobjekt anhängen? – Raaj

Verwandte Themen