wchan / TFRecords

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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

License:MIT License


Languages

Language:JavaScript 63.4%Language:TypeScript 36.6%