1. 转imdb灰度图数据
一定要加上--gray,否则训练时报如下错误:
GLOG_logtostderr=1 $TOOLS/convert_imageset \
--resize_height=$RESIZE_HEIGHT \
--resize_width=$RESIZE_WIDTH \
--shuffle \
--gray \
$TRAIN_DATA_ROOT \
$DATA/train.txt \
$EXAMPLE/train_lmdb
echo "Creating val lmdb..."
GLOG_logtostderr=1 $TOOLS/convert_imageset \
--resize_height=$RESIZE_HEIGHT \
--resize_width=$RESIZE_WIDTH \
--shuffle \
--gray \
$VAL_DATA_ROOT \
$DATA/val.txt \
$EXAMPLE/val_lmdb
2. fine-tune训练网络
在上一步生成lmdb的时候有一个参数是--gray,这样生成的lmdb就是单通道了,然后就是需要修改一下第一个卷基层的名字,这一层会被随机初始化,通过finetune的方式进行学习
layer {
bottom: "data"
top: "conv1"
name: "myconv1" #修改该层名字
type: "Convolution"
convolution_param {
num_output: 64
kernel_size: 7
pad: 3
stride: 2
weight_filler {
type: "msra"
}
}
}
3.更改ResNet_50_deploy.prototxt输入数据为单通道
name: "ResNet-50"
input: "data"
input_dim: 1
input_dim: 1
input_dim: 224
input_dim: 896
(1,1,224,896)分别对应一张图片,单通道灰度图,图像高度和图像宽度
4.mean.binaryproto转换为mean.npy文件
#!/usr/bin/env python
import numpy as np
import sys
import caff