如何学习在deeplab v3上使用我的数据集加

时间:2018-06-05 01:58:30

标签: python tensorflow convolutional-neural-network semantic-segmentation

在deeplab v3p中,虽然我训练了我的数据集,但它没有用。 为什么?

我的环境如下:

OS Platform and Distribution: Ubuntu 16.04 lts
TensorFlow installed from: conda
TensorFlow version: 18
Bazel version: no
CUDA/cuDNN version: cuda 9 cudnn 7
GPU model and memory: titan x (2 cards), 64gb memory
Exact command to reproduce: -

我做了以下工作:

a)生成简单数据集:

训练图像随机排列两个图形(圆形和矩形)并随机绘制颜色。 标签图像设置为背景为0RGB(0,0,0),矩形为1 RGB(1,1,1),圆为2RGB(2,2,2),255为RGB(255,255, 255)将该行作为分割。

https://camo.qiitausercontent.com/2be21942628a85c46fd8ffb99e05b257b4b0c980/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f39353633362f62653262306638632d333933322d363434322d336132342d6534306333613466653865612e706e67

https://camo.qiitausercontent.com/323d4f21d792138ebb52f994dc42cc0b5d3ab30d/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f39353633362f34656633633261332d633533372d316134632d653633342d3165663632643734623166392e706e67

b)转换为tf.record

build_voc2012_data.py中,我将原始数据集的文件路径更改为我的数据集。 然后,我运行它并创建了tf.record。

c)培训

segmentation_dataset.py中,我添加了DATASETS INFORMATION。

_MYDATASETS_INFORMATION = DatasetDescriptor(
    splits_to_sizes={
        'train': 10000,
        'trainval': 1000,
        'val': 1000,
    },
    num_classes=3,
    ignore_label=255,
)


 _DATASETS_INFORMATION = {
     'cityscapes': _CITYSCAPES_INFORMATION,
     'pascal_voc_seg': _PASCAL_VOC_SEG_INFORMATION,
     'ade20k': _ADE20K_INFORMATION,
     'mydata': _MYDATASETS_INFORMATION
 }

然后,我开始训练。

python train.py   --logtostderr   --train_split=trainval   --model_variant=xception_65   --atrous_rates=6   --atrous_rates=12   --atrous_rates=18   --output_stride=16   --decoder_output_stride=4   --train_crop_size=513   --train_crop_size=513   --train_batch_size=4   --training_number_of_steps=1000000   --fine_tune_batch_norm=true   --tf_initial_checkpoint="./datasets/y/model.ckpt"  --train_logdir="./datasets/x"  --dataset_dir="./datasets/z/tfrecord" --dataset=mydata

d)完成培训

由于一百万次迭代,最小损失为4.765。 当它开始训练时,它是7.56。

e)VIS。 两个测试图像。

输入图片:https://camo.qiitausercontent.com/e37afb4ae0e5232a0c0828dad779a4a852462a45/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f39353633362f64363930326231622d386164302d306366612d656433642d6436346537383462636134322e706e67

输出图片: https://camo.qiitausercontent.com/d638a2fc7fe5f5119e2f00d7c0aa59b9b8fc73d4/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f39353633362f36643963643265372d373234362d636434612d303566322d6335623266396237623865352e706e67

输入图片:https://camo.qiitausercontent.com/8fe89aa43aac3a322ede1ac46d469fc48da6b809/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f39353633362f64313162643834372d323734372d643530642d393366642d6231353661353137613934632e706e67

输出图片: https://camo.qiitausercontent.com/94f15de43ce6195bdc8602b800d1275a4830193c/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f39353633362f63623061666663652d613566302d363333302d306362382d6261393964363735333734652e706e67

从上面的结果来看,我认为Deeplab v3效果不佳。 我的用法错了吗?或者参数设置不正确? 或者学习不够?

1 个答案:

答案 0 :(得分:2)

这里的问题是您的训练批次大小(--train_batch_size=4)太小。您需要具有更大的批次大小。

请参阅 Tradeoff batch size vs. number of iterations to train a neural network,以便更好地选择更准确的值。