platform/upstream/armnn.git
5 years agoIVGCVSW-3036 Change Armnn Quantizer to specify Armnn format
Finn Williams [Thu, 16 May 2019 15:40:41 +0000 (16:40 +0100)]
IVGCVSW-3036 Change Armnn Quantizer to specify Armnn format

Signed-off-by: FinnWilliamsArm <Finn.Williams@arm.com>
Change-Id: I776a97ff54ea3ccc28b62afe3c512cbdc7252811

5 years agoIVGCVSW-3030 Add a mock backend for unit testing
Matteo Martincigh [Fri, 17 May 2019 11:15:30 +0000 (12:15 +0100)]
IVGCVSW-3030 Add a mock backend for unit testing

 * Added a mock implementation of an ArmNN backend for unit
   testing
 * Implemented a mock version of OptimizeSubgraphView
 * Fixed a typo in the Optimization API

Change-Id: Ic7acf7cc5c2a76a918e94cdc356baae7c7597a6d
Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com>
5 years agoIVGCVSW-2964 Fix issue with Deserializer creating ciruclar graph
Nattapat Chaimanowong [Thu, 16 May 2019 15:32:35 +0000 (16:32 +0100)]
IVGCVSW-2964 Fix issue with Deserializer creating ciruclar graph

*Issue was caused by using layer index with respect to flatbuffer layers
vector in place of the index property on each layer base (and vice
versa). These are not necessarily the same.

Signed-off-by: Nattapat Chaimanowong <nattapat.chaimanowong@arm.com>
Change-Id: Ide3e33c77f394cd1b6850c7c61e4bee2dede76d3

5 years agoIVGCVSW-2972 Support QSymm16 for Merger
Jim Flynn [Wed, 15 May 2019 12:03:54 +0000 (13:03 +0100)]
IVGCVSW-2972 Support QSymm16 for Merger

Change-Id: If2289b2d1fc20f4524fcf4620f01ea3a36d727d2
Signed-off-by: Jim Flynn <jim.flynn@arm.com>
5 years agoIVGCVSW-3089 Change clframework version to 19.05 Release branch
Narumol Prangnawarat [Tue, 14 May 2019 13:45:29 +0000 (14:45 +0100)]
IVGCVSW-3089 Change clframework version to 19.05 Release branch

!android-nn-driver:1145

Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: I5a2fab03c98bfeb34154a0afe8c281a2551076cc

5 years agoIVGCVSW-3087 Changing version to 19.05
Telmo Soares [Thu, 16 May 2019 07:23:30 +0000 (08:23 +0100)]
IVGCVSW-3087 Changing version to 19.05

Change-Id: I35c8ae7171c23d379799ccfd524b7d6b8ff6d0c1
Signed-off-by: Telmo Soares <telmo.soares@arm.com>
5 years agoIVGCVSW-2911 Add Android Q support to android-nn-driver infrastructure
Sadik Armagan [Wed, 15 May 2019 11:52:19 +0000 (12:52 +0100)]
IVGCVSW-2911 Add Android Q support to android-nn-driver infrastructure

 * Updated Android.mk for Android Q build support

Change-Id: Ie3ba0b76d86c050e84b08cda4373474718d834a2
Signed-off-by: Sadik Armagan <sadik.armagan@arm.com>
5 years agoIVGCVSW-3001 Dequantize the output prior to printing
Derek Lamberti [Tue, 14 May 2019 15:55:25 +0000 (16:55 +0100)]
IVGCVSW-3001 Dequantize the output prior to printing

Change-Id: Ibd5fb4ad102aec1f71ab99402a3e3a08b04b926b
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
5 years agoUse the new deprecation API
Matteo Martincigh [Tue, 14 May 2019 09:36:13 +0000 (10:36 +0100)]
Use the new deprecation API

 * Used the new ARMNN_DEPRECATED_MSG macro instead of @deprecated
 * Refactored the code to no longer use the deprecated methods where
   applicable

!android-nn-driver:1126

Change-Id: Ib0578d3d6fc5a763f5fb922f67ba91fafc7796f6
Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com>
5 years agoIVGCVSW-3076 Add ConcatLayer methods to public API
Jim Flynn [Fri, 10 May 2019 12:55:21 +0000 (13:55 +0100)]
IVGCVSW-3076 Add ConcatLayer methods to public API

!android-nn-driver:1120

Change-Id: I5192fa3deb4ea9766d38ad0bf4dfbfa0b4924c41
Signed-off-by: Jim Flynn <jim.flynn@arm.com>
5 years agoIVGCVSW-3069 Add documentation for ModelAccuracyTool-Armnn
Conor Kennedy [Mon, 13 May 2019 13:48:58 +0000 (14:48 +0100)]
IVGCVSW-3069 Add documentation for ModelAccuracyTool-Armnn

Signed-off-by: Conor Kennedy <conor.kennedy@arm.com>
Change-Id: I1e128982ba0e1c99ee4532276f679dda37095201

5 years agoMLCE-101 Add default dilation depthwise convolution implementation
Matteo Martincigh [Tue, 14 May 2019 08:11:03 +0000 (09:11 +0100)]
MLCE-101 Add default dilation depthwise convolution implementation
to LayerSupportBase

Change-Id: Ib075a53cfe639e2624910a767abac6cba0fee8ed
Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com>
5 years agoMLCE-101 Add dilation support for DepthWiseConv workload
Bruno Goncalves [Sat, 27 Apr 2019 00:03:24 +0000 (21:03 -0300)]
MLCE-101 Add dilation support for DepthWiseConv workload

Adds unit tests for dilated depthwise conv

Change-Id: Iad0a1b33d07fb0ef8f9f6edf0fd0f83a5800a36d
Signed-off-by: Bruno Goncalves <bruno.slackware@gmail.com>
Signed-off-by: Matthew Bentham <matthew.bentham@arm.com>
5 years agoMLCE-101 Add dilation parameter to serializer
Matthew Bentham [Mon, 13 May 2019 09:02:45 +0000 (10:02 +0100)]
MLCE-101 Add dilation parameter to serializer

