用我自己的图片训练Tensorflow成功,但还是有问题

Train Tensorflow with my own images successfully, but still have problems

我正在使用 ubuntu 16.04,配备 GPU Geforce 1080、8 GB GPU 内存。

我已经正确创建了 TF-record 文件,并且我成功地训练了模型。但是我还有两个问题。

我做了以下步骤,但仍然有两个问题,请告诉我我遗漏了什么:-

我使用了 VOCdevkit 并正确地创建了两个文件,它们是:- pascal_train.recordpascal_val.record

然后,

1-从这个link开始,我用到了浣熊的图片,我把它们放到了下面的目录models/object_detection/VOCdevkit/VOC2012/JPEGImages(在我删除了之前的图片之后)。

然后,我用raccoon注解,我把它们放到了下面的目录models/object_detection/VOCdevkit/VOC2012/Annotation(我把之前的都删了之后)

2- 我修改了 models/object_detection/data/pascal_label_map.pbxt 并写了一个 class 名称,即 'raccoon'

3- 我使用了 ssd_mobilenet_v1_pets.config。我修改了,class的个数只有一个而且我没有从头训练,我用的是ssd_mobilenet_v1_coco_11_06_2017/model.ckpt

   fine_tune_checkpoint: "/home/jesse/abdu-py2/models/model/ssd_mobilenet_v1_coco_11_06_2017/model.ckpt"

  from_detection_checkpoint: true

4- 从这个 link 我安排我的数据结构是这样的:-

  1. models

    1.1 model

     1.1.1 ssd_mobilenet_v1_pets.config
    
     1.1.2 train
    
     1.1.3 evaluation
    
     1.1.4 ssd_mobilenet_v1_coco_11_06_2017/model.ckpt
    

    1.2 object_detection

    1.2.1 data 包含(pascal_train.record、pascal_val.record 和 pascal_label_map.pbtxt)

    1.2.2 VOCdevkit

    1.2.2.1 VOC2012
    
       1.2.2.1.1 JPEGImages (my own images)
    
          1.2.2.1.2 Annotations (raccoon annotation)
          1.2.2.1.3 ImageSets
            1.2.2.1.3.1 Main (raccoon_train.txt,raccoon_val.txt,raccoon_train_val.txt)       
    

5- 现在,我将训练我的模型

(abdu-py2) jesse@jesse-System-Product-Name:~/abdu-py2/models$ python object_detection/train.py --logtostderr --pipeline_config_path=/home/jesse/abdu-py2/models/model/ssd_mobilenet_v1_pets.config --train_dir=/home/jesse/abdu-py2/models/model/train

一切看起来都很好,经过数千次训练步骤后,我创建了许多文件,如 checkpointevents.out.tfevents.1503337171 文件(以及其他文件)。

然而,我的两个问题是:-

1- 基于这个,我不能运行评估eval.py(出于记忆原因)同时与train.py

2- 我尝试使用我在训练步骤中创建的 events.out.tfevents.1503337171 文件,但它似乎没有正确创建。

所以,我也不知道哪里错了,我觉得我的数据结构不对,我试着按照我的理解来安排一下。

提前致谢

编辑:-

关于第二季度/

我想出了如何将 events 文件和 model.ckpt 文件(我在训练过程中创建的)转换为 inference_graph_.pbinference_graph_.pb 稍后可以用 object_detection_tutorial.ipynb 进行测试。对于我的情况,我试过了,但我无法检测到任何东西,因为我在 train.py 过程中的某个地方弄错了。

以下步骤将训练好的文件转换为.pb个文件

(abdu-py2) jesse@jesse-System-Product-Name:~/abdu-py2/models$ python object_detection/export_inference_graph.py \

--input_type image_tensor  \

 --pipeline_config_path /home/jesse/abdu-py2/models/model/ssd_mobilenet_v1_pets.config \

--trained_checkpoint_prefix /home/jesse/abdu-py2/models/model/train/model.ckpt-27688 \

 --output_directory /home/jesse/abdu-py2/models/model

问题 1 - 这只是您会遇到的硬件问题。一旦你达到了你想要评估模型的程度,只需停止你的训练和 运行 你的 eval 命令(看起来你已经成功评估了你的模型,所以你知道命令)。它将为您提供最新模型检查点的一些指标。您可以反复执行此过程,直到您对模型的性能感到满意为止。

问题 2 - 这些事件文件用作 Tensorboard 的输入。事件文件是二进制格式,因此人类不可读。在模型训练 and/or 评估时启动 Tensorboard 应用程序。为此,运行 像这样:

tensorboard --logdir=train:/home/grasp001/abdu-py2/models/object_detection/train1/train,eval:/home/grasp001/abdu-py2/models/object_detection/train1/eval

安装 Tensorboard 运行ning 后,使用网络浏览器导航至 localhost:6006 以检查您的指标。您也可以在训练期间使用它来监控每一步训练的损失和其他指标。

Trainer.py session_config

之后的第 370 行

限制GPU处理能力

session_config.gpu_options.per_process_gpu_memory_fraction = 0.5

然后您可以同时 运行 eval.py。如果需要,tensorflow 会独立使用所有空闲内存