热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python目标检测训练_tensorflow目标检测API之训练自己的数据集

1.训练文件的配置将生成的csv和record文件都放在新建的mydata文件夹下,并打开object_detection文件夹下的data文件夹,复制

1.训练文件的配置

将生成的csv和record文件都放在新建的mydata文件夹下,并打开object_detection文件夹下的data文件夹,复制一个后缀为.pbtxt的文件到mtdata文件夹下,并重命名为gaoyue.pbtxt

用记事本打开该文件,因为我只分了一类,所以将其他内容删除,只剩下这一个类别,并将name改为gaoyue。

9600b58eb0827d7e58fb9ae314a555d0.png

这时我们拥有的所有文件如下图所示。

da264597448cce10be7f6e4bc326b557.png

我们在object_detection文件夹下新建一个training文件夹,在里面新建一个记事本文件并命名为 ssd_mobilenet_v1_coco.config

打开,输入以下代码,按右边注释进行修改

#SSD with Mobilenet v1 configuration for MSCOCO Dataset.#Users should configure the fine_tune_checkpoint field in the train config as#well as the label_map_path and input_path fields in the train_input_reader and#eval_input_reader. Search for "PATH_TO_BE_CONFIGURED" to find the fields that#should be configured.

model {

ssd {

num_classes:1 #你类别的数量,我这里只分了一类

box_coder {

faster_rcnn_box_coder {

y_scale:10.0x_scale:10.0height_scale:5.0width_scale:5.0}

}

matcher {

argmax_matcher {

matched_threshold:0.5unmatched_threshold:0.5ignore_thresholds: false

negatives_lower_than_unmatched: true

force_match_for_each_row: true

}

}

similarity_calculator {

iou_similarity {

}

}

anchor_generator {

ssd_anchor_generator {

num_layers:6min_scale:0.2max_scale:0.95aspect_ratios:1.0aspect_ratios:2.0aspect_ratios:0.5aspect_ratios:3.0aspect_ratios:0.3333}

}

image_resizer {

fixed_shape_resizer {

height:300width:300}

}

box_predictor {

convolutional_box_predictor {

min_depth: 0

max_depth: 0

num_layers_before_predictor: 0

use_dropout: false

dropout_keep_probability:0.8kernel_size:1box_code_size:4apply_sigmoid_to_scores: false

conv_hyperparams {

activation: RELU_6,

regularizer {

l2_regularizer {

weight:0.00004}

}

initializer {

truncated_normal_initializer {

stddev:0.03mean:0.0}

}

batch_norm {

train: true,

scale: true,

center: true,

decay:0.9997,

epsilon:0.001,

}

}

}

}

feature_extractor {

type:'ssd_mobilenet_v1'min_depth:16depth_multiplier:1.0conv_hyperparams {

activation: RELU_6,

regularizer {

l2_regularizer {

weight:0.00004}

}

initializer {

truncated_normal_initializer {

stddev:0.03mean:0.0}

}

batch_norm {

train: true,

scale: true,

center: true,

decay:0.9997,

epsilon:0.001,

}

}

}

loss {

classification_loss {

weighted_sigmoid {

}

}

localization_loss {

weighted_smooth_l1 {

}

}

hard_example_miner {

num_hard_examples:3000iou_threshold:0.99loss_type: CLASSIFICATION

max_negatives_per_positive:3min_negatives_per_image: 0

}

classification_weight:1.0localization_weight:1.0}

normalize_loss_by_num_matches: true

post_processing {

batch_non_max_suppression {

score_threshold:1e-8iou_threshold:0.6max_detections_per_class:100max_total_detections:100}

score_converter: SIGMOID

}

}

}

train_config: {

batch_size:16 #电脑好的话可以调高点,我电脑比较渣就调成16了

optimizer {

rms_prop_optimizer: {

learning_rate: {

exponential_decay_learning_rate {

initial_learning_rate:0.004decay_steps:800720decay_factor:0.95}

}

momentum_optimizer_value:0.9decay:0.9epsilon:1.0}

}#Note: The below line limits the training process to 200K steps, which we

#empirically found to be sufficient enough to train the pets dataset. This

#effectively bypasses the learning rate schedule (the learning rate will

#never decay). Remove the below line to train indefinitely.

num_steps: 200000 # 训练的stepsdata_augmentation_options {

random_horizontal_flip {

}

}

data_augmentation_options {

ssd_random_crop {

}

}

}

train_input_reader: {

tf_record_input_reader {

input_path:"mydata/gaoyue_train.record" #训练的tfrrecord文件路径

}

label_map_path:"mydata/gaoyue.pbtxt"}

eval_config: {

num_examples:8000 # 验证集的数量

#Note: The below line limits the evaluation process to 10 evaluations.

#Remove the below line to evaluate indefinitely.

max_evals: 10}

eval_input_reader: {

tf_record_input_reader {

input_path:"mydata/gaoyue_test.record" #验证的tfrrecord文件路径

}

label_map_path:"mydata/gaoyue.pbtxt"shuffle: false

num_readers:1}