Change-Id: I8142e179d38c7a2a9163cf3d30bd1f411e8e109c
Signed-off-by: Matthew Bentham <matthew.bentham@arm.com>
5 years agoMLCE-101 Add dilation support to reference backend
Matthew Bentham [Fri, 10 May 2019 15:55:23 +0000 (16:55 +0100)]
MLCE-101 Add dilation support to reference backend

Change-Id: I6d1ea80c9fabd8c50ee030272c51cb66e85e431d
Signed-off-by: Matthew Bentham <Matthew.Bentham@arm.com>
5 years agoMLCE-101: Adding dilation support in conv and dconv
Pablo Tello [Fri, 26 Apr 2019 16:58:13 +0000 (17:58 +0100)]
MLCE-101: Adding dilation support in conv and dconv

Added support for dilation in DepthwiseConvolution2d in the
Neon and CL backends.

Change-Id: Ie1522b498c07f80d6efcf9dc79e926c8cfa06ca5
Signed-off-by: Pablo Tello <pablo.tello@arm.com>
5 years agoIVGCVSW-3035 Correct gamma variable name
Narumol Prangnawarat [Mon, 13 May 2019 14:10:51 +0000 (15:10 +0100)]
IVGCVSW-3035 Correct gamma variable name

Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: I309dd176fe6ce1216f4259c24c306c7592827841

5 years agoIVGCVSW-3058 Segmentation fault running Resnetv2.50 tfite int8 model
Matteo Martincigh [Mon, 13 May 2019 08:22:33 +0000 (09:22 +0100)]
IVGCVSW-3058 Segmentation fault running Resnetv2.50 tfite int8 model

 * The execution crashed because the weights of a convolution were
   null during the network execution
 * Copied the weights and bias when folding a pad layer into a
   convolution

Change-Id: I3ae72143d04cac90d4f878cdf3b1a08b2f2a5c90
Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com>
5 years agoIVGCVSW-3013 Add unit tests for QSymm16 LSTM
Conor Kennedy [Tue, 7 May 2019 06:14:23 +0000 (07:14 +0100)]
IVGCVSW-3013 Add unit tests for QSymm16 LSTM

* Add unit tests for QSymm16 LSTM
* Update supportedTypes in WorkloadData & RefLayerSupport with
  DataType::QuantisedSymm16

Change-Id: I1a2627b11b707d68d7d7002f63b985f9571ee177
Signed-off-by: Conor Kennedy <conor.kennedy@arm.com>
5 years agoIVGCVSW-3070 Add Documentation for ImageTensorGenerator & ImageCSVFileGenerator
Conor Kennedy [Mon, 13 May 2019 08:03:22 +0000 (09:03 +0100)]
IVGCVSW-3070 Add Documentation for ImageTensorGenerator & ImageCSVFileGenerator

Signed-off-by: Conor Kennedy <conor.kennedy@arm.com>
Change-Id: I071225a812e6f85b6abe83172be71913186523f4

5 years agoIVGCVSW-2834 Fix Input TensorInfo in Quantization DataSet
Narumol Prangnawarat [Fri, 10 May 2019 16:19:58 +0000 (17:19 +0100)]
IVGCVSW-2834 Fix Input TensorInfo in Quantization DataSet

Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: I694124aa15ef2fd368d5e6e36da8b942ae270850

5 years agoIVGCVSW-3034 Adding a unit test to check substituteSubGraph
David Monahan [Fri, 10 May 2019 14:08:53 +0000 (15:08 +0100)]
IVGCVSW-3034 Adding a unit test to check substituteSubGraph
now works when substituting layers from another Graph

Signed-off-by: David Monahan <david.monahan@arm.com>
Change-Id: Iebd21a4975dd0ea1fc9d62708555dae4b1809623

5 years agoIVGCVSW-3063 Modify Quantizer tool to take command line input
Éanna Ó Catháin [Fri, 10 May 2019 12:29:13 +0000 (13:29 +0100)]
IVGCVSW-3063 Modify Quantizer tool to take command line input
             for preserving input/output types

Change-Id: Ib30f1e2e58407526cd881fec33f45fc4e4ed4afe
Signed-off-by: Éanna Ó Catháin <eanna.ocathain@arm.com>
5 years agoIVGCVSW-3034 Updates to SubstituteSubGraph and
David Monahan [Fri, 10 May 2019 10:52:14 +0000 (11:52 +0100)]
IVGCVSW-3034 Updates to SubstituteSubGraph and
ReplaceSubgraphConnections to support Graphs instead of
SubGraphViews

 * Added layer iteration function to SubgraphView similar to
   the Graph's one
 * Updated SubstituteSubgraph to reparent the layers to the
   calling graph

Signed-off-by: David Monahan <david.monahan@arm.com>
Change-Id: Ib2f8e70decca4a59c53ceb127e07ef5a430d1005

5 years agoIVGCVSW-2990 Add deprecation helpers
Derek Lamberti [Fri, 10 May 2019 10:24:12 +0000 (11:24 +0100)]
IVGCVSW-2990 Add deprecation helpers

Change-Id: Ie13aa6aee9e4da14a0ca8779c95dfd647b656f95
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
5 years agoIVGCVSW-3030 Refactor code and fix OptimizeSubgraphView
Matteo Martincigh [Thu, 9 May 2019 11:46:16 +0000 (12:46 +0100)]
IVGCVSW-3030 Refactor code and fix OptimizeSubgraphView

 * Refactored the Optimizer code for readibility, in view of
   upcoming changes
 * Rename one of the ISubgraphViewConverter interface methods to
   give it a more meaningful name
 * Improved the OptimizationViews class, added comments and
   useful funtion overloads
 * Fixed an error in the default implementationof the new
   OptimizeSubgraphView method in IBackendInternal

Change-Id: I683a56d562aa093bac06f0e83fb13e144ed81485
Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com>
5 years agoIVGCVSW-3030 Added move operators to the Graph class
Matteo Martincigh [Thu, 9 May 2019 18:06:22 +0000 (19:06 +0100)]
IVGCVSW-3030 Added move operators to the Graph class

 * Updated the LayerInGraph class to properly support
   the new Reparent operation
 * Improved the Graph class destruction process to take into
   account eventual reparent layer operations
 * Added new ForEachLayerInGraph utility function to safely
   loop through all the layers in the graph

