针对《图像语义分割(1)- FCN》介绍的FCN算法,以官方的代码为基础,在 SIFT-Flow 数据集上做训练和测试。
介绍了如何制作自己的训练数据
数据准备
参考文章《FCN网络的训练——以SIFT-Flow 数据集为例》
1) 首先 clone 官方工程
git clone https://github.com/shelhamer/fcn.berkeleyvision.org.git
工程是基于 CAFFE 的,所以也需要提前安装好
2)下载数据集及模型
- 到这里下载 SIFT-Flow 数据集,解压缩到 fcn/data/sift-flow/ 下
- 到这里下载 VGG-16 预训练模型,移动到 fcn/ilsvrc-nets/ 下
- 参考文章《 FCN模型训练中遇到的困难》,到这里下载 VGG_ILSVRC_16_layers_deploy.prototxt
或者直接 copy 以下内容:
name: "VGG_ILSVRC_16_layers"
input: "data"
input_dim: 10
input_dim: 3
input_dim: 224
input_dim: 224
layers {
bottom: "data"
top: "conv1_1"
name: "conv1_1"
type: CONVOLUTION
convolution_param {
num_output: 64
pad: 1
kernel_size: 3
}
}
layers {
bottom: "conv1_1"
top: "conv1_1"
name: "relu1_1"
type: RELU
}
layers {
bottom: "conv1_1"
top: "conv1_2"
name: "conv1_2"
type: CONVOLUTION
convolution_param {
num_output: 64
pad: 1
kernel_size: 3
}
}
layers {
bottom: "conv1_2"
top: "conv1_2"
name: "relu1_2"
type: RELU
}
layers {
bottom: "conv1_2"
top: "pool1"
name: "pool1"
type: POOLING
pooling_param {
pool: MAX
kernel_size: 2
stride: 2
}
}
layers {
bottom: "pool1"
top: "conv2_1"
name: "conv2_1"
type: CONVOLUTION
convolution_param {
num_output: 128
pad: 1
kernel_size: 3
}
}
layers {
bottom: "conv2_1"
top: "conv2_1"
name: "relu2_1"
type: RELU
}
layers {
bottom: "conv2_1"
top: "conv2_2"
name: "conv2_2"
type: CONVOLUTION
convolution_param {
num_output: 128</