深度学习文章6:SSD求出map精度
6.SSD求出map精度
(写在每篇深度学习文章系列的前面,该系列的文章是我2019年做毕设时的步骤总结,是能实现的,不和其他很多博客一样瞎糊弄人浪费时间。写下这些文章一方面为了方便后来者,一方面也为了自己以后的步骤复现等。
另外,如果我给的那些参考帖子看不了了,可以到我的博客下载区那里去下载对应的压缩文件,我把里面所有的链接网页都截了长图,所以不用担心我给的参考帖子链接失效。
其次,如果我给的参考链接侵犯了该链接博主的权益,烦请告知,必当第一时间删掉。由于本人参考帖子较多,如果侵犯了请原谅,我会删掉。也谢谢各位在路上帮助过我的,谢谢了。
还有就是,如果积分太高了,请告诉我怎么把积分降低,我也不太清楚怎么弄,积分会随着下载次数增加逐渐增加。你知道的话怎么降的话可以留言给我。
emm, 最后的最后,如果你觉得这篇博文有用,请点个赞哩,感谢!~~)
(博客下载区:https://download.csdn.net/download/lininggggggg/11224785
或者在下载区搜索名字:6.SSD求出map精度.zip–深度学习文章6)
正文
求出精度一(不太准,具体看下面求解精度二)
1.建立如下图的文件夹
2.首先,和训练集的要求一样,建立验证集的三个文件夹,目录如下
3.更改datasets/pascalvoc_2007.py,里面的分类的数目按实际情况分类。
4.放上图片,按照之前的操作转换为xml文件和txt文件,再转换为tfrecord文件,放在tfrecords_的子文件夹里面的tfrecords里面。即在tf_convert_data.py文件夹下的设置里输入下面指令
–dataset_name=pascalvoc
–dataset_dir=./VOC2007/test_images/
–output_name=voc_2007_test
–output_dir=./tfrecords_/tfrecords
5.打开主目录下的eval_ssd_network.py文件,在设置里输入下面指令
(补充,其中的model.ckpt-30000是先前训练出来的模型,要放到checkpoints目录下并改名且原先的模型不能删除,共四个)
python./eval_ssd_network.py
–eval_dir=./ssd_eval_log/
–dataset_dir=./tfrecords_/tfrecords/
–dataset_name=pascalvoc_2007
–dataset_split_name=test
–model_name=ssd_300_vgg
–checkpoint_path=./checkpoints/model.ckpt-30000 #30000根据具体情况来定
–batch_size=1
6. 打开主目录下的eval_ssd_network.py文件,在105行后下一行输入下面代码
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())),
7.最后,运行eval_ssd_network.py文件,可以得到精度map。
8.如果需要多个map,则把训练过程生成的步骤文件全复制到checkpoints下并复制改名,然后重复5到7的步骤(其中的5步骤的输入命令需要更改对应的文件名称,比如model.ckpt-12206,model.ckpt-23510等)
9.然后,在主目录的ssd_eval_log文件夹下会有对应个数的文件出现。
10.cd到目录(tf-gpu-py36) E:\GraduationProject\Data\SSD-Tensorflow-master_2>下,输入tensorboard --logdir=ssd_eval_log即可得到可视化的map精度。
求出精度二
1.建立如下图的文件夹
2.在tf_convert_data.py文件夹下的设置里输入下面指令,然后运行。
–dataset_name=pascalvoc
–dataset_dir=./VOC2007/
–output_name=voc_2007_test
–output_dir=./tfrecords_/tfrecords
3.打开主目录下的eval_ssd_network.py文件,在设置里输入下面指令
(补充,其中的model.ckpt-30000是先前训练出来的模型,要放到checkpoints目录下并改名且原先的模型不能删除,共四个)
python./eval_ssd_network.py
–eval_dir=./ssd_eval_log/
–dataset_dir=./tfrecords_/tfrecords/
–dataset_name=pascalvoc_2007
–dataset_split_name=test
–model_name=ssd_300_vgg
–checkpoint_path=./checkpoints/model.ckpt-30000 #30000根据具体情况来定
–batch_size=1
4. 打开主目录下的eval_ssd_network.py文件,在105行后下一行输入下面代码
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())),
5.最后,运行eval_ssd_network.py文件,可以得到精度map。
6.如果需要多个map,则把训练过程生成的步骤文件全复制到checkpoints下并复制改名,然后重复5到7的步骤(其中的5步骤的输入命令需要更改对应的文件名称,比如model.ckpt-12206,model.ckpt-23510等)
7.然后,在主目录的ssd_eval_log文件夹下会有对应个数的文件出现。
8.cd到目录(tf-gpu-py36) E:\GraduationProject\Data\SSD-Tensorflow-master_2>下,输入tensorboard --logdir=ssd_eval_log即可得到可视化的map精度。