Change-Id: Ie67cbdee0c3c8625662ebfa00f860ae0d2fac59c
Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com>
5 years agoIVGCVSW-3061 Modify NetworkQuantizer to support option to preserve input/output types
Nattapat Chaimanowong [Thu, 9 May 2019 09:13:20 +0000 (10:13 +0100)]
IVGCVSW-3061 Modify NetworkQuantizer to support option to preserve input/output types

* Also add unit tests for new preserve type option

Signed-off-by: Nattapat Chaimanowong <nattapat.chaimanowong@arm.com>
Change-Id: I860759072f2e3546698118d1bcd5e79eb4e805ec

5 years agoIVGCVSW-3072 Add MergerLayer Deserialise Backcompat test
Jim Flynn [Thu, 9 May 2019 14:35:43 +0000 (15:35 +0100)]
IVGCVSW-3072 Add MergerLayer Deserialise Backcompat test

Change-Id: Ib8ce6f8db6de0ac4df92fa4c999fe3c78705ec7e
Signed-off-by: Jim Flynn <jim.flynn@arm.com>
5 years agoIVGCVSW-3030 Make the OptimizationViews class move-assignable
Matteo Martincigh [Thu, 9 May 2019 14:26:51 +0000 (15:26 +0100)]
IVGCVSW-3030 Make the OptimizationViews class move-assignable

 * Added move-constructors and move-assigment operators to
   both the OptimizationViews and Graph classes

Change-Id: I3f923dc58e849479ff6589dcd39dece2790172cb
Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com>
5 years agoIVGCVSW-2900 Adding the missing option to build the Accuracy Tool
Éanna Ó Catháin [Thu, 9 May 2019 10:34:06 +0000 (11:34 +0100)]
IVGCVSW-2900 Adding the missing option to build the Accuracy Tool
             to the GlobalConfig.cmake

Change-Id: I7f7e3e36fa66c5cd5b2248cab6f2b9b90d65d1a4
Signed-off-by: Éanna Ó Catháin <eanna.ocathain@arm.com>
5 years agoIVGCVSW-3031 Reparent layer to new graph
Derek Lamberti [Tue, 7 May 2019 20:33:30 +0000 (21:33 +0100)]
IVGCVSW-3031 Reparent layer  to new graph

Change-Id: Ic4423b8d21d794f44ddae291853e0e3b89d11bc0
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
5 years agoIVGCVSW-2833 Add Dynamic Quantization
Jim Flynn [Thu, 2 May 2019 10:33:25 +0000 (11:33 +0100)]
IVGCVSW-2833 Add Dynamic Quantization

Change-Id: Iba91e3f3625639f01d66f81a9f3e419e0e285d66
Signed-off-by: Jim Flynn <jim.flynn@arm.com>
5 years agoIVGCVSW-2900 Adding the Accuracy Checker Tool and tests
Éanna Ó Catháin [Wed, 8 May 2019 13:00:45 +0000 (14:00 +0100)]
IVGCVSW-2900 Adding the Accuracy Checker Tool and tests

Change-Id: I4ac325e45f2236b8e0757d21046f117024ce3979
Signed-off-by: Éanna Ó Catháin <eanna.ocathain@arm.com>
5 years agoIVGCVSW-3031 Finer grained backend optimization API
Derek Lamberti [Wed, 8 May 2019 09:23:08 +0000 (10:23 +0100)]
IVGCVSW-3031 Finer grained backend optimization API

Change-Id: I9b93bc81b97f3d89fa046ba001854f732040e63a
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
5 years agoIVGCVSW-3067 Fix issue with QuantizerVisior not setting TensorShape correctly
Nattapat Chaimanowong [Tue, 7 May 2019 14:01:00 +0000 (15:01 +0100)]
IVGCVSW-3067 Fix issue with QuantizerVisior not setting TensorShape correctly

* Also update unit tests for the quantizer to check the input and output
shape of the network

Signed-off-by: Nattapat Chaimanowong <nattapat.chaimanowong@arm.com>
Change-Id: Ie804d852f2a4770d98dfb4dab6415f3d0fdd2ce4

5 years agoIVGCVSW-2997 Refactor reference LSTM workload
Nattapat Chaimanowong [Tue, 7 May 2019 11:02:30 +0000 (12:02 +0100)]
IVGCVSW-2997 Refactor reference LSTM workload

Signed-off-by: Nattapat Chaimanowong <nattapat.chaimanowong@arm.com>
Change-Id: I6883f878d9f701a55153292769d2fc0530d2529e

5 years agoIVGCVSW-2989 Generate subgraphs without cyclic dependencies
Derek Lamberti [Fri, 3 May 2019 17:57:12 +0000 (18:57 +0100)]
IVGCVSW-2989 Generate subgraphs without cyclic dependencies

Change-Id: I45f81aa4ca8a964e423594fe271825c4a52b21f4
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
5 years agoIVGCVSW-3038 Move MakeInputTensors to armnnUtils
Jim Flynn [Fri, 3 May 2019 11:54:26 +0000 (12:54 +0100)]
IVGCVSW-3038 Move MakeInputTensors to armnnUtils

Change-Id: I4352a645badde788b9e33b3675a9cc9c0fc3dc33
Signed-off-by: Jim Flynn <jim.flynn@arm.com>
5 years agoIVGCVSW-3030 Update the backend code to create also a list of
Matteo Martincigh [Thu, 2 May 2019 11:44:50 +0000 (12:44 +0100)]
IVGCVSW-3030 Update the backend code to create also a list of
non-optimized SubgraphViews

 * Removed pointless CreateSubgraphViewConverter method in the
   IBackendInternal interface

Change-Id: Ie2d3c0e74fb3d53e67f76924ac6d05050a5e6e2e
Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com>
5 years agoIVGCVSW-3014 Add GetSupportedBackends to IDeviceSpec
Narumol Prangnawarat [Fri, 3 May 2019 14:54:39 +0000 (15:54 +0100)]
IVGCVSW-3014 Add GetSupportedBackends to IDeviceSpec

Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: I8d6474389376f715074bfa7a75613dbda35bcc6a

