LRCN代码复现3

来源:互联网 发布:淘宝卖家祝福语范文 编辑:程序博客网 时间:2024/06/06 01:06

训练单帧RGB模型

run_singleFrame_RGB.sh

single frame model 是在模型caffe_imagenet_hyb2_wr_rc_solver_sqrt_iter_310000的基础上finetune而来的 ,该脚本里面主要内容就是下面这句话

caffe train -solver singleFrame_solver_RGB.prototxt -weights  caffe_imagenet_hyb2_wr_rc_solver_sqrt_iter_310000 

-solver

singleFrame_solver_RGB.prototxt 内容如下

net: "train_test_singleFrame_RGB.prototxt"test_iter: 75 test_state: { stage: 'test-on-test' }test_interval: 100base_lr: 0.001lr_policy: "step"gamma: 0.1stepsize: 3000display: 20max_iter: 5000momentum: 0.9weight_decay: 0.005  snapshot: 5000snapshot_prefix: "snapshots_singleFrame_RGB"solver_mode: GPUdevice_id: 0 random_seed: 1701

net

现在我们知道啦,solver除了指定net,还要指定其他一些参数。这个solver里使用的net是train_test_singleFrame_flow.prototxt ,以下是网络结构中的前两层

name: "singleFrame_RGB"layer {  name: "data"  type: "ImageData"  top: "data"  top: "label"  include {    phase: TRAIN      #训练阶段输入层  }  transform_param {    mirror: true    crop_size: 227    mean_value: 103.939    mean_value: 116.779    mean_value: 123.68    flow: false  }  image_data_param {    source: "ucf101_singleFrame_RGB_train_split1.txt"    root_folder: "frames/"    batch_size: 128    new_height: 240    new_width: 320  }}

如果想测试,把caffe后的train改成test即可,训练和测试只是data层不一样
训练好model 的名字是什么,输出在哪定义
如果pretrained model 和自己的网络模型不一样怎么办
需要用那些参数,参数如何配置,比如只配置前几层的参数?

训练单帧flow模型

run_singleFrame_flow.sh 中主要是一下这句话

caffe train -solver singleFrame_solver_flow.prototxt -weights caffe_imagenet_hyb2_wr_rc_solver_sqrt_iter_310000 

-solver

net: "train_test_singleFrame_flow.prototxt"test_iter: 75 test_state: { stage: 'test-on-test' }test_interval: 100base_lr: 0.001lr_policy: "step"gamma: 0.1stepsize: 20000display: 20max_iter: 50000momentum: 0.9weight_decay: 0.005  snapshot: 5000snapshot_prefix: "snapshots_singleFrame_flow"solver_mode: GPUdevice_id: 1 random_seed: 1701

- net

layer {   name: "data"   type: "ImageData"   top: "data"   top: "label"   include {     phase: TRAIN   }   transform_param {     mirror: true     crop_size: 227     mean_value: 128     mean_value: 128     mean_value: 128     flow: true   }   image_data_param {     source: "ucf101_singleFrame_flow_train_split1.txt"                  root_folder: "flow_images/"  #需要修改的地方    batch_size: 128     min_height: 227     min_width: 227   } } 

训练lstm_RGB模型

将single frame RGB的训练结果当做pretrained权重,来训练lstm模型

run_lstm_RGB.sh

caffe train -solver lstm_solver_RGB.prototxt -weights single_frame_all_layers_hyb_RGB_iter_5000.caffemodel   

-solver

lstm_solver_RGB.prototxt

net

layer {   name: "data"   type: "Python"   top: "data"   top: "label"   top: "clip_markers"   python_param {     module: "sequence_input_layer"     layer: "videoReadTrain_RGB"   }   include: { phase: TRAIN } } 

lstm模型的数据层是python模块,而single模型的第一层是直接输入img 。
下面我们就来看看这个python模块

input

sequence_input_layer.py (没有main函数)

flow_frames = 'flow_images/' RGB_frames = 'frames/' test_frames = 16  train_frames = 16 test_buffer = 3 train_buffer = 24 

修改RGB图片和光流图片的路径

-weight

是singleframe模型训练好的single_frame_all_layers_hyb_RGB_iter_5000.caffemodel

训练lstm_flow模型

run_lstm_flow.sh

原创粉丝点击