# Changelog

### 1.1.8

* Fixed `GraphFormat` error when creating models.
* Fixed build errors when building for WebGL.
* NatML now requires Unity 2022.3+.

### 1.1.7

* Fixed `JsonException` when creating some models (#58).
* Fixed crash when building on Unity Cloud Build with macOS worker (#56).

### 1.1.6

* Fixed `DllNotFoundException` when building on Linux (#54).
* Fixed `Illegal byte sequence encountered in the input` error when building on macOS and Windows (#55).
* Refactored `PredictionSession` class to `EndpointPrediction`.
* Refactored `NatML.PredictionSessions` field to `EndpointPredictions`.
* Removed `MLAudioFeature.FromStreamingAssets` method. Use `MLUnityExtensions.StreamingAssetsToAbsolutePath` to get a path and create an audio feature.
* Deprecated `PredictorSession` class.
* Deprecated `NatML.PredictorSessions` field.

### 1.1.5

* Added support for Safari 16.4, bringing NatML to 88% of browsers.
* Added `MLArrayFeature.CopyTo` method overload that accepts a `Texture2D`.
* Added `MLEdgeModel.Create` method overload that accepts a `NatMLClient` instance in place of an `accessKey`.
* Added `MLCloudModel.Create` method overload that accepts a `NatMLClient` instance in place of an `accessKey`.
* Added `Feature.dictValue` field for working with dictionary features.
* Refactored `Dtype.List` enumeration member to `Dtype.List`.
* Refactored `Dtype.Dictionary` enumeration member to `Dtype.Dict`.
* Removed `MLCloudModel.Predict` method overload that accepts a `Dictionary<string, MLFeature>`.
* Removed `MLImageFeature.RegionOfInterest` method.

### 1.1.4

* Added `NatML.API` namespace for accessing the full NatML web API from .NET.
* Fixed [`MLEdgeModel.Create`](https://docs.natml.ai/unity/api/mlmodel/mledgemodel#creating-the-model) method blocking for a long time on Android and Windows (#49).
* Fixed [`MLEdgeModel.Create`](https://docs.natml.ai/unity/api/mlmodel/mledgemodel#creating-the-model) method throwing error when called from non-Unity threads.
* Updated default edge prediction configuration to use the CPU and neural processor (and not the GPU) on Android ([#49](https://github.com/natmlx/natml/issues/49)).
* Refactored `MLDepthFeature.ViewportToWorldPoint` method to [`Unproject`](https://docs.natml.ai/unity/api/mlfeature/mldepthfeature#projecting-to-3d-space).
* Removed `MLEdgeModel.AudioFormat` struct. Use `NatML.API.Types.AudioFormat` class instead.
* Removed `MLEdgeModel.Normalization` struct. Use `NatML.API.Types.Normalization` class instead.
* Removed `MLImageFeature.AspectMode` enumeration. Use `NatML.API.Types.AspectMode` enumeration instead.
* Removed `MLAudioType.FromAudioClip` utility method.
* Removed `MLAudioType.FromVideoClip` utility method.
* Removed `MLVideoType.FromVideoClip` utility method.

### 1.1.3

* Added support for making edge predictions on the GPU on Android with [`MLEdgeModel.ComputeTarget.GPU`](https://docs.natml.ai/unity/api/mlmodel/mledgemodel/configuration#compute-target).
* Fixed [`MLEdgeModel.Predict`](https://docs.natml.ai/unity/api/mlmodel/mledgemodel#making-predictions) sporadically crashing on Android.

### 1.1.2

* Added support for CoreML models that consume pixel buffers (`CVPixelBufferRef`) instead of multi-arrays.
* Fixed [`MLEdgeModel.Create`](https://docs.natml.ai/unity/api/mlmodel/mledgemodel#creating-the-model) ignoring `configuration` argument when model is fetched from NatML Hub.
* Fixed [`MLAsyncPredictor`](https://docs.natml.ai/unity/api/mlpredictorextensions#async-predictions) accumulating massive amounts of memory on iOS and macOS.
* Refactored `MLTextFeature` class to [`MLStringFeature`](https://docs.natml.ai/unity/api/mlfeature/mltextfeature).
* Refactored `MLTextType` class to [`MLStringType`](https://docs.natml.ai/unity/api/mlfeaturetype/mlstringtype).
* Refactored `MLModelDataEmbed` attribute to [`MLEdgeModel.Embed`](https://docs.natml.ai/unity/api/mlmodel/mledgemodel#embedding-the-model).

### 1.1.1

* Added model embedding support for encrypted models.

### 1.1.0

* Added [`MLCloudModel`](https://docs.natml.ai/unity/api/mlmodel/mlcloudmodel) class for making predictions with predictor endpoints.
* Added [`MLEdgeModel.Create`](https://docs.natml.ai/unity/api/mlmodel/mledgemodel#creating-the-model) methods for creating an edge model from a predictor tag or an `MLModelData` instance.
* Added [`MLEdgeModel.ComputeTarget`](https://docs.natml.ai/unity/api/mlmodel/mledgemodel/configuration#compute-target) enumeration for specifying the compute target for model predictions.
* Added [`MLEdgeModel.Configuration`](https://docs.natml.ai/unity/api/mlmodel/mledgemodel/configuration) data class for configuring the edge model creation process.
* Added [`MLEdgeModel.labels`](https://docs.natml.ai/unity/api/mlmodel/mledgemodel#inspecting-classification-labels) property for inspecting classification labels required by the model.
* Added [`MLEdgeModel.aspectMode`](https://docs.natml.ai/unity/api/mlmodel/mledgemodel#inspecting-the-aspect-mode) property for inspecting the aspect mode required in image data consumed by the model.
* Added [`MLEdgeModel.audioFormat`](https://docs.natml.ai/unity/api/mlmodel/mledgemodel#inspecting-the-audio-format) property for inspecting the audio format required in audio data consumed by the model.
* Added support for model encryption, protecting your valuable intellectual property.
* Added support for pinning [`MLArrayFeature`](https://docs.natml.ai/unity/api/mlfeature/mlarrayfeature#pinning) instances with `fixed` statements.
* Added support for pinning `MLImageFeature` instances with `fixed` statements.
* Added [`MLArrayFeature`](https://docs.natml.ai/unity/api/mlfeature/mlarrayfeature#from-a-cloud-feature) constructor from an `MLCloudFeature` for making predictions with predictor endpoints.
* Added `MLImageFeature` constructor from an `MLCloudFeature` for making predictions with predictor endpoints.
* Added `MLTextFeature` constructor from an `MLCloudFeature` for making predictions with predictor endpoints.
* Added [`MLArrayFeature.CopyTo(MLArrayFeature)`](https://docs.natml.ai/unity/api/mlfeature/mlarrayfeature#copying) method for copying image data from one image feature to another.
* Added `MLImageFeature.CopyTo(MLImageFeature)` method for copying image data from one image feature to another.
* Added implicit conversion from `float` to [`MLFeature`](https://docs.natml.ai/unity/api/mlfeature).
* Added implicit conversion from `int` to [`MLFeature`](https://docs.natml.ai/unity/api/mlfeature).
* Added implicit conversion from `bool` to [`MLFeature`](https://docs.natml.ai/unity/api/mlfeature).
* Added implicit conversion from `int[]` to [`MLFeature`](https://docs.natml.ai/unity/api/mlfeature).
* Updated [`MLImageFeature`](https://docs.natml.ai/unity/api/mlfeature/mlimagefeature) class to be `sealed` thus preventing inheritance.
* Updated `float[]` implicit conversion to [`MLArrayFeature`](https://docs.natml.ai/unity/api/mlfeature/mlarrayfeature) to have a 1D shape instead of a `null` shape.
* Refactored `MLModelData.ComputeTarget` enumeration to [`MLEdgeModel.ComputeTarget`](https://docs.natml.ai/unity/api/mlmodel/mledgemodel/configuration#compute-target).
* Refactored `MLModelData.Normalization` enumeration to [`MLEdgeModel.Normalization`](https://docs.natml.ai/unity/api/mlmodel/mledgemodel#inspecting-feature-normalization).
* Refactored `MLModelData.AudioFormat` enumeration to [`MLEdgeModel.AudioFormat`](https://docs.natml.ai/unity/api/mlmodel/mledgemodel#inspecting-the-audio-format).
* Deprecated `MLImageFeature.RegionOfInterest` method. Use `MLImageFeature.CopyTo` method instead.
* Deprecated `MLModelData.ComputeTarget.CPUOnly` enumeration member. Use [`ComputeTarget.CPU`](https://docs.natml.ai/unity/api/mlmodel/mledgemodel/configuration#compute-target) instead.
* Removed `MLEdgeModel` constructor. Use [`MLEdgeModel.Create`](https://docs.natml.ai/unity/api/mlmodel/mledgemodel#creating-the-model) method instead.
* Removed `MLModelData.Deserialize` method. Use [`MLEdgeModel.Create`](https://docs.natml.ai/unity/api/mlmodel/mledgemodel#from-natml-hub) method instead.
* Removed `MLModelData.FromHub` method. Use [`MLEdgeModel.Create`](https://docs.natml.ai/unity/api/mlmodel/mledgemodel#creating-the-model) method instead.
* Removed `MLModelData.FromFile` method. Use [`MLEdgeModel.Create`](https://docs.natml.ai/unity/api/mlmodel/mledgemodel#creating-the-model) method instead.
* Removed `MLModelData.tag` property.
* Removed `MLModelData.computeTarget` property. Use [`MLEdgeModel.Configuration.computeTarget`](https://docs.natml.ai/unity/api/mlmodel/mledgemodel/configuration#specifying-the-compute-target) property instead.
* Removed `MLModelData.computeDevice` property. Use [`MLEdgeModel.Configuration.computeDevice`](https://docs.natml.ai/unity/api/mlmodel/mledgemodel/configuration#specifying-the-compute-device) property instead.
* Removed `MLModelData.labels` property. Use [`MLEdgeModel.labels`](https://docs.natml.ai/unity/api/mlmodel/mledgemodel#inspecting-classification-labels) property instead.
* Removed `MLModelData.normalization` property. Use [`MLEdgeModel.normalization`](https://docs.natml.ai/unity/api/mlmodel/mledgemodel#inspecting-feature-normalization) property instead.
* Removed `MLModelData.audioFormat` property. Use [`MLEdgeModel.audioFormat`](https://docs.natml.ai/unity/api/mlmodel/mledgemodel#inspecting-the-audio-format) property instead.
* Removed `MLModelData.ComputeTarget` enumeration.
* Removed `MLArrayFeature.CopyTo(T[])` method overload.
* Removed `MLArrayFeature.CopyTo(NativeArray<T>)` method overload.
* Removed `MLArrayFeature.CopyTo(T*)` method overload.
* Removed `MLImageFeature.CopyTo(T[])` method overload.
* Removed `MLImageFeature.CopyTo(NativeArray<T>)` method overload.
* Removed `MLImageFeature.CopyTo(T*)` method overload.
* NatML now requires iOS 14+.

### 1.0.19

* Added [`MLEdgeModel`](https://docs.natml.ai/unity/api/mlmodel/mledgemodel) public constructor and moved the class to the top-level `NatML` namespace.
* Fixed app storage size increasing every time that [`MLModelData.Deserialize`](https://docs.natml.ai/unity/insiders/broken-reference) was invoked on iOS.
* Deprecated [`MLModelData.Deserialize`](https://docs.natml.ai/unity/insiders/broken-reference) method. Use `MLEdgeModel` constructor instead.

### 1.0.18

* NatML now defaults to accelerating predictions on Windows by using the GPU. This results in much better performance and lower CPU usage for many models.
* Added [`MLModelData.computeTarget`](https://docs.natml.ai/unity/insiders/broken-reference) property for specifying the compute target used for prediction.
* Added [`MLModelData.computeDevice`](https://docs.natml.ai/unity/insiders/broken-reference) property for specifying the compute device used for prediction.
* Added [`MLImageFeature.CopyTo`](https://docs.natml.ai/unity/api/mlfeature/mlimagefeature#copying-the-feature-data) overloads that accepted pixel buffers in managed and unmanaged memory.
* Fixed [`MLImageFeature`](https://docs.natml.ai/unity/api/mlfeature/mlimagefeature) producing incorrect prediction results on WebGL.
* Fixed rare crash when calling [`MLModelData.Deserialize`](https://docs.natml.ai/unity/insiders/broken-reference) on low-end Android devices.

### 1.0.17

* Upgraded to Hub 1.0.12.

### 1.0.16

* Refactored `MLDepthFeature.TransformPoint` method to [`ViewportToWorldPoint`](https://docs.natml.ai/unity/api/mlfeature/mldepthfeature#projecting-to-3d-space).
* Removed `MLImageFeature.CopyTo` overloads that accepted pixel buffers. Use `Texture2D` overload instead.
* Removed `MLImageFeature.ToTexture` method. Use [`MLImageFeature.CopyTo`](https://docs.natml.ai/unity/api/mlfeature/mlimagefeature#copying-the-feature-data) method instead.

### 1.0.15

* Added initial support for WebGL! NatML can now be used in the browser.
* Improved `MLImageFeature` texture constructor to avoid copying pixel buffers when possible.
* Improved performance of `MLImageFeature.NonMaxSuppression` for large number of candidate boxes.
* Changed `MLEdgeFeature.dataType` property type from `System.Type` to `NatML.DataType`.

### 1.0.13

* Added support for rotated ROI in [`MLImageFeature.RegionOfInterest`](https://docs.natml.ai/unity/api/mlfeature/mlimagefeature#region-of-interest) method.
* Added [`MLModelData.FromFile`](https://docs.natml.ai/unity/insiders/broken-reference) method to load ML model data from model files.
* Added [`MLImageFeature.TransformPoint`](https://docs.natml.ai/unity/api/mlfeature/mlimagefeature#transforming-points) method for transforming detection points from feature space to image space.
* Added [`MLDepthFeature.TransformPoint`](https://docs.natml.ai/unity/api/mlfeature/mldepthfeature#projecting-to-3d-space) method for projecting 2D points into 3D space using depth.
* Added `MLEdgeFeature.dataType` property for inspecting the data type of Edge features.
* Added [`MLAsyncPredictor`](https://docs.natml.ai/unity/api/mlpredictorextensions#async-predictions) class for making predictions on a background thread.
* Added [`MLPredictorExtensions.ToAsync`](https://docs.natml.ai/unity/api/mlpredictorextensions#async-predictions) extension method for converting predictor to an async predictor.
* Improved prediction performance on Android devices with dedicated neural processing units.
* Changed `MLEdgeFeature` class to `readonly struct` to prevent GC pressure.
* Fixed [`MLImageFeature`](https://docs.natml.ai/unity/api/mlfeature/mlimagefeature) not respecting [`AspectMode.AspectFit`](https://docs.natml.ai/unity/api/mlfeature/mlimagefeature#aspect-mode) when making predictions.
* Fixed sporadic `NullReferenceException` when [`MLModelData.FromHub`](https://docs.natml.ai/unity/insiders/broken-reference) is called on some Android devices.
* Updated [`MLDepthFeature.Sample`](https://docs.natml.ai/unity/api/mlfeature/mldepthfeature#sampling-pixel-depth) method to accept a `Vector2` point instead of individual coordinates.
* Removed `IMLCloudFeature` interface as it is no longer supported by the NatML Hub API.
* Removed `MLCloudFeature` class as it is no longer supported by the NatML Hub API.
* Removed `MLCloudModel` class as it is no longer supported by the NatML Hub API.
* Removed `IMLAsyncPredictor` interface.
* Removed `MLFeature.CloudType` utility method as it is no longer supported by the NatML Hub API.
* Removed `MLArrayFeature` constructor that accepted an `MLCloudFeature`.
* Removed `MLAudioFeature` constructor that accepted an `MLCloudFeature`.
* Removed `MLImageFeature` constructor that accepted an `MLCloudFeature`.
* Removed `MLImageFeature` constructor that accepted an encoded image `byte[]`.
* Removed `MLImageFeature.Contiguous` method.
* Removed `MLTextFeature` constructor that accepted an `MLCloudFeature`.
* Removed `MLEdgeFeature.ReleaseFeature` method as it has long been deprecated.

### 1.0.12

* Upgraded to Hub 1.0.8.

### 1.0.11

* Added [`MLModelDataEmbed`](https://docs.natml.ai/unity/insiders/broken-reference) attribute for embedding model data at build time, making models immediately available in builds without downloads.
* Added [`MLImageFeature.NonMaxSuppression`](https://docs.natml.ai/unity/api/mlfeature/mlimagefeature#non-maximum-suppression) method for performing non-maximum suppression on detection proposals.
* Added [`MLImageFeature.TransformRect`](https://docs.natml.ai/unity/api/mlfeature/mlimagefeature#transforming-rectangles) method for transforming detection rectangles from feature space to image space.
* Added custom icon for identifying ML model files imported by NatML.
* Migrated [`MLPredictorExtensions.ToAsync`](https://docs.natml.ai/unity/api/mlpredictorextensions#async-predictions) extension method and [`MLAsyncPredictor`](https://docs.natml.ai/unity/api/mlpredictorextensions#async-predictions) class to NatMLX.
* Removed `MLPredictorExtensions.RectifyAspect` method. Use `MLImageFeature.TransformRect` method instead.
* Removed `MLPredictorExtensions.NonMaxSuppression` method. Use `MLImageFeature.NonMaxSuppression` method instead.
* Refactored top-level namespace from `NatSuite.ML` to `NatML` for parity with our other API's.

### 1.0.10

* Improved prediction performance on Windows systems with dedicated GPU's.
* Added [`MLArrayFeature`](https://docs.natml.ai/unity/api/mlfeature/mlarrayfeature#from-a-native-array) constructors that accept [`NativeArray<T>`](https://docs.unity3d.com/ScriptReference/Unity.Collections.NativeArray_1.html) native arrays to minimize memory copies.
* Added setter accessors to [`MLArrayFeature`](https://docs.natml.ai/unity/api/mlfeature/mlarrayfeature#multi-indexing) indexers allowing for writing values to feature data.
* Added `MLAudioFeature.Contiguous` method for decoding encoded audio feature into memory.
* Added support for creating greyscale image [`MLEdgeFeature`](https://docs.natml.ai/unity/insiders/broken-reference) features from [`MLImageFeature`](https://docs.natml.ai/unity/api/mlfeature/mlimagefeature#creating-edge-features) features.
* Added [`MLImageFeature.RegionOfInterest`](https://docs.natml.ai/unity/api/mlfeature/mlimagefeature#region-of-interest) method for extracting an ROI from an image.
* Added `MLImageFeature.Contiguous` method for decoding encoded image feature into memory.
* Added [`MLDepthFeature.width`](https://docs.natml.ai/unity/api/mlfeature/mldepthfeature#depth-map-width) convenience property for getting width of depth features.
* Added [`MLDepthFeature.height`](https://docs.natml.ai/unity/api/mlfeature/mldepthfeature#depth-map-height) convenience property for getting height of depth features.
* Added [`MLImageType.interleaved`](https://docs.natml.ai/unity/api/mlfeaturetype/mlimagetype#pixel-layout) property for checking whether image feature is interleaved or planar.
* Added [`IMLCloudFeature`](https://docs.natml.ai/unity/insiders/broken-reference) interface to create cloud ML features for making cloud predictions.
* Added "Clear Predictor Cache" menu item for clearing predictor cache in the editor.
* Added `NatMLHub.Subscribe` method for making subscription requests to the NatML API.
* Fixed memory leak when using certain vision predictors like Robust Video Matting.
* Refactored `MLHubModel` class to [`MLCloudModel`](https://docs.natml.ai/unity/insiders/broken-reference).
* Refactored `MLHubFeature` class to [`MLCloudFeature`](https://docs.natml.ai/unity/insiders/broken-reference).
* Refactored `HubDataType` class to `DataType`.
* Deprecated `IMLHubFeature` interface.
* Removed `MLAudioFeature.ReadToEnd` method. Use `MLAudioFeature.Contiguous` method instead.

### 1.0.9

* Added exclusive support for running CoreML graphs on iOS and macOS.
* Added exclusive support for running TensorFlow Lite graphs on Android.
* Added support for working with CoreML `.mlmodel` files in Unity projects.
* Added support for working with TensorFlow Lite `.tflite` files in Unity projects.
* Added support for Apple Silicon on macOS.
* Added [`MLVideoFeature`](https://docs.natml.ai/unity/api/mlfeature/mlvideofeature) class for making ML predictions on video files.
* Added [`MLVideoType`](https://docs.natml.ai/unity/api/mlfeaturetype/mlvideotype) feature type for inspecting video features.
* Added [`MLDepthFeature`](https://docs.natml.ai/unity/api/mlfeature/mldepthfeature) abstract class for working with predictors that use depth data.
* Added support for audio feature resampling in [`MLAudioFeature`](https://docs.natml.ai/unity/api/mlfeature/mlaudiofeature) with [`sampleRate`](https://docs.natml.ai/unity/api/mlfeature/mlaudiofeature#sample-rate) and [`channelCount`](https://docs.natml.ai/unity/api/mlfeature/mlaudiofeature#channel-count) fields.
* Added [`MLEdgeFeature`](https://docs.natml.ai/unity/insiders/broken-reference) type for added type safety when authoring edge predictors.
* Added [`MLImageFeature`](https://docs.natml.ai/unity/api/mlfeature/mlimagefeature#from-a-native-array) constructor which accepts a [`NativeArray<byte>`](https://docs.unity3d.com/ScriptReference/Unity.Collections.NativeArray_1.html) pixel buffer.
* Added [`MLImageFeature.width`](https://docs.natml.ai/unity/api/mlfeature/mlimagefeature#image-width) convenience property for getting width of image feature.
* Added [`MLImageFeature.height`](https://docs.natml.ai/unity/api/mlfeature/mlimagefeature#image-height) convenience property for getting height of image feature.
* Added [`MLImageFeature.CopyTo`](https://docs.natml.ai/unity/api/mlfeature/mlimagefeature#copying) methods for copying pixel data from image feature.
* Added [`MLAudioFeature`](https://docs.natml.ai/unity/api/mlfeature/mlaudiofeature#from-a-native-array) constructor that accepts a [`NativeArray<float>`](https://docs.unity3d.com/ScriptReference/Unity.Collections.NativeArray_1.html) to minimize memory copies.
* Added `MLAudioFeature` path constructor for reading audio features from audio and video files.
* Added `MLAudioFeature.CopyTo` methods for copying audio data from audio feature.
* Added `MLAudioFeature.FromStreamingAssets` method for creating an audio feature from an audio file in the `StreamingAssets` folder.
* Added `MLAudioFeature.ToAudioClip` method for converting audio feature to an `AudioClip`.
* Added `MLAudioFeature.ReadToEnd` method to read audio data into memory for audio features backed by an audio file.
* Added [`MLAudioType.FromFile`](https://docs.natml.ai/unity/api/mlfeaturetype/mlaudiotype#from-an-audio-file) method for inspecting the audio type of a video or audio file.
* Added [`MLAudioType.FromAudioClip`](https://docs.natml.ai/unity/api/mlfeaturetype/mlaudiotype#from-an-audioclip) method for inspecting the audio type of an audio clip.
* Added [`MLAudioType.FromVideoClip`](https://docs.natml.ai/unity/api/mlfeaturetype/mlaudiotype#from-a-videoclip) method for inspecting the audio type of a video clip.
* Added [`MLAudioType.FromStreamingAssets`](https://docs.natml.ai/unity/api/mlfeaturetype/mlaudiotype#from-streaming-assets) method for inspecting the audio type of a video file in the `StreamingAssets` folder.
* Added [`MLImageType`](https://docs.natml.ai/unity/api/mlfeaturetype/mlimagetype#from-image-info) constructor that accepts image `channels`.
* Fixed [`MLImageFeature`](https://docs.natml.ai/unity/api/mlfeature/mlimagefeature#creating-the-feature) type incorrectly reporting 3 channels instead of 4.
* Fixed [`MLImageFeature`](https://docs.natml.ai/unity/api/mlfeature/mlimagefeature#normalization) default normalization standard deviation having `0` for alpha channel.
* Removed `IMLModel` interface as it has long been deprecated.
* Removed `IMLFeature` interface as it has long been deprecated.

### 1.0.8

* Fixed `Cannot deserialize graph` exception when deserializing cached predictors.
* Fixed [`MLModelData`](https://docs.natml.ai/unity/insiders/broken-reference) being cached for `DRAFT` predictors.

### 1.0.7

* Added [`MLArrayFeature`](https://docs.natml.ai/unity/api/mlfeature/mlarrayfeature#from-a-hub-feature) constructor that accepts an [`MLHubFeature`](https://docs.natml.ai/unity/insiders/broken-reference) for working with Hub predictors.
* Added [`MLAudioFeature`](https://docs.natml.ai/unity/api/mlfeature/mlaudiofeature#from-a-hub-feature) constructor that accepts an [`MLHubFeature`](https://docs.natml.ai/unity/insiders/broken-reference) for working with Hub predictors.
* Added [`MLImageFeature`](https://docs.natml.ai/unity/api/mlfeature/mlimagefeature#from-a-hub-feature) constructor that accepts an [`MLHubFeature`](https://docs.natml.ai/unity/insiders/broken-reference) for working with Hub predictors.
* Added [`MLTextFeature`](https://docs.natml.ai/unity/api/mlfeature/mltextfeature#from-a-hub-feature) constructor that accepts an [`MLHubFeature`](https://docs.natml.ai/unity/insiders/broken-reference) for working with Hub predictors.
* Fixed `DirectoryNotFoundException` when loading cached [`MLModelData`](https://docs.natml.ai/unity/insiders/broken-reference) on iOS.
* Removed prediction analytics reporting to NatML Hub, relieving network bandwidth pressure.
* Removed `cache` flag in [`MLModelData.FromHub`](https://docs.natml.ai/unity/insiders/broken-reference) method.

### 1.0.6

* Introduced Hub Predictors, which make predictions using server-side processing on [NatML Hub](https://hub.natml.ai).
* Added [`MLHubModel`](https://docs.natml.ai/unity/insiders/broken-reference) class for authoring predictors that make cloud-based predictions using NatML Hub.
* Added [`MLEdgeModel`](https://docs.natml.ai/unity/api/mlmodel/mledgemodel) class for authoring predictors that make edge (on-device) predictions.
* Added [`IMLHubFeature`](https://docs.natml.ai/unity/insiders/broken-reference) interface for creating server-side features when making predictions with NatML Hub.
* Added [`IMLEdgeFeature`](https://docs.natml.ai/unity/insiders/broken-reference) interface for creating native features when making edge (on-device) predictions.
* Added [`MLTextType`](https://docs.natml.ai/unity/api/mlfeaturetype/mlstringtype) feature type for inspecting [`MLTextFeature`](https://docs.natml.ai/unity/api/mlfeature/mltextfeature) instances.
* Added [`MLModelData.tag`](https://docs.natml.ai/unity/insiders/broken-reference) property to identify the predictor tag from [NatML Hub](https://hub.natml.ai).
* Added [`MLModel.metadata`](https://docs.natml.ai/unity/api/mlmodel#inspecting-metadata) dictionary for inspecting model metadata.
* Added `MLArrayFeature.Squeeze` to remove singleton dimensions from an array feature.
* Added `MLArrayFeature.Flatten` to flatten an array feature into one-dimensional array feature.
* Added [`MLArrayFeature.ToArray`](https://docs.natml.ai/unity/api/mlfeature/mlarrayfeature#converting-to-array) to convert an array feature into a flattened primitive array.
* Added [`MLImageFeature.ToTexture`](https://docs.natml.ai/unity/api/mlfeature/mlimagefeature#converting-to-texture) to convert an image feature into a [`Texture2D`](https://docs.unity3d.com/ScriptReference/Texture2D.html).
* Added [`MLImageType.FromType`](https://docs.natml.ai/unity/api/mlfeaturetype/mlimagetype#from-a-feature-type) static method for converting arbitrary feature types to image types.
* Added implicit conversion from [`MLFeatureType`](https://docs.natml.ai/unity/api/mlfeaturetype) to `bool` indicating if the type is non-`null`.
* Added implicit conversion from [`MLTextFeature`](https://docs.natml.ai/unity/api/mlfeature/mltextfeature) to `string`.
* Fixed [`MLImageType`](https://docs.natml.ai/unity/api/mlfeaturetype/mlimagetype) image resolution constructor assuming planar format instead of interleaved format.
* Moved [`IMLPredictor`](https://docs.natml.ai/unity/api/imlpredictor) interface to the top-level `NatSuite.ML` namespace.
* Moved [`IMLAsyncPredictor`](https://docs.natml.ai/unity/insiders/broken-reference) interface to the top-level `NatSuite.ML` namespace.
* Deprecated `IMLModel` interface. Cast model to [`MLEdgeModel`](https://docs.natml.ai/unity/api/mlmodel/mledgemodel) class instead.
* Deprecated `IMLFeature` interface. Cast feature to [`IMLEdgeFeature`](https://docs.natml.ai/unity/insiders/broken-reference) interface instead.
* Deprecated `MLPredictorExtensions.GetImageSize` static method. Use [`MLImageType.FromType`](https://docs.natml.ai/unity/api/mlfeaturetype/mlimagetype#from-a-feature-type) instead.
* Removed `MLModelData.FromFile` method. Use [NatML Hub](https://hub.natml.ai) instead.
* Removed `MLModelData.FromStreamingAssets` method. Use [NatML Hub](https://hub.natml.ai) instead.
* Removed `MLPredictorExtensions.SerializeAudio` method.
* Removed `MLPredictorExtensions.SerializeImage` method.
* Removed [`MLModel`](https://docs.natml.ai/unity/api/mlmodel) dictionary indexers. Use [`MLModel.metadata`](https://docs.natml.ai/unity/api/mlmodel#inspecting-metadata) property instead.

### 1.0.5

* Changed [`MLImageFeature.mean`](https://docs.natml.ai/unity/api/mlfeature/mlimagefeature#mean) and [`std`](https://docs.natml.ai/unity/api/mlfeature/mlimagefeature#standard-deviation) types to [`Vector4`](https://docs.unity3d.com/ScriptReference/Vector4.html) to support normalization for alpha channel.
* Fixed bitcode not being generated for iOS `NatML.framework`.
* Removed metadata accessors from `IMLModel` interface. Cast to [`MLModel`](https://docs.natml.ai/unity/api/mlmodel) instead.

### 1.0.4

* Added [`IMLAsyncPredictor`](https://docs.natml.ai/unity/insiders/broken-reference) interface for making server-side ML predictions with NatML Hub.
* Added [`MLArrayFeature<T>`](https://docs.natml.ai/unity/api/mlfeature/mlarrayfeature#from-a-native-feature) constructor which accepts a native array feature for easy interop.
* Added multi-indexing support to [`MLArrayFeature<T>`](https://docs.natml.ai/unity/api/mlfeature/mlarrayfeature#multi-indexing) for post-processing native array features.
* Added [`MLArrayType.elementCount`](https://docs.natml.ai/unity/api/mlfeaturetype/mlarraytype#element-count) property to get the total number of elements for an array type.
* Added [`MLArrayFeature<T>.shape`](https://docs.natml.ai/unity/api/mlfeature/mlarrayfeature#feature-shape) property which returns the feature type's shape for convenience.
* Added [`MLArrayFeature<T>.elementCount`](https://docs.natml.ai/unity/api/mlfeature/mlarrayfeature#element-count) property which returns the feature type's element count for convenience.
* Added [`MLArrayFeature<T>.CopyTo`](https://docs.natml.ai/unity/api/mlfeature/mlarrayfeature#copying) method to copy feature data into an array.
* Added `MLArrayFeature<T>.Permute` method to create a shallow array view with permuted dimensions.
* Added `MLArrayFeature<T>.View` method to create a shallow array view with a different shape.
* Added [`MLPredictorExtensions.NonMaxSuppression`](https://docs.natml.ai/unity/api/mlpredictorextensions#non-maximum-suppression) method for working with detection models.
* Added `MLPredictorExtensions.GetImageSize` method for making predictions with image features.
* Added `MLPredictorExtensions.SerializeAudio` method for making Hub predictions with audio features.
* Added `MLPredictorExtensions.SerializeImage` method for making Hub predictions with image features.
* Fixed [`MLAsyncPredictor`](https://docs.natml.ai/unity/insiders/broken-reference) predictions never completing if backing predictor encountered exception.

### 1.0.3

* Greatly improved performance and memory pressure when performing multi-indexing with [`MLArrayFeature<T>`](https://docs.natml.ai/unity/api/mlfeature/mlarrayfeature).
* Added [`MLPredictorExtensions.RectifyAspect`](https://docs.natml.ai/unity/api/mlpredictorextensions#aspect-ratio-rectification) extension method for correcting detection rects from aspect-scaled images.
* Fixed crash when making predictions with recurrent models on previous state features.
* Fixed crash when getting native array feature shape for [`MLArrayFeature<T>`](https://docs.natml.ai/unity/api/mlfeature/mlarrayfeature).
* Fixed memory leak when making predictions with image features on iOS and macOS.

### 1.0.2

* Added `MLModelData.audioFormat` property for working with audio and speech ML models.
* Added [`MLTextFeature`](https://docs.natml.ai/unity/api/mlfeature/mltextfeature) for working with natural language processing models.
* Exposed `mean` and `std` arrays in [`MLModelData.Normalization`](https://docs.natml.ai/unity/insiders/broken-reference) struct for models that require arbitrary normalization.
* Removed generic `MLClassificationPredictor` and `MLDenseClassificationPredictor` predictors.
* Removed ability to specify class labels for local `.onnx` file in project. Use NatML Hub instead.

### 1.0.0

* First release.