5 years agoIVGCVSW-3029 Remove any AddLayer capabilities from SubgraphView
Matteo Martincigh [Wed, 1 May 2019 09:31:27 +0000 (10:31 +0100)]
IVGCVSW-3029 Remove any AddLayer capabilities from SubgraphView

 * Removed the reference to the parent graph in SubgraphView
 * Removed the AddLayer method in SubgraphView
 * Updated the code where necessary to adapt to the new changes in
   SubgraphView
 * Fixed a check in the CreatePreCompiledWorkloadTest test function

Change-Id: I4d3af87f11ec3cd8f18a21b250a2d295da56e1a0
Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com>
5 years agoIVGCVSW-2834 Add dynamic quantization via datasets
Nina Drozd [Thu, 25 Apr 2019 14:45:20 +0000 (15:45 +0100)]
IVGCVSW-2834 Add dynamic quantization via datasets

* Add QuantizationDataSet class for quantization data parsed from CSV file
* Add QuantizationInput for retrieving quantization data for each layer ID
* Add unit tests for command line processor and QuantizationDataSet

Change-Id: Iaf0a747b5f25a59a766ac04f7158e8cb7909d179
Signed-off-by: Nina Drozd <nina.drozd@arm.com>
5 years agoIVGCVSW-3003 Fix the bug in setting the same tuningLevel in the constructor
Ruomei Yan [Fri, 3 May 2019 11:10:19 +0000 (12:10 +0100)]
IVGCVSW-3003 Fix the bug in setting the same tuningLevel in the constructor

Change-Id: I53bd3a8e8f846edbebb1598559f3541698e647e5
Signed-off-by: Ruomei Yan <ruomei.yan@arm.com>
5 years agoIVGCVSW-3039 Unify BindingPointInfo declarations
Jim Flynn [Wed, 1 May 2019 13:44:27 +0000 (14:44 +0100)]
IVGCVSW-3039 Unify BindingPointInfo declarations

Change-Id: I3deb2b9a37e8a8f8f2ed93c64ed0656ae911e24c
Signed-off-by: Jim Flynn <jim.flynn@arm.com>
5 years agoIVGCVSW-2941 THIRD_PARTY_INCLUDE_DIRS is not set in armnn/tests/CMakeLists.txt for...
Sadik Armagan [Thu, 2 May 2019 08:31:38 +0000 (09:31 +0100)]
IVGCVSW-2941 THIRD_PARTY_INCLUDE_DIRS is not set in armnn/tests/CMakeLists.txt for external builds

 * Added stb_image libraries under third-party/stb_image
 * Updates test/CMakeLists.txt to include those stb_image libraries
 * stb_image libraries are dual-licensed under public domain and MIT

Change-Id: Ic179928598bb236d39fb5992042183099e78a0d7
Signed-off-by: Sadik Armagan <sadik.armagan@arm.com>
5 years agoIVGCVSW-2773 Integrate new CL tuner into ArmNN
Ruomei Yan [Thu, 25 Apr 2019 13:24:05 +0000 (14:24 +0100)]
IVGCVSW-2773 Integrate new CL tuner into ArmNN

!android-nn-driver:1038
Change-Id: Ia94743a64109b5eddcd44b03cf6ba5b3a4de4e53
Signed-off-by: Ruomei Yan <ruomei.yan@arm.com>
5 years agoIVGCVSW-3021 Add end-to-end flow control integration test
Matthew Bentham [Tue, 30 Apr 2019 09:17:40 +0000 (10:17 +0100)]
IVGCVSW-3021 Add end-to-end flow control integration test

Currently asserts that the net fails to optimise as that
is the expected behaviour, but it's complete enough to
exercise most of the code in SwitchLayer.cpp and MergeLayer.cpp

Also, fix a bug in SwitchLayer::ValidateTensorShapesFromInputs
found by the new test.

Also, make topological sort slightly more robust to missing connections
as it should not be the job of the sorter to validate the graph.

Change-Id: I30b9e2d4769ab14a6820284871a79a5bb3eef1ef
Signed-off-by: Matthew Bentham <matthew.bentham@arm.com>
5 years agoIVGCVSW-2993: Investigate TfLite Parser test output shape validation
Narumol Prangnawarat [Mon, 29 Apr 2019 15:40:55 +0000 (16:40 +0100)]
IVGCVSW-2993: Investigate TfLite Parser test output shape validation

 * Get outputTensorInfo from runtime outputs to ensure that
the results are from the running network

Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: Ib35afeaf5f6121df7f6379cfc557ae77e5214d69

5 years agoIVGCVSW-2405 Rename SubGraph to SubgraphView
Derek Lamberti [Fri, 26 Apr 2019 12:05:17 +0000 (13:05 +0100)]
IVGCVSW-2405 Rename SubGraph to SubgraphView

Change-Id: Ie50aeccf053c20c3a01a75042bbc3acd824375af
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com>
5 years agoIVGCVSW-2948 Add DeepSpeech v1 support to TensorFlowLiteSupport.md
Narumol Prangnawarat [Mon, 29 Apr 2019 16:43:36 +0000 (17:43 +0100)]
IVGCVSW-2948 Add DeepSpeech v1 support to TensorFlowLiteSupport.md

Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: I18697fde21e90723bcc36cc9cc1b571652fa54e7

5 years agoIVGCVSW-2983 activation layers support for QSymm16
Teresa Charlin [Wed, 24 Apr 2019 09:17:46 +0000 (10:17 +0100)]
IVGCVSW-2983 activation layers support for QSymm16
!armnn:1023

Signed-off-by: Teresa Charlin <teresa.charlinreyes@arm.com>
Change-Id: Ie4e5c4e7cb9edec690235393fff0721fca5da6cc

5 years agoFixing a broken link to MLPlatform.org
Brian Joyce [Mon, 29 Apr 2019 11:42:27 +0000 (12:42 +0100)]
Fixing a broken link to MLPlatform.org

