最近在做用tensorflow的API做一个目标检测的任务,遇到了这样一个奇怪的报错:
Traceback (most recent call last):
File “generate_tfrecord.py”, line 119, in
tf.app.run()
File “D:\Anaconda\envs\tensorflow2.3.0\lib\site-packages\tensorflow\python\platform\app.py”, line 40, in run
_run(main=main, argv=argv, flags_parser=_parse_flags_tolerate_undef)
File “D:\Anaconda\envs\tensorflow2.3.0\lib\site-packages\absl\app.py”, line 300, in run
_run_main(main, args)
File “D:\Anaconda\envs\tensorflow2.3.0\lib\site-packages\absl\app.py”, line 251, in _run_main
sys.exit(main(argv))
File “generate_tfrecord.py”, line 110, in main
tf_example = create_tf_example(group, path)
File “generate_tfrecord.py”, line 99, in create_tf_example
‘image/object/class/label’: dataset_util.int64_list_feature(classes),
File “D:\MyFiles\stage_memory\winter_holiday2021\tf_classify_successful\new_mobilenet_trash\models\research\object_detection\dataset_util.py”, line 30, in int64_list_feature
return tf.train.Feature(int64_list=tf.train.Int64List(value=value))
TypeError: None has type NoneType, but expected one of: int, long
参考了这篇博客,:https://blog.csdn.net/qq_27882063/article/details/85258113
说的是可能是标签名字的问题,于是返回对应代码查看了一下,发现确实可能是类名的问题,因为上一步是将XML转换成CSV,于是打开CSV文件查看了一下,然后就看到了下面一幕:
这…混入了一个奇奇怪怪的东西,应该是我的标签名才对啊。想了想,应该是在用labelimg打标签的时候,w是一个快速画矩形的快捷键,可能是手速太快了,导致后期出现报错。。。
所以,打标签需谨慎!!!
这时,手动把csv文件里的w改成正确的标签名,问题就解决了。(当然也可以对这个错误的标签重新打一遍,然后再重新生成csv文件)