caffe ssd中输入图片大小对于内存使用和运行时间的影响

caffe ssd中输入图片大小对于内存使用和运行时间的影响

一、内存使用
        环境为caffe下以imagenet为样本集训练resnset网络。      
在初始化生成lmdb的create_imagenet.sh脚本中,resize参数分别设置为256*256和512*512。
#!/usr/bin/env sh
# Create the imagenet lmdb inputs
# N.B. set the path to the imagenet train + val data dirs
set -e

EXAMPLE=/home/chhuang/workspace/deep_learning/bvlc_alexnet
DATA=/home/chhuang/workspace/deep_learning/data/imagenet
TOOLS=/home/softwares/caffe-master/build/tools

TRAIN_DATA_ROOT=/home/softwares/data/Imagenet/ILSVRC2012/ILSVRC2012_img_train/
VAL_DATA_ROOT=/home/softwares/data/Imagenet/ILSVRC2012/ILSVRC2012_img_val/

# Set RESIZE=true to resize the images to 256x256. Leave as false if images have
# already been resized using another tool.
RESIZE=true
if $RESIZE; then
  RESIZE_HEIGHT=512             //这里改256和512
  RESIZE_WIDTH=512
else
  RESIZE_HEIGHT=0
  RESIZE_WIDTH=0
fi

if [ ! -d "$TRAIN_DATA_ROOT" ]; then
  echo "Error: TRAIN_DATA_ROOT is not a path to a directory: $TRAIN_DATA_ROOT"
  echo "Set the TRAIN_DATA_ROOT variable in create_imagenet.sh to the path" \
       "where the ImageNet training data is stored."
  exit 1
fi

if [ ! -d "$VAL_DATA_ROOT" ]; then
  echo "Error: VAL_DATA_ROOT is not a path to a directory: $VAL_DATA_ROOT"
  echo "Set the VAL_DATA_ROOT variable in create_imagenet.sh to the path" \
       "where the ImageNet validation data is stored."
  exit 1
fi

echo "Creating train lmdb..."

GLOG_logtostderr=1 $TOOLS/convert_imageset \
    --resize_height=$RESIZE_HEIGHT \
    --resize_width=$RESIZE_WIDTH \
    --shuffle \
    $TRAIN_DATA_ROOT \
    /home/softwares/data/Imagenet/ILSVRC2012/trainsmall.txt \
    /home/softwares/data/Imagenet/ILSVRC2012/ilsvrc12_train_small_lmdb


echo "Done."

随后运行caffe tools中的train,观察使用的内存情况。(由于考量的是最终在测试过程中的内存使用, 所以选择的batch-size为1

50层resnet下:
输入图像lmdb为 256*256的情况:
Memory required for data: 302796532

输入图像lmdb512*512的情况:
Memory required for data:1211780852
512*512内存使用情况基本是256*256内存使用的4倍。这也与实际情况相符合。

二、运行时间

由于最终使用ssd结构,所以在ssd中测试一下不同输入图片大小对于运行时间的影响。
在ssd下运行VGGnet VOC数据集相同网络结构,不同的是输入分别为300*300和500*500.
运行在cpu下测试42张图片做detection。
300*300的sh为:
#!/bin/sh
date
sudo .build_release/examples/ssd/ssd_detect.bin models/VGGNet/VOC0712/SSD_300x300/deploy.prototxt models/VGGNet/VOC0712/SSD_300x300/VGG_VOC0712_SSD_300x300_iter_60000.caffemodel image.txt
date

其结果为:
Script started on 2016年12月01日 星期四 09时46分34秒
root@fox:~/ssd/caffe# sudo sh test300.sh 
2016年 12月 01日 星期四 09:46:40 CST
I1201 09:46:40.683648 16505 upgrade_proto.cpp:67] Attempting to upgrade input file specified using deprecated input fields: models/VGGNet/VOC0712/SSD_300x300/deploy.prototxt
I1201 09:46:40.683956 16505 upgrade_proto.cpp:70] Successfully upgraded file specified using deprecated input fields.
W1201 09:46:40.683977 16505 upgrade_proto.cpp:72] Note that future Caffe releases will only support input layers and not input fields.
I1201 09:46:40.685127 16505 net.cpp:58] Initializing net from parameters: 
name: "VGG_VOC0712_SSD_300x300_deploy"
state {
  phase: TEST
  level: 0
}
layer {
  name: "input"
  type: "Input"
  top: "data"
  input_param {
    shape {
      dim: 1
      dim: 3
      dim: 300
      dim: 300
    }
  }
}
layer {
  name: "conv1_1"
//......  
//......  
//layers
//.......
//.......
I1201 09:46:41.058290 16505 net.cpp:761] Ignoring source layer mbox_loss
pic/testimg00001.jpg 4 0.022213 1147 33 1419 553
pic/testimg00001.jpg 5 0.0262909 1001 329 1076 453
pic/testimg00001.jpg 5 0.0216578 796 250 877 416
pic/testimg00001.jpg 5 0.0152326 813 311 919 443
pic/testimg00001.jpg 5 0.0121413 711 863 823 1027
pic/testimg00001.jpg 5 0.0115996 933 277 1023 435
pic/testimg00001.jpg 6 0.0315219 7 191 141 321
pic/testimg00001.jpg 6 0.0190812 4 312 344 434
pic/testimg00001.jpg 6 0.017554 8 259 347 387
//........
//........
//检测结果
//........
//........
pic/testimg00042.jpg 7 0.567194 22 44 1954 1045
pic/testimg00042.jpg 15 0.0142565 1643 186 1907 888
pic/testimg00042.jpg 15 0.0129933 1517 334 1665 537
pic/testimg00042.jpg 15 0.0128657 1812 142 1924 347
pic/testimg00042.jpg 15 0.0127175 999 229 1854 977
pic/testimg00042.jpg 15 0.0125595 1746 152 1920 556
pic/testimg00042.jpg 15 0.0100875 1708 112 1915 345
pic/testimg00042.jpg 19 0.206236 -20 76 1929 1003
pic/testimg00042.jpg 20 0.0203152 -20 76 1929 1003
2016年 12月 01日 星期四 09:47:40 CST


