我可以将deeplab调整为Tensorflow中的自定义数据集吗?

mrB*_*ean 7 tensorflow pre-trained-model

我想使用自己的数据集自定义deeplab进行图像分割吗?通过再培训可以做到吗?

小智 6

Deeplab官方教程页面上,训练命令如下所示:

python deeplab/train.py \
    --logtostderr \
    --training_number_of_steps=30000 \
    --train_split="train" \
    --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=1 \
    --dataset="pascal_voc_seg" \
    --tf_initial_checkpoint=${PATH_TO_INITIAL_CHECKPOINT} \
    --train_logdir=${PATH_TO_TRAIN_DIR} \
    --dataset_dir=${PATH_TO_DATASET}
Run Code Online (Sandbox Code Playgroud)

通过更改dataset_dir和中dataset的几行segmentation_dataset.py,您可以训练自己的数据集。

  • dataset_dir:路径指向您的tfrecord文件夹

    此文件夹中,你应该train-%05d-of-%05d.tfrecordval-%05d-of-%05d.tfrecord所创造build_voc2012_data.py或其他脚本的数据集

    因此,如果要train.tfrecord用于培训,请设置train_splittrain;如果要对评估数据进行评估,请设置train_splitval

  • dataset:任何自定义名称,请说“ donkey_monkey”

  • segmentation_dataset.py

    DatasetDescriptor为自己的数据集创建:

    _DONKEY_MONKEY_INFORMATION = DatasetDescriptor(
    splits_to_sizes={
        'train': 1464,  # number of training examples in train data
        'trainval': 2913,  # number of examples for train+eval
        'val': 1449,  # number of eval examples 
        },
        num_classes=21, # note: should be number of class + background
        ignore_label=255,  # label pixels to ignore
    )
    
    
    Run Code Online (Sandbox Code Playgroud)

    更改以下代码(第112行)

    _DATASETS_INFORMATION = {
        'cityscapes': _CITYSCAPES_INFORMATION,
        'pascal_voc_seg': _PASCAL_VOC_SEG_INFORMATION,
        'ade20k': _ADE20K_INFORMATION,
        'donkey_monkey': _DONKEY_MONKEY_INFORMATION, # newly added
     }
    
    
    Run Code Online (Sandbox Code Playgroud)


Rom*_*Roc 5

是的,您应该遵循这些教程之一,具体取决于您拥有的数据集格式,如何将数据集转换为TFrecord格式以及训练模型的方法。

如果您使用Pascal voc 2012格式,则此处有一个完整的示例,其中包括训练,评估,可视化结果和导出模型的所有步骤。