Summary
The 20.08 Release delivers the following:
- The final tranche of support for Android R ahead of its release in September. Namely QoS functionality, Fill, Rank and the new Resize options.
- Support for dynamic tensors where the size of any unspecified tensors can be inferred at network load time.
- Performance enhancements on the NEON backend eliminating unnecessary copying of data in memory, namely:
- The ability to directly import and export data into an inference graph.
- The ability to use subtensors where possible in split and concat workloads.
- Verification of support for TensorFlow Lite wav2letter and wav2letter tiny models (note: need to do further work to verify accuracy in the next release).
New Features:
- Added FILL operator support for CpuRef, CpuAcc, and GpuAcc.
- Added RANK operator support for CpuRef.
- Added align corner and half pixels support to the RESIZE operator for CpuRef, CpuAcc, and GpuAcc.
- Refactor TensorShape to support Dynamic Tensors (tensors of unknown dimension sizes or even unknown rank).
- Enable memory import in CpuAcc.
- Allow using Sub-Tensors on CpuAcc on ConcatenationLayer if concatenation is along x or y (2 innermost dimensions) and previous layers do not require padding.
- Allow using Sub-Tensors on CpuAcc on SplitterLayer if split is along x or y (2 innermost dimensions) and next layers do not require padding.
TfLite Parser:
- Added DIV operator support.
- Added LEAKY_RELU operator support.
- Added NEG operator support.
- Added HARD_SWISH operator support.
- Added Dynamic Tensors Type 1 (Output shape can be inferred from Input Shape, Input shape always has to be set, Output shape can be dynamic) Support.
Public API Changes:
- Added ITensorHandleFactory::GetCapabilities to calculate capability of the TensorHandleFactor.
ExecuteNetwork App Changes:
- Added -infer-output-shape option: if enabled it will enable ShapeInferenceMethod::InferAndValidate on TfLiteParser which supports dynamic tensors type 1 that Output shape can be inferred from Input shape.
Other changes:
- Added EXP operator support to CpuAcc and GpuAcc.
- Added ADD,SUB,DIV,MUL,MAXIMUM and MINIMUM int32 support in CpuRef.
- Added PRELU float16 support in CpuRef.
- Added ARGMINMAX float16 support in CpuRef.
- Added GATHER support for any axis in CpuAcc and GpuAcc (previously the support was only for axis = 0).
- Added LOGSOFTMAX support in CpuAcc and GpuAcc.
- Added support for subtensors on Splitter layer for splitting x/y axis if no padding required on next layer.
- Added support for subtensors on Concat layer for concatenating x/y axis if no padding required on previous layer.
- Replace boost::filesystem by ghc::filesystem.
- Remove boot/dll.hpp from dynamic backends test.
- Separated external profiling server code into a standalone library.
Bug Fixes:
- Added ability for Mean Reduction to reduce to scalar.
- Added ability for Strided Slice to shrink to scalar.
- Added a check for Strided Slice to not run when stride is negative and ShrinkAxisMask set.
- Fix edge case for transposeConv2d output shape inference.
- Fix deserializer output binding TensorShape logic.
- Fixed issue where AddBroadcastReshapeLayer would always connect the Reshaped input to the first input slot and the other input to the first input slot.
- Remove TfLite Concat and Pad quantazation validation.
Build dependencies
Tools | Version we support |
---|---|
Git | 2.17.1 or later |
SCons | 2.4.1 (Ubuntu) and 2.5.1 (Debian) |
CMake | 3.5.1 (Ubuntu) and 3.7.2 (Debian) |
boost | 1.64 |
Tensorflow | TENSORFLOW_REVISION= 590d6eef7e91a6a7392c8ffffb7b58f2e0c8bc6b (v1.15.0) |
Caffe | CAFFE_REVISION= 7d3f8a7ea43fb06cd9804bc90933c7a91cd88ec9 |
Onnx | ONNX_REVISION= f612532843bd8e24efeab2815e45b436479cc9ab |
Flatbuffer | 1.12.0 |
Protobuf | 3.5.2 |
Eigen3 | 3.3 |
Android | 9 and 10 |
Mali Driver | r25p1_01bet0 |
Android NDK | r20b |