新建后的文件显示如下。

1d7f5f4446c0765f7b464b96e2a6a5f6.png

这时,我们训练的准备工作就做好了。

2.训练模型

在object_detection文件夹下打开Anaconda Prompt,输入命令

python model_main.py --pipeline_config_path=training/ssd_mobilenet_v1_coco.config --model_dir=training  --alsologtostderr

在训练过程中如果出现no model named pycocotools的问题的话,请参考这个网址(http://www.mamicode.com/info-detail-2660241.html)解决。亲测有效

即:

(1)从https://github.com/pdollar/coco.git 下载源码,解压至全英文路径下。

(2)使用cmd进入解压后的cocoapi-master/PythonAPI路径下,输入python setup.py build_ext --inplace。如果这一步有报错,请打开set_up.py文件,将其中这两个参数删除。

即:

96df6114f7331543878ee404f32ff26e.png

(3)上一步执行没问题之后,继续在cmd窗口运行命令:python setup.py build_ext install

训练完成后,training文件夹下是这样的情况

398193e8928777b4331d0b99a32b4b73.png

(如果想观察训练过程中参数的变化以及网络的话,可以打开新的一个Anaconda Prompt cd到object_detection文件夹下

输入命令:tensorboard --logdir=training),复制出现的网址即可。如图所示\

如果显示不出来的话,新建网页在地址栏输入http://localhost:6006/(后面的6006是我的端口号,根据你自己的输入)

656c64e79705d7fb1449e652a11de46a.png

3.生成模型

定位到object_detection目录下,打开Anaconda Promp输入命令

python export_inference_graph.py \ --input_type image_tensor \ --pipeline_config_path training/ssd_mobilenet_v1_coco.config \ --trained_checkpoint_prefix training/model.ckpt-500 \ --output_directory gaoyue_detection

(注意这两处标红的地方,1.    model.ckpt-500是指你训练的轮数的文件,这里因为我只训练了500轮,所以改成了500(如下图中的500)

398193e8928777b4331d0b99a32b4b73.png

2.   output_directory是输出模型的路径,最好是新建一个文件夹来存放模型,我新建了一个名为gaoyue_detection的模型)

命令执行完成后,打开gaoyue_detection文件夹,里面的内容如图所示

eb36f040e2b5be60a2320cdba74f0848.png

表示执行成功,这样,我们用自己数据集训练的目标检测模型就做好了

下一节会详细说我们自己模型的验证



推荐阅读
  • 本文介绍了如何利用 Delphi 中的 IdTCPServer 和 IdTCPClient 控件实现高效的文件传输。这些控件在默认情况下采用阻塞模式,并且服务器端已经集成了多线程处理,能够支持任意大小的文件传输,无需担心数据包大小的限制。与传统的 ClientSocket 相比,Indy 控件提供了更为简洁和可靠的解决方案,特别适用于开发高性能的网络文件传输应用程序。 ... [详细]
  • 为什么多数程序员难以成为架构师?
    探讨80%的程序员为何难以晋升为架构师,涉及技术深度、经验积累和综合能力等方面。本文将详细解析Tomcat的配置和服务组件,帮助读者理解其内部机制。 ... [详细]
  • 本文详细介绍了如何使用Python的多进程技术来高效地分块读取超大文件,并将其输出为多个文件。通过这种方式,可以显著提高读取速度和处理效率。 ... [详细]
  • 机器学习算法:SVM(支持向量机)
    SVM算法(SupportVectorMachine,支持向量机)的核心思想有2点:1、如果数据线性可分,那么基于最大间隔的方式来确定超平面,以确保全局最优, ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • 本文介绍如何使用OpenCV和线性支持向量机(SVM)模型来开发一个简单的人脸识别系统,特别关注在只有一个用户数据集时的处理方法。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • PHP预处理常量详解:如何定义与使用常量 ... [详细]
  • 本文详细介绍了批处理技术的基本概念及其在实际应用中的重要性。首先,对简单的批处理内部命令进行了概述,重点讲解了Echo命令的功能,包括如何打开或关闭回显功能以及显示消息。如果没有指定任何参数,Echo命令会显示当前的回显设置。此外,文章还探讨了批处理技术在自动化任务执行、系统管理等领域的广泛应用,为读者提供了丰富的实践案例和技术指导。 ... [详细]
  • 目录预备知识导包构建数据集神经网络结构训练测试精度可视化计算模型精度损失可视化输出网络结构信息训练神经网络定义参数载入数据载入神经网络结构、损失及优化训练及测试损失、精度可视化qu ... [详细]
  • javax.mail.search.BodyTerm.matchPart()方法的使用及代码示例 ... [详细]
  • 本文介绍了几种常用的图像相似度对比方法,包括直方图方法、图像模板匹配、PSNR峰值信噪比、SSIM结构相似性和感知哈希算法。每种方法都有其优缺点,适用于不同的应用场景。 ... [详细]
author-avatar
水瓶颜如_991
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有