digits —segmentation demo

来源:互联网 发布:淘宝直通车权重怎么看 编辑:程序博客网 时间:2024/06/03 23:42

digits 自带一个分割项目,这里记录一下过程

项目的目的是为了将空心的三角形变成实心的,也就是一个边缘检测的过程,但是又稍微不一样。这里是将内部和外部区分的一个过程。这里写图片描述

数据库的建立:
分割的数据样本的要求是一个特征数据库、一个标签数据库,二者的图像尺寸一致,输入图像可以是任何形式的,而输出图像一般都是二值化的。这里建立的数据库是由脚本自动生成的。
由于是在windows下运行,会有很多不便,所有会与官方文档有所出入。
首先在C:\caffe-master\DIGITS-master\examples\binary-segmentation下执行脚本:

 python C:\caffe-master\DIGITS-master\examples\binary-segmentation\create_images.py out

完成后会出现一个文件夹命名为out里面有输入输出两个文件夹每个文件夹里面有10000个32*32的图像文件。根目录下还有一个测试用的grid.png文件,用于最后的测试

开启digits的datasets选择image下的processing选项。
这里写图片描述
点击create就好了。

建立模型
在home界面选择model新建一个process的模型将Data Transformations下的Subtract Mean设置为pixel,将training epochs设置为200。
将learning rate设置成1e-7

再将这里的代码复制过去放到 Custom network下的代码框

由于本机使用的windows下的caffe是旧版本,不支持L1Loss 层这个类型,所以换成EuclideanLoss ,并将学习率调整到0.1

name: "SRCNN"layer {  name: "data"  type: "Data"  top: "data"  include {    phase: TRAIN  }  data_param {    batch_size: 4    backend: LMDB  }}layer {  name: "label"  type: "Data"  top: "label"  include {    phase: TRAIN  }  data_param {    batch_size: 4    backend: LMDB  }}layer {  name: "data"  type: "Data"  top: "data"  include {    phase: TEST  }  data_param {    batch_size: 4    backend: LMDB  }}layer {  name: "label"  type: "Data"  top: "label"  include {    phase: TEST  }  data_param {    batch_size: 4    backend: LMDB  }}layer {  name: "conv1"  type: "Convolution"  bottom: "data"  top: "conv1"  param {    lr_mult: 1.0  }  param {    lr_mult: 0.10000000149  }  convolution_param {    num_output: 32    pad: 1    kernel_size: 3    stride: 1    weight_filler {      type: "gaussian"      std: 0.0010000000475    }    bias_filler {      type: "constant"      value: 0.0    }  }}layer {  name: "relu1"  type: "ReLU"  bottom: "conv1"  top: "conv1"}layer {  name: "conv2"  type: "Convolution"  bottom: "conv1"  top: "conv2"  param {    lr_mult: 1.0  }  param {    lr_mult: 0.10000000149  }  convolution_param {    num_output: 1024    pad: 0    kernel_size: 16    stride: 16    weight_filler {      type: "gaussian"      std: 0.0010000000475    }    bias_filler {      type: "constant"      value: 0.0    }  }}layer {  name: "relu2"  type: "ReLU"  bottom: "conv2"  top: "conv2"}layer {  name: "upsample"  type: "Deconvolution"  bottom: "conv2"  top: "upsample"  param {    lr_mult: 1.0  }  convolution_param {    num_output: 1    pad: 0    kernel_size: 16    stride: 16    bias_filler {      type: "constant"      value: 128.0    }  }}layer {  name: "lossL1"  type: "EuclideanLoss "  bottom: "upsample"  bottom: "label"  top: "lossL1"  loss_weight: 0.1  exclude {    stage: "deploy"  }}

create就可以运行了。
这里写图片描述
这里还没跑完,不过结果已经非常不错了。
最后结果大概是这样:
这里写图片描述

0 0
原创粉丝点击