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

2024-06-14 23:40:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Google Colab中对预训练模型进行了微调

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

用于微调的数据集是“查看人物”。为此采取的步骤如下:

  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. 转换为TFR记录
!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

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

Original image

Deeplabv3 result

我不知道我是否错过了一些重要的东西,或者它是否需要更多的训练。然而,培训似乎不是一个解决方案,因为目前的损失从1.5上升到0.5,大约是1.5

提前谢谢


Tags: pyoutputinformationtraindrivecontentfolderimages
1条回答
网友
1楼 · 发布于 2024-06-14 23:40:17

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

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

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

相关问题 更多 >