• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

Tensorflow之eval.py使用方法

人工智能 宗孝鹏 1267次浏览 0个评论

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


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


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明Tensorflow之eval.py使用方法
喜欢 (0)

您必须 登录 才能发表评论!

加载中……