我想让我的分类过程更快一点。我想在我的deploy.prototxt中增加第一个deploy.prototxt,但这似乎行不通。甚至比一幅一幅地分类还要慢一些。
deploy.prototxt
input: "data"
input_dim: 128
input_dim: 1
input_dim: 120
input_dim: 160
... net description ...python网初始化
net=caffe.Net( 'deploy.prototxt', 'model.caffemodel', caffe.TEST)
net.blobs['data'].reshape(128, 1, 120, 160)
transformer = caffe.io.Transformer({'data':net.blobs['data'].data.shape})
#transformer settingspython分类
images=[None]*128
for i in range(len(images)):
images[i]=caffe.io.load_image('image_path', False)
for j in range(len(images)):
net.blobs['data'].data[j,:,:,:] = transformer.preprocess('data',images[j])
out = net.forward()['prob']我跳过了一些细节,但重要的东西应该给出。我尝试了不同的批次大小,比如32,64,.,1024,但几乎都一样。所以我的问题是,如果有人知道我做错了什么,或者需要改变什么?谢谢你帮忙!
编辑:
一些定时结果,avg-次数只是被处理过的图像(1044)划分的总次数.
批次大小:1
2016-05-04 10:51:20,721 -探测器-信息-数据形状:(1,1,120,160) 2016-05-04 10:51:35,149 - main - INFO - GPU时间: 2016-05-04 10:51:35,149 - main -信息处理图像: 1044 2016-05-04 10:51:35,149 - main - INFO -总时间: 14.43s 2016-05-04 10:51:35,149 - main - INFO -avg-时间: 13.82ms 2016-05-04 10:51:35,149 - main - INFO - load-time: 8.31s 2016-05-04 10:51:35,149 -主- INFO -avg-加载时间: 7.96ms 2016-05-04 10:51:35,149 -主-信息-分类-时间:5.99 2016-05-04 10:51:35,149 -主- INFO -avg-分类-时间: 5.74ms
批次大小: 32
2016-05-04 10:52:30,773 -探测器-信息-数据形状:(32,1,120,160) 2016-05-04 10:52:45,135 - main - INFO - GPU时间: 2016-05-04 10:52:45,135 - main -信息处理图像: 1044 2016-05-04 10:52:45,135 - main - INFO -总时间:14.36 s 2016-05-04 10:52:45,136 - main - INFO -avg-时间: 13.76ms 2016-05-04 10:52:45,136 - main - INFO - load-time: 7.13s 2016-05-04 10:52:45,136 -主- INFO -avg-加载时间: 6.83ms 2016-05-04 10:52:45,136 -主-信息-分类-时间: 7.13s 2016-05-04 10:52:45,136 -主- INFO -avg-分类-时间: 6.83ms
批次大小: 128
2016-05-04 10:53:17,478 -探测器-信息-数据形状:(128,1,120,160) 2016-05-04 10:53:31,299 - main - INFO - GPU时间: 2016-05-04 10:53:31,299 - main -信息处理图像: 1044 2016-05-04 10:53:31,299 - main - INFO -总时间:13.82 s 2016-05-04 10:53:31,299 - main - INFO -avg-时间: 13.24ms 2016-05-04 10:53:31,299 - main - INFO - load-time: 7.06s 2016-05-04 10:53:31,299 -主- INFO -avg-加载时间: 6.77ms 2016-05-04 10:53:31,299 - main - INFO -分类-时间:6.66 s 2016-05-04 10:53:31,299 -主- INFO -avg-分类-时间: 6.38ms
批次大小: 1024
2016-05-04 10:54:11,546 -探测器-信息-数据形状:(1024,1,120,160) 2016-05-04 10:54:25,316 - main - INFO - GPU时间: 2016-05-04 10:54:25,316 - main -信息处理图像: 1044 2016-05-04 10:54:25,316 - main - INFO -总时间: 13.77s 2016-05-04 10:54:25,316 - main - INFO - avg-time: 13.19ms 2016-05-04 10:54:25,316 - main - INFO - load-time: 7.04s 2016-05-04 10:54:25,316 - main - INFO - avg-load-time: 6.75ms 2016-05-04 10:54:25,316 - main - INFO -分类-时间: 6.63s 2016-05-04 10:54:25,316 - main - INFO -avg-分类-时间: 6.35ms
发布于 2016-05-03 19:46:22
我很确定这个问题已经解决了
for j in range(len(images)):
net.blobs['data'].data[j,:,:,:] = transformer.preprocess('data',images[j])
out = net.forward()['prob']这样做只需将for循环最后一次迭代中的单个图像数据设置为网络的唯一输入。尝试预先堆叠N图像(如stackedimages),只调用一行一次。
for j in range(len(images)):
stackedimages <- transformer.preprocess('data',images[j])然后打电话,
net.blobs['data'].data[...] = stackedimageshttps://stackoverflow.com/questions/37003575
复制相似问题