Python 针对小型/欠平衡类获得更紧密的Deeplab分割结果
我已经在CelebAMask HQ数据集()上培训了官方的Tensorflow deeplab模型(),以获得一个可以从语义上分割所有面部片段(例如眼睛、鼻子等)的模型。我在hyperparameter设置中花费的时间很少,并使用默认设置:Python 针对小型/欠平衡类获得更紧密的Deeplab分割结果,python,tensorflow,semantic-segmentation,deeplab,tensorflow-model-garden,Python,Tensorflow,Semantic Segmentation,Deeplab,Tensorflow Model Garden,我已经在CelebAMask HQ数据集()上培训了官方的Tensorflow deeplab模型(),以获得一个可以从语义上分割所有面部片段(例如眼睛、鼻子等)的模型。我在hyperparameter设置中花费的时间很少,并使用默认设置: CUDA_VISIBLE_DEVICES=0 python "${WORK_DIR}"/deeplab/train.py \ --logtostderr \ --train_split="train" \
CUDA_VISIBLE_DEVICES=0 python "${WORK_DIR}"/deeplab/train.py \
--logtostderr \
--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="1025,1025" \
--train_batch_size=2 \
--training_number_of_steps=45000 \
--fine_tune_batch_norm=false \
--tf_initial_checkpoint="${WORK_DIR}/deeplab/pretrained_models/deeplabv3_pascal_trainval/model.ckpt" \
--train_logdir="${WORK_DIR}/deeplab/logs" \
--dataset="celeba" \
--dataset_dir="${WORK_DIR}/deeplab/datasets/celeba/tfrecords_padded/"
我唯一采用的是类权重,其中我根据属于总数据集中每个类的所有像素的比率计算了类权重。这些计算出的比率是:
class_ratio = {0: 0.287781127731224, #BG
1: 0.31428004829848194, #hair
2: 0.25334614328648697, #face
3: 0.008209905199792278, #brows
4: 0.0044636011242926155, #eyes
5: 0.020564768086557928, #nose
6: 0.004150659950132944, #u_lip
7: 0.00680743101856918, #l_lip
8: 0.0030163743167156494, #mouth
9: 0.040800302545885576, #neck
10: 0.008106960279456135, #ears
11: 0.03355246488702522, #clothes
12: 0.009293231642880359, #hat
13: 0, #ear_ring -> 0
14: 0, #glasses -> 0
15: 0 #necklace -> 0
}
作为类权重,我取1/
,因此背景的类权重为3.57,眉毛的类权重为121.95
最后,我做了一些数据增强,比如旋转、翻转和改变亮度
我的结果相当不错,但当我将训练集的一些图像输入到模型中时,有一些值得注意的地方。在原始分段下面:
这里是分段结果:
正如你所看到的,分割的结果是相当好的,但尤其是较小的类,如眼睛,眉毛和鼻子,没有像我希望的那样“紧密分割”。基本上,对于通过模型分割的所有图像,眼睛、鼻子和眉毛都大于原始分割。因此,我想更改一些超参数,以便为较小的类获得更紧密的分割结果
对于小班学生获得更精确结果的可能方法,有什么建议吗?我目前基于属于总数据集中每个类的像素的绝对百分比来计算类权重的方法工作得相当好,但也许另一种计算类权重的方法工作得更好?或者不同的底层模型结构能够进行精细分割
感谢您的帮助。谢谢 您可以尝试将Exception-71与DPC结合使用,这将提供更紧密的分段
或者你可以试试这个。你可以用DPC试试Exception-71,它应该能提供更紧密的分段 或者你可以试试这个