2017-02-12 25 views
1

Как именно это можно сделать. Прямо сейчас, я должен проходить через каждое изображение и пересылать его. Я хотел бы знать, если я могу установить несколько изображений одновременно и пересылать их через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

Вы можете сделать это, поместив все изображения в пакетном режиме, а затем запустить net.forward() один раз для всей партии.

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

Я просто попытался сделать that..but, к сожалению, кажется, что размер моей сети фиксируется на 10. (10, 3, 224, 224) – Raaj

+0

@Raaj перепрофилирование не решает, что? – Shai

+0

перестройка не будет работать здесь. Часть 3 244 244 относится к изображению RGB. 10 - N изображений. Вы имеете в виду, что я каким-то образом добавляю/изменяю сетевой объект? – Raaj