0
点赞
收藏
分享

微信扫一扫

TensorBoard实时查看评估模型--Tensorflow之eval.py使用方法

用tensorflow训练模型时,很自然的想到要同时验证模型的效果,得到mAP、loss等参数,从而判断什么时候可以终止训练,防止欠拟合或者过拟合。幸运的是,tensorflow官方已经给出了验证的脚本eval.py,网上找了很多资料,都没有人能把使用方法讲清楚,因此在研究的基础上做一个总结。本文是基于目标检测API接口object_detection做进一步的分析,如果对这些接口不熟悉的,可参考之前的文章。

 在object_detection/legacy文件夹下有eval.py,我们把它拷贝到上级目录中,方便使用。需要强调的是eval.py需要与train.py同时使用,即在训练的同时进行验证,这样才能看出训练过程中的参数,如果只运行eval.py,读取的只是最后一个模型的参数,得到的mAP曲线只是一个点,所以为了看出趋势,应该训练的同时进行验证。


训练的过程不再具体描述,可参考我之前的文章,这里着重介绍eval.py的使用方法。简单重复一下训练的语句:

python train.py --logtostderr --train_dir=training/ --pipeline_config_path=ssd_mobilenet_v1_pets.config

训练过程中读取模型配置文件,训练生成的checkpoint文件会保存在training中。

eval.py的运行方法类似:

python eval.py --logtostderr --eval_dir=evalpath/ --pipeline_config_path=ssd_mobilenet_v1_pets.config --checkpoint_dir=training/

先运行train.py,然后运行eval.py,然后运行tensorboard --logdir='evalpath',在浏览其中打开tensorboard即可看到变化。要注意的是,在tensorboard中不是立马就会有结果,而是训练保存一个checkpoint,tensorboard读取一个模型,更新一次参数,所以相当于有几个checkpoint,在曲线中就会有几个点,需要耐心等待,不要着急。


再运行eval.py时,会有一些疑似问题的情况,很多同学会觉得异常,找解决方法,这里我列举一些常见的问题


问题一:WARNING:root:image 0 does not have groundtruth difficult flag specified


问题二:WARNING:root:The following classes have no ground truth examples: 11


问题三:  num_images_correctly_detected_per_class / num_gt_imgs_per_class)


上边出现的三种问题都是正常的,不会影响到最终的结果,而且出现第三条语句时,会一直在等待,没有输出,直到有新的checkpoint保存后,才会有下一步的输出:


INFO:tensorflow:Restoring parameters from training/model.ckpt-2175

INFO:tensorflow:Restoring parameters from training/model.ckpt-2175


因此,遇到这些问题不要着急,训练的过程中一直等待就行。下图为我在tensorboard中监控到的结果,包括loss、各个类别的AP值,还有总的mAP值

TensorBoard实时查看评估模型--Tensorflow之eval.py使用方法_深度学习

TensorBoard实时查看评估模型--Tensorflow之eval.py使用方法_深度学习_02

TensorBoard实时查看评估模型--Tensorflow之eval.py使用方法_深度学习_03

在IMAGES里面还可以查看模型在验证集图片上的检测效果:

TensorBoard实时查看评估模型--Tensorflow之eval.py使用方法_tensorflow_04

TensorBoard实时查看评估模型--Tensorflow之eval.py使用方法_深度学习_05

关注【OpenCV与AI深度学习】



举报

相关推荐

0 条评论