web-dev-qa-db-ja.com

deeplabをtensorflowのカスタムデータセットに微調整できますか?

自分のデータセットを使用して画像セグメンテーション用にdeeplabをカスタマイズしたいですか?これは再トレーニングによって達成できますか?

8
mrBean

はい、使用しているデータセット形式に応じて、 これらのチュートリアル のいずれかに従う必要があります。ここで、データセットをTFrecord形式に変換する方法を取得し、モデルをトレーニングします。

Pascal voc 2012形式を使用する場合、トレーニング、評価、結果の視覚化、およびモデルのエクスポートのすべてのステップを含む、完全な ここの例 があります。

5
RomRoc

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}

dataset_dirdatasetを変更し、 segmentation_dataset.py の数行を変更することで、独自のデータセットでトレーニングできます。

  • dataset_dir:パスはtfrecordフォルダーを指します。

    このフォルダ内には、 build_voc2012_data.py または datasets の他のスクリプトによって作成されたtrain-%05d-of-%05d.tfrecordおよびval-%05d-of-%05d.tfrecordが必要です。

    したがって、トレーニングに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
    )
    
    

    以下のコードを変更してください(112行目)

    _DATASETS_INFORMATION = {
        'cityscapes': _CITYSCAPES_INFORMATION,
        'Pascal_voc_seg': _Pascal_VOC_SEG_INFORMATION,
        'ade20k': _ADE20K_INFORMATION,
        'donkey_monkey': _DONKEY_MONKEY_INFORMATION, # newly added
     }
    
    
7
Yoyo