私の分類プロセスを少し速くしようとしています。私はdeploy.prototxtの最初のinput_dimを増やすことを考えましたが、それはうまくいかないようです。各画像を1つずつ分類するよりも少し遅いです。deploy.prototxtでcaffeのバッチサイズが機能しない
deploy.prototxt
input: "data"
input_dim: 128
input_dim: 1
input_dim: 120
input_dim: 160
... net description ...
パイソンネット初期化
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 settings
Pythonの分類
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のような異なるバッチサイズを試しましたが、ほぼ同じです。だから私の質問は、誰かが私が間違っていることや変更が必要なことを考えている場合です。 助けてくれてありがとう!
編集:
いくつかのタイミングの結果、平均時間は処理された画像(1044)によって除算された合計時間に過ぎません。
バッチサイズ:1
2016年5月4日10:51:20721 - 検出 - INFO - データの形状:(1、1、120、160)
2016年5月4日10: 51:35149 - 主 - INFO - GPUタイミング:
2016年5月4日10:51:35149 - 主 - INFO - 処理された画像:1044
2016年5月4日10:51:35149 - メイン - 情報 - 合計:14.43秒
2016-05-04 10 :51:35149 - 主 - INFO - 平均時間:13.82ms
2016年5月4日10:51:35149 - 主は - INFO - ロード時間:8.31s
2016年5月4日10 :51:35149 - 主 - INFO - 平均負荷時間:7.96ms
2016年5月4日10:51:35149 - 主 - INFO - 分類時間:5.99s
2016-05- 04 10:51:35,149 - メイン - INFO - 平均分類時間:5.74ms
バッチサイズ:32
2016年5月4日10:52:30773 - 検出 - INFO - データの形状:(32、1、120、160)
2016年5月4日10:52:45135 - メイン - INFO - GPUタイミング:
2016年5月4日10:52:45135 - 主 - INFO - 処理された画像:1044
2016年5月4日10:52:45135 - 主 - 情報 - 合計時間:14.36秒
2016-05-04 10:52:45,136 - メイン - 情報量 - 平均:13.76m s
2016-05-04 10:52:45,136 - メイン - INFO - 読み込み時間:7。13S
2016年5月4日10:52:45136 - 主 - INFO - 平均負荷時間:6.83ms
2016年5月4日10:52:45136 - 主 - INFO - 分類時間:7.13s
2016年5月4日10:52:45136 - 主 - INFO - 平均-分類時間:6.83ms
バッチサイズ:128
2016-05- 04 10:53:17,478 - 検出器 - 情報 - データ形状:(128,1,12 0、160)
2016年5月4日10:53:31299 - 主 - INFO - GPUタイミング:
2016年5月4日10:53:31299 - 主 - INFO - 処理された画像:1044
2016年5月4日10:53:31299 - 主 - INFO - 合計時間:13.82s
2016年5月4日10:53:31299 - 主 - INFO - 平均 - 時間:
を13.24ms 2016-05-04 10:53:31,299 - メイン - INFO - 読み込み時間:7.06s
2016-05-04 10:53:31,299 - メイン - INFO - 平均負荷時間:6.77ms
2016年5月4日10:53:31299 - 主 - INFO - 分類-時間:6.66s
2016年5月4日10時53分: 31299 - 主 - INFO - 平均-分類時間:6.38ms
バッチサイズ:1024
2016年5月4日10:54:11546 - 検出 - INFO - データの形状: (1024,1,120,160)
2016-05-04 10:54:25316-メイン - INFO - GPUタイミング:
2016年5月4日10:54:25316 - 主 - INFO - 処理された画像:1044
2016年5月4日10:54:25316 - 主 - INFO - 総時間:13.77s
2016年5月4日10:54:25316 - メイン - INFOは - 平均時間は: - メイン - INFO 25316:54:
2016年5月4日10 13.19ms - 読み込み時間:7.04秒
2016-05-04 10:54:25,316 - メイン - 情報量 - 読み込み時間:6.75ms
2016年5月4日10:54:25316 - 主 - INFO - 分類-時間:6.63s
2016年5月4日10:54:25316 - 主 - INFO - 平均-分類時間: 6.35ms
を呼びますか? – Shai
私はGPUを使用しています:nvidia GTX980 Ti – Feuerteufel
"すべてほぼ同じ"とはどういう意味ですか? 'net.forward()'の実行時間は 'batch_size'に関係なく同じか、' batch_size'でランタイム*を*分割したものは "ほぼ同じ"ですか?ここに数字を入れてもいいですか? – Shai