Tensorflow之eval.py使用方法

TensorFlow 专栏收录该内容
19 篇文章 4 订阅

用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值。在IMAGES选项中,还可以看到测试图片的结果,我这里就不再显示了

如果是训练Faster-RCNN等模型,会看到以上四种loss,loss的含义分别是

The losses for the Region Proposal Network:

  • Loss/RPNLoss/localization_loss: Localization Loss or the Loss of the Bounding Box regressor for the RPN
  • Loss/RPNLoss/objectness_loss: Loss of the Classifier that classifies if a bounding box is an object of interest or background

The losses for the Final Classifier:

  • Loss/BoxClassifierLoss/classification_loss: Loss for the classification of detected objects into various classes: Cat, Dog, Airplane etc
  • Loss/BoxClassifierLoss/localization_loss: Localization Loss or the Loss of the Bounding Box regressor

评论区有人提问曲线中深色的线和浅色的线分别是什么含义,这里记录一下

相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值