Signed-off-by: Brian Joyce <brian.joyce@arm.com>
Change-Id: Ie9e8ba683f4475af15db37f1949a330132055561

5 years agoIVGCVSW-2843 Support QSymm16 via Command-line quantizer tool
Sadik Armagan [Fri, 26 Apr 2019 16:11:47 +0000 (17:11 +0100)]
IVGCVSW-2843 Support QSymm16 via Command-line quantizer tool

 * Added quantization scheme support to ArmnnQuantizer

Change-Id: Ia0202bfcd8cac0695aa3b18f9447a19b27f74f67
Signed-off-by: Sadik Armagan <sadik.armagan@arm.com>
5 years agoIVGCVSW-2982 Refactor reference Activation workload
Nattapat Chaimanowong [Wed, 24 Apr 2019 15:19:57 +0000 (16:19 +0100)]
IVGCVSW-2982 Refactor reference Activation workload

Change-Id: Ia3b9a56787cc68822a3c1635de82e03ecc0aae27
Signed-off-by: Nattapat Chaimanowong <nattapat.chaimanowong@arm.com>
5 years agoIVGCVSW-2773 Update clframework pin for the jenkins timing tests
Ruomei Yan [Fri, 26 Apr 2019 08:43:43 +0000 (09:43 +0100)]
IVGCVSW-2773 Update clframework pin for the jenkins timing tests

!android-nn-driver:1035
Change-Id: I36859d21f452df92f2a23d2f9f9c669f4284ac07
Signed-off-by: Ruomei Yan <ruomei.yan@arm.com>
5 years agoIVGCVSW-2396 Go back to using offset memory manager
Sadik Armagan [Fri, 26 Apr 2019 15:04:34 +0000 (16:04 +0100)]
IVGCVSW-2396 Go back to using offset memory manager

Change-Id: If6cf69b1569eb69c9481369a99ca7066be0fdd9d
Signed-off-by: Sadik Armagan <sadik.armagan@arm.com>
5 years agoIVGCVSW-2996 Add Reshape layer to ParseFullyConnected in TfLite parser
Narumol Prangnawarat [Wed, 24 Apr 2019 14:52:20 +0000 (15:52 +0100)]
IVGCVSW-2996 Add Reshape layer to ParseFullyConnected in TfLite parser
when input is > 2D to flatten the input to 2D [batch_size, input_size]

Change-Id: Id9d9ff996225c7d0938204ae0ceb330a11e264f5
Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
5 years agoIVGCVSW-3007 ArmnnConverter: Fix bug with optional --input-tensor-shape argument
Matthew Bentham [Fri, 26 Apr 2019 15:57:29 +0000 (16:57 +0100)]
IVGCVSW-3007 ArmnnConverter: Fix bug with optional --input-tensor-shape argument

Change-Id: Icae21aa39bea57fd5de4278756cc620ffe684ed7
Signed-off-by: Matthew Bentham <matthew.bentham@arm.com>
5 years agoIVGCVSW-2657: Fix to force correct quantisation parameters for QASYMM8 Softmax
David Monahan [Thu, 25 Apr 2019 15:03:38 +0000 (16:03 +0100)]
IVGCVSW-2657: Fix to force correct quantisation parameters for QASYMM8 Softmax
Signed-off-by: David Monahan <david.monahan@arm.com>
Change-Id: I0989ea843714ba1d5da756bb87ddefa3706b07eb

5 years agoIVGCVSW-3005 Correct the order of inputs and outputs of deepspeech v1
Narumol Prangnawarat [Fri, 26 Apr 2019 12:48:57 +0000 (13:48 +0100)]
IVGCVSW-3005 Correct the order of inputs and outputs of deepspeech v1

Change-Id: I36b3467e74508ad4e8f3140285f965bc63433d1d
Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
5 years agoMLCE-111: ONNX parser raw data bug
Pablo Tello [Wed, 24 Apr 2019 13:20:21 +0000 (14:20 +0100)]
MLCE-111: ONNX parser raw data bug

Fixed bug in ONNX parser: unable to load raw data from the binary
models.

Change-Id: Iec60d2f90b78ffe6910fdec6e6bd2eb05802ffd0
Signed-off-by: Pablo Tello <pablo.tello@arm.com>
5 years agoIVGCVSW-2993: Investigate TfLite Parser test output shape validation
Nina Drozd [Wed, 24 Apr 2019 14:49:12 +0000 (15:49 +0100)]
IVGCVSW-2993: Investigate TfLite Parser test output shape validation

* Added a check after enqueue workload to ensure that the outputs have the correct number of dimensions
* OutputTensors cannot be used for this as in RunTest we're specifically creating these with expected number of dimensions

Signed-off-by: Nina Drozd <nina.drozd@arm.com>
Change-Id: Ib6e5a138240e2f639f462f58caa72ae760e2b406

5 years agoIVGCVSW-2994 Add Reshape layer to ParseUnpack in TfLite parser
Narumol Prangnawarat [Tue, 23 Apr 2019 14:28:06 +0000 (15:28 +0100)]
IVGCVSW-2994 Add Reshape layer to ParseUnpack in TfLite parser
to remove the unpacked dimension of each output from Splitter
and correct ReshapeFixtureWithReshapeDimsFlatten test output shape

Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: I517d315475612ac8b773930f9b58cac316fa8553

5 years agoRemove incorrect documentation line
Matthew Bentham [Thu, 25 Apr 2019 08:12:09 +0000 (09:12 +0100)]
Remove incorrect documentation line

This line is definitely wrong, plenty of float32 things
work in the TFLite parser, so it sets the wrong expectations.

Change-Id: I87ac01e14b916ccd767429c124c353ab136174d8
Signed-off-by: Matthew Bentham <matthew.bentham@arm.com>
5 years agoIVGCVSW-2657: New Mobilenet Timings test which includes quantisation and softmax
David Monahan [Tue, 23 Apr 2019 10:03:38 +0000 (11:03 +0100)]
IVGCVSW-2657: New Mobilenet Timings test which includes quantisation and softmax
Signed-off-by: David Monahan <david.monahan@arm.com>
Change-Id: Ieeb6ead55a3af851eea666334e41c3c9c3e3803b

