我使用SSD-Caffe分支here生成了LMDB数据库。我已经成功生成了VOC LMDB trainval / test LMDB目录,并且能够训练模型。
但是,在培训期间,从LMDB数据库加载数据的时间非常之长。例如,在使用Caffe的time
函数进行概要分析时,使用以下命令:
ssdcaffe time --model "jobs/VGGNet/VOC0712/SSD_300x300/train.prototxt" --gpu 0 --iterations 20
我知道向前通过平均需要8.9s,向后通过平均需要0.5s。在逐层检查中,数据注入层将大部分时间花费在8.7s上。见下文:
I1129 10:14:11.094445 8011 caffe.cpp:404] data forward: 8660.38 ms.
...
I1129 10:14:11.095383 8011 caffe.cpp:412] Average Forward pass: 8933.31 ms.
I1129 10:14:11.095389 8011 caffe.cpp:414] Average Backward pass: 519.549 ms.
如果我将批处理大小的一半从32减少到16,那么数据注入层的时间大约减少了一半:
I1129 10:20:07.975527 8093 caffe.cpp:404] data forward: 3906.53 ms.
这显然不是预期的速度,出了点问题。任何帮助将不胜感激!
答案 0 :(得分:0)
发现了我的问题:
我的图像太大。回购使用的标准VOC图像约为350x500像素,而我的图像为1080x1920。当我将图片缩小3倍(例如,像素减少9倍)时,我的数据提取层仅花费了181ms(与之前8.6秒的速度相比提高了48倍)