SSD-tensorflow-2 evaluation
测试就是用voc2007的test set来测试已经训练好的checkpoint的mAP,github上提供了三个已经训练好的model的checkpoint
checkpoint 里面已有的300_vgg_ckpt这个文件很有可能就是下图圈住的模型,因为这两个文件的大小是一模一样的
需要做的准备有:
1. 下载voc2007的数据集,然后将test set转化成tfrecord(在转化时,源码只使用了annotations和jpegimages两个文件夹的内容来制作tfrecords)
2. 下载checkpoint,如voc2007和voc2012训练集训练的checkpoint(这个要到github上SSD的主页去下载,但是好像被墙了,不下载其实也没关系,因为前面自带的有一个checkpoint是可以用的)
下载好的voc2007文件test set 结构是这样的:
调用tf_convert_data.py将test set转化成tfrecoeds,(注意:这里直接运行会碰到无法读取图片,UTF-8无法decode的Erro,解决办法是打开SSD工程—>datasets—>pascalvoc_to_tfrecords.py 。。。然后更改文件的83行读取方式为’rb’)
DATASET_DIR=./VOC2007/ #下载的voc数据集总文件夹
OUTPUT_DIR=./tfrecords #用来放生成的tfrecord文件的文件夹
python tf_convert_data.py \
--dataset_name=pascalvoc \ #必须是pascalvoc,代码里面默认的
--dataset_dir=${DATASET_DIR} \
--output_name=voc_2007_train \ #必须是这个格式的,例如:voc_2012_test
--output_dir=${OUTPUT_DIR}
生成测试集tfrecord后,调用eval_ssd_network.py使用刚刚生成好的tfrecords来测试checkpoint的准确率:
DATASET_DIR=/home/wu/voc2007_test_tfrecords/ #保存tfrecords的路径
EVAL_DIR=/home/wu/ssd_eval_log/ #是自己设置用来保存测试结果的路径(生成结果后,在该路径下运行tensorboard可以查看可视化的结果)
CHECKPOINT_PATH=/home/wu/Downloads/SSD-Tensorflow-master/checkpoints/VGG_VOC0712_SSD_300x300_iter_120000.ckpt 是下载的checkpoint的路径(如果未下载可以使用SSD工程本来自带的checkpoint)
python3 ./eval_ssd_network.py \
--eval_dir=${EVAL_DIR} \
--dataset_dir=${DATASET_DIR} \
--dataset_name=pascalvoc_2007 \ #或者pascalvoc_2012,代码里面有默认的几个选项
--dataset_split_name=test \ #必须是test
--model_name=ssd_300_vgg \
--checkpoint_path=${CHECKPOINT_PATH} \
--batch_size=1 #可根据自己电脑设置
补充:
SSD输出mAP时出现TypeError: Can not convert a tuple into a Tensor or Operation???
解决方法为在eval_ssd_network.py文件中添加下面一个函数:
def flatten(x):
result = []
for el in x:
if isinstance(el, tuple):
result.extend(flatten(el))
else:
result.append(el)
return result
然后修改两行代码:
将 eval_op=list(names_to_updates.values()) 改为 eval_op=flatten(list(names_to_updates.values())) 注意:共有两行!
SSD-tensorflow-2 evaluation的更多相关文章
- 【目标检测】SSD+Tensorflow 300&512 配置详解
SSD_300_vgg和SSD_512_vgg weights下载链接[需要科学上网~]: Model Training data Testing data mAP FPS SSD-300 VGG-b ...
- SSD:TensorFlow中的单次多重检测器
SSD:TensorFlow中的单次多重检测器 SSD Notebook 包含 SSD TensorFlow 的最小示例. 很快,就检测出了两个主要步骤:在图像上运行SSD网络,并使用通用算法(top ...
- Convolutional Neural Network in TensorFlow
翻译自Build a Convolutional Neural Network using Estimators TensorFlow的layer模块提供了一个轻松构建神经网络的高端API,它提供了创 ...
- 论文笔记 SSD: Single Shot MultiBox Detector
转载自:https://zhuanlan.zhihu.com/p/33544892 前言 目标检测近年来已经取得了很重要的进展,主流的算法主要分为两个类型(参考RefineDet):(1)two-st ...
- tensorflow语义分割api使用(deeplab训练cityscapes)
安装教程:https://github.com/tensorflow/models/blob/master/research/deeplab/g3doc/installation.md citysca ...
- [PocketFlow]解决TensorFLow在COCO数据集上训练挂起无输出的bug
1. 引言 因项目要求,需要在PocketFlow中添加一套PeleeNet-SSD和COCO的API,具体为在datasets文件夹下添加coco_dataset.py, 在nets下添加pelee ...
- 本人AI知识体系导航 - AI menu
Relevant Readable Links Name Interesting topic Comment Edwin Chen 非参贝叶斯 徐亦达老板 Dirichlet Process 学习 ...
- 使用 Estimator 构建卷积神经网络
来源于:https://tensorflow.google.cn/tutorials/estimators/cnn 强烈建议前往学习 tf.layers 模块提供一个可用于轻松构建神经网络的高级 AP ...
- DNNClassifier 深度神经网络 分类器
An Example of a DNNClassifier for the Iris dataset. models/premade_estimator.py at master · tensorfl ...
- 利用NVIDIA NGC的TensorRT容器优化和加速人工智能推理
利用NVIDIA NGC的TensorRT容器优化和加速人工智能推理 Optimizing and Accelerating AI Inference with the TensorRT Contai ...
随机推荐
- apiCloud中api.ajax方法跨域传参获取数据
apiCloud中的ajax方法,可以自动处理跨域访问数据,不必使用jsonp来处理了. 使用ajax方法,必须要在apiready = function() {}方法中 获取参数 var pageP ...
- Java 定制工具库 —— Print(import static)
创建自己的工具库以减少或消除重复的程序代码.例如,我们在Print类中,对常常用到的System.out.println()封装调用以减少输入负担.这样,我们在使用该类时,可以用一个更具可读性的 im ...
- Linux就该这么学 20181002(第二章基础命令)
参考链接https://www.linuxprobe.com/ 忘记密码操作 启动页面 默认按e 在linux16行后空格 rd.break ctrl + x mount -o remount,rw ...
- ubuntu12.04下NFS链接开发板并测试交叉编译的第一个应用
思路:配置网络->安装NFS->配置NFS->挂载NFS服务->Down文件执行.Okay lets go! 配置网络: 在配置网络之前,首先咱得搞定与开发板的交互工作,那么这 ...
- xBIM 基础10 WeXplorer 浏览器检查
系列目录 [已更新最新开发文章,点击查看详细] 在上一篇 <xBIM基础 09 WeXplorer 基本应用> 已经提到,查看器不会在所有浏览器的所有设备上运行.为了操作效率和简单 ...
- if switch
一.基本if结构: 1.语法:if (条件){ 代码块 } 2.执行顺序:先判断条件,条件成立则行{}内的代码,不成立则跳出if结构快既不执行{}内的代码. 3.什么情况下要用基本if选择结构:当需要 ...
- C# 对象初始化器和集合初始化器
/// <summary>/// 图书类/// </summary>public class Book { /// <summary> /// 图书 ...
- miniUI打开一个新的画面(ondestroy)
转自:http://blog.csdn.net/u012934325/article/details/77914691 需求:开发中需求通过点击父界面一个按钮弹出一个子界面,在miniUI中我们可以这 ...
- Maven介绍_转载
maven(一) maven到底是个啥玩意~ 我记得在搞懂maven之前看了几次重复的maven的教学视频.不知道是自己悟性太低还是怎么滴,就是搞不清楚,现在弄清楚了,基本上入门了.写该篇博文,就 ...
- 玩转HTML5移动页面(优化篇)
标签:h5 页面优化收藏 热门分享 网页设计师必备的 酷站收藏网站 2013年不容错过的app ui素材 40个漂亮的扁平化网页设计欣赏 国内网页设计公司网站欣赏 55套网页设计常用的psd格式UI ...