我开始使用 Tensorflow/Deeplab 学习 ML。我尝试使用带有 mobilenet_v2 模型变体的语义分割从头开始训练我自己的衣服识别模型。但我没有得到结果。
我正在使用tensorflow/models进行 tfrecord 导出和训练。以及用于可视化和测试目的的deeplab/示例代码(在本地重命名为 main.py),我修改了一些行,以便获得本地模型和测试图像。
我将展示我遵循的过程:
- 下载 100 张 JPEG 图像(我知道不是很大,但我想我可以试试这个数量)。仅适用于 1 级 -> 衬衫
- 为每个图像创建分割类 PNG。
- 为以下文件创建图像集定义:train(85 个文件名)、trainval(100 个文件名)和 val(15 个文件名)。
所以我的“pascal dataset”目录有:ImageSets、JPEGImages 和 SegmentationClassPNG 文件夹。 像这样将“pascal dataset”目录导出到 tfrecord(我在“models-master/research/deeplab/datasets”文件夹中):
py build_voc2012_data.py --image_folder="pasc_imgs/JPEGImages" --semantic_segmentation_folder="pasc_imgs/SegmentationClassPNG" --list_folder="pasc_imgs/ImageSets" --image_format="jpg" --output_dir="train/tfrecord"
- 这很好用,它会在“train/tfrecord”上生成 *.tfrecord 文件
我像这样编辑了“models-master/research/deeplab/data_generator.py”:{'train': 85, 'trainval': 100, 'val': 15}, num_classes=2。
- 现在是时候开始训练了(我在“models-master/research/deeplab”)。我用了10000步,为什么?我用 30000 证明了大约 30 个小时没有结果,所以我用新的参数来减少它。我想 10000 步可以告诉我一些东西:
py train.py --logtostderr --training_number_of_steps=10000 --train_split="train" --model_variant="mobilenet_v2" --output_stride=16 --decoder_output_stride=4 --train_batch_size=1 --dataset="pascal_voc_seg" --train_logdir="datasets/train/deeplab_model_mn" --dataset_dir="datasets/train/tfrecord"
- 这一步需要将近 8 个小时(有一个很小的 GPU,所以.. 不能使用它),它会生成检查点、graph.pbtxt 和 model.ckpt-XXX(包括 10000 个)文件。
- 我用(我在“models-master/research/deeplab”)这个命令行导出了之前的结果:
py export_model.py --checkpoint_path=datasets/train/deeplab_model_mn/model.ckpt-10000 --export_path=datasets/train/deeplab_inference_mn/frozen_inference_graph.pb --model_variant="mobilenet_v2" --output_stride=16 --num_classes=2
- 它创建冻结图 (frozen_inference_graph.pb)。
- 现在运行:py main.py(证明图像和frozen_inference_graph.pb已经导入)
- 我的自定义模型没有结果。最后一个脚本适用于预先训练的 mobilenetv2_coco_voc_trainaug。不适用于我的自定义模型
data_generator.py(编辑行):
_PASCAL_VOC_SEG_INFORMATION = DatasetDescriptor(
splits_to_sizes={
'train': 85,
'trainval': 100,
'val': 15,
},
num_classes=2,# 0:background, 1:shirt
ignore_label=255,
)
我用于训练的图像示例(1/100)(我使用了labelMe实用程序):
shirt_001.jpg
shirt_001.png
mobilenetv2_coco_voc_trainaug 的 main.py 结果(作为一个人的衬衫,没关系)和我的自定义模型:
mobilenetv2_coco_voc_trainaug 结果
我的自定义模型结果
如您所见,我的模型失败了。我一直在测试许多组合但没有成功。我应该怎么办?谢谢!