Caffe-MobileNet-SSD

solve_train.prototxt 中的训练超参数含义:

 

  • 训练的网络文件

train_net: "example/MobileNetSSD_train.prototxt" 

  • 测试的网络文件

test_net: "example/MobileNetSSD_test.prototxt"

  • 要与test layer中的batch_size结合起来理解。数据中测试样本总数为67300,一次性执行全部数据效率很低,因此我们将测试数据分成几个批次来执行,每个批次的数量就是batch_size。假设我们设置batch_size为100,则需要迭代673次才能将67300个数据全部执行完。因此test_iter设置为100。执行完一次全部数据,称之为一个epoch

test_iter: 673

  • 测试间隔,每训练1000才进行1次测试

test_interval: 1000

  • 基础学习率

base_lr: 0.0005

  • 每进行10次迭代,屏幕显示信息

display: 10

  • 最大迭代次数

max_iter: 12000

  • 学习率调整策略,lr_policy可以设置为下面这些值,相应的学习率的计算为:

  1. - fixed:   保持base_lr不变.
  2. - step:    如果设置为step,则还需要设置一个stepsize,  返回 base_lr * gamma ^ (floor(iter / stepsize)),其中iter表示当前的迭代次数
  3. - exp:     返回base_lr * gamma ^ iter, iter为当前迭代次数
  4. - inv:      如果设置为inv,还需要设置一个power, 返回base_lr * (1 + gamma * iter) ^ (- power)
  5. - multistep: 如果设置为multistep,则还需要设置一个stepvalue。这个参数和step很相似,step是均匀等间隔变化,multiste则是根据stepvalue值变化
  6. - poly:     学习率进行多项式误差, 返回 base_lr (1 - iter/max_iter) ^ (power)
  7. - sigmoid: 学习率进行sigmod衰减,返回 base_lr ( 1/(1 + exp(-gamma * (iter - stepsize))))

lr_policy: "multistep"

  • 学习率变化指数

gamma: 0.5

  • 权重衰减项,防止过拟合

weight_decay: 0.00005

  • 将训练出来的model和solver状态进行保存,snapshot用于设置训练多少次后进行保存,默认为0,不保存

snapshot: 1000

  • 设置快照保存路径

snapshot_prefix: "snapshot/mobilenet"

  • 设置运行模式。默认为GPU,如果你没有GPU,则需要改成CPU,否则会出错。

solver_mode: GPU

  • 调试信息,默认为false关闭

debug_info: false

  • 在训练之后保存快照

snapshot_after_train: true

  • 测试初始化

test_initialization: false

  • 每经过10次迭代,计算平均loss

average_loss: 10

  • 学习率在该迭代次数时进行调整

stepvalue: 2000

stepvalue: 4000

  • 每次循环iter_size次一计算loss,然后更新loss时使用loss /= param_.iter_size();

iter_size: 1

  • 优化算法
  1. Stochastic Gradient Descent (type: "SGD")
  2. AdaDelta (type: "AdaDelta")
  3. Adaptive Gradient (type: "AdaGrad")
  4. Adam (type: "Adam")
  5. Nesterov’s Accelerated Gradient (type: "Nesterov")
  6. RMSprop (type: "RMSProp")

type: "RMSProp"

  • 这里一定要写检测,默认为classification

eval_type: "detection"

  • mAP的计算方式,十一点插值

ap_version: "11point"


计算caffe中model的整个net以及各个layer的向前、向后传播时间

可以使用下面的命令格式:

/home/xxx/caffe-ssd/build/tools/caffe time --model=examples/yy.prototxt -iterations 100 -gpu 0

  • -/home/xxx/caffe-ssd/build/tools/caffe为caffe的根目录
  • -model为待测model的prototxt文件
  • -iterations后面的100表示迭代100次
  • -gpu 0 表示使用第一张显卡来计算时间,若使用CPU计算,将solver.prototxt的GPU改成CPU,并将-gpu 0去掉就行

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Caffe-MobileNet-SSD)