Skip to content

TensorFlow record (.tfrecord) API for Node.JS and Browsers

License

Notifications You must be signed in to change notification settings

JacopoMangiavacchi/TFRecords

Repository files navigation

TFRecords (.tfrecord) file format Builder and Reader for Browser and Node.js

Build Status

The TFRecords format is briefly documented here, and described as the recommended format for feeding data into TenosorFlow here and here.

This library facilitates producing data in the TFRecord format directly in node.js. The library is not "official" - it is not part of TensorFlow, and it is not maintained by the TensorFlow team.

An existing TFRecord Library and NPM Package (https://www.npmjs.com/package/tfrecord) already provide TFRecord API support for the Node.js platform. This Library provide a TFrecords Javascript API solution that support both Browser and Node.js runtime.

Usage - Build a TFRecords Buffer

The example below covers recommended API usage for generating a TFRecords buffer.

// Generate TFRecord
const builder = new TFRecordsBuilder();

builder.addFeature("image/width", FeatureType.Int64, 1024);
builder.addFeature("image/height", FeatureType.Int64, 800);
builder.addFeature("image/filename", FeatureType.String, "name");
builder.addFeature("image/encoded", FeatureType.Binary, imageBuffer);
builder.addFeature("image/format", FeatureType.String, "jpeg");
builder.addArrayFeature("image/object/bbox/xmin", FeatureType.Float, 0.0);
builder.addArrayFeature("image/object/bbox/ymin", FeatureType.Float, 0.0);
builder.addArrayFeature("image/object/bbox/xmax", FeatureType.Float, 1.0);
builder.addArrayFeature("image/object/bbox/ymax", FeatureType.Float, 1.0);
builder.addArrayFeature("image/object/class/text", FeatureType.String, "tag1");
builder.addArrayFeature("image/object/class/label", FeatureType.Int64, 0);

// Build single TFRecord
const tfrecord = builder.build()

// Get TFRecords buffer
const tfRecords = TFRecordsBuilder.buildTFRecords([tfrecord]);

Usage - Read a TFRecords Buffer

The example below covers recommended API usage for read a TFRecords buffer.

const reader = new TFRecordsReader(tfrecords);

const width = reader.getFeature(0, "image/width", FeatureType.Int64) as number;
const height = reader.getFeature(0, "image/height", FeatureType.Int64) as number;
const xminArray = reader.getArrayFeature(0, "image/object/bbox/xmin", FeatureType.Float) as number[];
const yminArray = reader.getArrayFeature(0, "image/object/bbox/ymin", FeatureType.Float) as number[];
const xmaxArray = reader.getArrayFeature(0, "image/object/bbox/xmax", FeatureType.Float) as number[];
const ymaxArray = reader.getArrayFeature(0, "image/object/bbox/ymax", FeatureType.Float) as number[];
const textArray = reader.getArrayFeature(0, "image/object/class/text", FeatureType.String) as string[];

About

TensorFlow record (.tfrecord) API for Node.JS and Browsers

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages