当前位置: 首页 > news >正文

长沙做软件的公司/seo营销推广

长沙做软件的公司,seo营销推广,宁夏建设监理协会网站,网站空间面板数据标注及格式转换之后,就可以开始模型训练,不过要先对其他的一些必备文件进行说明。 1、label_map文件 此文件是记录数据集中物体类别及其编号的,用于后面的检测模型中的classification部分,可以参考raccoon检测模型的label_ma…

数据标注及格式转换之后,就可以开始模型训练,不过要先对其他的一些必备文件进行说明。

1、label_map文件
此文件是记录数据集中物体类别及其编号的,用于后面的检测模型中的classification部分,可以参考raccoon检测模型的label_map文件,如果类别比较多,就继续往后面加 item 就好。

item {id: 1name: 'raccoon'
}

2、finetune checkpoint
Tensorflow提供了一些预训练的模型(Model Zoo),供大家下载下来,之后进行迁移学习,即训练自己的模型时使用预训练模型来进行参数初始化。比如下载 ssd_mobilenet_v1_coco,解压缩之后目录如下:
这里写图片描述
这里model.ckpt三个文件是之后要在config文件设置时调用的,提前说一下,在接下来要说的config文件设置部分,config文件可以是这里的pipeline.config文件,不一定要去官网提供的config文件集中下载。

3、模型训练的配置文件 —— Config文件

模型训练所需要调整的一些关键参数放在config文件中,代码运行时会自己从config文件中读取相关的参数,之后进行模型训练。Tensorflow github给出了很多的config文件。config文件的整体结构如下:

model { *** //网络结构及相关超参数的设置
}train_config: {*** //反向传播的方法选择及相关参数设置
}train_input_reader: {*** //训练集数据的地址设置
}eval_config: {*** //模型测试时的参数设置
}eval_input_reader: {*** //测试集数据的地址设置
}

如果你对你要使用的深度学习模型不熟悉,比如ssd的结构,fast rcnn的结构不熟悉,先不要对config文件进行大量调参。但是有几项是必须要更改的, 下面以ssd_mobilenet_v1_pets.config为例进行说明:
(1) model/ssd 中的 num_classes

num_classes: 37 
// 37改为自己的数据集中物体的类别数,比如数据集中只标注了猫,那就将37改为1.

(2) train_input_reader 和 eval_input_reader

