自分のデータセットを使用して画像セグメンテーション用にdeeplabをカスタマイズしたいですか?これは再トレーニングによって達成できますか?
はい、使用しているデータセット形式に応じて、 これらのチュートリアル のいずれかに従う必要があります。ここで、データセットをTFrecord形式に変換する方法を取得し、モデルをトレーニングします。
Pascal voc 2012形式を使用する場合、トレーニング、評価、結果の視覚化、およびモデルのエクスポートのすべてのステップを含む、完全な ここの例 があります。
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_dir
とdataset
を変更し、 segmentation_dataset.py
の数行を変更することで、独自のデータセットでトレーニングできます。
dataset_dir
:パスはtfrecordフォルダーを指します。
このフォルダ内には、 build_voc2012_data.py または datasets の他のスクリプトによって作成されたtrain-%05d-of-%05d.tfrecord
およびval-%05d-of-%05d.tfrecord
が必要です。
したがって、トレーニングにtrain.tfrecord
を使用する場合は、train_split
をtrain
に設定します。評価データを評価する場合は、train_split
をval
に設定します。
dataset
:「donkey_monkey」などの自己定義の名前
独自のデータセット用に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
}