FeatureTypes

Int64FeatureType

The 64-bit integer feature type.

message Int64FeatureType {}

DoubleFeatureType

The double-precision floating point number feature type.

message DoubleFeatureType {}

StringFeatureType

The string feature type.

message StringFeatureType {}

SizeRange

message SizeRange {
    uint64 lowerBound = 1;
    int64 upperBound = 2; // negative value means unbound otherwise upperbound is included in range
}

ImageFeatureType

The image feature type.

message ImageFeatureType {
    // Assumes raw (decompressed) format
    enum ColorSpace {
        INVALID_COLOR_SPACE = 0;
        GRAYSCALE = 10; //  8 bits per pixel
        RGB = 20;       // 32 bits per pixel: RGBA with A channel ignored
        BGR = 30;       // 32 bits per pixel: BGRA with A channel ignored
        GRAYSCALE_FLOAT16 = 40; // 16 bits float per pixel
    }

    message ImageSize {
        uint64 width = 1;
        uint64 height = 2;
    }

    message EnumeratedImageSizes {
        repeated ImageSize sizes = 1;
    }

    message ImageSizeRange {
        SizeRange widthRange = 1;
        SizeRange heightRange = 2;
    }

    // The required or default image size is width x height
    //
    // If specificationVersion <= 2 or SizeFlexibility is empty,
    // width x height is the required fixed image size
    //
    // If SizeFlexibility is present, width x height indicate a "default"
    // image size which must be consistent with the flexibility specified

    int64 width = 1;
    int64 height = 2;

    // For specification version >= 3 you can specify image size flexibility.

    oneof SizeFlexibility {

        // Use enumeratedSizes for a set of distinct fixed sizes
        // e.g. portrait or landscape: [80 x 100, 100 x 8]
        //
        // If the width x height fields above are specified then they must be
        // one of the sizes listed.
        //
        // If width and height are not specified above then the default width
        // and height will be enumeratedSizes[0]
        //
        // Must be non-empty

        EnumeratedImageSizes enumeratedSizes = 21;

        // Use imageSizeRange to allow for ranges of values
        // e.g. any image greater than 10 x 20: [10..<max] x [20..<max]
        //
        // If width and height are specified above they must fall in the range
        // specified in imageSizeRange. They will be treated as the default size.
        //
        // If width and height are not specified above then the default width
        // and height will be imageSizeRange.widthRange.lowerBound x imageSizeRange.heightRange.lowerBound

        ImageSizeRange imageSizeRange = 31;
    }

    ColorSpace colorSpace = 3;
}

ImageFeatureType.ImageSize

message ImageSize {
    uint64 width = 1;
    uint64 height = 2;
}

ImageFeatureType.EnumeratedImageSizes

message EnumeratedImageSizes {
    repeated ImageSize sizes = 1;
}

ImageFeatureType.ImageSizeRange

message ImageSizeRange {
    SizeRange widthRange = 1;
    SizeRange heightRange = 2;
}

ArrayFeatureType

The array feature type.

message ArrayFeatureType {

    enum ArrayDataType {
        INVALID_ARRAY_DATA_TYPE = 0;
        FLOAT32 = 65568; // 0x10000 | 32
        DOUBLE = 65600;  // 0x10000 | 64
        INT32 = 131104;  // 0x20000 | 32
        FLOAT16 = 65552; // 0x10000 | 16
    }

    // The required or default shape
    //
    // If specificationVersion <= 2 or ShapeFlexibility is empty,
    // shape is the required fixed shape
    //
    // If ShapeFlexibility is present, shape indicate a "default"
    // shape which must be consistent with the flexibility specified

    repeated int64 shape = 1;

    ArrayDataType dataType = 2;

    message Shape {
        repeated int64 shape = 1;
    }

    message EnumeratedShapes {
        repeated Shape shapes = 1;
    }

    message ShapeRange {
        // sizeRanges.size() must be length 1 or 3
        // sizeRanges[d] specifies the allowed range for dimension d
        repeated SizeRange sizeRanges = 1;
    }

    // For specification version >= 3 you can specify image size flexibility.

    oneof ShapeFlexibility {

        // Use enumeratedShapes for a set of distinct fixed shapes
        //
        // If the shape field is specified then it must be
        // one of the enumerated shapes.
        // If shape is not specified, the "default" shape will be considered
        // enumeratedShapes[0]
        //
        // Must be non-empty

        EnumeratedShapes enumeratedShapes = 21;

        // Use shapeRange to allow the size of each dimension vary within
        // independently specified ranges
        //
        // If you specify shape above it must fall in the range
        // specified in shapeRanges. It will be treated as the default shape.
        //
        // If you don't specify shape above then the default shape will
        // have shape[d] = shapeRange.sizeRanges[d].lowerBound

        ShapeRange shapeRange = 31;

    }

    oneof defaultOptionalValue {
        int32 intDefaultValue = 41;
        float floatDefaultValue = 51;
        double doubleDefaultValue = 61;
    }

}

ArrayFeatureType.Shape

message Shape {
    repeated int64 shape = 1;
}

ArrayFeatureType.EnumeratedShapes

message EnumeratedShapes {
    repeated Shape shapes = 1;
}

ArrayFeatureType.ShapeRange

message ShapeRange {
    // sizeRanges.size() must be length 1 or 3
    // sizeRanges[d] specifies the allowed range for dimension d
    repeated SizeRange sizeRanges = 1;
}

DictionaryFeatureType

The dictionary feature type.

message DictionaryFeatureType {
    /*
     *  Key/value type tags, with the following restrictions:
     *  - keyType must be a hashable type
     *  - valueType is assumed to be a double
     */
    oneof KeyType {
        Int64FeatureType int64KeyType = 1;
        StringFeatureType stringKeyType = 2;
    }
}

SequenceFeatureType

The Sequence feature type.

message SequenceFeatureType {
    /*
     * Currently only categorical int64 and String sequences are supported
     */
    oneof Type {
        Int64FeatureType int64Type = 1;
        StringFeatureType stringType = 3;
    }

    // Range of allowed size/length/count of sequence
    SizeRange sizeRange = 101;
}

FeatureType

A feature, which may be optional.

message FeatureType {
    oneof Type {
        Int64FeatureType int64Type = 1;
        DoubleFeatureType doubleType = 2;
        StringFeatureType stringType = 3;
        ImageFeatureType imageType = 4;
        ArrayFeatureType multiArrayType = 5;
        DictionaryFeatureType dictionaryType = 6;
        SequenceFeatureType sequenceType = 7;
    }

    bool isOptional = 1000;
}

ArrayFeatureType.ArrayDataType

enum ArrayDataType {
    INVALID_ARRAY_DATA_TYPE = 0;
    FLOAT32 = 65568; // 0x10000 | 32
    DOUBLE = 65600;  // 0x10000 | 64
    INT32 = 131104;  // 0x20000 | 32
    FLOAT16 = 65552; // 0x10000 | 16
}

ImageFeatureType.ColorSpace

enum ColorSpace {
    INVALID_COLOR_SPACE = 0;
    GRAYSCALE = 10; //  8 bits per pixel
    RGB = 20;       // 32 bits per pixel: RGBA with A channel ignored
    BGR = 30;       // 32 bits per pixel: BGRA with A channel ignored
    GRAYSCALE_FLOAT16 = 40; // 16 bits float per pixel
}