Я начал изучать ML с помощью Tensorflow / Deeplab. Я попробовал с нуля обучить собственную модель для распознавания одежды, используя семантическую сегментацию с вариантом модели mobilenet_v2. Но я не получаю результатов.
Я использую tensorflow / models для экспорта и обучения tfrecord. И deeplab / example код для визуализации и тестирования (переименованный локально в main.py), я изменяю некоторые строки, чтобы получить локальные модели и тестовое изображение.
Я покажу процесс, которому я следовал:
- Загрузите 100 изображений JPEG (я знаю, что это не так уж и много, но я думаю, что могу попробовать с этим количеством). Для 1 класса -> рубашки
- Создайте класс сегментации PNG для каждого изображения.
- Создайте определение наборов изображений для файлов: train (85 имен файлов), trainval (100 имен файлов) и val (15 имен файлов).
Итак, в моем каталоге "набор данных паскаль" есть папки: 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"
- this works fine, it generates *.tfrecord files on "train/tfrecord"
Я редактировал "models-master / research / deeplab / data_generator.py" следующим образом: {'train': 85, 'trainval': 100, 'val': 15}, num_classes = 2.
- Now time to start the training, (I'm on "models-master/research/deeplab"). I used 10000 steps, why? I proved with 30000 and takes like 30 hours with no results, so I reduce it with new params. I guess 10000 steps could show me something:
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"
- This step takes almost 8 hours (have a tiny GPU, so.. can't use it), and it generates the checkpoint, graph.pbtxt, and model.ckpt-XXX (10000 included) files.
- I exported the previous result with (I'm on "models-master/research/deeplab") this command line:
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
- It creates the frozen graph (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
результат main.py для mobilenetv2_coco_voc_trainaug (рубашка как личность, это нормально) и моей нестандартной модели:
mobilenetv2_coco_voc_trainaug результат
мой пользовательский результат модели
Как видите, моя модель не работает. Я безуспешно тестировал множество комбинаций. Что мне делать? Спасибо!