TensorFlow2目标检测创建train.record与test.record时参数无法识别报错
TensorFlow2生成tfrecord参数报错解决方案
报错信息如下:
usage: generate_tfrecord.py [-h] [-i IMAGEDIR] [-o OUTPUTDIR] [-r RATIO] [-x] generate_tfrecord.py: error: unrecognized arguments: /content/training_demo/images/train -l /content/training_demo/annotations/label_map.pbtxt usage: generate_tfrecord.py [-h] [-i IMAGEDIR] [-o OUTPUTDIR] [-r RATIO] [-x] generate_tfrecord.py: error: unrecognized arguments: /content/training_demo/images/test -l /content/training_demo/annotations/label_map.pbtxt
报错核心原因
从脚本的usage提示可以看出,你当前使用的generate_tfrecord.py版本仅支持5个可选参数:
-h:查看帮助信息-i:指定图像所在目录-o:指定record文件输出目录-r:指定训练集、测试集拆分比例-x:开启XML格式标注解析开关
你执行命令时传入了脚本未定义的-l参数指定标签映射文件,因此触发参数不识别报错。
定位步骤
- 执行
python generate_tfrecord.py -h查看脚本完整参数说明,确认所有支持的入参规则,避免传入未定义参数 - 查看
generate_tfrecord.py源码,确认标签映射文件是内置了固定读取路径,还是需要放到指定目录才能被正常读取 - 核对你参考的教程对应的脚本版本,不同开源仓库的tfrecord生成脚本参数设计差异很大,不要混用不同版本的执行命令
解决方案
方案1:修改执行命令适配现有脚本
如果你的脚本不需要手动传入标签映射路径,直接去掉-l和后面的标签路径参数即可,命令参考:
# 生成训练集record python generate_tfrecord.py -i /content/training_demo/images/train -o /content/training_demo/annotations/train.record # 生成测试集record python generate_tfrecord.py -i /content/training_demo/images/test -o /content/training_demo/annotations/test.record
如果脚本自带数据集拆分功能,不需要单独传train/test路径,加-r参数指定拆分比例即可:
python generate_tfrecord.py -i /content/training_demo/images -o /content/training_demo/annotations -r 0.2
方案2:修改脚本适配参数需求
如果你需要保留-l参数指定标签映射的功能,直接在脚本的argparse初始化部分添加对应参数定义即可,代码参考:
# 在脚本的argparse.ArgumentParser初始化代码块中添加以下行 parser.add_argument('-l', '--labelmap', help='Path to label map pbtxt file', required=True)
添加完成后就可以正常使用带-l参数的执行命令。
内容的提问来源于stack exchange,提问作者Satyam Tripathi
相关产品推荐
相关产品推荐

