代码之家  ›  专栏  ›  技术社区  ›  Pais

Tensorflow对象检测,生成tfrecord时出错[类型错误:None的类型为NoneType,但应为:int,long]

  •  4
  • Pais  · 技术社区  · 7 年前

    当检查网络上可用的不同解决方案时,大多数人(包括datitran)指出,可能是train csv文件中缺少类或类拼写错误。我无法理解,因为标签是使用labelImg完成的,所以它将这些类保存为xml,即xml\u to\u csv。py将其转换为csv。我不知道在什么情况下我会有机会错过或错误地拼写任何课程。

    下面是我正在处理的错误:

    (OT) 
    nisxxxxx@xxxxxxxx:~/Desktop/OD/models/research/object_detection$ 
    python generate_tfrecord.py --csv_input=data/train_labels.csv  --
    output_path=data/train.record
    Traceback (most recent call last):
      File "generate_tfrecord.py", line 192, in <module>
        tf.app.run()
      File "/home/nisxxxxx/Desktop/test_OD/OT/lib/python2.7/site-
    packages/tensorflow/python/platform/app.py", line 48, in run
        _sys.exit(main(_sys.argv[:1] + flags_passthrough))
      File "generate_tfrecord.py", line 184, in main
    tf_example = create_tf_example(group, path)
      File "generate_tfrecord.py", line 173, in create_tf_example
        'image/object/class/label': 
    dataset_util.int64_list_feature(classes),
    File"/home/nishanth/Desktop/test_OD/models/research/object_detection/utils/dat
    aset_util.py", line 26, 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
    

    有人能解决这个问题吗?

    2 回复  |  直到 7 年前
        1
  •  15
  •   MBT Nina Golyandina    7 年前

    我不知道你上过多少课。。。在最后的else之后,尝试“返回0而不是无”。。。实例

    if row_label == 'red':
        return 1
    elif row_label == 'orange':
        return 2
    elif row_label == 'blue':
        return 3
    else:
        return 0
    
        2
  •  0
  •   shubham Nagalwade    4 年前

    只要在使用labelImg工具裁剪图像期间更改标签名称即可。

    def class_text_to_int(row_label):
        if row_label == 'raccon':
            return 1
        else:
            None
    

    将ex的标签名称改为“car”,而不是“raccon”。