运行Intel LPOT的prepare_dataset.sh命令出现tensorflow AttributeError报错
核心错误根因
首先抛出的AttributeError: module 'tensorflow' has no attribute 'app'是根本问题:
该报错源于你当前环境使用的是TensorFlow 2.x版本,而
create_coco_tf_record.py脚本中调用的tf.app.flags是TensorFlow 1.x专属API,TF2.x版本已经完全移除了该模块。
后续的mv: cannot stat类报错属于连锁问题,前序脚本执行失败没有生成对应的COCO数据集record文件,因此移动操作无法找到目标文件。
修复方案
方案1:安装匹配的TensorFlow 1.15版本(最省心方案)
该示例脚本原生适配TensorFlow 1.15版本,直接执行以下命令替换当前TF版本即可:pip install tensorflow==1.15 tensorflow-estimator==1.15
安装完成后重新执行. prepare_dataset.sh即可正常运行。方案2:适配现有TensorFlow 2.x环境修改代码
如果你需要保留当前TF2.x环境,仅需对./object_detection/dataset_tools/create_coco_tf_record.py做少量修改:- 在文件头部新增导入依赖:
from absl import flags import sys- 将代码中
flags = tf.app.flags替换为FLAGS = flags.FLAGS - 将代码末尾的
tf.app.run()替换为如下逻辑:
if __name__ == '__main__': FLAGS(sys.argv) # 原有main函数调用逻辑保持不变即可修改完成后重新执行数据集预处理脚本即可。
方案3:对齐示例官方依赖要求
进入当前object_detection示例目录,执行以下命令安装官方指定的所有依赖版本,避免其他依赖不兼容问题:pip install -r requirements.txt
内容的提问来源于stack exchange,提问作者ATHIRA MOHANAN

