SSD-Tensorflow 512x512 训练配置
搞了几天终于把这个给搞得差不多了,遇到的错误这里也记录一下:
一、配置【配置什么的300和512其实差不多,这里只举一个例子来分析一下】
之前的文件修改什么的和300x300的一样:https://www.cnblogs.com/GrPhoenix/p/10018072.html
从自己训练的ssd_300_vgg模型开始训练ssd_512_vgg的模型
因ssd_300_vgg中没有block12,又因为block7,block8,block9,block10,block11,中的参数张量两个网络模型中不匹配,因此ssd_512_vgg中这几个模块的参数不从ssd_300_vgg模型中继承,因此使用checkpoint_exclude_scopes命令指出。
因为所有的参数均需要训练,因此不使用命令--trainable_scopes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
1 #/bin/bash
2 DATASET_DIR = / home / data / xxx / imagedata / xing_tf / train_tf /
3 TRAIN_DIR = / home / data / xxx / model / xing300512_model /
4 CHECKPOINT_PATH = / home / data / xxx / model / xing300_model / model.ckpt - 60000 #加载的ssd_300_vgg模型
5 python3 . / train_ssd_network.py \
6 - - train_dir = ${TRAIN_DIR} \
7 - - dataset_dir = ${DATASET_DIR} \
8 - - dataset_name = pascalvoc_2007 \
9 - - dataset_split_name = train \
10 - - model_name = ssd_512_vgg \
11 - - checkpoint_path = ${CHECKPOINT_PATH} \
12 - - checkpoint_model_scope = ssd_300_vgg \
13 - - checkpoint_exclude_scopes = ssd_512_vgg / block7,ssd_512_vgg / block7_box,ssd_512_vgg / block8,ssd_512_vgg / block8_box,ssd_512_vgg / block9,ssd_512_vgg / block9_box,ssd_512_vgg / block10,ssd_512_vgg / block10_box,ssd_512_vgg / block11,ssd_512_vgg / b lock11_box,ssd_512_vgg / block12,ssd_512_vgg / block12_box \
14 #--trainable_scopes=ssd_300_vgg/conv6,ssd_300_vgg/conv7,ssd_300_vgg/block8,ssd_300_vgg/block9,ssd_300_vgg/block10,ssd_300_vgg/block11,ssd_300_vgg/block4_box,ssd_300_vgg/block7_box,ssd_300_vgg/block8_box,ssd_300_vgg/block9_box,ssd_3 00_vgg/block10_box,ssd_300_vgg/block11_box \
15 - - save_summaries_secs = 28800 \
16 - - save_interval_secs = 28800 \
17 - - weight_decay = 0.0005 \
18 - - optimizer = adam \
19 - - learning_rate_decay_factor = 0.94 \
20 - - batch_size = 16 \
21 - - num_classes = 4 \
22 - gpu_memory_fraction = 0.8 \
|
另外由300转512后还需修改:
1. 首先修改ssd_vgg_512.py的训练类别
2.修改train_ssd_network.py的model_name
修改为ssd_512_vgg
3. 修改nets/np_methods.py
修改:将300改为512, 将类别改为自己数据的类别(+背景)
4. 修改preprocessing/ssd_vgg_preprocessing.py
修改:将300改为512
5. 修改ssd_notbook.ipynb
a 将文件中数字“300”改为“512”
其他修改可以参考:http://blog.csdn.net/liuyan20062010/article/details/78905517
二、我遇到的错误:
InvalidArgumentError (see above for traceback): Restoring from checkpoint failed. This is most likely due to a mismatch between the current graph and the graph from the checkpoint. Please ensure that you have not altered the graph expected based on the checkpoint. Original error:Assign requires shapes of both tensors to match. lhs shape= [84] rhs shape= [8][[{{node save/Assign_20}} = Assign[T=DT_FLOAT, _class=["loc:@ssd_512_vgg/block12_box/conv_cls/biases"], use_locking=true, validate_shape=true, _device="/job:localhost/replica:0/task:0/device:GPU:0"](ssd_512_vgg/block12_box/conv_cls/biases, save/RestoreV2/_41)]][[{{node save/RestoreV2/_104}} = _Send[T=DT_FLOAT, client_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:GPU:0", send_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device_incarnation=1, tensor_name="edge_110_save/RestoreV2", _device="/job:localhost/replica:0/task:0/device:CPU:0"](save/RestoreV2:52)]]
这类的问题本质上来说还是自己的配置不对,这个问题我查了很久,最后发现实在是太simpleT-T。
我的问题的话:在从300转到512的时候忘记改ssd_vgg_512.py的类别导致test的时候文件配置和训练的tensor shape不匹配TT...
转载于:https://www.cnblogs.com/GrPhoenix/p/10039833.html
SSD-Tensorflow 512x512 训练配置相关推荐
- 在 C/C++ 中使用 TensorFlow 预训练好的模型—— 直接调用 C++ 接口实现
现在的深度学习框架一般都是基于 Python 来实现,构建.训练.保存和调用模型都可以很容易地在 Python 下完成.但有时候,我们在实际应用这些模型的时候可能需要在其他编程语言下进行,本文将通过直 ...
- Caffe SSD编译、训练及测试
SSD采用VGG16作为基础模型,然后在VGG16的基础上新增了卷积层来获得更多的特征以用于检测.SSD的网络结构如上图所示(上面是SSD模型,下面是Yolo模型),可以明显看到SSD利用了多尺度的特 ...
- Tensorflow分布式训练原理
以下文章摘录自: <机器学习观止--核心原理与实践> 京东: https://item.jd.com/13166960.html 当当:http://product.dangdang.co ...
- Tensorflow CIFAR-10训练例子报错解决
Tensorflow CIFAR-10训练例子报错解决 大部分是Api版本问题: AttributeError: 'module' object has no attribute 'SummaryWr ...
- Caffe SSD Ubuntu16 04 训练自己的数据集
总的来说,Caffe 是一个比较难上手的框架.这次尝试训练 Caffe 框架下 SSD 模型的训练是我第一次使用 Caffe 框架.下面就说一说我踩过的几个坑,希望能够帮助到大家. 1 编译 Caff ...
- 深度学习(五十五)tensorflow分布式训练
tensorflow分布式训练 博客:http://blog.csdn.net/hjimce 微博:黄锦池-hjimce qq:1393852684 情况一.单机单卡 单机单卡是最普通的情况,当然 ...
- 目标检测之SSD数据处理、训练与预测流程记录
写在前面:本文不详细介绍SSD,只记录一些大体流程,具体细节可见参考1,换用数据集训练SSD可见参考2 参考1:SSD代码细节讲解 参考2:SSD换数据集训练 给定图片如何得到对应的GT SSD网络若 ...
- 新版本GPU加速的tensorflow库的配置方法
本文介绍在Anaconda环境中,配置可以用GPU运行的Python新版tensorflow库的方法. 在上一篇文章Anaconda配置Python新版本tensorflow库(CPU.GPU ...
- 【mmaction2 入门教程 01】 slowfast训练配置 日志分析 测试结果分析
目录 0 参考资料 1 GPU平台 2 训练配置(Training setting) 2.1 官网的训练配置文档 2.2 官网的时空动作检测的配置文件系统解析(Config System for Sp ...
最新文章
- vue中使用MD5加密
- 数据结构——线性表之链式存储结构
- python3 urlencode_Python2和Python3中urllib库中urlencode的使用注意事项
- Android v4、v7、v13 的区别
- 文本挖掘(part7)--Word2vec
- Java-jdbc连接数据库
- 【图像处理面试题】——1
- codeforces gym-101745 D-Stamp Stamp Stamp动态规划
- 数学公式、可视化图齐齐上阵,神经网络如何一步步走向最优化「看得见」!...
- Android Shader类简介之渲染图像示例
- java 时间格式化 星期_Java SimpleDateFormate时间格式化
- Unix/Linux笔记全集
- 企业对计算机类专业人才培养方案,应用型本科计算机科学与技术专业人才培养方案探讨...
- Black-Scholes期权定价公式
- 比较PAFF和MBAFF
- 线性代数中解方程组的加减消元和求特征向量的加减消元的区别
- python提取微信聊天语音_GitHub - dennischancs/wechat-asr: 微信语音批量转文字 python编写 用百度智能云短语音识别API实现 windows下的使用...
- Vue中使用qs 将post 请求方式序列化成get 请求
- 用计算机弹出微微,电脑显示器轻微闪烁怎么办
- linux看磁带内容命令,Linux下磁带管理命令