5 years agoIVGCVSW-2657: Model update to fix failing timings test: TfLiteVGG16Quantized
David Monahan [Tue, 23 Apr 2019 09:54:34 +0000 (10:54 +0100)]
IVGCVSW-2657: Model update to fix failing timings test: TfLiteVGG16Quantized
Signed-off-by: David Monahan <david.monahan@arm.com>
Change-Id: I49bd93766f8f3cf41a9471c87c1c61ed1ec6034c

5 years agoIVGCVSW-2918 Implement ExecutionFrame.
Teresa Charlin [Wed, 10 Apr 2019 12:59:49 +0000 (13:59 +0100)]
IVGCVSW-2918 Implement ExecutionFrame.

*Add interface IExecutionFrame.
*Add basic implementation ExecutionFrame.
*Add Unit Test

Change-Id: I960ac84a05c0c9b03735ec5e9c63f6f8f95b57b5
Signed-off-by: Kevin May <kevin.may@arm.com>
Signed-off-by: Teresa Charlin <teresa.charlinreyes@arm.com>
Signed-off-by: Aron Virginas-Tar <Aron.Virginas-Tar@arm.com>
5 years agoIVGCVSW-2899 Create a tool to preprocess the images, generating the RAW tensor data...
Sadik Armagan [Fri, 19 Apr 2019 08:55:06 +0000 (09:55 +0100)]
IVGCVSW-2899 Create a tool to preprocess the images, generating the RAW tensor data from the image files

 * ImageTensorGenerator tool generates .raw file contains tensor of the image
 * ImageCSVFileGenerator tool generates .csv file contains list of .raw files

Change-Id: Ic7e148857b9f885044bd69da1077b60104cd6509
Signed-off-by: Sadik Armagan <sadik.armagan@arm.com>
5 years agoIVGCVSW-2925: Combine Pad with Convolution2d in the Optimizer
Nina Drozd [Thu, 18 Apr 2019 13:48:51 +0000 (14:48 +0100)]
IVGCVSW-2925: Combine Pad with Convolution2d in the Optimizer

* Added new optimization for folding pad layer into convolution2d layer following it
* Added new test in OptimizerTests.cpp
* Added new optimization into All optimizations
* Added call to new optimization in Optimize in Network.cpp
* Updated CMakeLists.txt

Signed-off-by: Nina Drozd <nina.drozd@arm.com>
Change-Id: I682e07c71bbd42c49c02dda30a848a9ab2b16e7e

5 years agoIVGCVSW-2987 Modify ParseSplit in TfLite parser
Narumol Prangnawarat [Thu, 18 Apr 2019 15:56:19 +0000 (16:56 +0100)]
IVGCVSW-2987 Modify ParseSplit in TfLite parser

 * Allow input data with dimension not greater than 4D
 * Correct input order
 * Get split dimension from buffer data
 * Unit tests

Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: I285851b19e6fa7c715e5fe4853df167e7c856647

5 years agoIVGCVSW-2980 Build ArmNN with the latest version of the driver stack library
Matteo Martincigh [Wed, 17 Apr 2019 14:37:30 +0000 (15:37 +0100)]
IVGCVSW-2980 Build ArmNN with the latest version of the driver stack library

 * Changed the pre-compiled object held by the pre-compiled layer into
   a unique pointer, so that now the layer has the ownership of it
 * Changed the pre-compiled object held by the descriptor and the workload
   into a naked pointer, to leave the ownership to the layer

Change-Id: I4a582e45ca0aa3978e8e40b786c743a6eddce852
Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com>
5 years agoIVGCVSW-2855 Update Command Line Processing of commonOptions
Jim Flynn [Wed, 17 Apr 2019 09:16:58 +0000 (10:16 +0100)]
IVGCVSW-2855 Update Command Line Processing of commonOptions

Change-Id: I79f483b9854bd57cd712bc29b83983342cf8191f
Signed-off-by: Jim Flynn <jim.flynn@arm.com>
5 years agoIVGCVSW-2849 Add TfLite Parser support for Rank-0 operands and unit tests
Narumol Prangnawarat [Wed, 17 Apr 2019 10:22:38 +0000 (11:22 +0100)]
IVGCVSW-2849 Add TfLite Parser support for Rank-0 operands and unit tests

Change-Id: I6dab12aed395a30466d66421c6e5a12659fedac8
Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
5 years agoIVGCVSW-2957 MergerLayer subtensor optimization now backend agnostic
Derek Lamberti [Mon, 15 Apr 2019 17:37:35 +0000 (18:37 +0100)]
IVGCVSW-2957 MergerLayer subtensor optimization now backend agnostic

+ Update clframework pin
+ Cl and Neon Merger workloads updated to use MemoryLayout agnostic API
+ Workloads only use sub-tensor optimization if ALL input tensors are sub-tensors
+ Refactor LayerSupportCommon code to be a bit more succinct

Change-Id: Ib61ad4ccbd767e924dff07e61022e0cda4069828
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
5 years agoIVGCVSW-2425 Add unit test for Logistic (Sigmoid) in NEON
Narumol Prangnawarat [Mon, 15 Apr 2019 13:14:27 +0000 (14:14 +0100)]
IVGCVSW-2425 Add unit test for Logistic (Sigmoid) in NEON

Change-Id: I557b76ea8c066161f3eb866daabca63694d46f4e
Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
5 years agoIVGCVSW-2855 Create TfLite reference test for DeepSpeechV1
Jim Flynn [Mon, 15 Apr 2019 13:34:17 +0000 (14:34 +0100)]
IVGCVSW-2855 Create TfLite reference test for DeepSpeechV1

Change-Id: I4492a85c8337bf4ea0eb998c88b9cbfc932dc4e6
Signed-off-by: Ruomei Yan <ruomei.yan@arm.com>
Signed-off-by: Jim Flynn <jim.flynn@arm.com>
5 years agoIVGCVSW-2959: Update TfLiteResNetV2-50-Quantized-Armnn test
Nina Drozd [Tue, 16 Apr 2019 09:28:19 +0000 (10:28 +0100)]
IVGCVSW-2959: Update TfLiteResNetV2-50-Quantized-Armnn test

