0

当我尝试使用 Caffe 和 Python(2.7 和 3.5)从预训练的 VGG 16/19 模型中获取输出时,net.forward() 步骤(在我的笔记本电脑的 CPU 上)需要 15 秒以上。

我想知道是否有人会告诉我为什么会这样,就像许多其他模型(即 ResNet、AlexNet)一样,我会在瞬间得到输出,这是迄今为止我发现的唯一一个表现不佳的模型.

我正在使用的代码如下:

img = cv2.imread(path + img_name + '.jpg')
img = transform_img(img,224,224) #Resizes image.
net = caffe.Net(model_prototxt,model_trained,caffe.TEST)
transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})
transformer.set_transpose('data', (2,0,1))
net.blobs['data'].data[...] = transformer.preprocess('data', img)
start = timer()
out = net.forward()
end = timer()
print('Runtime: ' + "{0:.2f}".format(end-start) + 's')

抱歉,这可能是一个非常菜鸟的问题,并提前感谢任何花时间回答的人。

4

1 回答 1

7

VGG-19比它的前辈慢得多请记住,ILSVRC 比赛的指标是准确性(前 1/前 5),与训练时间无关。在一周内训练并获得 95.2% 准确率的模型优于在 2 小时内训练并获得 95.1% 准确率的模型。

计算能力继续接近摩尔定律,因此我们可以自由地开发在再增加几倍时不会实时实用的算法。现在一周内的火车将在五年内花费不到一天的时间。

一般来说,较早的模型会比较晚的模型训练得更快,但准确性较低。这适用于 AlexNet、GoogleNet v1、GoogleNet v2、ResNet 和 VGG。VGG有一个巨大的下降:使其更准确的拓扑创新严重降低了训练速度。

于 2017-03-22T16:40:07.297 回答