300*300下,测试42张图片时间从9:46:41-9:47:40总共用了59秒

500*500的sh为:
#!/bin/sh
date
sudo .build_release/examples/ssd/ssd_detect.bin models/VGGNet/VOC0712/SSD_500x500/deploy.prototxt models/VGGNet/VOC0712/SSD_500x500/VGG_coco_SSD_500x500_iter_200000.caffemodel image.txt
date

其结果为:
Script started on 2016年12月01日 星期四 09时51分22秒
root@fox:~/ssd/caffe# sh[K[Ksudo sh test500.sh 
2016年 12月 01日 星期四 09:51:30 CST
I1201 09:51:30.804812 16567 upgrade_proto.cpp:67] Attempting to upgrade input file specified using deprecated input fields: models/VGGNet/VOC0712/SSD_500x500/deploy.prototxt
I1201 09:51:30.805297 16567 upgrade_proto.cpp:70] Successfully upgraded file specified using deprecated input fields.
W1201 09:51:30.805342 16567 upgrade_proto.cpp:72] Note that future Caffe releases will only support input layers and not input fields.
I1201 09:51:30.807884 16567 net.cpp:58] Initializing net from parameters: 
name: "VGG_coco_SSD_500x500_deploy"
state {
  phase: TEST
  level: 0
}
layer {
  name: "input"
  type: "Input"
  top: "data"
  input_param {
    shape {
      dim: 1
      dim: 3
      dim: 500
      dim: 500
    }
  }
}
layer {
  name: "conv1_1"
//......  
//......  
//layers
//.......
//.......
I1201 09:51:32.158409 16567 net.cpp:761] Ignoring source layer mbox_loss
pic/testimg00001.jpg 1 0.698755 636 628 754 949
pic/testimg00001.jpg 1 0.253025 1042 586 1140 874
pic/testimg00001.jpg 1 0.238435 743 691 860 959
pic/testimg00001.jpg 1 0.118032 1060 422 1259 888
pic/testimg00001.jpg 1 0.0983797 684 677 818 971
pic/testimg00001.jpg 1 0.0951707 713 634 771 724
pic/testimg00001.jpg 1 0.0922268 1008 373 1037 439
pic/testimg00001.jpg 1 0.0918469 923 521 1012 557
pic/testimg00001.jpg 1 0.0912337 1119 361 1239 553
//........
//........
//检测结果
//........
//........

pic/testimg00042.jpg 74 0.0312432 1747 396 1800 439pic/testimg00042.jpg 74 0.0304748 1842 389 1907 462pic/testimg00042.jpg 74 0.0272788 1736 352 1925 423pic/testimg00042.jpg 74 0.0269475 1713 397 1787 439pic/testimg00042.jpg 76 0.0348364 1078 304 1143 365pic/testimg00042.jpg
 76 0.0292064 1120 308 1168 3632016年 12月 01日 星期四 09:54:34 CST




500*500下,测试42张图片从9:51:32-9:54:34总共用了182秒。

500*500的图像尺寸是300*300的(500*500)/(300*300)=2.778倍,所用时间是182/59=3.085倍,时间影响大致与尺寸成1:1关系。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值