用我自己的图片训练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.record
和 pascal_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 我安排我的数据结构是这样的:-
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
一切看起来都很好,经过数千次训练步骤后,我创建了许多文件,如 checkpoint
和 events.out.tfevents.1503337171
文件(以及其他文件)。
然而,我的两个问题是:-
1- 基于这个,我不能运行评估eval.py
(出于记忆原因)同时与train.py
。
2- 我尝试使用我在训练步骤中创建的 events.out.tfevents.1503337171
文件,但它似乎没有正确创建。
所以,我也不知道哪里错了,我觉得我的数据结构不对,我试着按照我的理解来安排一下。
提前致谢
编辑:-
关于第二季度/
我想出了如何将 events
文件和 model.ckpt
文件(我在训练过程中创建的)转换为 inference_graph_.pb
。 inference_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 会独立使用所有空闲内存
我正在使用 ubuntu 16.04,配备 GPU Geforce 1080、8 GB GPU 内存。
我已经正确创建了 TF-record 文件,并且我成功地训练了模型。但是我还有两个问题。
我做了以下步骤,但仍然有两个问题,请告诉我我遗漏了什么:-
我使用了 VOCdevkit 并正确地创建了两个文件,它们是:- pascal_train.record
和 pascal_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 我安排我的数据结构是这样的:-
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
一切看起来都很好,经过数千次训练步骤后,我创建了许多文件,如 checkpoint
和 events.out.tfevents.1503337171
文件(以及其他文件)。
然而,我的两个问题是:-
1- 基于这个eval.py
(出于记忆原因)同时与train.py
。
2- 我尝试使用我在训练步骤中创建的 events.out.tfevents.1503337171
文件,但它似乎没有正确创建。
所以,我也不知道哪里错了,我觉得我的数据结构不对,我试着按照我的理解来安排一下。
提前致谢
编辑:-
关于第二季度/
我想出了如何将 events
文件和 model.ckpt
文件(我在训练过程中创建的)转换为 inference_graph_.pb
。 inference_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 会独立使用所有空闲内存