在wondows10上用tensorflow2.x版本使用Object_Detection_API-(2)用其它数据集训练自己的识别器

上一篇文章配置好了适用于tensorflow2.x版本的Object_Detection_API,这篇文章将使用Lara数据集训练交通信号灯识别器。

1 下载数据集

下载Lara交通信号灯数据集,将其解压到traffic_lights文件夹里,包含图片文件夹和.txt的标签文件:

2 数据集处理

1)运行./traffic_lights文件夹里的preprocess.py,得到存在图片和标签文件的文件夹:

其中labels文件夹中的标签文件为单个图片对应的标签:

2)运行./traffic_lights文件夹里的txt2xml.py,将txt格式的标签转为xml格式,存放在./traffic_lights/Annotations文件夹中:

3)划分训练集和测试集:在./traffic_lights/Images文件夹里新建train和test文件夹,将7335张图片剪切到train文件夹,将剩下的剪切到test文件夹,则Image文件夹包含以下两个文件夹:

4)运行./traffic_lights文件夹里的xml_to_csv.py,将标签转为csv格式,运行完后,Images文件夹下生成以下两个文件:

5)运行./object_detection文件夹里的generate_tfrecord.py,将标签转为tfrecrd格式,运行完后,./object_detection/traffic_lights文件夹下生成以下两个文件:

3 生成标注映射图并配置训练

1)标注映射图(按上一篇博客下载的API中,已经操作好此步,可以省略)

标注映射图通过定义一个目标类别名到目标类别ID的映射来告诉训练器每一个物体是什么。在 .\object_detection\TL_training文件夹下新建一个文件并保存为labelmap.pbtxt。将以下内容复制到文本中。

item {
  id: 1
  name: 'Traffic_Light_go'
}

item {
  id: 2
  name: 'Traffic_Light_stop'
}

item {
  id: 3
  name: 'Traffic_Light_ambiguous'
}

item {
  id: 4
  name: 'Traffic_Light_warning'
}

2)配置训练(按上一篇博客下载的API中,已经操作好此步,可以省略)

最后,必须配置物体识别训练管道。它定义了哪些模型和参数将被用于训练。这是开始训练前的最后一步!

从.\research\object_detection\samples\configs文件夹中复制faster_rcnn_inception_v2_coco.config文件到\object_detection\TL_training路径下。然后用文本编辑器打开文件。需要对其做几处修改,主要修改类别和样本的数目,并添加文件路径到训练数据。

在faster_rcnn_inception_v2_coco.config文件中做如下几处修改。Note:路径必须使用单个正斜杠(/),而不是反斜杠(\)。同样,路径必须使用双引号(")而非单引号(')。

  • Line 10. 修改num_classes为你想要识别的物体的类别数目。此交通信号灯识别器中num_classes是4。
  • Line 107. 修改 fine_tune_checkpoint为:
    • fine_tune_checkpoint : "D:/pycharm_community/tensorflow_object_detection_API/models_master/research/object_detection/faster_rcnn_inception_v2_coco_2018_01_28/model.ckpt"
  • Lines 122 and 124. 在train_input_reader模块中,修改input_path和label_map_path为:
    • input_path : "D:/pycharm_community/tensorflow_object_detection_API/models_master/research/object_detection/traffic_lights/train.record"
    • label_map_path:  "D:/pycharm_community/tensorflow_object_detection_API/models_master/research/object_detection/TL_training/labelmap.pbtxt"
  • Lines 136和138. 在eval_input_reader模块,修改input_path和label_map_path为:
    • input_path : "D:/pycharm_community/tensorflow_object_detection_API/models_master/research/object_detection/traffic_lights/test.record"
    • label_map_path: "D:/pycharm_community/tensorflow_object_detection_API/models_master/research/object_detection/TL_training/labelmap.pbtxt"

修改完毕后保存文件。

4 训练模型

运行./object_detection文件中的train_TL.py开始训练模型,训练的过程如下图所示:

可以通过TensorBoard观察训练过程。打开电脑终端,修改路径至D:\pycharm_community\tensorflow_object_detection_API\models_master\research\object_detection,并运行以下命令:

tensorboard --logdir=TL_training

这将在本地创建一个端口为6006的网页,可在浏览器上浏览。TensorBoard网页提供展示训练如何进行的信息和图表。 

5 保存模型

在./object_detection文件夹下新建TL_model文件夹,将TL_training文件夹中的以下文件剪切到TL_model文件夹:

最后一步是生成冻结结论图(.pb文件)。在\object_detection路径下新建TL_inference_graph文件夹存在.pb文件。然后运行./object_detection下的export_TL_inference_graph.py,其中'trained_checkpoint_prefix'中的"model.ckpt-XXXX"中的"XXXX"需要被替换成TL_model文件夹下最高编号的.ckpt文件。运行成功后在 TL_inference_graph文件夹中生成以下文件:

6 测试模型

至此,交通信号灯识别器准备就绪,运行./object_detection中的TL_image_test.py对其进行测试,测试结果如下图所示(只训练了1000多步,效果不是太好):

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
mask_rcnn_inception_v2_spot.config是TensorFlowObject Detection API模块中的一个配置文件,用于配置Mask R-CNN模型的训练和推理参数。下面是一些常见参数及其含义: 1. num_classes:指定目标类别的数量,包括背景类。例如,如果要检测20个类别,则num_classes设置为21。 2. image_resizer:设置图像预处理的方式,如通过保持宽高比进行缩放或裁剪。 3. feature_extractor:指定特征提取器的类型,例如InceptionV2、ResNet等。 4. first_stage_anchor_generator:设置第一阶段锚框生成器的参数,包括尺度、宽高比等。 5. first_stage_box_predictor:设置第一阶段边界框预测器的参数,如使用的卷积核大小、激活函数等。 6. first_stage_nms_iou_threshold:指定第一阶段非极大值抑制(NMS)的IoU(Intersection over Union)阈值。 7. second_stage_box_predictor:设置第二阶段边界框预测器的参数,如使用的卷积核大小、激活函数等。 8. second_stage_post_processing:设置第二阶段后处理的参数,如使用的非极大值抑制(NMS)的IoU阈值和置信度阈值。 9. second_stage_batch_size:设置第二阶段的批量大小,用于训练和推理。 10. use_dropout:设置是否在特征提取器中使用dropout正则化。 11. detection_score_converter:设置检测分数转换器的类型和参数,用于将检测分数转换为最终的置信度。 以上仅是一些常见的参数,实际上,mask_rcnn_inception_v2_spot.config文件中还包含了其他许多参数,用于配置模型的各个方面,如学习率、优化器、训练和推理的路径等。通过修改这些参数,我们可以根据需求来定制和优化Mask R-CNN模型的训练和推理过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值