Deeplabv3重新训练的结果对于非正方形图像是倾斜的



我在Google Colab中微调预训练模型时遇到问题deeplabv3_mnv2_pascal_train_aug

当我用vis.py进行可视化时,如果图像的高度/宽度较大,即图像不是正方形,则结果似乎会移到图像的左侧/上侧。

用于微调的数据集是Look Into Person。这样做的步骤是:

  1. 在deeplab/datasets/data_generator.py中创建数据集
_LIP_INFORMATION = DatasetDescriptor(
splits_to_sizes={
'train': 30462,
'train_aug': 10582,
'trainval': 40462,
'val': 10000,
},
num_classes=19,
ignore_label=255,
)
_DATASETS_INFORMATION = {
'cityscapes': _CITYSCAPES_INFORMATION,
'pascal_voc_seg': _PASCAL_VOC_SEG_INFORMATION,
'ade20k': _ADE20K_INFORMATION,
'cihp': _CIHP_INFORMATION,
'lip': _LIP_INFORMATION,
}
  1. 转换为tfrecord
!python models/research/deeplab/datasets/build_voc2012_data.py 
--image_folder="/content/drive/MyDrive/TFM/lip_trainval_images/TrainVal_images/train_images" 
--semantic_segmentation_folder="/content/drive/MyDrive/TFM/lip_trainval_segmentations/TrainVal_parsing_annotations/train_segmentations" 
--list_folder="/content/drive/MyDrive/TFM/lip_trainval_images" 
--image_format="jpg" 
--output_dir="train_lip_tfrecord/"
!python models/research/deeplab/datasets/build_voc2012_data.py 
--image_folder="/content/drive/MyDrive/TFM/lip_trainval_images/TrainVal_images/val_images" 
--semantic_segmentation_folder="/content/drive/MyDrive/TFM/lip_trainval_segmentations/TrainVal_parsing_annotations/val_segmentations" 
--list_folder="/content/drive/MyDrive/TFM/lip_trainval_images" 
--image_format="jpg" 
--output_dir="val_lip_tfrecord/"
  1. 培训
!python deeplab/train.py --logtostderr 
--training_number_of_steps=40000 
--train_split="train" 
--model_variant="mobilenet_v2" 
--atrous_rates=6 
--atrous_rates=12 
--atrous_rates=18 
--output_stride=16 
--decoder_output_stride=4 
--train_batch_size=1 
--dataset="lip" 
--train_logdir="/content/drive/MyDrive/TFM/checkpoint_lip_mobilenet" 
--dataset_dir="/content/drive/MyDrive/TFM/trainval_lip_tfrecord/" 
--fine_tune_batch_norm=false 
--initialize_last_layer=false 
--last_layers_contain_logits_only=false
  1. 可视化
!python deeplab/vis.py --logtostderr 
--vis_split="val" 
--model_variant="mobilenet_v2" 
--atrous_rates=6 
--atrous_rates=12 
--atrous_rates=18 
--output_stride=16 
--decoder_output_stride=4 
--dataset="lip" 
--checkpoint_dir="/content/drive/MyDrive/TFM/checkpoint_lip_mobilenet" 
--vis_logdir="/content/drive/My Drive/TFM/eval_results_lip" 
--dataset_dir="/content/drive/My Drive/TFM/trainval_lip_tfrecord" 
--max_number_of_iterations=1 
--eval_interval_secs=0

通过以下步骤,我面临的问题的一个例子是:

原始图像

Deeplabv3结果

我不知道我是错过了什么重要的东西,还是需要更多的训练。然而,训练似乎不是一个解决方案,因为目前损失从1.5上升到0.5。

提前谢谢。

过了一段时间,我确实找到了这个问题的解决方案。需要知道的一件重要事情是,默认情况下,train_crop_sizevis_crop_size为513x513。

该问题是由于vis_crop_size小于输入图像,因此vis_crop_size需要大于最大图像的最大尺寸

如果要使用export_model.py,则必须使用与vis.py相同的逻辑,因此默认情况下不会将掩码裁剪为513。

最新更新