TAO提供了训练jupyter notebook中的示例,使用的都是Kitti的数据集,最后转换成 TFRecord格式

1 什么是tfrecord

TFRecord是Google官方推荐的一种数据格式,是Google专门为TensorFlow设计的一种数据格式。

2 TFRecord原理

TFRecord 并非是TensorFlow唯一支持的数据格式,你也可以使用CSV或文本等格式,但是对于TensorFlow来说,TFRecord 是最友好也是最方便的。 tf.Example是TFRecord的基本结果,其实他就是一个Protobuffer定义的message,表示一组string到bytes value的映射。TFRecord文件里面存储的就是序列化的tf.Example。在github上tensorflow的源码就能看到其定义

message Example {
  Features features = 1;
};

里面只有一个变量features。如果我们继续查看Features

message Features {
  // Map from feature name to feature.
  map<string, Feature> feature = 1;
};

features里面就是一组string到Feature的映射。其中这个string表示feature name,后面的Feature又是一个message

继续查看Feature的定义

message Feature {
  // Each feature can be exactly one kind.
  oneof kind {
    BytesList bytes_list = 1;
    FloatList float_list = 2;
    Int64List int64_list = 3;
  }
};

到这里,我们就可以看到tfrecord里存储的真正数据类型有三种 bytes_list: 可以存储string 和byte两种数据类型。 float_list: 可以存储float(float32)与double(float64) 两种数据类型 。 int64_list: 可以存储:bool, enum, int32, uint32, int64, uint64 。

3 实操生成tfrecords文件

Alt text

pip uninstall opencv-python

pip install opencv-python-headless