使用我自己的图像成功训练Tensorflow,但仍有问题

时间:2017-08-21 17:26:22

标签: api object tensorflow detection training-data

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

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

我做了以下步骤,我仍有两个问题,请告诉我,我错过了什么: -

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

然后,

1-从这个link,我使用了浣熊图像,我将它们放入以下目录models/object_detection/VOCdevkit/VOC2012/JPEGImages(删除之前的图像后)。

然后,我使用了浣熊注释,我将它们放入以下目录models/object_detection/VOCdevkit/VOC2012/Annotation(删除之前的目录后)。

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

3-我使用了ssd_mobilenet_v1_pets.config。我修改了它,类的数量只有一个,我没有从头开始训练,我使用了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)       
    
  2. 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-根据此link,我无法与eval.py同时运行评估train.py(因内存原因)。

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

    所以,我不知道我错在哪里,我认为我的数据结构不正确,我试着根据我的理解来安排它。

    提前致谢

    修改: -

    关于Q2 /

    我想出了如何将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
    

2 个答案:

答案 0 :(得分:0)

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

问题2 - 这些事件文件用作Tensorboard的输入。事件文件是二进制格式,因此不是人类可读的。在模型进行培训和/或评估时启动Tensorboard应用程序。为此,请执行以下操作:

  

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

运行Tensorboard后,使用网络浏览器导航至localhost:6006以查看指标。您可以在培训期间使用此功能来监控每个培训步骤的损失和其他指标。

答案 1 :(得分:0)

session_config之后的

Trainer.py行370

限制GPU的处理能力

session_config.gpu_options.per_process_gpu_memory_fraction = 0.5

,然后您可以同时运行eval.py。张量流在需要时会独立使用所有可用内存