Tensorflow 2对象检测API-无法通过model_main_tf2.py

问题描述

我最近从TF1迁移到TF2,当时我听到了惊人的消息,即对象检测API已迁移到新版本。 但是,一旦我开始使用TF2,培训和评估就变得非常繁琐。 下面,我介绍了TF2的一些一般性问题以及需要解决的主要问题。

常见问题

我在自己的数据上使用TF 2 OD API,并使用不同的预训练模型进行转移训练。 在这里,已经在训练过程中,我注意到控制台打印的损失非常不规则,在大约100-200个训练步骤中,损失就从很小的数字跃升到很高的值(Training logs image) 这是正确的行为吗?

最重要的是,在Tensorflow 1.x对象检测中,在培训持续进行的同时成功进行了评估。我既可以在Tensorboard中看到训练图像,也可以看到具有指定类别的预测。 在TF2的情况下,我只能发现训练图像,这些图像本身就是这种高对比度/低清晰度的版本。 Link to the images

我想,这是在应用pipeline.config的数据增强之后吗??

对于培训,我正在运行以下代码

python object_detection/model_main_tf2.py \
--pipeline_config_path=${PIPELINE_CONfig_PATH} \
--model_dir=${MODEL_DIR} \
--alsologtostderr
--sample_1_of_n_eval_examples=2

在培训期间,没有可用的评估指标。在TF 1.x中,在执行培训期间已经可以看到mAP@0.5IoU和其他值。对于TF 2,我尝试通过调整配置文件中的特定设置来获得可可指标和oid指标的任何结果,但是没有任何运气。

无法执行评估-TypeError:预期的str,字节或os.pathLike对象,而不是nonetype

尽管如此,最大的问题还是执行评估时出现。在运行以下结构的代码时:

python object_detection/model_main_tf2.py \
--pipeline_config_path=${PIPELINE_CONfig_PATH} \
--model_dir=${MODEL_DIR} \
--checkpoint_dir=${CHECKPOINT_DIR} \
--alsologtostderr

启动并初始化TF2之后,读取最新的检查点,然后收到以下错误代码

I0901 22:21:48.011265 49544 checkpoint_utils.py:134] Found new checkpoint at kodels/faster_rcnn_resnet50_v1_640x640_coco17_tpu-8_groceries\ckpt-30
Traceback (most recent call last):
  File "model_main_tf2.py",line 113,in <module>
    tf.compat.v1.app.run()
  File "C:\Users\User\anaconda3\envs\Mgr_TF2_P8\lib\site-packages\tensorflow\python\platform\app.py",line 40,in run
_run(main=main,argv=argv,flags_parser=_parse_flags_tolerate_undef)
  File "C:\Users\User\anaconda3\envs\Mgr_TF2_P8\lib\site-packages\absl\app.py",line 300,in run
    _run_main(main,args)
  File "C:\Users\User\anaconda3\envs\Mgr_TF2_P8\lib\site-packages\absl\app.py",line 251,in _run_main
    sys.exit(main(argv))
  File "model_main_tf2.py",line 80,in main
    model_lib_v2.eval_continuously(
  File "C:\Users\User\anaconda3\envs\Mgr_TF2_P8\lib\site-packages\object_detection\model_lib_v2.py",line 974,in eval_continuously
    os.path.join(model_dir,'eval',eval_name))
  File "C:\Users\User\anaconda3\envs\Mgr_TF2_P8\lib\ntpath.py",line 78,in join
    path = os.fspath(path)
TypeError: expected str,bytes or os.pathLike object,not nonetype

有人可以就问题的根源提出建议吗?可以使用保存的检查点在TF 2对象检测API中执行评估吗?

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)