* updated the output name parameter in TfLiteResNetV2-50-Quantized test to correct output name as in model

Change-Id: Ic657d5e7972a610ea63d4fc709fe42c86c997249
Signed-off-by: Nina Drozd <nina.drozd@arm.com>
5 years agoMLCE-103: MDK changes for running multiple inferences qasymm8
Pablo Tello [Mon, 15 Apr 2019 14:44:39 +0000 (15:44 +0100)]
MLCE-103: MDK changes for running multiple inferences qasymm8

Change-Id: I34e8e0736e133ffb5f931ce3b5f5bfa4e2c975c2
Signed-off-by: Pablo Tello <pablo.tello@arm.com>
5 years agoIVGCVSW-2965: Add ResnetV2 50 Timings job in CI
Nina Drozd [Mon, 15 Apr 2019 16:18:36 +0000 (17:18 +0100)]
IVGCVSW-2965: Add ResnetV2 50 Timings job in CI

* Added building of TfLiteParserTest target and sources for TfLiteResNetV2-50-Quantized-Armnn test

Signed-off-by: Nina Drozd <nina.drozd@arm.com>
Change-Id: I0cfc48ee3426187f748d3731e6c060302e9b6afa

5 years agoIVGCVSW-2928 Fix issue with GPU profiling
Matthew Bentham [Tue, 9 Apr 2019 12:10:46 +0000 (13:10 +0100)]
IVGCVSW-2928 Fix issue with GPU profiling

Correctly enable GPU profiling when test profiling is enabled.

Remove extra copy of the profiling-enabled flag from InferenceModel::Params
and correctly pass around the copy that is in InferenceTestOptions.

!referencetests:180329

Change-Id: I0daa1bab2e7068fc479bf417a553183b1d922166
Signed-off-by: Matthew Bentham <matthew.bentham@arm.com>
5 years agoIVGCVSW-2848 - Add TfLite Parser support for Unpack layer
Nina Drozd [Mon, 15 Apr 2019 08:47:39 +0000 (09:47 +0100)]
IVGCVSW-2848 - Add TfLite Parser support for Unpack layer

* Added ParseUnpack in TfLiteParser
* New Unpack test file with test reproducing unpack in DeepSpeechV1 model
* Added documentation for supported Unpack to TensorflorLiteSupport.md

Signed-off-by: Nina Drozd <nina.drozd@arm.com>
Change-Id: Ie920d46254ff4b4ab544407ace4c1d489af83157

5 years agoIVGCVSW-2959 Update TfLiteResNetV2-50-Quantized-Armnn test
nikraj01 [Mon, 15 Apr 2019 08:55:15 +0000 (09:55 +0100)]
IVGCVSW-2959 Update TfLiteResNetV2-50-Quantized-Armnn test

Change-Id: I6cbf2a6668894b7964f98b70216f56db4c99b718
Signed-off-by: nikraj01 <nikhil.raj@arm.com>
5 years agoIVGCVSW-2955 Update the Quantizer Tool to take an additional parameter for the user...
Sadik Armagan [Fri, 12 Apr 2019 14:17:02 +0000 (15:17 +0100)]
IVGCVSW-2955 Update the Quantizer Tool to take an additional parameter for the user to specify a CSV file

Change-Id: Id56e09f147cca5c1301ec1b6bac656cd50bfd583
Signed-off-by: Sadik Armagan <sadik.armagan@arm.com>
5 years agoIVGCVSW-2543 Add timing for ExecuteNetwork inference
James Conroy [Thu, 11 Apr 2019 09:23:58 +0000 (10:23 +0100)]
IVGCVSW-2543 Add timing for ExecuteNetwork inference

  * Adds a new command line option 'threshold-time'
    to ExecuteNetwork, the maximum allowed time for
    inference in EnqueueWorkload.
  * ExecuteNetwork now outputs inference time
    elapsed and (if supplied) threshold time.
  * If actual elapsed inference time is greater
    than supplied threshold time, fail the test.

Change-Id: If441b49a29cf5450687c07500c9046a80ece56fc
Signed-off-by: James Conroy <james.conroy@arm.com>
5 years agoIVGCVSW-2912 Change get_compute_libary.sh -p exit code to 0
Jim Flynn [Thu, 11 Apr 2019 12:10:46 +0000 (13:10 +0100)]
IVGCVSW-2912 Change get_compute_libary.sh -p exit code to 0

Change-Id: Id53d32f07c2c555d4ed86bcba31a860a698ff3e9
Signed-off-by: Jim Flynn <jim.flynn@arm.com>
5 years agoIVGCVSW-2873 Update documentation for Serializer/Deserializer
Sadik Armagan [Wed, 10 Apr 2019 13:16:44 +0000 (14:16 +0100)]
IVGCVSW-2873 Update documentation for Serializer/Deserializer

 * Updated Serializer/Deserializer support documentation for Quantize Operation.

Change-Id: I8cc670a58756c9f2d7294131c4715bee5ae7a647
Signed-off-by: Sadik Armagan <sadik.armagan@arm.com>
5 years agoIVGCVSW-2947 Remove boost dependency from include/TypesUtils.hpp
Aron Virginas-Tar [Tue, 9 Apr 2019 13:08:06 +0000 (14:08 +0100)]
IVGCVSW-2947 Remove boost dependency from include/TypesUtils.hpp

!android-nn-driver:968

Signed-off-by: Aron Virginas-Tar <Aron.Virginas-Tar@arm.com>
Change-Id: I03ccb4842b060a9893567542bfcadc180bbc7311

5 years agoIVGCVSW-2946 RefElementwiseWorkload configures prior to first execute
Derek Lamberti [Tue, 9 Apr 2019 09:25:02 +0000 (10:25 +0100)]
IVGCVSW-2946 RefElementwiseWorkload configures prior to first execute