train_input_reader: {tf_record_input_reader {input_path: "PATH_TO_BE_CONFIGURED_TFRECORD_FILE"// "PATH_TO_BE_CONFIGURED_TFRECORD_FILE"替换为训练集生成的tfrecord文件的路径}label_map_path: "PATH_TO_BE_CONFIGURED_LABEL_MAP_PBTXT"//"PATH_TO_BE_CONFIGURED_LABEL_MAP_PBTXT"替换为物体类别的label_map文件的路径,
}eval_input_reader: {tf_record_input_reader {input_path: "PATH_TO_BE_CONFIGURED_TFRECORD_TEST"//"PATH_TO_BE_CONFIGURED_TFRECORD_TEST"替换为测试集生成的tfrecord文件的路径}label_map_path: "PATH_TO_BE_CONFIGURED_LABEL_MAP_PBTXT"// 这里的"PATH_TO_BE_CONFIGURED_LABEL_MAP_PBTXT" 和前面// 的"PATH_TO_BE_CONFIGURED_LABEL_MAP_PBTXT"替换一样shuffle: falsenum_readers: 1# eval_epochs: 10  在最新的tensorflow model中训练的话,这一条要去掉,否则会出现OutOfRange Error, # 这是因为tf.estimator.train_and_evaluate是为了分布式而设计的,# 而现在的训练终止条件只接受max_steps,所以不要写eval_epochs, # 这个的意思是在训练多少epochs后停止,与max_steps冲突。
}

(3)如果你想在跑代码的时候每隔30分钟保存一次模型,那就对train_config进行如下设置:

train_config: {keep_checkpoint_every_n_hours:0.5  // 添加这一行,其他时间可以自行调整batch_size: 24optimizer {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}}

如果你还想设置最多保存多少个模型文件,还可以进一步修改代码部分。如果你git下来的models版本不太新,在object detection文件中应该有trainer.py文件,修改该文件的第361行的max_to_keep=1000,则在后期训练模型时,会自动保存最新的1000个模型。如果git的是最新的models版本,我还没来及找到怎么调整这个参数,大家可以自行挖代码。

(4)finetune

  fine_tune_checkpoint: "PATH_TO_BE_CONFIGURED/model.ckpt"// "PATH_TO_BE_CONFIGURED/model.ckpt"替换为下载到的预训练模型的地址,最后就是写//model.ckpt,具体的还有meta,index,data什么的,这些都不用写,写model.ckpt就可以// 解析到具体的三个文件了。from_detection_checkpoint: true// 如果不想用迁移学习,也就是不用预训练的模型进行参数初始化,这里的true改为false即可.

(5)此配置文件还包含数据增强的手段
详细数据增强可参见Preprocessor.proto,或者此处的讨论
4、接下来就可以跑代码了,在models/research 目录下运行如下命令:

python object_detection/train.py --logtostderr 
--pipeline_config_path="自己填自己的config文件路径,类似D:/dataset/pipeline.config"
--train_dir="自己填自己想将tf跑出来的模型存储在哪里比如D:/dataset/OutModel"

如果你git的tensorflow models版本比较新,可能需要如下代码:

python object_detection/model_main.py --logtostderr 
--pipeline_config_path="自己填自己的config文件路径,类似D:/dataset/pipeline.config"
--train_dir="自己填自己想将tf跑出来的模型存储在哪里比如D:/dataset/OutModel"

其实差不多。如果你对 --logtostderr 感兴趣,可以参考我在stack overflow的提问,如果你真对此有疑问,说明你和我一样完全不懂linux,不过这都不重要。

之后在train_dir中就可以看到很多文件,大概是下图的样子:
这里写图片描述

5、边训练边测试 eval
由于边训练,会不断产生训练输出的模型,所以可以基于此来看一下模型在测试集上的表现,具体是运行如下代码:

python object_detection/eval.py  --logtostderr  
--pipeline_config_path="自己填自己的config文件路径,需要和train时的设置相同"
--checkpoint_dir="自己填自己想将tf跑出来的模型存储在哪里了,其实就是train时的train_dir"
--eval_dir="自己填自己想将tf跑出来的测试结果存储在哪里比如D:/dataset/evalDir"

eval_dir中的文件格式大概是这样的:

这里写图片描述

还可以继续在另一个终端中运行如下命令来可视化tensorflow训练的模型在测试集上的表现:

tensorboard --logdir "自己写eval_dir的地址" --port=8008

后面的–port=8008是自定义网络端口的,这样你就可以打开在不同端口打开不同的tensorboard视图。接着在浏览器中打开网址:localhost:8008即可看到如下界面。

这里写图片描述

Scalar部分是一些损失值和准确率的可视化,注意左上角的 Show data download links,点开之后就可以下载损失值和准确率的数据了,这里不再给出过多解释。

Image部分展示的在测试集图片上的画框结果,而且支持同一张图片上顺序模型的输出结果的查看,不再展示,大家自行跑代码看吧。

Graph部分是整个网络的模型结构,eval时的graph比较好看,train部分产生的Graph太分散。

其他的按钮大家自己调着玩一下。

6、ckpt文件转化为frozen_graph

由上面的图可以看出,tensorflow训练得到的模型model.ckpt有三个文件:.meta, .index, .data.
大概来讲,.meta 文件是网络的图结构,.index是一个表结构,存储tensor名称及其对应data的存储路径(貌似是这样的), .data是网络中的变量的值。具体参见此博客。其他的一些介绍的资源:
Tensorflow学习笔记-模型保存与加载
Tensorflow加载预训练模型和保存模型

但是我们这里要说的是模型的固化,就是将上面的三个文件搞成一个文件,freeze_graph,也就是将模型固化,具体讲就是将训练数据和模型固化成pb文件。可以参考以下资料
TensorFlow: How to freeze a model and serve it with a python API
tensorflow将训练好的模型freeze,即将权重固化到图里面,并使用该模型进行预测
How to freeze a graph in Tensorflow
官方代码

具体操作是运行如下代码:

python object_detection/export_inference_graph.py  
--input_type image_tensor 
--pipeline_config_path "你的config文件的路径"
--trained_checkpoint_prefix 
"你想转化的model.ckpt文件路径,比如D:/trainDir/model.ckpt-31626"
--output_directory "你想把转化后的模型存到哪里?比如D:/train_pb"

之后,会产生如下文件,其中的frozen_inference_graph.pb就是转化之后的模型:

这里写图片描述

7、模型应用

参考此文件,注意修改labels和ckpt文件路径。或者参考这个说明最后模型应用的代码。

http://www.lbrq.cn/news/1368145.html

相关文章:

  • 建设沙滩车官方网站/全网搜索指数查询
  • 网站建设公司华网天下买送活动/武汉seo排名
  • 网站建设后的心得/互联网营销师在哪里报名
  • 淘宝商家版登录入口/班级优化大师app下载学生版
  • 试玩平台怎么做网站/全国十大跨境电商排名
  • 济宁网站建设价格/html网站模板免费
  • 做定制网站/百度搜索智能精选
  • 济南品牌网站建设价格/查询网 域名查询
  • 网站开发需要投入多少时间/谷歌seo搜索引擎下载
  • 做网站怎么找客户联系方式/如何推广我的网站
  • 广东网站备案要多久/1个百度指数代表多少搜索
  • 网站设计 优帮云/seo网站优化排名
  • 淘宝网站如何做虚拟/扬州seo
  • 永久免费国外ip代理/宁波网站推广优化哪家正规
  • iis默认网站路径/郑州中原区最新消息
  • 青羊区定制网站建设报价/惠州seo博客
  • 杭州网站建设及推广/百度官网推广平台
  • 网站怎么做精准引流/百度云app
  • 网站建设需要的费用/搜索引擎优化免费
  • 贵州软件开发 网站开发/竞价恶意点击报案
  • 印刷网站建设 优帮云/网络营销网站建设案例
  • 文件包上传的网站怎么做/石家庄网站建设公司
  • 营销型网站重要特点是/全网营销推广怎么做
  • 专门做校招的网站/哪个模板建站好
  • 做网站用什么语言好/外贸网站平台都有哪些
  • 营销型高端网站建设价格/网络营销与直播电商怎么样
  • 苏州党员两学一做网站/厦门人才网唯一官网招聘
  • 1.申请网站空间/在哪里可以做百度推广
  • 漳州城乡住房建设部网站/网站推广软件
  • nh网站建设/网络上如何推广网站
  • Dify中自定义工具类的类型
  • #C语言——刷题攻略:牛客编程入门训练(四):运算
  • ubuntu apt安装与dpkg安装相互之间的关系
  • 在linux(ubuntu)服务器上安装NTQQ并使用
  • i Battery Box V3.7 客户端电池检测仪
  • 【Django】-4- 数据库存储和管理