TensorFlow目标检测测试警告消除方法及使用影响咨询
解决TensorFlow Object Detection API测试中的弃用警告问题
Hey there! Let's tackle your questions step by step:
这些警告会影响后续使用目标检测API吗?
首先看你的测试结果:Ran 22 tests in 0.141s OK (skipped=1),这说明核心功能完全正常,当前版本的目标检测API可以正常使用。这些警告都是弃用(Deprecation)警告——它们只是告诉你某些API/方法会在未来的版本中被移除,但在当前你使用的TensorFlow和NumPy版本里,这些功能仍然是有效的。
不过要注意:如果之后你升级到TensorFlow 2.x或者更高版本的NumPy,这些警告可能会变成错误,导致代码运行失败。所以如果计划长期使用,最好还是针对性解决这些警告。
如何逐个消除这些警告?
1. TensorFlow contrib模块弃用警告
这个警告提示contrib模块不会出现在TF2.0中,原因是你当前使用的Object Detection API版本依赖TF1.x的contrib组件。解决方法:
- 如果你想继续使用TF1.x环境:可以忽略这个警告,或者切换到官方针对TF1.x维护的Object Detection API分支版本;
- 如果你准备升级到TF2.x:建议直接使用官方的TF2版本Object Detection API,它已经移除了对contrib模块的依赖,适配了TF2.x的新API。
2. NumPy np.asscalar弃用警告
这个是因为代码中使用了NumPy已弃用的np.asscalar()方法,官方推荐用a.item()替代。解决方法:
- 手动修改代码:找到报错路径
numpy/lib/type_check.py中调用np.asscalar的位置,替换成对应的.item()方法; - 升级Object Detection API:更新到最新版本的API,官方已经修复了这个兼容性问题;
- 临时方案:如果不想改代码,可以暂时忽略,当前NumPy版本还支持这个方法。
3. tf.to_float弃用警告
这个是因为grid_anchor_generator.py中使用了已弃用的tf.to_float(),官方推荐用tf.cast()替代。解决方法:
- 手动修改代码:打开
C:\Users\765349\Downloads\models\research\object_detection\anchor_generators\grid_anchor_generator.py,找到第59行的to_float调用,替换成tf.cast(your_tensor, tf.float32); - 升级Object Detection API:新版本的API已经把这类旧API调用替换成了TF1.x后期或TF2.x的兼容写法。
快速屏蔽所有警告(不推荐长期使用)
如果只是想临时屏蔽警告,不想修改代码,可以在测试脚本的开头添加以下代码:
import warnings # 屏蔽NumPy的DeprecationWarning warnings.filterwarnings("ignore", category=DeprecationWarning) import tensorflow as tf # 屏蔽TensorFlow的弃用警告 tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.ERROR)
不过这种方法只是“掩盖”警告,没有从根本上解决兼容性问题,不推荐长期使用。
内容的提问来源于stack exchange,提问作者vansh_mohale
相关产品推荐
相关产品推荐