+ Added PostAllocationConfigure() method to workload interface
+ Elementwise function now deduces types based on Functor
- Replaced RefComparisonWorkload with RefElementwiseWorkload specialization
+ Fixed up unit tests and minor formatting

Change-Id: I33d08797767bba01cf4efb2904920ce0f950a4fe
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
5 years agoIVGCVSW-2912 Make get_compute_library.sh sole source for clframework pin
Jim Flynn [Tue, 2 Apr 2019 14:19:08 +0000 (15:19 +0100)]
IVGCVSW-2912 Make get_compute_library.sh sole source for clframework pin

* Also incorporated fix for break in master build
  32-bit NEDepthwiseConvolution errors in clframework
* Fixed a failure in the Float16 workloads for ElementwiseOperations

!android-nn-driver:963

Change-Id: Ic2cdb0e6c9399fa42b56001c6f4b46b7f150f143
Signed-off-by: Jim Flynn <jim.flynn@arm.com>
5 years agoIVGCVSW-2862 Extend the Elementwise Workload to support QSymm16 Data Type
Sadik Armagan [Tue, 9 Apr 2019 13:20:12 +0000 (14:20 +0100)]
IVGCVSW-2862 Extend the Elementwise Workload to support QSymm16 Data Type
IVGCVSW-2863 Unit test per Elementwise operator with QSymm16 Data Type
 * Added QSymm16 support for Elementwise Operators
 * Added QSymm16 unit tests for Elementwise Operators

Change-Id: I4e4e2938f9ed2cbbb1f05fb0f7dc476768550277
Signed-off-by: Sadik Armagan <sadik.armagan@arm.com>
5 years agoIVGCVSW-2845: Add TfLite Parser support for TanH activation layer
Nina Drozd [Tue, 9 Apr 2019 08:37:38 +0000 (09:37 +0100)]
IVGCVSW-2845: Add TfLite Parser support for TanH activation layer

* Added ParseTanH in TfLiteParser
* Added testcase for parsing TanH activation in Activations.cpp
* Added new supported TanH operator in TensorflowLiteSupport.md

Signed-off-by: Nina Drozd <nina.drozd@arm.com>
Change-Id: Ie60f38994d76b077f86828c21c57381bdeeaeb5a

5 years agoIVGCVSW-2861 Refactor the Reference Elementwise workload
Sadik Armagan [Wed, 3 Apr 2019 16:48:18 +0000 (17:48 +0100)]
IVGCVSW-2861 Refactor the Reference Elementwise workload
 * Refactor Reference Comparison workload
 * Removed templating based on the DataType
 * Implemented BaseIterator to do decode/encode

Change-Id: I18f299f47ee23772f90152c1146b42f07465e105
Signed-off-by: Sadik Armagan <sadik.armagan@arm.com>
Signed-off-by: Kevin May <kevin.may@arm.com>
5 years agoIVGCVSW-2844: Add TfLite Parser support for Split layer
Nina Drozd [Mon, 8 Apr 2019 09:52:10 +0000 (10:52 +0100)]
IVGCVSW-2844: Add TfLite Parser support for Split layer

* Added ParseSplit method
* New Unit test Split.cpp
* Updated TensorflowLiteSupport.md with new supported operator

Change-Id: Iec80ba9ad7b48db8e86589ebae77bd7d8ed38fb2
Signed-off-by: Nina Drozd <nina.drozd@arm.com>
5 years agoIVGCVSW-2927 Fix Streamline annotations
Matthew Bentham [Fri, 5 Apr 2019 08:35:15 +0000 (09:35 +0100)]
IVGCVSW-2927 Fix Streamline annotations

Change-Id: Ia3f4852e6ba1358c6798210ecf94105a130cb1b9
Signed-off-by: Matthew Bentham <matthew.bentham@arm.com>
5 years agoIVGCVSW-2914 Add Switch Layer and no-op factory method
Sadik Armagan [Fri, 5 Apr 2019 14:25:46 +0000 (15:25 +0100)]
IVGCVSW-2914 Add Switch Layer and no-op factory method

Change-Id: I6a6ece708a49e8a97c83a3e7fec11c88af1e1cfa
Signed-off-by: Sadik Armagan <sadik.armagan@arm.com>
Signed-off-by: Aron Virginas-Tar <Aron.Virginas-Tar@arm.com>
5 years agoIVGCVSW-2915 Add Merge Layer and no-op factory method
Nattapat Chaimanowong [Fri, 5 Apr 2019 12:37:19 +0000 (13:37 +0100)]
IVGCVSW-2915 Add Merge Layer and no-op factory method

Change-Id: I54549671e0d3b207904cf9796a843eb2b0a631f7
Signed-off-by: Nattapat Chaimanowong <nattapat.chaimanowong@arm.com>
5 years agoIVGCVSW-2926 Add test for ResNetV2 50 quantized tflite model
nikraj01 [Fri, 5 Apr 2019 10:42:45 +0000 (11:42 +0100)]
IVGCVSW-2926 Add test for ResNetV2 50 quantized tflite model

Change-Id: I9389cf32d0efb303ea0930ecb4a87af884943b06
Signed-off-by: nikraj01 <nikhil.raj@arm.com>
5 years agoIVGCVSW-2539 Improve ExecuteNetwork error logging
Francis Murtagh [Thu, 4 Apr 2019 10:16:29 +0000 (11:16 +0100)]
IVGCVSW-2539 Improve ExecuteNetwork error logging

 * Add check to ensure requested input node exists
   otherwise give coherent error message

Change-Id: Ifee5f1d459f989c2e808cf78806f9a9a7f7c763f
Signed-off-by: Francis Murtagh <francis.murtagh@arm.com>
5 years agoIVGCVSW-2802 Ability to run FP16 turbo mode through ExecuteNetwork
Ruomei Yan [Tue, 2 Apr 2019 15:47:34 +0000 (16:47 +0100)]
IVGCVSW-2802 Ability to run FP16 turbo mode through ExecuteNetwork

Change-Id: I679883234d78b95d1e01ed5602c5cab296b0c6bf
Signed-off-by: Ruomei Yan <ruomei.yan@arm.com>