From df4a711dedfecd54c13699fface58395b27dda81 Mon Sep 17 00:00:00 2001 From: Thibaut Vercueil Date: Tue, 15 Oct 2019 16:05:06 +0200 Subject: [PATCH 01/11] Integration of STM32Cube.AI in the firmware --- src/Makefile | 13 +- src/stm32cubeai/AI/Inc/ai_common_config.h | 34 + src/stm32cubeai/AI/Inc/ai_datatypes_defines.h | 142 ++ src/stm32cubeai/AI/Inc/ai_datatypes_format.h | 473 +++++++ .../AI/Inc/ai_datatypes_internal.h | 301 +++++ src/stm32cubeai/AI/Inc/ai_log.h | 130 ++ src/stm32cubeai/AI/Inc/ai_math_helpers.h | 277 ++++ src/stm32cubeai/AI/Inc/ai_network_inspector.h | 176 +++ src/stm32cubeai/AI/Inc/ai_platform.h | 424 ++++++ .../AI/Inc/ai_platform_interface.h | 663 +++++++++ src/stm32cubeai/AI/Inc/core_common.h | 280 ++++ src/stm32cubeai/AI/Inc/core_convert.h | 98 ++ src/stm32cubeai/AI/Inc/core_datatypes.h | 59 + src/stm32cubeai/AI/Inc/core_log.h | 117 ++ src/stm32cubeai/AI/Inc/core_net_inspect.h | 96 ++ .../AI/Inc/core_net_inspect_interface.h | 121 ++ src/stm32cubeai/AI/Inc/datatypes_network.h | 58 + src/stm32cubeai/AI/Inc/formats_list.h | 69 + src/stm32cubeai/AI/Inc/layers.h | 88 ++ src/stm32cubeai/AI/Inc/layers_common.h | 206 +++ src/stm32cubeai/AI/Inc/layers_conv2d.h | 170 +++ src/stm32cubeai/AI/Inc/layers_dense.h | 65 + src/stm32cubeai/AI/Inc/layers_generic.h | 397 ++++++ src/stm32cubeai/AI/Inc/layers_list.h | 92 ++ src/stm32cubeai/AI/Inc/layers_nl.h | 491 +++++++ src/stm32cubeai/AI/Inc/layers_norm.h | 150 +++ src/stm32cubeai/AI/Inc/layers_pool.h | 217 +++ src/stm32cubeai/AI/Inc/layers_rnn.h | 110 ++ src/stm32cubeai/AI/Inc/layers_sm.h | 80 ++ .../AI/Lib/NetworkRuntime400_CM7_GCC.a | Bin 0 -> 412942 bytes src/stm32cubeai/LICENSE | 21 + src/stm32cubeai/Makefile | 63 + src/stm32cubeai/Readme.md | 235 ++++ src/stm32cubeai/cube.mk | 28 + src/stm32cubeai/example/.keras/keras.json | 6 + src/stm32cubeai/example/mnist_cnn.h5 | Bin 0 -> 456728 bytes src/stm32cubeai/example/mnist_cnn.py | 75 ++ src/stm32cubeai/imgs/mnist_output.gif | Bin 0 -> 304055 bytes src/stm32cubeai/imgs/openmv_cubeai.png | Bin 0 -> 198884 bytes src/stm32cubeai/mpconfigportcubeai.h | 395 ++++++ src/stm32cubeai/nn_st.c | 329 +++++ src/stm32cubeai/nn_st.h | 50 + src/stm32cubeai/py_st_nn.c | 91 ++ src/stm32cubeai/qstrdefscubeai.h | 1180 +++++++++++++++++ src/stm32cubeai/sample_script.py | 37 + 45 files changed, 8105 insertions(+), 2 deletions(-) create mode 100755 src/stm32cubeai/AI/Inc/ai_common_config.h create mode 100755 src/stm32cubeai/AI/Inc/ai_datatypes_defines.h create mode 100755 src/stm32cubeai/AI/Inc/ai_datatypes_format.h create mode 100755 src/stm32cubeai/AI/Inc/ai_datatypes_internal.h create mode 100755 src/stm32cubeai/AI/Inc/ai_log.h create mode 100755 src/stm32cubeai/AI/Inc/ai_math_helpers.h create mode 100755 src/stm32cubeai/AI/Inc/ai_network_inspector.h create mode 100755 src/stm32cubeai/AI/Inc/ai_platform.h create mode 100755 src/stm32cubeai/AI/Inc/ai_platform_interface.h create mode 100755 src/stm32cubeai/AI/Inc/core_common.h create mode 100755 src/stm32cubeai/AI/Inc/core_convert.h create mode 100755 src/stm32cubeai/AI/Inc/core_datatypes.h create mode 100755 src/stm32cubeai/AI/Inc/core_log.h create mode 100755 src/stm32cubeai/AI/Inc/core_net_inspect.h create mode 100755 src/stm32cubeai/AI/Inc/core_net_inspect_interface.h create mode 100755 src/stm32cubeai/AI/Inc/datatypes_network.h create mode 100755 src/stm32cubeai/AI/Inc/formats_list.h create mode 100755 src/stm32cubeai/AI/Inc/layers.h create mode 100755 src/stm32cubeai/AI/Inc/layers_common.h create mode 100755 src/stm32cubeai/AI/Inc/layers_conv2d.h create mode 100755 src/stm32cubeai/AI/Inc/layers_dense.h create mode 100755 src/stm32cubeai/AI/Inc/layers_generic.h create mode 100755 src/stm32cubeai/AI/Inc/layers_list.h create mode 100755 src/stm32cubeai/AI/Inc/layers_nl.h create mode 100755 src/stm32cubeai/AI/Inc/layers_norm.h create mode 100755 src/stm32cubeai/AI/Inc/layers_pool.h create mode 100755 src/stm32cubeai/AI/Inc/layers_rnn.h create mode 100755 src/stm32cubeai/AI/Inc/layers_sm.h create mode 100755 src/stm32cubeai/AI/Lib/NetworkRuntime400_CM7_GCC.a create mode 100755 src/stm32cubeai/LICENSE create mode 100755 src/stm32cubeai/Makefile create mode 100755 src/stm32cubeai/Readme.md create mode 100755 src/stm32cubeai/cube.mk create mode 100755 src/stm32cubeai/example/.keras/keras.json create mode 100755 src/stm32cubeai/example/mnist_cnn.h5 create mode 100755 src/stm32cubeai/example/mnist_cnn.py create mode 100755 src/stm32cubeai/imgs/mnist_output.gif create mode 100755 src/stm32cubeai/imgs/openmv_cubeai.png create mode 100755 src/stm32cubeai/mpconfigportcubeai.h create mode 100644 src/stm32cubeai/nn_st.c create mode 100755 src/stm32cubeai/nn_st.h create mode 100755 src/stm32cubeai/py_st_nn.c create mode 100755 src/stm32cubeai/qstrdefscubeai.h create mode 100644 src/stm32cubeai/sample_script.py diff --git a/src/Makefile b/src/Makefile index fb85dc0a7..018d20944 100755 --- a/src/Makefile +++ b/src/Makefile @@ -34,7 +34,7 @@ MAKE = $(Q)make CAT = $(Q)cat # Targets -TARGET ?= OPENMV3 +TARGET ?= OPENMV4 OPENMV = openmv BOOTLOADER = bootloader UVC = uvc @@ -147,7 +147,7 @@ FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/CommonTables/*.o) FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/FastMathFunctions/*.o) FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/MatrixFunctions/*.o) FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/nn/ActivationFunctions/*.o) -FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/nn/ConvolutionFunctions/*.o) +# FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/nn/ConvolutionFunctions/*.o) FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/nn/FullyConnectedFunctions/*.o) FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/nn/NNSupportFunctions/*.o) FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/nn/PoolingFunctions/*.o) @@ -521,12 +521,21 @@ BOOTLOADER_OBJS: FIRMWARE_OBJS UVC_OBJS: FIRMWARE_OBJS $(MAKE) -C $(UVC_DIR) BUILD=$(BUILD)/$(UVC_DIR) CFLAGS="$(UVC_CFLAGS) -MMD" +ifeq ($(CUBEAI),) +FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/nn/ConvolutionFunctions/*.o) +else +include $(TOP_DIR)/stm32cubeai/cube.mk +endif + FIRMWARE_OBJS: $(MAKE) -C $(CMSIS_DIR) BUILD=$(BUILD)/$(CMSIS_DIR) CFLAGS="$(CFLAGS) -fno-strict-aliasing -MMD" $(MAKE) -C $(STHAL_DIR) BUILD=$(BUILD)/$(STHAL_DIR) CFLAGS="$(CFLAGS) -MMD" $(MAKE) -C $(MICROPY_DIR)/ports/stm32 BUILD=$(BUILD)/$(MICROPY_DIR) BOARD=$(TARGET) QSTR_DEFS=$(OMV_QSTR_DEFS) $(MAKE) -C $(LEPTON_DIR) BUILD=$(BUILD)/$(LEPTON_DIR) CFLAGS="$(CFLAGS) -MMD" $(MAKE) -C $(MLX_DIR) BUILD=$(BUILD)/$(MLX_DIR) CFLAGS="$(CFLAGS) -MMD" +ifneq ($(CUBEAI),) + $(MAKE) -C $(TOP_DIR)/stm32cubeai BUILD=$(BUILD)/stm32cubeai CFLAGS="$(CFLAGS) -fno-strict-aliasing -MMD" +endif $(MAKE) -C $(WINC1500_DIR) BUILD=$(BUILD)/$(WINC1500_DIR) CFLAGS="$(CFLAGS) -MMD" $(MAKE) -C $(OMV_DIR) BUILD=$(BUILD)/$(OMV_DIR) CFLAGS="$(CFLAGS) -MMD" diff --git a/src/stm32cubeai/AI/Inc/ai_common_config.h b/src/stm32cubeai/AI/Inc/ai_common_config.h new file mode 100755 index 000000000..23ba36212 --- /dev/null +++ b/src/stm32cubeai/AI/Inc/ai_common_config.h @@ -0,0 +1,34 @@ +/** + ****************************************************************************** + * @file ai_common_config.h + * @author AST Embedded Analytics Research Platform + * @date 18-May-2018 + * @brief header file of AI platform common compile configuration defines + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2018 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ +#ifndef __AI_COMMON_CONFIG_H_ +#define __AI_COMMON_CONFIG_H_ +#pragma once + +/*! + * @defgroup layers Layers Compilation Config Definitions + * @brief definition + * + */ + +#define HAS_PROFILE_FLOAT +#define HAS_PROFILE_FIXED + + +#endif /*__AI_COMMON_CONFIG_H_*/ diff --git a/src/stm32cubeai/AI/Inc/ai_datatypes_defines.h b/src/stm32cubeai/AI/Inc/ai_datatypes_defines.h new file mode 100755 index 000000000..93c122a4f --- /dev/null +++ b/src/stm32cubeai/AI/Inc/ai_datatypes_defines.h @@ -0,0 +1,142 @@ +/** + ****************************************************************************** + * @file ai_datatypes_defines.h + * @author AST Embedded Analytics Research Platform + * @date 18-Oct-2017 + * @brief Definitions of AI platform private APIs types + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ + +#ifndef __AI_DATATYPES_DEFINES_H__ +#define __AI_DATATYPES_DEFINES_H__ +#pragma once + +#include "ai_platform.h" + +/*! + * @defgroup datatypes_defines Internal Datatypes Defines Header + * @brief Data structures used internally to implement neural networks + * + */ + +/* define to track datatypes used by codegen */ +#define AI_INTERFACE_TYPE /* AI_INTERFACE_TYPE */ + +#define AI_INTERNAL_API /* AI_INTERNAL_API */ + +#define AI_CONST const +#define AI_STATIC static +#define AI_STATIC_CONST static const + +/******************************************************************************/ +/* NOP operation used by codegen */ +#define AI_NOP /* NOP */ + +#define AI_WRAP_FUNC(fn_) do { fn_ } while (0); + +#define AI_CAT(a, ...) AI_PRIMITIVE_CAT(a, __VA_ARGS__) +#define AI_PRIMITIVE_CAT(a, ...) a ## __VA_ARGS__ + +/******************************************************************************/ +#ifdef HAS_AI_ASSERT +#include +#define AI_ASSERT(cond) \ + { assert(cond); } +#else +#define AI_ASSERT(cond) \ + AI_WRAP_FUNC(AI_NOP) +#endif /*HAS_AI_ASSERT*/ + +/******************************************************************************/ +#define AI_NO_PACKED_STRUCTS + +/* Macro for defining packed structures (compiler dependent). + * This just reduces memory requirements, but is not required. + */ +#if defined(AI_NO_PACKED_STRUCTS) + /* Disable struct packing */ + #define AI_PACKED_STRUCT_START /* AI_PACKED_STRUCT_START */ + #define AI_PACKED_STRUCT_END /* AI_PACKED_STRUCT_END */ + #define AI_PACKED /* AI_PACKED */ +#elif defined(__GNUC__) || defined(__clang__) + /* For GCC and clang */ + #define AI_PACKED_STRUCT_START /* AI_PACKED_STRUCT_START */ + #define AI_PACKED_STRUCT_END /* AI_PACKED_STRUCT_END */ + #define AI_PACKED __attribute__((packed)) +#elif defined(__ICCARM__) || defined (__IAR_SYSTEMS_ICC__) || defined(__CC_ARM) + /* For IAR ARM and Keil MDK-ARM compilers */ + #define AI_PACKED_STRUCT_START _Pragma("pack(push, 1)") + #define AI_PACKED_STRUCT_END _Pragma("pack(pop)") + #define AI_PACKED /* AI_PACKED */ +#elif defined(_MSC_VER) && (_MSC_VER >= 1500) + /* For Microsoft Visual C++ */ + #define AI_PACKED_STRUCT_START __pragma(pack(push, 1)) + #define AI_PACKED_STRUCT_END __pragma(pack(pop)) + #define AI_PACKED /* AI_PACKED */ +#else + /* Unknown compiler */ + #define AI_PACKED_STRUCT_START /* AI_PACKED_STRUCT_START */ + #define AI_PACKED_STRUCT_END /* AI_PACKED_STRUCT_END */ + #define AI_PACKED /* AI_PACKED */ +#endif /* AI_NO_PACKED_STRUCTS */ + +/******************************************************************************/ +#define AI_STRINGIFY_ARG(contents) # contents +#define AI_STRINGIFY(macro_or_string) AI_STRINGIFY_ARG (macro_or_string) + +/******************************************************************************/ +#if defined(_MSC_VER) + #define AI_DECLARE_STATIC static __inline + #define AI_ALIGNED_TYPE(type, x) type __declspec(align(x)) + #define AI_INTERFACE_ENTRY __declspec(dllexport) +#elif defined(__ICCARM__) || defined (__IAR_SYSTEMS_ICC__) + #define AI_DECLARE_STATIC static inline + #define AI_ALIGNED_TYPE(type, x) type + #define AI_INTERFACE_ENTRY /* AI_INTERFACE_ENTRY */ +#else /* _MSC_VER */ + #define AI_DECLARE_STATIC static __inline + #define AI_ALIGNED_TYPE(type, x) type __attribute__ ((aligned(x))) + #define AI_INTERFACE_ENTRY __attribute__((visibility("default"))) +#endif /* _MSC_VER */ + +/******************************************************************************/ +#define AI_ALIGN_MASKED(value, mask) ( ((value)+(mask))&(~(mask)) ) + + +#define AI_GET_REVISION(major, minor, micro) ( \ + ((ai_u32)(major)<<24) | \ + ((ai_u32)(minor)<<16) | \ + ((ai_u32)(micro)<< 8) ) + +#define AI_GET_VERSION_STRING(major, minor, micro) \ + AI_STRINGIFY_ARG(major) "." \ + AI_STRINGIFY_ARG(minor) "." \ + AI_STRINGIFY_ARG(micro) \ + +#define AI_PACK(...) __VA_ARGS__ + +#define AI_CR "\r\n" + +#ifdef HAS_AI_DEBUG +#define AI_DEBUG(expr) expr +#else +#define AI_DEBUG(expr) AI_WRAP_FUNC(AI_NOP) +#endif /* HAS_AI_DEBUG */ + +#define AI_FLAG_NONE (0x0) +#define AI_FLAG_SET(mask, flag) (mask) |= (flag) +#define AI_FLAG_UNSET(mask, flag) (mask) &= (~(flag)) +#define AI_FLAG_IS_SET(mask, flag) ( (flag)==((mask)&(flag)) ) + +#endif /*__AI_DATATYPES_DEFINES_H__*/ diff --git a/src/stm32cubeai/AI/Inc/ai_datatypes_format.h b/src/stm32cubeai/AI/Inc/ai_datatypes_format.h new file mode 100755 index 000000000..5676bfa99 --- /dev/null +++ b/src/stm32cubeai/AI/Inc/ai_datatypes_format.h @@ -0,0 +1,473 @@ +/** + ****************************************************************************** + * @file ai_datatypes_format.h + * @author AST Embedded Analytics Research Platform + * @date 18-Oct-2017 + * @brief Definitions of AI platform private format handling routines + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ + +#ifndef __AI_DATATYPES_FORMAT_H__ +#define __AI_DATATYPES_FORMAT_H__ +#pragma once + +#include "ai_platform.h" +#include "ai_datatypes_defines.h" + +#include "core_datatypes.h" + +/*! + * @defgroup ai_datatypes_format Definiton and Macro of array and buffer formats + * @brief Type definition and implementation of internal @ref ai_array and + * @ref ai_buffer formats. + * @details The library handles 2 different kind of formats: an internal format + * that is part of the @ref ai_array struct that is a packed 32bit representation + * of the format attributes, and a public format (used in public APIs) associated + * with @ref ai_buffer struct , defined as enum in @ref ai_platform.h, + * that is just an enum type. Converters are provided in this header file to + * convert from one format representation to another. + * Some MSB bits are reserved in both formats to code some bit flag useful to + * declare some special attribute. Three flags are actually implemented in both + * formats: the @ref AI_BUFFER_FMT_FLAG_CONST and @ref AI_FMT_FLAG_CONST used + * to tag read-only memory buffers, @ref AI_BUFFER_FMT_FLAG_STATIC and + * @ref AI_FMT_FLAG_STATIC to mark statically allocated memory buffers and + * @ref AI_FMT_FLAG_SCRATCH_BUFFER to tag temporary scratch buffers. + * All the formats are declared in a proper tuple organize table header named + * @ref format_lists.h that enumerates all the formats available for the library. + * A new format could be added easily by adding a new FMY_ENTRY() as required. + * The preprocessor automatically generates the code for the handling of the + * format according to this tuples entry. A rational for the methodology could + * be found here: + * - https://codecraft.co/2012/10/29/how-enums-spread-disease-and-how-to-cure-it/ + * + * The 32bits internal format fields are organized as follows: + * + * MSB LSB + * 31 25 24 23 21 17 14 7 0 + * /---------------------------------------------------------------------------/ + * / ATTR. FLAGS | FLOAT | SIGN | LDIV | TYPE | PBITS | BITS | FBITS / + * /---------------------------------------------------------------------------/ + * Where: + * - FLAGS: is the reserved bits to store additional format attributes (e.g. + * I/O / STATIC flags. etc.) + * - FLOAT: 1 bit mark the format as floating point type + * - SIGN : 1 bit mark the format as signed type + * - LDIV : 2 bits is a log2 value that is used to compute elements size + * with some special format such as the compressed ones. It is a shift + * factor usually set to zero + * - TYPE : 4 bits mark the format "family" type. Actually 5 families are coded, + * @ref AI_FMT_FLOAT (float types) + * @ref AI_FMT_Q (fixed-point types in Qm.n format) + * @ref AI_FMT_LUT4 (compressed lookup 16 formats) + * @ref AI_FMT_LUT8 (compressed lookup 256 formats) + * - PBITS 3 bits padding bits used to set the number of padding bits + * (per element) to handle special aligned formats/ E.g. a 6 bit format + * where each element is stored byte aligned (8 bits) has 2 padding bits. + * Usually this is set to 0 + * - BITS 7 bits set the total number of bits of the element, padding bits + * excluded. The bits are thus = sign bit + fractional bits + integer bits + * The number of integer bits could thus be known using the @ref + * AI_FMT_GET_IBITS() macro. + * - FBITS 7 bits set the number of fractional bits in the format + * + * + * A reference code snippet for usage is the test unit that uses this header: + * + * \include test/test_lcut_formats.cpp + * + */ + +/*! + * Format bitfields definition. NOTE: 7 MSB are masked off + * for (optional) atributes setting using flags. see @ref AI_FMT_FLAG_CONST that + * is used for marking a data as constant readonly + */ + +/* 1 bit field to identify floating point values*/ +#define _FMT_FLOAT_MASK (0x1) +#define _FMT_FLOAT_BITS (24) + +/*! 1 bit sign info */ +#define _FMT_SIGN_MASK (0x1) +#define _FMT_SIGN_BITS (23) + +/*! fractional bits field (i.e. for Q formats see @ref AI_FMT_Q) */ +#define _FMT_FBITS_MASK (0x7F) +#define _FMT_FBITS_BITS (0) +#define _FMT_FBITS_BIAS ((_FMT_FBITS_MASK+1) >> 1) + +/*! TOTAL number of bits (fractional+integer+sign) (excluded padding ones) */ +#define _FMT_BITS_MASK (0x7F) +#define _FMT_BITS_BITS (7) +#define _FMT_BITS_BIAS (0) + +/*! Padding bits for handling formats not aligned to multiples of 8 bits */ +#define _FMT_PBITS_MASK (0x7) +#define _FMT_PBITS_BITS (14) + +/*! bits reserved for identifying the family format, e.g. float, fixed-point..*/ +#define _FMT_TYPE_MASK (0xF) +#define _FMT_TYPE_BITS (17) + +#define _FMT_LDIV_MASK (0x3) +#define _FMT_LDIV_BITS (21) + + +/******************************************************************************/ +#define AI_FMT_OBJ(fmt_) ((ai_array_format)(fmt_)) + +/*! + * Only 25 LSB bits are used for storing actual format bits. 7 bits are reserved + * for format attributes, see @ref AI_FMT_FLAG_CONST flag + */ +#define AI_FMT_FLAG_BITS (25) +#define AI_FMT_MASK ((0x1<> AI_FMT_FLAG_BITS ) + +#define AI_FMT_SAME(fmt1_, fmt2_) \ + ( AI_FMT_GET(fmt1_) == AI_FMT_GET(fmt2_) ) + +#define _FMT_SET(val, mask, bits) AI_FMT_OBJ(((val)&(mask))<<(bits)) +#define _FMT_GET(fmt, mask, bits) ((AI_FMT_OBJ(fmt)>>(bits))&(mask)) + +#define AI_FMT_SET_FLOAT(val) _FMT_SET(val, _FMT_FLOAT_MASK, _FMT_FLOAT_BITS) +#define AI_FMT_GET_FLOAT(fmt) _FMT_GET(fmt, _FMT_FLOAT_MASK, _FMT_FLOAT_BITS) +#define AI_FMT_SET_SIGN(val) _FMT_SET(val, _FMT_SIGN_MASK, _FMT_SIGN_BITS) +#define AI_FMT_GET_SIGN(fmt) _FMT_GET(fmt, _FMT_SIGN_MASK, _FMT_SIGN_BITS) +#define AI_FMT_SET_PBITS(val) _FMT_SET(val, _FMT_PBITS_MASK, _FMT_PBITS_BITS) +#define AI_FMT_GET_PBITS(fmt) _FMT_GET(fmt, _FMT_PBITS_MASK, _FMT_PBITS_BITS) +#define AI_FMT_SET_TYPE(val) _FMT_SET(val, _FMT_TYPE_MASK, _FMT_TYPE_BITS) +#define AI_FMT_GET_TYPE(fmt) _FMT_GET(fmt, _FMT_TYPE_MASK, _FMT_TYPE_BITS) +#define AI_FMT_SET_LDIV(val) _FMT_SET(val, _FMT_LDIV_MASK, _FMT_LDIV_BITS) +#define AI_FMT_GET_LDIV(fmt) _FMT_GET(fmt, _FMT_LDIV_MASK, _FMT_LDIV_BITS) + +#define AI_FMT_SET_BITS(val) \ + _FMT_SET((val) + _FMT_BITS_BIAS, _FMT_BITS_MASK, _FMT_BITS_BITS) +#define AI_FMT_GET_BITS(fmt) \ + ((ai_i8)_FMT_GET(fmt, _FMT_BITS_MASK, _FMT_BITS_BITS) - _FMT_BITS_BIAS) +#define AI_FMT_SET_FBITS(val) \ + _FMT_SET((val) + _FMT_FBITS_BIAS, _FMT_FBITS_MASK, _FMT_FBITS_BITS) +#define AI_FMT_GET_FBITS(fmt) \ + ((ai_i8)_FMT_GET(fmt, _FMT_FBITS_MASK, _FMT_FBITS_BITS) - _FMT_FBITS_BIAS) + +/*! + * The total number of bits for a given format is supposed to be the sum of the + * bits + padding bits. This means that the number of integer bits is derived + * as follow: int_bits = bits - fbits (fractional bits) - 1 (for the sign) + */ +#define AI_FMT_GET_BITS_SIZE(fmt_) \ + (AI_FMT_GET_BITS(fmt_)+AI_FMT_GET_PBITS(fmt_)) + +/*! Macro used to compute the integer bits for a format */ +#define AI_FMT_GET_IBITS(fmt_) \ + ((ai_i16)AI_FMT_GET_BITS(fmt_)-AI_FMT_GET_FBITS(fmt_)-AI_FMT_GET_SIGN(fmt_)) + +/*! ai_buffer format handlers section *****************************************/ + +#define AI_BUFFER_FMT_MASK_Q(fmt_) \ + ( AI_BUFFER_FMT_OBJ(fmt_) & 0xFFFFC000 ) + +#define AI_BUFFER_FMT_GET_Q(fmt_) \ + ( AI_BUFFER_FMT_MASK_Q(fmt_) | AI_BUFFER_FMT_SET_FBITS(0) | \ + AI_BUFFER_FMT_SET_FBITS(0) ) + +#define AI_BUFFER_FMT_SET_Q(bits_, fbits_) \ + AI_BUFFER_FMT_SET(AI_BUFFER_FMT_TYPE_Q, 1, 0, bits_, fbits_) + +#define AI_BUFFER_FMT_IS_Q(fmt_) \ + ( (AI_BUFFER_FMT_TYPE_Q==AI_BUFFER_FMT_GET_TYPE(fmt_)) && \ + (1==AI_BUFFER_FMT_GET_SIGN(fmt_)) ) + +#define AI_BUFFER_FMT_SET_UQ(bits_, fbits_) \ + AI_BUFFER_FMT_SET(AI_BUFFER_FMT_TYPE_Q, 0, 0, bits_, fbits_) + +#define AI_BUFFER_FMT_IS_UQ(fmt_) \ + ( (AI_BUFFER_FMT_TYPE_Q==AI_BUFFER_FMT_GET_TYPE(fmt_)) && \ + (0==AI_BUFFER_FMT_GET_SIGN(fmt_)) ) + +/*! Q ai_array format handlers ************************************************/ +#define AI_ARRAY_FMT_SET_Q(bits_, fbits_) \ + ( AI_FMT_MASK_Q(AI_ARRAY_FORMAT_Q) | AI_FMT_SET_BITS(bits_) | AI_FMT_SET_FBITS(fbits_) ) + +#define AI_ARRAY_FMT_IS_Q(fmt_) \ + ( AI_FMT_GET(AI_FMT_MASK_Q(AI_ARRAY_FORMAT_Q))==AI_FMT_GET(AI_FMT_MASK_Q(fmt_)) ) + +#define AI_ARRAY_FMT_SET_UQ(bits_, fbits_) \ + ( AI_FMT_MASK_Q(AI_ARRAY_FORMAT_UQ) | AI_FMT_SET_BITS(bits_) | AI_FMT_SET_FBITS(fbits_) ) + +#define AI_ARRAY_FMT_IS_UQ(fmt_) \ + ( AI_FMT_GET(AI_FMT_MASK_Q(AI_ARRAY_FORMAT_UQ))==AI_FMT_GET(AI_FMT_MASK_Q(fmt_)) ) + +AI_DEPRECATED +/* Alias for AI_ARRAY_FMT_SET_Q */ +#define AI_ARRAY_FMT_SET_SQ(bits_, fbits_) \ + AI_ARRAY_FMT_SET_Q(bits_, fbits_) + +AI_DEPRECATED +/* Alias for AI_ARRAY_FMT_IS_Q */ +#define AI_ARRAY_FMT_IS_SQ(fmt_) \ + AI_ARRAY_FMT_IS_Q(fmt_) + +/*! ai_array section **********************************************************/ +#define AI_ARRAY_FMT_ENTRY(name_) \ + AI_CONCAT(AI_ARRAY_FORMAT_, name_) + +#define AI_ARRAY_FMT_NAME(fmt_) \ + ai_array_fmt_name(fmt_) + +#define AI_ARRAY_FMT_VALID(fmt_) \ + ai_array_fmt_valid(fmt_) + +#define AI_ARRAY_FMT_EXPORTED(fmt_) \ + ai_array_fmt_exported(fmt_) + +#define AI_ARRAY_FMT_GET_FORMATS(formats_) \ + ai_array_fmt_get_formats(formats_) + +#define AI_ARRAY_TO_BUFFER_FMT(fmt_) \ + ai_array_to_buffer_fmt(fmt_) + +#define AI_ARRAY_GET_BYTE_SIZE(fmt_, count_) \ + ai_array_get_byte_size(fmt_, count_) + +#define AI_ARRAY_GET_DATA_BYTE_SIZE(fmt_, count_) \ + ai_array_get_data_byte_size(fmt_, count_) + +#define AI_ARRAY_GET_ELEMS_FROM_SIZE(fmt_, size_) \ + ai_array_get_elems_from_size(fmt_, size_) + + +AI_API_DECLARE_BEGIN + +/*! + * @typedef ai_array_format + * @ingroup ai_datatypes_format + * @brief Generic Data Format Specifier for @ref ai_array (32bits packed info) + */ +typedef int32_t ai_array_format; + +/*! + * @enum internal data format enums + * @ingroup ai_datatypes_format + * @brief Generic Data Format Specifier (32bits packed info) + */ +typedef enum { +#define FMT_ENTRY(exp_, name_, type_id_, sign_bit_, float_bit_, \ + pbits_, bits_, fbits_, ldiv_bits_) \ + AI_ARRAY_FMT_ENTRY(name_) = (AI_FMT_SET_FLOAT(float_bit_) | \ + AI_FMT_SET_SIGN(sign_bit_) | \ + AI_FMT_SET_BITS(bits_) | \ + AI_FMT_SET_FBITS(fbits_) | \ + AI_FMT_SET_PBITS(pbits_) | \ + AI_FMT_SET_TYPE(type_id_) | \ + AI_FMT_SET_LDIV(ldiv_bits_)), +#include "formats_list.h" +} ai_array_format_entry; + +/*! + * @brief Get a human readable string from the format ID value + * @ingroup ai_datatypes_format + * @param[in] type the @ref ai_array_format to print out + * @return a string with a human readable name of the format + */ +AI_INTERNAL_API +const char* ai_array_fmt_name(const ai_array_format type); + +/*! + * @brief Check if @ref ai_array_format is a exportable to an @ref ai_buffer_format + * @ingroup ai_datatypes_format + * @param[in] type the ai_array_format to check + * @return true if the format is exported, false otherwise + */ +AI_INTERNAL_API +ai_bool ai_array_fmt_exported(const ai_array_format type); + +/*! + * @brief Check if @ref ai_array_format is a valid format present in the list of + * supported formats + * @ingroup ai_datatypes_format + * @param[in] type the ai_array_format to check + * @return true if the format is valid, false otherwise + */ +AI_INTERNAL_API +ai_bool ai_array_fmt_valid(const ai_array_format type); + +/*! + * @brief Get the complete list of supported @ref ai_array_format formats + * @ingroup ai_datatypes_format + * @param[out] formats a pointer to an array withj all supported formats listed + * @return the number of supported formats + */ +AI_INTERNAL_API +ai_size ai_array_fmt_get_formats(const ai_array_format** formats); + +/*! ai_buffer section ********************************************************* + * Only 25 LSB bits are used for storing actual format bits. 7 bits are reserved + * for format atrtributes, see @ref AI_FMT_FLAG_CONST flag + */ + +#define AI_BUFFER_FMT_ENTRY(name_) \ + AI_CONCAT(AI_BUFFER_FORMAT_, name_) + +#define AI_BUFFER_FMT_NAME(type_) \ + ai_buffer_fmt_name(type_) + +#define AI_BUFFER_FMT_VALID(type_) \ + ai_buffer_fmt_valid(type_) + +#define AI_BUFFER_FMT_GET_FORMATS(formats_) \ + ai_buffer_fmt_get_formats(formats_) + +#define AI_BUFFER_TO_ARRAY_FMT(fmt_) \ + ai_buffer_to_array_fmt(fmt_) + +#define AI_BUFFER_GET_BITS_SIZE(fmt) \ + AI_ARRAY_GET_BITS_SIZE(AI_BUFFER_TO_ARRAY_FMT(fmt)) + + +/*! + * @brief Get a human readable string from the format ID value + * @ingroup ai_datatypes_format + * @param[in] type the @ref ai_buffer_format to print out + * @return a string with a human readable name of the format + */ +AI_INTERNAL_API +const char* ai_buffer_fmt_name( + const ai_buffer_format type); + +/*! + * @brief Check if @ref ai_buffer_format is a valid format present in the list + * of supported formats + * @ingroup ai_datatypes_format + * @param[in] type the @ref ai_buffer_format to check + * @return true if the format is valid, false otherwise + */ +AI_INTERNAL_API +ai_bool ai_buffer_fmt_valid( + const ai_buffer_format type); + +/*! + * @brief Get the complete list of supported @ref ai_buffer_format formats + * @ingroup ai_datatypes_format + * @param[out] formats a pointer to an array with all supported formats listed + * @return the number of supported formats + */ +AI_INTERNAL_API +ai_size ai_buffer_fmt_get_formats( + const ai_buffer_format** formats); + +/*! Conversions section *******************************************************/ +/*! + * @brief Convert from ai_array_format to ai_buffer_format. + * @ingroup ai_datatypes_format + * @param fmt the input ai_array_format to convert + * @return the converted format as a ai_buffer_format + */ +AI_INTERNAL_API +ai_buffer_format ai_array_to_buffer_fmt( + const ai_array_format fmt); + +/*! + * @brief Convert from ai_buffer_format to ai_array_format. + * @ingroup ai_datatypes_format + * @param fmt the input ai_buffer_format to convert + * @return the converted format as a ai_array_format + */ +AI_INTERNAL_API +ai_array_format ai_buffer_to_array_fmt( + const ai_buffer_format fmt); + +/** helpers section ***********************************************************/ +/*! + * @brief Computes the size in bytes given an ai_array_format and number of + * array elements. + * @details This routine computes from the number of elements of the array its + * size in bytes. If the array is referred by a tensor structure, it is the task + * of the latter to handle per-dimension padding (e.g. to align odd rows in a + * 4-bit matrix. At array level the padding elements MUST be included in the + * number of elements. + * @ingroup ai_datatypes_format + * @param[in] fmt the input array format as an ai_array_format + * @param[in] count the number of elements stored in the data array + * @return the size in bytes of the array given the specific format and number + * of elements (including padding elements) + */ +AI_INTERNAL_API +ai_size ai_array_get_byte_size( + const ai_array_format fmt, const ai_size count); + +/*! + * @brief Computes the size in bytes given an ai_array_format and number of + * array elements of the data fields (e.g. LUT table size excluded). + * @details This routine computes from the number of elements of the array its + * size in bytes. If the array is referred by a tensor structure, it is the task + * of the latter to handle per-dimension padding (e.g. to align odd rows in a + * 4-bit matrix. At array level the padding elements MUST be included in the + * number of elements. + * @ingroup ai_datatypes_format + * @param[in] fmt the input array format as an ai_array_format + * @param[in] count the number of elements stored in the data array + * @return the size in bytes of the array given the specific format and number + * of elements (including padding elements) + */ +AI_INTERNAL_API +ai_size ai_array_get_data_byte_size( + const ai_array_format fmt, const ai_size count); + +/*! + * @brief Computes the number of elements from ai_array_format and + * the size in byte of the array. + * @ingroup ai_datatypes_format + * @param fmt the input array format as an ai_array_format + * @param size the size in bytes of the array + * @return the number of elements that could be stored given the format + */ +AI_INTERNAL_API +ai_size ai_array_get_elems_from_size( + const ai_array_format fmt, const ai_size byte_size); + +AI_API_DECLARE_END + +#endif /*__AI_DATATYPES_FORMAT_H__*/ diff --git a/src/stm32cubeai/AI/Inc/ai_datatypes_internal.h b/src/stm32cubeai/AI/Inc/ai_datatypes_internal.h new file mode 100755 index 000000000..010743d49 --- /dev/null +++ b/src/stm32cubeai/AI/Inc/ai_datatypes_internal.h @@ -0,0 +1,301 @@ +/** + ****************************************************************************** + * @file ai_datatypes_internal.h + * @author AST Embedded Analytics Research Platform + * @date 01-May-2017 + * @brief Definitions of AI platform private APIs types + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ + +#ifndef __AI_DATATYPES_INTERNAL_H__ +#define __AI_DATATYPES_INTERNAL_H__ +#pragma once + +#include +#include "ai_platform.h" +#include "ai_platform_interface.h" + +/*! + * @defgroup datatypes_internal Internal Datatypes + * @brief Data structures used internally to implement neural networks + * + * The layers are defined as structs; a generic layer type defines the basic + * layer parameters and type-specific parameters are handled by specializations + * implemented as a C union. The layers keep also a pointer to the parent + * network and the next layer in the network. + * The input, output and parameters are tensor with an hard-coded maximum + * dimension of 4. Tensors are floating point arrays with a notion of size. + * The network is a linked list of layers, and thus it stores only the pointer + * to the first layer. + */ + +/*! + * @section Offsets + * @ingroup datatypes_internal + * Macros to handle (byte) stride addressing on tensors. The `AI_PTR` macro + * is used to always cast a pointer to byte array. The macros `AI_OFFSET_X` are + * used to compute (byte) offsets of respectively adjacents row elements, col + * elements, channel elements and `channel_in` elements. + * @{ + */ + +/** Count Variable Number of Arguments (up to 64 elements) ********************/ +#define AI_NUMARGS(...) \ + PP_NARG_(__VA_ARGS__,PP_RSEQ_N()) +#define PP_NARG_(...) \ + PP_ARG_N(__VA_ARGS__) +#define PP_ARG_N( \ + _1, _2, _3, _4, _5, _6, _7, _8, _9,_10, \ + _11,_12,_13,_14,_15,_16,_17,_18,_19,_20, \ + _21,_22,_23,_24,_25,_26,_27,_28,_29,_30, \ + _31,_32,_33,_34,_35,_36,_37,_38,_39,_40, \ + _41,_42,_43,_44,_45,_46,_47,_48,_49,_50, \ + _51,_52,_53,_54,_55,_56,_57,_58,_59,_60, \ + _61,_62,_63,N,...) N +#define PP_RSEQ_N() \ + 63,62,61,60, \ + 59,58,57,56,55,54,53,52,51,50, \ + 49,48,47,46,45,44,43,42,41,40, \ + 39,38,37,36,35,34,33,32,31,30, \ + 29,28,27,26,25,24,23,22,21,20, \ + 19,18,17,16,15,14,13,12,11,10, \ + 9,8,7,6,5,4,3,2,1,0 + +#define AI_PTR_ALIGN(ptr, alignment) \ + ( (((ai_uptr)(ptr))+((alignment)-1))&(~((alignment)-1)) ) + + +#define AI_DIMENSION(item_, pos_) \ + ((item_).dimension[(pos_)]) + +/******************************************************************************/ +#define AI_BITS_TO_BYTES(bits_) \ + (((bits_)+0x7) >> 3) + +#define AI_BYTES_TO_BITS(bytes_) \ + ((bytes_) << 3) + +/******************************************************************************/ +#define AI_SHAPE_2D_H(shape_) \ + AI_DIMENSION((shape_), AI_SHAPE_2D_HEIGHT) + +#define AI_SHAPE_2D_W(shape_) \ + AI_DIMENSION((shape_), AI_SHAPE_2D_WIDTH) + +#define AI_SHAPE_ND_SIZE(shape_) \ + ((shape_).size) + +#define AI_SHAPE_ND_ELEM(shape_, pos_) \ + AI_DIMENSION(shape_, pos_) + +/******************************************************************************/ +#define AI_STRIDE_2D_H(stride_) \ + AI_DIMENSION((stride_), AI_SHAPE_2D_HEIGHT) + + +#define AI_STRIDE_2D_W(stride_) \ + AI_DIMENSION((stride_), AI_SHAPE_2D_WIDTH) + +#define AI_STRIDE_ND_SIZE(stride_) \ + ((stride_).size) + +#define AI_STRIDE_ND_ELEM(stride_, pos_) \ + AI_DIMENSION(stride_, pos_) + +/******************************************************************************/ +//#define AI_SHAPE_BATCH(shape) AI_DIMENSION((shape), AI_SHAPE_BATCH_CHANNEL) +#define AI_SHAPE_H(shape) AI_DIMENSION((shape), AI_SHAPE_HEIGHT) +#define AI_SHAPE_W(shape) AI_DIMENSION((shape), AI_SHAPE_WIDTH) +#define AI_SHAPE_CH(shape) AI_DIMENSION((shape), AI_SHAPE_CHANNEL) +#define AI_SHAPE_IN_CH(shape) AI_DIMENSION((shape), AI_SHAPE_IN_CHANNEL) + +#define AI_CONV_SHAPE_H AI_SHAPE_W +#define AI_CONV_SHAPE_W AI_SHAPE_CH +#define AI_CONV_SHAPE_CH AI_SHAPE_H +#define AI_CONV_SHAPE_IN_CH AI_SHAPE_IN_CH + +//#define AI_STRIDE_BATCH(stride) AI_DIMENSION((stride), AI_SHAPE_BATCH_CHANNEL) +#define AI_STRIDE_H(stride) AI_DIMENSION((stride), AI_SHAPE_HEIGHT) +#define AI_STRIDE_W(stride) AI_DIMENSION((stride), AI_SHAPE_WIDTH) +#define AI_STRIDE_CH(stride) AI_DIMENSION((stride), AI_SHAPE_CHANNEL) +#define AI_STRIDE_IN_CH(stride) AI_DIMENSION((stride), AI_SHAPE_IN_CHANNEL) + + +//#define AI_OFFSET_BATCH(b, stride) ((ai_ptr_offset)(b) * AI_STRIDE_BATCH(stride)) +#define AI_OFFSET_H(y, stride) ((ai_ptr_offset)(y) * AI_STRIDE_H(stride)) +#define AI_OFFSET_W(x, stride) ((ai_ptr_offset)(x) * AI_STRIDE_W(stride)) +#define AI_OFFSET_CH(ch, stride) ((ai_ptr_offset)(ch) * AI_STRIDE_CH(stride)) +#define AI_OFFSET_IN_CH(ch, stride) ((ai_ptr_offset)(ch) * \ + AI_STRIDE_IN_CH(stride)) +#define AI_OFFSET(y, x, ch, in_ch, stride) ( \ + AI_OFFSET_H((y), (stride)) + AI_OFFSET_W((x), (stride)) + \ + AI_OFFSET_CH((ch), (stride)) + AI_OFFSET_IN_CH((in_ch), (stride)) ) + +/*! @} */ + +#define AI_GET_CONV_OUT_SIZE(in_size, filt_size, pad_l, pad_r, filt_stride) \ + ((((in_size) - (filt_size) + (pad_l) + (pad_r)) / (filt_stride)) + 1) + + +/** Tensors datatypes defines handlers ****************************************/ +#define AI_TENSOR_SIZE(tensor_) \ + ( AI_SHAPE_H((tensor_)->shape) * AI_SHAPE_W((tensor_)->shape) * \ + AI_SHAPE_CH((tensor_)->shape) * AI_SHAPE_IN_CH((tensor_)->shape) ) + +#define AI_TENSOR_BYTE_SIZE(tensor_) \ + ( AI_SHAPE_H((tensor_)->shape) * AI_STRIDE_H((tensor_)->stride) ) + +/******************************************************************************/ + +AI_API_DECLARE_BEGIN + +/*! + * @typedef ai_offset + * @ingroup ai_datatypes_internal + * @brief Generic index offset type + */ +typedef int32_t ai_offset; + + +/*! + * @typedef ai_vec4_float + * @ingroup ai_datatypes_internal + * @brief 32bit X 4 float (optimization for embedded MCU) + */ +typedef struct _ai_vec4_float { + ai_float a1; + ai_float a2; + ai_float a3; + ai_float a4; +} ai_vec4_float; + + +#define AI_VEC4_FLOAT(ptr_) \ + _get_vec4_float((ai_handle)(ptr_)) + +AI_DECLARE_STATIC +ai_vec4_float _get_vec4_float(const ai_handle fptr) +{ + return *((const ai_vec4_float*)fptr); +} + +/*! + * @typedef (*func_copy_tensor) + * @ingroup datatypes_internal + * @brief Fuction pointer for generic tensor copy routines + * this function pointer abstracts a generic tensor copy routine. + */ +typedef ai_bool (*func_copy_tensor)(ai_tensor* dst, const ai_tensor* src); + + +/*! + * @brief Check whether 2 shapes have identical dimensions. + * @ingroup datatypes_internal + * @param shape0 the 1st tensor shape to compare + * @param shape1 the 2nd tensor shape to compare + * @return true if shape0 and shape1 have same dimensions. false otherwise + */ +AI_DECLARE_STATIC +ai_bool ai_shape_is_same(const ai_shape* shape0, const ai_shape* shape1) { + AI_ASSERT(shape0 && shape1) + for (ai_size i = 0; i < AI_SHAPE_MAX_DIMENSION; ++i) { + if ( shape0->dimension[i]!=shape1->dimension[i] ) + return false; + } + return true; +} + +/*! + * @brief Check if shape0 is a subshape of shape1 + * @ingroup datatypes_internal + * @param shape0 the 1st tensor shape to compare + * @param shape1 the 2nd tensor shape to compare + * @return true if shape0 is a subshape of shape1 (all shape0 dimensions are +* smallers or equal of the shape1 ones). false otherwise + */ +AI_DECLARE_STATIC +ai_bool ai_shape_is_subshape(const ai_shape* shape0, const ai_shape* shape1) { + AI_ASSERT(shape0 && shape1) + for (ai_size i = 0; i < AI_SHAPE_MAX_DIMENSION; ++i) { + if ( shape0->dimension[i]>shape1->dimension[i] ) + return false; + } + return true; +} + +/*! + * @brief Computes the total size of a tensor given its dimensions. + * @ingroup datatypes_internal + * @param shape the tensor shape + */ +AI_DECLARE_STATIC +ai_size ai_shape_get_size(const ai_shape* shape) { + AI_ASSERT(shape) + ai_size size = 1; + for (ai_size i = 0; i < AI_SHAPE_MAX_DIMENSION; ++i) { + size *= shape->dimension[i]; + } + + return size; +} + +/*! + * @brief Computes the size of the input image discarding the channels. + * @ingroup datatypes_internal + * @param shape the tensor shape + */ +AI_DECLARE_STATIC +ai_size ai_shape_get_npixels(const ai_shape* shape) { + AI_ASSERT(shape) + const ai_size npixels = + shape->dimension[AI_SHAPE_WIDTH] * shape->dimension[AI_SHAPE_HEIGHT]; + + return npixels; +} + +/*! + * @brief Map from ai_buffer data struct to ai_array data struct. + * @ingroup datatypes_internal + * @param buf a pointer to the ai_buffer to be mapped to ai_array + * @return an initialized @ref ai_array struct representing same data + */ +AI_DECLARE_STATIC +ai_array ai_from_buffer_to_array(const ai_buffer* buf) +{ + AI_ASSERT(buf) + const ai_u32 size = AI_BUFFER_SIZE(buf) * buf->n_batches; + + AI_ARRAY_OBJ_DECLARE(a, AI_BUFFER_TO_ARRAY_FMT(AI_BUFFER_FMT_OBJ(buf->format)), + buf->data, buf->data, size, AI_CONST); + return a; +} + +/*! + * @brief Map from ai_array data struct to ai_buffer data struct. + * @ingroup datatypes_internal + * @param array a pointer to the ai_array to be mapped to ai_buffer + * @return an initialized @ref ai_buffer struct representing same data + */ +AI_DECLARE_STATIC +ai_buffer ai_from_array_to_buffer(const ai_array* array) +{ + AI_ASSERT(array) + const ai_buffer b = AI_BUFFER_OBJ_INIT(AI_ARRAY_TO_BUFFER_FMT(array->format), \ + 1, 1, array->size, 1, array->data_start); + return b; +} + +AI_API_DECLARE_END + +#endif /*__AI_DATATYPES_INTERNAL_H__*/ diff --git a/src/stm32cubeai/AI/Inc/ai_log.h b/src/stm32cubeai/AI/Inc/ai_log.h new file mode 100755 index 000000000..78fe7bc1a --- /dev/null +++ b/src/stm32cubeai/AI/Inc/ai_log.h @@ -0,0 +1,130 @@ +/** + * Copyright (c) 2017 rxi + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the MIT license. See `log.c` for details. + */ + +#ifndef AI_LOG_H_ +#define AI_LOG_H_ +#pragma once + +#include +#include +#include +#include + +/*! + * @defgroup log Core logger class definition and implementation + * @brief Data structures and defines used to implementlogger module + * functionalities + */ + +#define LOG_VERSION "0.3.0" +#define LOG_CR "\r\n" + +/***** Compilation options: define/undef as required **************************/ +#define LOG_USE_COLOR +/* #define LOG_INFO_SOURCE_CODE */ + +#ifndef HAS_STM32 +#define LOG_USE_FILE +#define LOG_INFO_TIME +#define LOG_INFO_SOURCE_CODE_STRIP_FILE_PATHS '/' +#else +#define LOG_INFO_SOURCE_CODE_STRIP_FILE_PATHS '\\' +#endif + +/******************************************************************************/ +#define LOG_SUDO (0x0) +#define LOG_FATAL (0x1) +#define LOG_ERROR (0x2) +#define LOG_WARN (0x3) +#define LOG_INFO (0x4) +#define LOG_DEBUG (0x5) +#define LOG_TRACE (0x6) + +/*! + * @typedef log_LockFn + * @ingroup ai_log + * @brief callback function for locking implementation (e.g. mutexes, etc.) + */ +typedef void (*log_LockFn)(const void *udata, const bool lock); + +/*! + * @typedef log_MsgFn + * @ingroup ai_log + * @brief callback for listening at logged channels + */ +typedef void (*log_MsgFn)( + const void *udata, const uint8_t level, + const char* msg, const uint32_t len); + +/*! + * @brief Get gloabal log context handle + * @ingroup ai_log + */ +void* ai_log_acquire(void); + +/*! + * @brief Set global log level + * @ingroup ai_log + */ +void ai_log_set_level(const uint8_t level); + +/*! + * @brief Set global log quiet mode (no messages are emitted) + * @ingroup ai_log + */ +void ai_log_set_quiet(const bool enable); + +/*! + * @brief Set callback for log messages locking + * @ingroup ai_log + */ +void ai_log_set_lock(log_LockFn fn, const void *udata); + +/*! + * @brief Push on log stack a new listener with given log level + * @ingroup ai_log + * @param[in] level the log level for this channel + * @param[out] the callback function to emit when a message is available + * @param[in] udata a pointer to the caller environment that is provided back + * when the callback is called + * @return 0 if OK, value>0 that indicates the current size of the stack + */ +uint8_t ai_log_channel_push(const uint8_t level, log_MsgFn fn, const void *udata); + +/*! + * @brief Pop from log stack a pushed listener + * @ingroup ai_log + * @param[in] the callback function registered during @ref log_channel_push + * @param[in] udata a pointer to the caller environment registered during @ref + * log_channel_push + * @return 0 if OK, value>0 that indicates the max size of the callback stack + */ +uint8_t ai_log_channel_pop(log_MsgFn fn, const void *udata); + +#ifdef LOG_USE_FILE +/*! + * @brief Enable file dumping of all logged messages to a file as well. + * @details NB: the quiet option does not apply to file logging. file log + * messages are recorded also when the log is in quiet mode. + * @ingroup ai_log + * @param[out] fp the file pointer of the file used to log the massages + */ +void ai_log_set_fp(FILE *fp); +#endif + +/*! + * @brief Main Routine: PLEASE invoke always by using defined macros + * @ingroup ai_log + * @param[in] level the log level of the input message + * @param[in] file the string containing the __FILE__ info about the source file + * generating the message to log + * @param[in] fmt the varargs format of the string to print + */ +void ai_log_log(const uint8_t level, const char *file, + const int line, const char *fmt, ...); + +#endif /*AI_LOG_H_*/ diff --git a/src/stm32cubeai/AI/Inc/ai_math_helpers.h b/src/stm32cubeai/AI/Inc/ai_math_helpers.h new file mode 100755 index 000000000..bb008587f --- /dev/null +++ b/src/stm32cubeai/AI/Inc/ai_math_helpers.h @@ -0,0 +1,277 @@ +/** + ****************************************************************************** + * @file ai_math_helpers.h + * @author AST Embedded Analytics Research Platform + * @date 01-May-2017 + * @brief Math helpers routines header file. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ +#ifndef __AI_MATH_HELPERS_H_ +#define __AI_MATH_HELPERS_H_ +#include + +#include "ai_platform.h" +#include "ai_platform_interface.h" + +#define STM32_DOT_INLINE_OPTIM + +#define AI_FLOAT_EPSILON_2 (6.19209290e-5F) /* Used for small calculation + noise issues */ +#define AI_FLOAT_EPSILON (1.19209290e-7F) +#define AI_I8_EPSILON (0.00787401F) /* 1/(2^7 - 1) */ +#define AI_I16_EPSILON (3.051851e-5F) /* 1/(2^15 - 1) */ + +#define AI_FLT_MAX (3.40282346638528859812e+38f) + +#define AI_MIN(x,y) ( ((x)<(y)) ? (x) : (y) ) +#define AI_MAX(x,y) ( ((x)>(y)) ? (x) : (y) ) +#define AI_CLAMP(x, min, max) AI_MIN(AI_MAX(x,min), max) +#define AI_ROUND(x) round(x) +#define AI_ABS(x) fabsf(x) +#define AI_ABS_DIFF(x, y) ( ((x)>(y)) ? ((x)-(y)) : ((y)-(x)) ) + +#if defined(STM32_DOT_INLINE_OPTIM) + +AI_DECLARE_STATIC +void __ai_math_dot_array( + ai_float* out, + const ai_float* data0, + const ai_float* data1, + ai_size data_size) +{ + ai_float sum = 0.0f; /* Temporary result storage */ + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (data_size >= 4u) + { + /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ + /* Calculate dot product and then store the result in a temporary buffer */ + sum += (*data0++) * (*data1++); + sum += (*data0++) * (*data1++); + sum += (*data0++) * (*data1++); + sum += (*data0++) * (*data1++); + + /* Decrement the loop counter */ + data_size -= 4u; + } + + while (data_size > 0u) + { + /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ + /* Calculate dot product and then store the result in a temporary buffer. */ + sum += (*data0++) * (*data1++); + + /* Decrement the loop counter */ + data_size--; + } + + /* Directly accumulate the result back in the destination buffer */ + *out += sum; +} + +#undef AI_MATH_DOT_ARRAY +#define AI_MATH_DOT_ARRAY(dst, src0, src1, size) \ + __ai_math_dot_array(dst, src0, src1, size) + + +#else + +#define AI_MATH_DOT_ARRAY(dst, src0, src1, size) \ + ai_math_dot_array(dst, src0, src1, size) + +#endif + +#define AI_MATH_SQRT(x) ai_math_sqrt(x) +#define AI_MATH_EXP(x) expf(x) +#define AI_MATH_POW(x, e) powf((x), (e)) +#define AI_MATH_TANH(x) tanhf(x) +#define AI_MATH_SIGN(x) (((x)>0) ? 1 : -1) +#define AI_MATH_LOG(x) logf(x) + +#define AI_MATH_RELU_TEST(x, thr, min, max) \ + ( ((x)<(thr)) ? (min) : (max) ) + +#define AI_MATH_RELU_GENERIC(x, thr, alpha, max) \ + AI_MATH_RELU_TEST(x, max, AI_MATH_RELU_GENERIC_NO_MAX(x, thr, alpha), max) + +#define AI_MATH_RELU_GENERIC_NO_MAX(x, thr, alpha) \ + AI_MATH_RELU_TEST(x, thr, ((alpha)*((x)-(thr))), x) + +#define AI_MATH_RELU_THRESHOLDED(x, thr) \ + AI_MATH_RELU_TEST(x, thr, 0, (x)) + +#define AI_MATH_LEAKY_RELU(x, neg_slope, pos_slope) \ + AI_MATH_RELU_TEST(x, 0, (x)*(neg_slope), (x)*(pos_slope)) +// ( ((x)>0) ? (x)*(pos_slope) : (x)*(neg_slope) ) + +#define AI_MATH_PRELU(x, slope) \ + AI_MATH_RELU_TEST(x, 0, (x)*(slope), (x)) +// AI_MATH_LEAKY_RELU(x, slope, 1) + +#define AI_MATH_RELU(x) \ + AI_MATH_RELU_TEST(x, 0, 0, x) +// AI_MAX(x, 0) + +#define AI_MATH_ELU(x, alpha) \ + (AI_MAX(0.0f, (x)) + AI_MIN(0.0f, (alpha) * (AI_MATH_EXP(x)-1.0f))) + +#define AI_MATH_SELU(x, alpha, scale) \ + ((scale)*AI_MATH_ELU(x, alpha)) + +#define AI_MATH_SIGMOID(x) \ + (1.0f / (1.0f + AI_MATH_EXP(-(x)))) + +#define AI_MATH_HARD_SIGMOID(x) \ + (AI_MAX(0.0f, AI_MIN(1.0f, (x) * 0.2f + 0.5f))) + +#define AI_MATH_SOFT_PLUS(x) \ + AI_MATH_LOG(AI_MATH_EXP(x)+1.0f) + +#define AI_MATH_SOFT_SIGN(x) \ + ((x)/(AI_ABS(x)+1.0f)) + +AI_API_DECLARE_BEGIN + +/*! + * @defgroup math_helpers Math helpers + * @brief Common math functions + * + * Math functions are mapped to the underlying platform through those utility + * functions. On x86 and ARM v7 they are mapped to the float math functions in + * the C99 standard library; on MCUs they are mapped to the ARM DSP functions. + */ + +/*! + * @brief platform optimized dot product of float vectors + * + * Computes the dot product between vectors and adds the result to out. + * @ingroup math_helpers + * @param out scalar result of the dot product + * @param data0 the first float vector + * @param data1 the second float vector + * @param data_size the size of both vectors + */ +AI_INTERFACE_ENTRY +void ai_math_dot_array( + ai_float* out, + const ai_float* data0, + const ai_float* data1, + const ai_size data_size); + +/*! + * @brief platform optimized square root on a float value + * @ingroup math_helpers + * @param x input value + * @return square root of the value + */ +AI_INTERFACE_ENTRY +ai_float ai_math_sqrt(const ai_float x); + +/*! + * @brief platform optimized exponential on a float value + * @ingroup math_helpers + * @param x input value + * @return exponential of the value + */ +AI_INTERFACE_ENTRY +ai_float ai_math_exp(const ai_float x); + +/*! + * @brief platform optimized pow on a float value + * @ingroup math_helpers + * @param x input value + * @param e input value + * @return pow of the value ^ e + */ +AI_INTERFACE_ENTRY +ai_float ai_math_pow(const ai_float x, const ai_float e); + +/*! + * @brief platform optimized tangent on a float value + * @ingroup math_helpers + * @param x input value + * @return hyperbolic tangent of the value + */ +AI_INTERFACE_ENTRY +ai_float ai_math_tanh(const ai_float x); + +/*! + * @brief platform optimized relu on a float value + * @ingroup math_helpers + * @param x input value + * @return relu of the value ( x if x>0 else 0) + */ +AI_INTERFACE_ENTRY +ai_float ai_math_relu(const ai_float x); + +/*! + * @brief platform optimized parametric relu on a float value + * @ingroup math_helpers + * @param x input value + * @param slope input value + * @return parametric relu of the value + */ +AI_INTERFACE_ENTRY +ai_float ai_math_prelu(const ai_float x, const ai_float slope); + +/*! + * @brief platform optimized parametric sigmoid on a float value + * @ingroup math_helpers + * @param x input value + * @return sigmoid of the value + */ +AI_INTERFACE_ENTRY +ai_float ai_math_sigmoid(const ai_float x); + +/*! + * @brief platform optimized parametric hard sigmoid on a float value + * @ingroup math_helpers + * @param x input value + * @return hard sigmoid of the value + */ +AI_INTERFACE_ENTRY +ai_float ai_math_hard_sigmoid(const ai_float x); + +/*! + * @brief platform optimized parametric sign function on a float value + * @ingroup math_helpers + * @param x input value + * @return sign of the value + */ +AI_INTERFACE_ENTRY +ai_float ai_math_sign(const ai_float x); + +/*! + * @brief optimized parametric rectified linear unit on a float value + * @ingroup math_helpers + * @param x input value + * @param slope parameter value + * @return x if x is positive and x*slope otherwise + */ +AI_INTERFACE_ENTRY +ai_float ai_fast_prelu(const ai_float x, const ai_float slope); + +AI_INTERFACE_ENTRY ai_float ai_div(const ai_float a, const ai_float b); +AI_INTERFACE_ENTRY ai_float ai_max(const ai_float a, const ai_float b); +AI_INTERFACE_ENTRY ai_float ai_min(const ai_float a, const ai_float b); +AI_INTERFACE_ENTRY ai_float ai_mul(const ai_float a, const ai_float b); +AI_INTERFACE_ENTRY ai_float ai_sub(const ai_float a, const ai_float b); +AI_INTERFACE_ENTRY ai_float ai_sum(const ai_float a, const ai_float b); + +AI_API_DECLARE_END + +#endif /* __MATH_HELPERS_H_ */ diff --git a/src/stm32cubeai/AI/Inc/ai_network_inspector.h b/src/stm32cubeai/AI/Inc/ai_network_inspector.h new file mode 100755 index 000000000..2956fc428 --- /dev/null +++ b/src/stm32cubeai/AI/Inc/ai_network_inspector.h @@ -0,0 +1,176 @@ +/** + ****************************************************************************** + * @file ai_network_inspector.h + * @author AST Embedded Analytics Research Platform + * @date 6-Aug-2018 + * @brief header file of the network inspector wrapper plugin + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2018 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ + +#ifndef __AI_NETWORK_INSPECTOR_H_ +#define __AI_NETWORK_INSPECTOR_H_ +#pragma once + +#include "ai_platform.h" +#include "ai_platform_interface.h" +#include "core_net_inspect_interface.h" + +#define AI_INSPECTOR_API_MAJOR 1 +#define AI_INSPECTOR_API_MINOR 1 +#define AI_INSPECTOR_API_MICRO 0 + +/*! + * @defgroup ai_network_inspector AI Network Inspector Module Tool + * @brief header with datatypes and APIs for inspector module + */ + +#define AI_INSPECTOR_NETWORK_BIND_FAILED (0x0) + + +AI_API_DECLARE_BEGIN + +/*! + * @typedef ai_inspector_entry_id + * @ingroup ai_network_inspector + * @brief network inspector bind network index id number + * (actually the inspector could bind up to 65534 networks) + */ +typedef ai_u16 ai_inspector_entry_id; + +/*! + * @typedef ai_inspector_net_info + * @ingroup ai_network_inspector + * @brief wrapper struct for @ref ai_network_report + */ +typedef ai_network_report ai_inspector_net_info; + +/*! + * @typedef ai_inspector_config + * @ingroup ai_network_inspector + * @brief wrapper struct for @ref ai_inspect_config + */ +typedef ai_inspect_config ai_inspector_config; + +/*! + * @typedef ai_inspector_node_info + * @ingroup ai_network_inspector + * @brief wrapper struct for @ref ai_inspect_node_info + */ +typedef ai_inspect_node_info ai_inspector_node_info; + +/*! + * @typedef ai_inspector_net_report + * @ingroup ai_network_inspector + * @brief wrapper struct for @ref ai_inspect_net_report + */ +typedef ai_inspect_net_report ai_inspector_net_report; + +/*! + * @struct ai_inspector_net_entry + * @ingroup ai_network_inspector + * @brief struct with info related to the bound network. It has the network + * handle, the network params, and the error (see @ref ai_error definition) + */ +typedef struct ai_inspector_net_entry_ { + ai_handle handle; /*!< bound network context handle */ + ai_network_params params; /*!< bound network context params */ + ai_error error; /*!< bound network context error */ +} ai_inspector_net_entry; + +/*! + * @brief Return default context config. + * @ingroup ai_network_inspector + * @param[out] inspector config datastructure + * @return the default inspector configuration + */ +AI_API_ENTRY +ai_inspector_config ai_inspector_default_config(void); + +/*! + * @brief Create a network inspector plugin module. + * @ingroup ai_network_inspector + * @param[out] handle a pointer to an opaque handle that points to the inspector + * context created + * @param[in] cfg a pointer to the inspector config. if NULL a default config is + * used by the inspector instance + * @return true if initialization was fine, false otherwise + */ +AI_API_ENTRY +ai_bool ai_inspector_create( + ai_handle* handle, const ai_inspector_config* cfg); + +/*! + * @brief Destroy a network inspector plugin module. + * @ingroup ai_network_inspector + * @param[in/out] handle an opaque handle to the inspector context to destroy + * context + * @return true if destroy was fine, false otherwise + */ +AI_API_ENTRY +ai_bool ai_inspector_destroy(ai_handle handle); + +/*! + * @brief Bind a network instance with the inspector plugin + * @ingroup ai_network_inspector + * @param[in/out] handle an opaque handle to the inspector context + * @param[in] entry a pointer to the info about the network to be bound + * @return a network id > 0 that is an index used to refer to the bound + * network instance. if the returned index is 0 an error occurred during binding + */ +AI_API_ENTRY +ai_inspector_entry_id ai_inspector_bind_network( + ai_handle handle, const ai_inspector_net_entry* entry); + +/*! + * @brief Unbind a network instance from the inspector plugin + * @ingroup ai_network_inspector + * @param[in/out] handle an opaque handle to the inspector context + * @param[in] net_id: a network id provided by @ref ai_inspector_bind_network API + * @return true if the unbind was successful, false otherwise + */ +AI_API_ENTRY +ai_bool ai_inspector_unbind_network( + ai_handle handle, const ai_inspector_entry_id net_id); + +/*! + * @brief Get inspection report on a bind network + * @ingroup ai_network_inspector + * @param[in/out] handle an opaque handle to the inspector context + * @param[in] net_id: a network id provided by @ref ai_inspector_bind_network API + * @param[out] report a pointer to the required report @ref ai_inspector_net_report + * data struct + * @return true if the query was successful, false otherwise + */ +AI_API_ENTRY +ai_bool ai_inspector_get_report( + ai_handle handle, const ai_inspector_entry_id net_id, + ai_inspector_net_report* report); + +/*! + * @brief Run a network instance bind to the inspector + * @ingroup ai_network_inspector + * @param[in/out] handle an opaque handle to the inspector context + * @param[in] net_id: a network id provided by @ref ai_inspector_bind_network API + * @param[in] input a pointer to the input data buffer + * @param[out] outbut a pointer to the output data buffer + * @return the number of batches processed. a value <=0 indicates an error + */ +AI_API_ENTRY +ai_i32 ai_inspector_run( + ai_handle handle, const ai_inspector_entry_id net_id, + const ai_buffer* input, ai_buffer* output); + +AI_API_DECLARE_END + +#endif /* __AI_NETWORK_INSPECTOR_H_ */ diff --git a/src/stm32cubeai/AI/Inc/ai_platform.h b/src/stm32cubeai/AI/Inc/ai_platform.h new file mode 100755 index 000000000..3d6a2da4e --- /dev/null +++ b/src/stm32cubeai/AI/Inc/ai_platform.h @@ -0,0 +1,424 @@ +/** + ****************************************************************************** + * @file ai_platform.h + * @author AST Embedded Analytics Research Platform + * @date 01-May-2017 + * @brief Definitions of AI platform public APIs types + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ + +#ifndef __AI_PLATFORM_H__ +#define __AI_PLATFORM_H__ +#pragma once + +#include +#include + +#define AI_PLATFORM_API_MAJOR 1 +#define AI_PLATFORM_API_MINOR 1 +#define AI_PLATFORM_API_MICRO 0 + +/******************************************************************************/ +#ifdef __cplusplus +#define AI_API_DECLARE_BEGIN extern "C" { +#define AI_API_DECLARE_END } +#else +#define AI_API_DECLARE_BEGIN /* AI_API_DECLARE_BEGIN */ +#define AI_API_DECLARE_END /* AI_API_DECLARE_END */ +#endif + +/******************************************************************************/ +#define AI_CONCAT_ARG(a, b) a ## b +#define AI_CONCAT(a, b) AI_CONCAT_ARG(a, b) + +/******************************************************************************/ +#if defined(_MSC_VER) + #define AI_API_ENTRY __declspec(dllexport) + #define AI_ALIGNED(x) /* AI_ALIGNED(x) */ +#elif defined(__ICCARM__) || defined (__IAR_SYSTEMS_ICC__) + #define AI_API_ENTRY /* AI_API_ENTRY */ + #define AI_ALIGNED(x) AI_CONCAT(AI_ALIGNED_,x) + #define AI_ALIGNED_1 _Pragma("data_alignment = 1") + #define AI_ALIGNED_2 _Pragma("data_alignment = 2") + #define AI_ALIGNED_4 _Pragma("data_alignment = 4") + #define AI_ALIGNED_8 _Pragma("data_alignment = 8") +#elif defined(__CC_ARM) + #define AI_API_ENTRY __attribute__((visibility("default"))) + #define AI_ALIGNED(x) __attribute__((aligned (x))) + /* Keil disallows anonymous union initialization by default */ + #pragma anon_unions +#elif defined(__GNUC__) + #define AI_API_ENTRY __attribute__((visibility("default"))) + #define AI_ALIGNED(x) __attribute__((aligned(x))) +#else + /* Dynamic libraries are not supported by the compiler */ + #define AI_API_ENTRY /* AI_API_ENTRY */ + #define AI_ALIGNED(x) /* AI_ALIGNED(x) */ +#endif + +#define AI_HANDLE_PTR(ptr_) ((ai_handle)(ptr_)) +#define AI_HANDLE_NULL AI_HANDLE_PTR(0) + +#define AI_HANDLE_FUNC_PTR(func) ((ai_handle_func)(func)) + +#define AI_UNUSED(x) (void)(x); + +#define AI_DEPRECATED /* AI_DEPRECATED */ + +#define AI_LEGACY /* AI_LEGACY */ + +#ifndef __GNUC__ + #define AI_STRUCT_INIT {0} +#else +#define AI_STRUCT_INIT {} +#endif + +#define AI_ERROR_FMT AIU32_FMT + +#define AI_IS_UNSIGNED(type) \ + ((((type)0) - 1) > 0) + +#define AI_CUSTOM_SIZE(type) \ + (ai_custom_type_signature)((AI_IS_UNSIGNED(type)) \ + ? (0x80|(sizeof(type)&0x7f)) : (sizeof(type)&0x7f)) + +#define AI_NETWORK_PARAMS_INIT(params_, activations_) { \ + .params = params_, \ + .activations = activations_ } + +/*! ai_buffer format handlers *************************************************/ + +/*! + * @enum buffer format definition + * @ingroup ai_platform + * + * 32 bit signed format list. + */ +typedef int32_t ai_buffer_format; + +#define AI_BUFFER_FMT_TYPE_NONE (0x0) +#define AI_BUFFER_FMT_TYPE_FLOAT (0x1) +#define AI_BUFFER_FMT_TYPE_Q (0x2) + +#define AI_BUFFER_FMT_FLAG_CONST (0x1U<<30) +#define AI_BUFFER_FMT_FLAG_STATIC (0x1U<<29) +#define AI_BUFFER_FMT_FLAG_IS_IO (0x1U<<27) + +#define AI_BUFFER_FMT_PACK(value_, mask_, bits_) \ + ( ((value_) & (mask_)) << (bits_) ) + +#define AI_BUFFER_FMT_UNPACK(fmt_, mask_, bits_) \ + ( (AI_BUFFER_FMT_OBJ(fmt_) >> (bits_)) & (mask_) ) + +#define AI_BUFFER_FMT_OBJ(fmt_) \ + ((ai_buffer_format)(fmt_)) + +#define AI_BUFFER_FMT_GET_FLOAT(fmt_) \ + AI_BUFFER_FMT_UNPACK(fmt_, 0x1, 24) + +#define AI_BUFFER_FMT_GET_SIGN(fmt_) \ + AI_BUFFER_FMT_UNPACK(fmt_, 0x1, 23) + +#define AI_BUFFER_FMT_GET_TYPE(fmt_) \ + AI_BUFFER_FMT_UNPACK(fmt_, 0xF, 17) + +#define AI_BUFFER_FMT_GET_BITS(fmt_) \ + AI_BUFFER_FMT_UNPACK(fmt_, 0x7F, 7) + +#define AI_BUFFER_FMT_SET_BITS(bits_) \ + AI_BUFFER_FMT_PACK((bits_), 0x7F, 7) + +#define AI_BUFFER_FMT_GET_FBITS(fmt_) \ + ( (ai_i8)AI_BUFFER_FMT_UNPACK(fmt_, 0x7F, 0) - 64 ) + +#define AI_BUFFER_FMT_SET_FBITS(fbits_) \ + AI_BUFFER_FMT_PACK((fbits_)+64, 0x7F, 0) + +#define AI_BUFFER_FMT_SET(type_id_, sign_bit_, float_bit_, bits_, fbits_) \ + AI_BUFFER_FMT_OBJ( \ + AI_BUFFER_FMT_PACK(float_bit_, 0x1, 24) | \ + AI_BUFFER_FMT_PACK(sign_bit_, 0x1, 23) | \ + AI_BUFFER_FMT_PACK(0, 0x3, 21) | \ + AI_BUFFER_FMT_PACK(type_id_, 0xF, 17) | \ + AI_BUFFER_FMT_PACK(0, 0x7, 14) | \ + AI_BUFFER_FMT_SET_BITS(bits_) | \ + AI_BUFFER_FMT_SET_FBITS(fbits_) \ + ) + +#define AI_BUFFER_FMT_SAME(fmt1_, fmt2_) \ + ( AI_BUFFER_FMT_GET(fmt1_) == AI_BUFFER_FMT_GET(fmt2_) ) + +#define AI_BUFFER_FMT_GET(fmt_) \ + (AI_BUFFER_FMT_OBJ(fmt_) & 0x01FFFFFF) + +#define AI_BUFFER_FORMAT(buf_) \ + AI_BUFFER_FMT_GET((buf_)->format) +#define AI_BUFFER_WIDTH(buf_) \ + ((buf_)->width) +#define AI_BUFFER_HEIGHT(buf_) \ + ((buf_)->height) +#define AI_BUFFER_CHANNELS(buf_) \ + ((buf_)->channels) +#define AI_BUFFER_N_BATCHES(buf_) \ + ((buf_)->n_batches) +#define AI_BUFFER_DATA(buf_, type_) \ + ((type_*)((buf_)->data)) + +#define AI_BUFFER_SIZE(buf_) \ + (((buf_)->width) * ((buf_)->height) * ((buf_)->channels)) + +#define AI_BUFFER_BYTE_SIZE(count_, fmt_) \ + ( (((count_) * AI_BUFFER_FMT_GET_BITS(fmt_))+4) >> 3 ) + + +#define AI_BUFFER_OBJ_INIT(format_, h_, w_, ch_, n_batches_, data_) \ +{ .format = (ai_buffer_format)(format_), \ + .n_batches = (n_batches_), \ + .height = (h_), \ + .width = (w_), \ + .channels = (ch_), \ + .data = (ai_handle)(data_) \ +} + +#define AI_BUFFER_OBJ_INIT_STATIC(type_, format_, h_, w_, ch_, n_batches_, ...) \ +{ .format = (ai_buffer_format)(format_), \ + .n_batches = (n_batches_), \ + .height = (h_), \ + .width = (w_), \ + .channels = (ch_), \ + .data = (ai_handle)((type_[(h_)*(w_)*(ch_)*(n_batches_)]){__VA_ARGS__}) \ +} + +/*! + * @enum buffer formats enum list + * @ingroup ai_platform + * + * List of supported ai_buffer format types. + */ +enum { + AI_BUFFER_FORMAT_NONE = AI_BUFFER_FMT_SET(AI_BUFFER_FMT_TYPE_NONE, 0, 0, 0, 0), + AI_BUFFER_FORMAT_FLOAT = AI_BUFFER_FMT_SET(AI_BUFFER_FMT_TYPE_FLOAT, 1, 1, 32, 0), + + AI_BUFFER_FORMAT_U8 = AI_BUFFER_FMT_SET(AI_BUFFER_FMT_TYPE_Q, 0, 0, 8, 0), + AI_BUFFER_FORMAT_U16 = AI_BUFFER_FMT_SET(AI_BUFFER_FMT_TYPE_Q, 0, 0, 16, 0), + AI_BUFFER_FORMAT_S8 = AI_BUFFER_FMT_SET(AI_BUFFER_FMT_TYPE_Q, 1, 0, 8, 0), + AI_BUFFER_FORMAT_S16 = AI_BUFFER_FMT_SET(AI_BUFFER_FMT_TYPE_Q, 1, 0, 16, 0), + + AI_BUFFER_FORMAT_Q = AI_BUFFER_FMT_SET(AI_BUFFER_FMT_TYPE_Q, 1, 0, 0, 0), + AI_BUFFER_FORMAT_Q7 = AI_BUFFER_FMT_SET(AI_BUFFER_FMT_TYPE_Q, 1, 0, 8, 7), + AI_BUFFER_FORMAT_Q15 = AI_BUFFER_FMT_SET(AI_BUFFER_FMT_TYPE_Q, 1, 0, 16, 15), + + AI_BUFFER_FORMAT_UQ = AI_BUFFER_FMT_SET(AI_BUFFER_FMT_TYPE_Q, 0, 0, 0, 0), + AI_BUFFER_FORMAT_UQ7 = AI_BUFFER_FMT_SET(AI_BUFFER_FMT_TYPE_Q, 0, 0, 8, 7), + AI_BUFFER_FORMAT_UQ15 = AI_BUFFER_FMT_SET(AI_BUFFER_FMT_TYPE_Q, 0, 0, 16, 15), +}; + +/******************************************************************************/ +#define AI_ERROR_INIT(type_, code_) { \ + .type = AI_ERROR_##type_, \ + .code = AI_ERROR_CODE_##code_ } + +/* printf formats */ +#ifdef REISC + #define SSIZET_FMT "%lu" + #define AII32_FMT "%ld" + #define AIU32_FMT "%lu" +#else /* REISC */ + #define SSIZET_FMT "%u" + #define AII32_FMT "%d" + #define AIU32_FMT "%u" +#endif /* REISC */ + +typedef uint8_t ai_custom_type_signature; + +typedef void* ai_handle; + +typedef void (*ai_handle_func)(void*); + +typedef float ai_float; +typedef double ai_double; + +typedef bool ai_bool; + +typedef uint32_t ai_size; + +typedef uintptr_t ai_uptr; + +typedef unsigned int ai_uint; +typedef uint8_t ai_u8; +typedef uint16_t ai_u16; +typedef uint32_t ai_u32; +typedef uint64_t ai_u64; + +typedef int ai_int; +typedef int8_t ai_i8; +typedef int16_t ai_i16; +typedef int32_t ai_i32; +typedef int64_t ai_i64; + +typedef uint32_t ai_signature; + +/*! + * @struct ai_error + * @ingroup ai_platform + * @brief Structure encoding details about the last error. + */ +typedef struct ai_error_ { + ai_u32 type : 8; /*!< Error type represented by @ref ai_error_type */ + ai_u32 code : 24; /*!< Error code represented by @ref ai_error_code */ +} ai_error; + +/*! + * @struct ai_buffer + * @ingroup ai_platform + * @brief Memory buffer storing data (optional) with a shape, size and type. + * This datastruct is used also for network querying, where the data field may + * may be NULL. + */ +typedef struct ai_buffer_ { + ai_buffer_format format; /*!< buffer format */ + ai_u16 n_batches; /*!< number of batches in the buffer */ + ai_u16 height; /*!< buffer height dimension */ + ai_u16 width; /*!< buffer width dimension */ + ai_u32 channels; /*!< buffer number of channels */ + ai_handle data; /*!< pointer to buffer data */ +} ai_buffer; + +/* enums section */ + +/*! + * @enum ai_error_type + * @ingroup ai_platform + * + * Generic enum to list network error types. + */ +typedef enum { + AI_ERROR_NONE = 0x00, /*!< No error */ + AI_ERROR_TOOL_PLATFORM_MISMATCH = 0x01, + AI_ERROR_TYPES_MISMATCH = 0x02, + AI_ERROR_INVALID_HANDLE = 0x10, + AI_ERROR_INVALID_STATE = 0x11, + AI_ERROR_INVALID_INPUT = 0x12, + AI_ERROR_INVALID_OUTPUT = 0x13, + AI_ERROR_INVALID_PARAM = 0x14, + AI_ERROR_INVALID_SIGNATURE = 0x15, + AI_ERROR_INIT_FAILED = 0x30, + AI_ERROR_ALLOCATION_FAILED = 0x31, + AI_ERROR_DEALLOCATION_FAILED = 0x32, +} ai_error_type; + +/*! + * @enum ai_error_code + * @ingroup ai_platform + * + * Generic enum to list network error codes. + */ +typedef enum { + AI_ERROR_CODE_NONE = 0x0000, /*!< No error */ + AI_ERROR_CODE_NETWORK = 0x0010, + AI_ERROR_CODE_NETWORK_PARAMS = 0x0011, + AI_ERROR_CODE_NETWORK_WEIGHTS = 0x0012, + AI_ERROR_CODE_NETWORK_ACTIVATIONS = 0x0013, + AI_ERROR_CODE_LAYER = 0x0014, + AI_ERROR_CODE_TENSOR = 0x0015, + AI_ERROR_CODE_ARRAY = 0x0016, + AI_ERROR_CODE_INVALID_PTR = 0x0017, + AI_ERROR_CODE_INVALID_SIZE = 0x0018, + AI_ERROR_CODE_INVALID_FORMAT = 0x0019, + AI_ERROR_CODE_OUT_OF_RANGE = 0x0020, + AI_ERROR_CODE_INVALID_BATCH = 0x0021, + AI_ERROR_CODE_MISSED_INIT = 0x0030, +} ai_error_code; + +/*! + * @struct ai_platform_version + * @ingroup ai_platform + * @brief Datastruct storing platform version info + */ +typedef struct ai_platform_version_ { + ai_u8 major; + ai_u8 minor; + ai_u8 micro; + ai_u8 reserved; +} ai_platform_version; + + +/*! + * @struct ai_network_params + * @ingroup ai_platform + * + * Datastructure to pass parameters to the network initialization. + */ +typedef struct ai_network_params_ { + ai_buffer params; /*! info about params buffer(required!) */ + ai_buffer activations; /*! info about activations buffer (required!) */ +} ai_network_params; + +/*! + * @struct ai_network_report + * @ingroup ai_platform + * + * Datastructure to query a network report with some relevant network detail. + */ +typedef struct ai_network_report_ { + const char* model_name; + const char* model_signature; + const char* model_datetime; + + const char* compile_datetime; + + const char* runtime_revision; + ai_platform_version runtime_version; + + const char* tool_revision; + ai_platform_version tool_version; + ai_platform_version tool_api_version; + + ai_platform_version api_version; + ai_platform_version interface_api_version; + + ai_u32 n_macc; + + ai_u16 n_inputs; + ai_u16 n_outputs; + ai_buffer* inputs; + ai_buffer* outputs; + + ai_buffer activations; + ai_buffer params; + + ai_u32 n_nodes; + + ai_signature signature; +} ai_network_report; + +/*! + * @enum ai_upsample_mode + * @ingroup ai_platform + * @brief allowed mode in upsample layer + */ +typedef enum { + AI_UPSAMPLE_ZEROS = 0x0, + AI_UPSAMPLE_NEAREST, + AI_UPSAMPLE_BILINEAR, + AI_UPSAMPLE_TRILINEAR +} ai_upsample_mode; + +typedef enum { + AI_PAD_CONSTANT = 0x0, + AI_PAD_REFLECT, + AI_PAD_EDGE, +} ai_pad_mode; + +#endif /*__AI_PLATFORM_H__*/ diff --git a/src/stm32cubeai/AI/Inc/ai_platform_interface.h b/src/stm32cubeai/AI/Inc/ai_platform_interface.h new file mode 100755 index 000000000..2a075b8f6 --- /dev/null +++ b/src/stm32cubeai/AI/Inc/ai_platform_interface.h @@ -0,0 +1,663 @@ +/** + ****************************************************************************** + * @file ai_platform_interface.h + * @author AST Embedded Analytics Research Platform + * @date 02-Aug-2018 + * @brief Definitions of AI platform interface APIs types + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2018 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ + +#ifndef __AI_PLATFORM_INTERFACE_H__ +#define __AI_PLATFORM_INTERFACE_H__ +#pragma once + +#include "ai_platform.h" + +#include "datatypes_network.h" +#include "ai_datatypes_format.h" + +/*! + * @defgroup datatypes_interface Interface Datatypes + * @brief Data structures and defines used to implement neural networks + */ + +#define AI_PLATFORM_INTERFACE_API_MAJOR 1 +#define AI_PLATFORM_INTERFACE_API_MINOR 3 +#define AI_PLATFORM_INTERFACE_API_MICRO 0 + +/******************************************************************************/ +#define AI_ERROR_TRAP(net_, type_, code_) \ + ai_platform_network_set_error((net_), AI_CONCAT(AI_ERROR_,type_), \ + AI_CONCAT(AI_ERROR_CODE_,code_)) + +/******************************************************************************/ +#define AI_PTR(ptr_) ((ai_ptr)(ptr_)) +#define AI_PTR_CONST(ptr_) ((ai_ptr_const)(ptr_)) + +/******************************************************************************/ +#define AI_SHAPE_2D_INIT(h, w) \ + { .dimension={ (w), (h) } } + +#define AI_SHAPE_ND_INIT(size_, ...) \ + { .size = (ai_size)(size_), \ + .dimension = (ai_shape_dimension[]){ __VA_ARGS__ } } + + + +#define AI_SHAPE_INIT(h, w, ch, in_ch) {.dimension={ (in_ch), (ch), (w), (h) }} + +/******************************************************************************/ +#define AI_STRIDE_2D_INIT(h, w) \ + { .dimension={ (w), (h) } } + +#define AI_STRIDE_ND_INIT(size_, ...) \ + { .size = (ai_size)(size_), \ + .dimension = (ai_stride_dimension[]){ __VA_ARGS__ } } + +#define AI_STRIDE_INIT(h, w, ch, in_ch) \ + { .dimension={ (in_ch), (ch), (w), (h) } } + +/******************************************************************************/ +#define AI_KLASS_OBJ(obj) \ + ((ai_klass_obj)(obj)) + +/*! generic handlers section **************************************************/ +#define AI_OBJ_DATA(obj_, type_) \ + ((type_)(obj_)->data) + +/*! ai_buffer handlers section ************************************************/ +#define AI_BUFFER_OBJ(ptr) \ + ((ai_buffer*)(ptr)) + +/*! ai_array handlers section *************************************************/ +#define AI_ARRAY_OBJ(ptr) \ + ((ai_array*)(ptr)) + +#define AI_ARRAY_OBJ_FMT(array_) \ + ((ai_array_format)(AI_ARRAY_OBJ(array_)->format)) + +#define AI_ARRAY_OBJ_SIZE(array_) \ + (AI_ARRAY_OBJ(array_)->size) + +#define AI_ARRAY_OBJ_BYTE_SIZE(array_) \ + AI_ARRAY_GET_BYTE_SIZE(AI_ARRAY_OBJ(array_)->format, \ + AI_ARRAY_OBJ(array_)->size) + +#define AI_ARRAY_OBJ_DATA_SIZE(array_) \ + AI_ARRAY_GET_DATA_BYTE_SIZE(AI_ARRAY_OBJ(array_)->format, \ + AI_ARRAY_OBJ(array_)->size) + +#define AI_ARRAY_OBJ_DATA(array_, type_) \ + ((type_*)(AI_ARRAY_OBJ(array_)->data)) + +#define AI_ARRAY_OBJ_DATA_START(array_, type_) \ + ((type_*)(AI_ARRAY_OBJ(array_)->data_start)) + + +#define AI_ARRAY_OBJ_ELEM(array_, type_, pos_) \ + AI_ARRAY_OBJ_DATA(array_, type_)[(pos_)] + +#define AI_ARRAY_OBJ_INIT_STATIC(type_, format_, size_, ...) { \ + .format = AI_FMT_OBJ(format_), \ + .size = (ai_array_size)(size_), \ + .data = (ai_ptr)((type_[]){ __VA_ARGS__ }), \ + .data_start = (ai_ptr)((type_[]){ __VA_ARGS__ }), \ +} + +#define AI_ARRAY_OBJ_DECLARE_STATIC(name_, type_, format_, attr_, size_, ...) \ + AI_ALIGNED(4) \ + attr_ ai_array name_ = AI_ARRAY_OBJ_INIT_STATIC(type_, format_, size_, __VA_ARGS__); + +#define AI_ARRAY_OBJ_INIT(format_, data_, data_start_, size_) { \ + .format = AI_FMT_OBJ(format_), \ + .size = (ai_array_size)(size_), \ + .data = AI_PTR(data_), \ + .data_start = AI_PTR(data_start_) } + +#define AI_ARRAY_OBJ_DECLARE(name_, format_, data_, data_start_, size_, attr_) \ + AI_ALIGNED(4) \ + attr_ ai_array name_ = AI_ARRAY_OBJ_INIT(format_, data_, data_start_, size_); + + +/******************************************************************************/ +#define AI_TENSOR_OBJ(ptr) \ + ((struct ai_tensor_*)(ptr)) + +#define AI_TENSOR_OBJ_INIT(shape_, stride_, data_array_ptr_) { \ + .data = AI_ARRAY_OBJ(data_array_ptr_), \ + .shape = shape_, \ + .stride = stride_, \ +} + +#define AI_TENSOR_OBJ_DECLARE(name_, shape_, stride_, \ + data_array_ptr_, attr_) \ + AI_ALIGNED(4) \ + attr_ ai_tensor name_ = AI_TENSOR_OBJ_INIT(AI_PACK(shape_), AI_PACK(stride_), \ + data_array_ptr_); + +/********************************* TENSOR STATE MACROS ***********************/ +#define AI_TENSOR_STATE_OBJ_INIT(end_ptr_ , curr_ptr_, stride_, size_) \ + { (end_ptr_), (curr_ptr_), (stride_), (size_) } + +/********************************* TENSOR LIST MACROS ************************/ +#define AI_TENSOR_LIST_EMPTY \ + { .tensor = (ai_tensor*[]) { NULL }, .info = NULL, \ + .size = 0, .flags = AI_FLAG_NONE } + +#define AI_TENSOR_LIST_ENTRY(...) \ + { .tensor = (ai_tensor*[]) { __VA_ARGS__ }, .info = NULL, \ + .size = AI_NUMARGS(__VA_ARGS__), .flags = AI_FLAG_NONE } + +#define AI_TENSOR_LIST_OBJ_DECLARE(name_, attr_, ...) \ + AI_ALIGNED(4) \ + attr_ ai_tensor_list name_ = AI_TENSOR_LIST_ENTRY(__VA_ARGS__); + +/********************************* TENSOR LIST I/O MACROS ********************/ +#define AI_TENSOR_LIST_IO_ENTRY(flags_, size_, ...) \ + { .tensor = (ai_tensor*[]) { __VA_ARGS__ }, \ + .info = (ai_tensor_info[1]) { { \ + .buffer = (ai_buffer[size_])AI_STRUCT_INIT, \ + .state = (ai_tensor_state[size_])AI_STRUCT_INIT \ + } }, \ + .size = (size_), \ + .flags = (flags_) } + +/********************************* TENSOR CHAIN MACROS ***********************/ +#define AI_TENSOR_CHAIN_OBJ_INIT(flags_, in_, out_, weights_, scratch_) \ + { .chain = (ai_tensor_list[]){ in_, out_, weights_, scratch_ }, \ + .size = 4, .flags = (flags_) } + +#define AI_TENSOR_CHAIN_OBJ_DECLARE(name_, attr_, in_, out_, weights_, scratch_) \ + AI_ALIGNED(4) \ + attr_ ai_tensor_chain name_ = \ + AI_TENSOR_CHAIN_OBJ_INIT(AI_FLAG_NONE, AI_PACK(in_), AI_PACK(out_), \ + AI_PACK(weights_), AI_PACK(scratch_)); + +/********************************* TENSOR CHAIN I/O MACROS *******************/ +#define AI_TENSOR_CHAIN_IO_OBJ_INIT(flags_, in_tensor_list_, out_tensor_list_) \ + { .chain = (ai_tensor_list[]){ in_tensor_list_, out_tensor_list_ }, \ + .size = 2, .flags = (flags_) } + +#define AI_TENSOR_CHAIN_IO_OBJ_DECLARE( \ + name_, attr_, flags_, in_tensor_list_, out_tensor_list_) \ + AI_ALIGNED(4) \ + attr_ ai_tensor_chain_io name_ = \ + AI_TENSOR_CHAIN_IO_OBJ_INIT(flags_, in_tensor_list_, out_tensor_list_); + +/******************************* NETWORK SECTION ****************************/ +#define AI_NETWORK_OBJ(ptr) ((ai_network*)(ptr)) + + +#define AI_NETWORK_OBJ_INIT( \ + weights_buffer_, activations_buffer_, \ + in_tensor_list_ptr_, out_tensor_list_ptr_, \ + in_node_ptr_, signature_) { \ + .magic = 0x0, \ + .signature = signature_, \ + .flags = AI_FLAG_NONE, \ + .error = AI_ERROR_INIT(NONE, NONE), \ + .n_batches = 0, \ + .batch_id = 0, \ + .params = weights_buffer_, \ + .activations = activations_buffer_, \ + .tensors = AI_TENSOR_CHAIN_IO_OBJ_INIT(AI_FLAG_NONE, \ + AI_PACK(in_tensor_list_ptr_), \ + AI_PACK(out_tensor_list_ptr_)), \ + .input_node = AI_NODE_OBJ(in_node_ptr_), \ + .current_node = AI_NODE_OBJ(NULL), \ + .klass = AI_KLASS_OBJ(NULL) } + +#define AI_NETWORK_OBJ_DECLARE( \ + var_name_, \ + weights_buffer_, activations_buffer_, \ + in_tensor_list_ptr_, out_tensor_list_ptr_, \ + in_node_ptr_, signature_) \ + AI_ALIGNED(4) \ + AI_STATIC ai_network var_name_ = AI_NETWORK_OBJ_INIT( \ + AI_PACK(weights_buffer_), \ + AI_PACK(activations_buffer_), \ + AI_PACK(in_tensor_list_ptr_), \ + AI_PACK(out_tensor_list_ptr_), \ + (in_node_ptr_), (signature_)); + +#define AI_NETWORK_ACQUIRE_CTX(handle) \ + AI_NETWORK_OBJ(ai_platform_context_acquire(handle)) + + +/******************************************************************************/ +AI_API_DECLARE_BEGIN + +/*! + * @typedef ai_klass_obj + * @ingroup ai_platform_interface + * @brief handler to (private) generic subclass derivatives implementation + */ +typedef void* ai_klass_obj; + +/*! + * @typedef ai_ptr + * @ingroup ai_platform_interface + * @brief Byte pointer data addressing + */ +typedef uint8_t* ai_ptr; + +/*! + * @typedef ai_ptr_const + * @ingroup ai_platform_interface + * @brief Constant byte pointer data addressing + */ +typedef const uint8_t* ai_ptr_const; + +/*! + * @typedef ai_ptr_offset + * @ingroup ai_platform_interface + * @brief byte offset for computing strides + */ +typedef int32_t ai_ptr_offset; + +/*! + * @typedef ai_flags + * @ingroup ai_platform_interface + * @brief bitmask for flags management + */ +typedef uint32_t ai_flags; + +/*! + * @typedef ai_magic + * @ingroup ai_platform_interface + * @brief magic field to mark internal datatstructures + */ +typedef uint32_t ai_magic; + + +#define AI_CONTEXT_FIELDS \ + ai_magic magic; /*!< magic word to mark valid contexts datastructs*/ \ + ai_signature signature; /*!< 32bit signature for network consistency checks */ + +#define AI_CONTEXT_OBJ(obj) ((ai_context*)(obj)) + +/*! + * @typedef ai_context + * @ingroup ai_platform_interface + * @brief Abstract internal context header exposed to codegen interface + */ +AI_PACKED_STRUCT_START +typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_context_ { + AI_CONTEXT_FIELDS +} ai_context; +AI_PACKED_STRUCT_END + +/*! + * @enum ai_shape_2d_type + * @ingroup ai_platform_interface + * @brief Codes for the 2D tensor dimensions + */ +typedef enum { + AI_SHAPE_2D_MAX_DIMENSION = 0x2, + AI_SHAPE_2D_HEIGHT = 0x1, + AI_SHAPE_2D_WIDTH = 0x0, +} ai_shape_2d_type; + + +/*! + * @struct ai_shape_2d + * @ingroup ai_platform_interface + * @brief Dimensions for generic 2D tensors + */ +AI_PACKED_STRUCT_START +typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_shape_2d_s { + ai_shape_dimension dimension[AI_SHAPE_2D_MAX_DIMENSION]; /*!< 2D tensor dimensions */ +} ai_shape_2d; +AI_PACKED_STRUCT_END + +/*! + * @struct ai_stride_2d + * @ingroup ai_platform_interface + * @brief Stride dimensions for generic 2D tensors (in number of elements) + */ +AI_PACKED_STRUCT_START +typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_stride_2d_s { + ai_stride_dimension dimension[AI_SHAPE_2D_MAX_DIMENSION]; /*!< 2D tensor stride */ +} ai_stride_2d; +AI_PACKED_STRUCT_END + +/*! + * @struct ai_shape_nd + * @ingroup ai_platform_interface + * @brief Dimensions for generic N-dimensional tensors + */ +AI_PACKED_STRUCT_START +typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_shape_nd_s { + ai_size size; /*!< number of elements in the n-dimensional shape + (NOT number of bytes!). */ + ai_shape_dimension* dimension; +} ai_shape_nd; +AI_PACKED_STRUCT_END + +/*! + * @struct ai_stride_nd + * @ingroup ai_platform_interface + * @brief Stride dimensions for generic N-dimensional tensors + */ +AI_PACKED_STRUCT_START +typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_stride_nd_s { + ai_size size; /*!< number of elements in the n-dimensional stride + (NOT number of bytes!). */ + ai_stride_dimension* dimension; +} ai_stride_nd; +AI_PACKED_STRUCT_END + +/*! + * @enum ai_shape_type + * @ingroup ai_platform_interface + * @brief Codes for the 4D tensor dimensions + */ +typedef enum { + AI_SHAPE_MAX_DIMENSION = 0x4, + AI_SHAPE_HEIGHT = 0x3, + AI_SHAPE_WIDTH = 0x2, + AI_SHAPE_CHANNEL = 0x1, + AI_SHAPE_IN_CHANNEL = 0x0, +// AI_SHAPE_BATCH_CHANNEL = 0x5, +} ai_shape_type; + +/*! + * @struct ai_shape + * @ingroup ai_platform_interface + * @brief Dimensions for generic 4D tensors + */ +AI_PACKED_STRUCT_START +typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_shape_s { + ai_shape_dimension dimension[AI_SHAPE_MAX_DIMENSION]; /*!< 4D tensor dimensions */ +} ai_shape; +AI_PACKED_STRUCT_END + +/*! + * @struct ai_stride + * @ingroup ai_platform_interface + * @brief Stride dimensions for generic 4D tensors (in number of elements) + */ +AI_PACKED_STRUCT_START +typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_stride_s { + ai_stride_dimension dimension[AI_SHAPE_MAX_DIMENSION]; /*!< 4D tensor stride */ +} ai_stride; +AI_PACKED_STRUCT_END + +/*! + * @struct ai_array + * @ingroup ai_platform_interface + * @brief Generic flattened array with size + * and (byte) stride of each item + */ +AI_PACKED_STRUCT_START +typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_array_s { + ai_array_format format; /*!< array format (see @ref ai_array_format) */ + ai_array_size size; /*!< number of elements in the array (NOT number + of bytes!). The size of the array could be + determine using @ref AI_ARRAY_GET_BYTE_SIZE + macro */ + ai_ptr data; /*!< pointer to data */ + ai_ptr data_start; /*!< pointer to parent's data start address */ +} ai_array; +AI_PACKED_STRUCT_END + +/*! + * @struct ai_tensor + * @ingroup ai_platform_interface + * @brief Generic tensor structure for storing parameters and activations + * + * The data is stored in a flattened array with an implicit order given by the + * reverse order in @ref ai_shape_dimension: + * in_channels, channels, width, height. + */ +AI_PACKED_STRUCT_START +typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_tensor_s { + ai_array* data; /*!< flattened array pointer to tensor data */ + ai_shape shape; /*!< tensor shape see @ref ai_shape */ + ai_stride stride; /*!< tensor stride see @ref ai_stride */ +} ai_tensor; +AI_PACKED_STRUCT_END + +/*! + * @struct ai_tensor_state + * @ingroup ai_platform_interface + * @brief state context for tensor management (used for I/O network tensors) + */ +AI_PACKED_STRUCT_START +typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_tensor_state_s { + ai_ptr end_ptr; /*!< end address of the I/O tensor data buffer */ + ai_ptr curr_ptr; /*!< current address of the I/O tensor data buffer (for batching) */ + ai_ptr_offset stride; /*!< single batch buffer size (in bytes) */ + ai_size size; /*!< total size in bytes of the I/O tensor buffer */ +} ai_tensor_state; +AI_PACKED_STRUCT_END + +/*! + * @struct ai_tensor_info + * @ingroup ai_platform_interface + * @brief info metadata for tensor management (used for I/O network tensors) + */ +AI_PACKED_STRUCT_START +typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_tensor_info_s { +// union { + ai_tensor_state* state; + ai_buffer* buffer; +// }; +} ai_tensor_info; +AI_PACKED_STRUCT_END + +/********************************* TENSOR CHAINS DATATYPES *******************/ +/*! + * @enum ai_tensor_chain_type + * @ingroup ai_platform_interface + * @brief Enum for the different tensor chains supported in the library + */ +typedef enum { + AI_TENSOR_CHAIN_INPUT = 0x0, + AI_TENSOR_CHAIN_OUTPUT = 0x1, + AI_TENSOR_CHAIN_WEIGHTS = 0x2, + AI_TENSOR_CHAIN_SCRATCH = 0x3, + AI_TENSOR_CHAIN_SIZE +} ai_tensor_chain_type; + +/*! + * @struct ai_tensor_list + * @ingroup ai_platform_interface + * @brief list (in form of arrays) of internal nodes tensor pointers + */ +AI_PACKED_STRUCT_START +typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_tensor_list_s { + ai_tensor** tensor; /*!< array of linked tensor pointer */ + ai_tensor_info* info; /*!< pointer to an array of metainfo associated to the tensors */ + ai_u16 size; /*!< number of elements in the the tensor list */ + ai_u16 flags; /*!< optional flags to store tensor list attributes */ +} ai_tensor_list; +AI_PACKED_STRUCT_END + + +/*! + * @struct ai_tensor_chain + * @ingroup ai_platform_interface + * @brief tensor chain datastruct for internal network nodes + */ +AI_PACKED_STRUCT_START +typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_tensor_chain_s { + ai_tensor_list* chain; /*!< pointer to a 4 sized array see @ref ai_tensor_chain_type */ + ai_u16 size; + ai_u16 flags; +} ai_tensor_chain; +AI_PACKED_STRUCT_END + +/* forward function */ +struct ai_node_s; + +/*! + * @struct ai_network + * @ingroup layers + * @brief Structure encoding a sequential neural network + */ +AI_PACKED_STRUCT_START +typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_network_s { + AI_CONTEXT_FIELDS + ai_flags flags; /*!< bitflags mask to track some network state info */ + ai_error error; /*!< track 1st error code in the network */ + + ai_u16 n_batches; /*!< number of batches to process */ + ai_u16 batch_id; /*!< current batch to to process btw [0, n_batches)*/ + ai_buffer params; /*!< params buffer data */ + ai_buffer activations; /*!< activations buffer data */ + + ai_tensor_chain tensors; /*!< I/O tensor chain list see @ref ai_tensor_list */ + + struct ai_node_s* input_node; /*!< first node to execute */ + struct ai_node_s* current_node; /*!< current node to execute */ + + ai_klass_obj klass; /*!< opaque handler to specific network implementations */ +} ai_network; +AI_PACKED_STRUCT_END + +/*! + * @brief Get platform runtime lib revision version as string. + * @ingroup ai_platform_interface + * @return a string containing the revision of the runtime library + */ +AI_INTERFACE_TYPE +const char* ai_platform_runtime_get_revision(void); + +/*! + * @brief Get platform runtime lib version as datastruct. + * @ingroup ai_platform_interface + * @return a datastruct containing the version of the runtime library + */ +AI_INTERFACE_TYPE +ai_platform_version ai_platform_runtime_get_version(void); + +/*! + * @brief Get platform public APIs version as datastruct. + * @ingroup ai_platform_interface + * @return a datastruct containing the version of the public APIs + */ +AI_INTERFACE_TYPE +ai_platform_version ai_platform_api_get_version(void); + +/*! + * @brief Get platform interface private APIs version as datastruct. + * @ingroup ai_platform_interface + * @return a datastruct containing the version of the interface private APIs + */ +AI_INTERFACE_TYPE +ai_platform_version ai_platform_interface_api_get_version(void); + +/*! + * @brief Get platform context. + * @ingroup ai_platform_interface + * @return a valid context handle or NULL otherwise + */ +AI_INTERFACE_TYPE +ai_context* ai_platform_context_acquire(const ai_handle handle); + +/*! + * @brief Release platform context. + * @ingroup ai_platform_interface + * @return an opaque handle to the released object + */ +AI_INTERFACE_TYPE +ai_handle ai_platform_context_release(ai_context* ctx); + + +/*! + * @brief get **first** error tracked when using the network + * @ingroup ai_platform_interface + * @param network an opaque handler to the network context + * @return ai_error the FIRST error generated during network processing + */ +AI_INTERFACE_TYPE +ai_error ai_platform_network_get_error(ai_handle network); + + +/*! + * @brief Set specific error code of the network. if an error is already present + * keep it + * @ingroup ai_platform_interface + * @param net_ctx a pointer to the network context + * @param type error type as defined in @ref ai_error_type + * @param code error code as defined in @ref ai_error_code + * @return true if no previous errors where recorded, false if a previous error + * is present or context is invalid + */ +AI_INTERFACE_TYPE +ai_bool ai_platform_network_set_error( + ai_network* net_ctx, const ai_error_type type, const ai_error_code code); + +/*! + * @brief Finalize network report datastruct with I/O buffer infos + * @ingroup ai_platform_interface + * @return bool if the report has been finalized correctly. false otherwise + */ +AI_INTERFACE_TYPE +ai_bool ai_platform_api_get_network_report( + ai_handle network, ai_network_report* r); + +/*! + * @brief create a network context with some error check + * @ingroup ai_platform_interface + * @param a pointer to an opaque handle of the network context + * @param an (optional) pointer to the network config buffer info + * @param net_ctx a pointer to the network context structure to initialize + * @param tools_major major version id of the tool used to generate the network + * @param tools_minor minor version id of the tool used to generate the network + * @param tools_micro micro version id of the tool used to generate the network + * @return the error during network creation or error none if ok + */ +AI_INTERFACE_TYPE +ai_error ai_platform_network_create( + ai_handle* network, const ai_buffer* network_config, + ai_network* net_ctx, + const ai_u8 tools_major, const ai_u8 tools_minor, const ai_u8 tools_micro); + +/*! + * @brief destroy a network context + * @ingroup ai_platform_interface + * @param network a pointer to an opaque handle of the network context + * @return AI_HANDLE_NULL if deallocation OK, same network handle if failed + */ +AI_INTERFACE_TYPE +ai_handle ai_platform_network_destroy(ai_handle network); + +/*! + * @brief initialize the network context + * @ingroup ai_platform_interface + * @param network a pointer to an opaque handle of the network context + * @return a valid network context, NULL if initialization failed + */ +AI_INTERFACE_TYPE +ai_network* ai_platform_network_init( + ai_handle network, const ai_network_params* params); + +/*! + * @brief main platform runtime execute of a network + * @ingroup ai_platform_interface + * @param network an opaque handler to the network context + * @param input a pointer to the input buffer data to process + * @param output a pointer to the output buffer + * @return the number of batches processed from the input. A result <=0 in case + * of error + */ +AI_INTERFACE_TYPE +ai_i32 ai_platform_network_process( + ai_handle network, const ai_buffer* input, ai_buffer* output); + +AI_API_DECLARE_END + +#endif /*__AI_PLATFORM_INTERFACE_H__*/ diff --git a/src/stm32cubeai/AI/Inc/core_common.h b/src/stm32cubeai/AI/Inc/core_common.h new file mode 100755 index 000000000..d65dbb204 --- /dev/null +++ b/src/stm32cubeai/AI/Inc/core_common.h @@ -0,0 +1,280 @@ +/** + ****************************************************************************** + * @file core_common.h + * @author AST Embedded Analytics Research Platform + * @date 20-Lug-2018 + * @brief header file of common core datatypes + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2018 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ + +#ifndef __CORE_COMMON_H_ +#define __CORE_COMMON_H_ +#pragma once + +#include "ai_platform.h" +#include "ai_platform_interface.h" +#include "ai_datatypes_internal.h" + +#include "core_datatypes.h" +#include "core_log.h" + +/*! + * @defgroup core_common Common Core Library Routines + * @brief Common macros, datatypes and routines of core common module + * @details This module contains the definitons and handling of the @ref ai_node + * datastructures. An ai_node is a generic abstraction for a network node that + * could be either a fixed function layer or an operator. Ideally the platform + * interface defined in api module should handle an process generic nodes in the + * network, not relying on the fact that they are layers or operators datastructs + * Specific implementative details should be kept inside layers and operators + * modules. The core module implements additionally common routines used in the + * layers and operators modules. + */ + +/******************************************************************************/ +#ifdef HAS_AI_ASSERT + #define ASSERT_ARRAY_SANITY(a_) \ + AI_ASSERT((a_) && (a_)->size>0) + + #define ASSERT_ARRAY_DATA_SANITY(a_) \ + ASSERT_ARRAY_SANITY(a_) \ + AI_ASSERT((a_)->data && (a_)->data_start) + + #define ASSERT_TENSOR_SANITY(t_) \ + AI_ASSERT((t_) && (t_)->data) \ + AI_ASSERT(ai_shape_get_size(&(t_)->shape)>0) \ + ASSERT_ARRAY_SANITY((t_)->data) + + #define ASSERT_TENSOR_LIST_SANITY(tlist_) \ + AI_ASSERT((tlist_) && (GET_TENSOR_LIST_SIZE(tlist_)>0)) \ + + #define ASSERT_TENSOR_DATA_SANITY(t_) \ + ASSERT_TENSOR_SANITY(t_) \ + ASSERT_ARRAY_DATA_SANITY((t_)->data) + + #define ASSERT_NODE_SANITY(node_) \ + do { \ + AI_ASSERT(AI_NODE_OBJ(node_)->tensors && AI_NODE_OBJ(node_)->tensors->chain) \ + ASSERT_TENSOR_SANITY(GET_TENSOR_IN(AI_NODE_OBJ(node_)->tensors, 0)) \ + ASSERT_TENSOR_SANITY(GET_TENSOR_OUT(AI_NODE_OBJ(node_)->tensors, 0)) \ + } while (0); +#else + #define ASSERT_ARRAY_SANITY(a_) /* ASSERT_ARRAY_SANITY */ + #define ASSERT_ARRAY_DATA_SANITY(a_) /* ASSERT_ARRAY_DATA_SANITY */ + #define ASSERT_TENSOR_SANITY(t_) /* ASSERT_TENSOR_SANITY */ + #define ASSERT_TENSOR_LIST_SANITY(tlist_) /* ASSERT_TENSOR_LIST_SANITY */ + #define ASSERT_TENSOR_DATA_SANITY(t_) /* ASSERT_TENSOR_DATA_SANITY */ + #define ASSERT_NODE_SANITY(node_) /* ASSERT_NODE_SANITY */ +#endif /*HAS_AI_ASSERT*/ + + +#if defined(__GNUC__) || defined(__clang__) + /* Suppress unused function warnings */ + #define AI_UNUSED_FUNCTION __attribute__((unused)) + /* Manage false positives in address sanitizer */ + #define AI_NO_SANITIZE_ADDRESS __attribute__((no_sanitize_address)) +#else + #define AI_UNUSED_FUNCTION /* AI_UNUSED_FUNCTION */ + #define AI_NO_SANITIZE_ADDRESS /* AI_NO_SANITIZE_ADDRESS */ +#endif + + +/******************************************************************************/ +#define AI_NODE_TYPE(type_) \ + ( (ai_node_type)((ai_u32)(type_)&0xFFFF) ) + +#define AI_NODE_OBJ(obj_) \ + ((ai_node*)(obj_)) + +#define AI_NODE_FORWARD_FUNC(func_) \ + ((node_forward_func)(func_)) + +#define AI_NODE_IS_FIRST(node) \ + (AI_NODE_OBJ(node)==AI_NODE_OBJ(AI_NODE_OBJ(node)->network->input_node)) + +#define AI_NODE_IS_LAST(node_) \ + ((AI_NODE_OBJ(node_)==AI_NODE_OBJ(node_)->next) || \ + (AI_NODE_OBJ(node_)->next==NULL)) + +#define AI_NODE_COMMON_FIELDS_DECLARE \ + ai_node_type type; /*!< node type id (see @ref ai_node_type) */ \ + ai_id_obj id; /*!< node object instance id (see @ref ai_id_obj) */ \ + struct ai_network_s* network; /*!< handle to global network context */ \ + struct ai_node_s* next; /*!< the next node object in the sequence */ \ + node_forward_func forward; /*!< forward function for the node */ \ + ai_klass_obj klass; /*!< opaque handler to specific layer implementations */ \ + AI_CONST ai_tensor_chain* tensors; /*!< pointer to node tensor chain */ + +#define AI_NODE_COMMON_INIT(type_, id_, forward_, next_, network_, klass_) \ + .type = AI_NODE_TYPE(type_), \ + .id = AI_ID_OBJ(id_), \ + .network = AI_NETWORK_OBJ(network_), \ + .next = AI_NODE_OBJ(next_), \ + .forward = AI_NODE_FORWARD_FUNC(forward_), \ + .klass = AI_KLASS_OBJ(klass_), \ + .tensors = NULL + +#define AI_FOR_EACH_NODE_DO(node_, nodes_) \ + for ( ai_node* node_ = AI_NODE_OBJ(nodes_); (node_); \ + node_ = ((AI_NODE_IS_LAST(node_)) ? NULL : (node_)->next) ) + + +/** TENSOR CHAINS LOOP MACROS & GETTERS *************************************/ +#define AI_FOR_EACH_TENSOR_CHAIN_DO(tlist_ptr_, chain_) \ + ai_tensor_list* tlist_ptr_=(chain_)->chain; \ + for ( ; tlist_ptr_<(((chain_)->chain)+GET_TENSOR_CHAIN_SIZE(chain_)); tlist_ptr_++ ) + +#define AI_FOR_EACH_TENSOR_LIST_DO(idx_, t_ptr_, tlist_ptr_) \ + ai_tensor* t_ptr_ = GET_TENSOR_LIST_ITEM(tlist_ptr_, 0); \ + for ( ai_size idx_ = 0; \ + idx_ < GET_TENSOR_LIST_SIZE(tlist_ptr_); \ + ++idx_, t_ptr_ = GET_TENSOR_LIST_ITEM(tlist_ptr_, idx_) ) + +#define GET_TENSOR_LIST_INFO(list_) \ + ( (list_)->info ) + +#define GET_TENSOR_LIST_STATE(list_, pos_) \ + ( &(GET_TENSOR_LIST_INFO(list_)->state[pos_]) ) + +#define GET_TENSOR_LIST_BUFFER(list_, pos_) \ + ( &(GET_TENSOR_LIST_INFO(list_)->buffer[pos_]) ) + +#define GET_TENSOR_LIST_ITEM(list_, pos_) \ + ( (list_)->tensor[(pos_)] ) + +#define GET_TENSOR_LIST_ITEMS(list_) \ + ( (list_)->tensor ) + +#define GET_TENSOR_LIST_SIZE(list_) \ + ( (list_)->size ) + +#define GET_TENSOR_CHAIN_SIZE(chain_) \ + ( (chain_)->size ) + +#define GET_TENSOR_LIST(chain_, type_) \ + ( &(chain_)->chain[AI_CONCAT(AI_TENSOR_CHAIN_, type_)] ) + +#define GET_TENSOR_LIST_IN(chain_) \ + ( GET_TENSOR_LIST(chain_, INPUT) ) + +#define GET_TENSOR_LIST_OUT(chain_) \ + ( GET_TENSOR_LIST(chain_, OUTPUT) ) + +#define GET_TENSOR_LIST_WEIGTHS(chain_) \ + ( GET_TENSOR_LIST(chain_, WEIGHTS) ) + +#define GET_TENSOR_LIST_SCRATCH(chain_) \ + ( GET_TENSOR_LIST(chain_, SCRATCH) ) + +#define GET_TENSOR_IN(chain_, pos_) \ + ( GET_TENSOR_LIST_ITEM(GET_TENSOR_LIST_IN(chain_), (pos_)) ) + +#define GET_TENSOR_OUT(chain_, pos_) \ + ( GET_TENSOR_LIST_ITEM(GET_TENSOR_LIST_OUT(chain_), (pos_)) ) + +#define GET_TENSOR_WEIGHTS(chain_, pos_) \ + ( GET_TENSOR_LIST_ITEM(GET_TENSOR_LIST_WEIGTHS(chain_), (pos_)) ) + +#define GET_TENSOR_SCRATCH(chain_, pos_) \ + ( GET_TENSOR_LIST_ITEM(GET_TENSOR_LIST_SCRATCH(chain_), (pos_)) ) + +#define AI_NODE_IO_GET(node_, in_, out_) \ + ASSERT_NODE_SANITY(node_) \ + ai_tensor* in_ = GET_TENSOR_IN((node_)->tensors, 0); \ + ai_tensor* out_ = GET_TENSOR_OUT((node_)->tensors, 0); \ + ASSERT_TENSOR_SANITY(in_) \ + ASSERT_TENSOR_SANITY(out_) + +/******************************************************************************/ + +#if 1 + #define SECTION_SERIAL(expr) expr + #define SECTION_PARALLEL(expr) +#else + #define SECTION_SERIAL(expr) + #define SECTION_PARALLEL(expr) expr +#endif + +AI_API_DECLARE_BEGIN + +/*! + * @struct ai_node_type + * @ingroup core_common + * @brief generic network node numeric type ID + * + */ +typedef uint16_t ai_node_type; + +/*! + * @typedef void (*node_forward_func)(struct ai_node_s* node) + * @ingroup core_common + * @brief Callback signatures for all forward functions + */ +typedef void (*node_forward_func)(struct ai_node_s* node); + +/*! + * @typedef ai_float (*func_nl_el)(const ai_float x) + * @ingroup core_common + * @brief Fuction pointer for generic elementwise transforms + * + * This function pointer abstracts a generic nonlinear function applied to a + * single element. See @ref ai_math_sqrt in @ref math_helpers as examples. + */ +typedef ai_float (*func_nl_el)(const ai_float x); + +/*! + * @struct ai_node + * @ingroup core_common + * @brief Structure encoding a generic node of the network + * + * The node struct includes information about the network it belong to, the + * next node in a sequential network and the forward function. The forward + * functions are implemented in the @ref layers module. + */ +typedef AI_ALIGNED_TYPE(struct, 4) ai_node_s { + AI_NODE_COMMON_FIELDS_DECLARE +} ai_node; + +/*! + * @brief initialize core module + * @ingroup core_common + * @return false if initialization fails, false otherwise + */ +AI_INTERNAL_API +ai_bool core_init(void); + +/*! + * @brief get 1st error raised during processing + * @ingroup core_common + * @param[out] error the @ref ai_error recorded during processing + * @return the 1st error generated during processing. If no errors AI_ERROR_NONE + */ +AI_INTERNAL_API +ai_error core_get_error(ai_error* error); + +/*! + * @brief set error recorded during processing + * @ingroup core_common + * @param[out] error the @ref ai_error to set + * @param[in] type the specific error type to set + * @param[in] code the specific error code to set + * @return true if the error is set, false in case a precedent error was already + */ +AI_INTERNAL_API +ai_bool core_set_error( + ai_error* error, const ai_error_type type, const ai_error_code code); + +AI_API_DECLARE_END + +#endif /*__CORE_COMMON_H_*/ diff --git a/src/stm32cubeai/AI/Inc/core_convert.h b/src/stm32cubeai/AI/Inc/core_convert.h new file mode 100755 index 000000000..66df17921 --- /dev/null +++ b/src/stm32cubeai/AI/Inc/core_convert.h @@ -0,0 +1,98 @@ +/** + ****************************************************************************** + * @file core_utils.h + * @author AST Embedded Analytics Research Platform + * @date 16-Aug-2018 + * @brief header file of core utils routines + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2018 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#ifndef __CORE_CONVERT_H_ +#define __CORE_CONVERT_H_ +#pragma once + +#include "ai_platform.h" +#include "ai_platform_interface.h" + +#include "core_common.h" + +AI_API_DECLARE_BEGIN + +/*! + * @defgroup core_convert Core Convert Routines + * @brief Implementation of core node format convertion routines (Q7 to float, ... etc.) + */ + + +/*! + * @brief Convert input tensor array from input format to output format + * @ingroup core_convert + * @param[in] pNode in a handler to node (layer or operators) with tensor informations + */ +AI_INTERNAL_API +void node_convert(ai_node *pNode); + +/*! + * @brief Convert a shape struct into a stride struct + * @ingroup core_convert + * @param[in] in a pointer to a shape to convert + * @return a condverted stride datastruct + */ +AI_INTERNAL_API +ai_stride core_shape_to_stride(const ai_shape* in); + +/*! + * @brief Convert a shape 2D struct into a stride struct + * @ingroup core_convert + * @param[in] in a pointer to a shape to convert + * @return a condverted stride datastruct + */ +AI_INTERNAL_API +ai_stride core_shape_2d_to_stride(const ai_shape_2d* in); + +/*! + * @brief Convert a shape struct into a ND stride struct (multi dimensional) + * @ingroup core_convert + * @param[in] in a pointer to a shape to convert + * @return a condverted ND stride datastruct + */ +AI_INTERNAL_API +ai_stride_nd core_shape_to_stride_nd(const ai_shape* in); + +/*! + * @brief Convert a shape 2D struct into a ND stride struct (multi dimensional) + * @ingroup core_convert + * @param[in] in a pointer to a shape 2D to convert + * @return a condverted ND stride datastruct + */ +AI_INTERNAL_API +ai_stride_nd core_shape_2d_to_stride_nd(const ai_shape_2d* in); + +#endif /*__CORE_CONVERT_H_*/ diff --git a/src/stm32cubeai/AI/Inc/core_datatypes.h b/src/stm32cubeai/AI/Inc/core_datatypes.h new file mode 100755 index 000000000..53088a4d5 --- /dev/null +++ b/src/stm32cubeai/AI/Inc/core_datatypes.h @@ -0,0 +1,59 @@ +/** + ****************************************************************************** + * @file core_datatypes.h + * @author AST Embedded Analytics Research Platform + * @date 22-Aug-2018 + * @brief header file of core module private defines and datatypes + * to public nor codegen tool + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2018 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ + +#ifndef __AI_CORE_DATATYPES_H_ +#define __AI_CORE_DATATYPES_H_ +#pragma once +#include + +/*! + * @defgroup Core Module Datatypes + * @brief Data structures and defines used by core module + */ + +/*! + * @brief platform runtime core library version + */ +#define AI_PLATFORM_RUNTIME_MAJOR 4 +#define AI_PLATFORM_RUNTIME_MINOR 0 +#define AI_PLATFORM_RUNTIME_MICRO 0 + +#define AI_MAGIC_CONTEXT_TOKEN (0xA1C00100) /*!< AI Cool! Magic Token */ + +#define AI_MAGIC_INSPECTOR_TOKEN (0xA1C00101) /*!< AI Cool! Magic Token */ + + +#define AI_ID_OBJ(id) \ + ((ai_id_obj)(id)) + +#define AI_C_ARRAY_COUNT(array_) \ + ( sizeof(array_) / sizeof((array_)[0]) ) + +/*! + * @typedef ai_id_obj + * @ingroup core_datatypes + * @brief numeric identifier for generic object instances (e.g. layers, + * operators, etc.) It is used by codegen tool to keep tracks of specific + * instances created + */ +typedef uint16_t ai_id_obj; + +#endif /*__AI_CORE_DATATYPES_H_*/ diff --git a/src/stm32cubeai/AI/Inc/core_log.h b/src/stm32cubeai/AI/Inc/core_log.h new file mode 100755 index 000000000..192a2b298 --- /dev/null +++ b/src/stm32cubeai/AI/Inc/core_log.h @@ -0,0 +1,117 @@ +/** + ****************************************************************************** + * @file core_log.h + * @author AST Embedded Analytics Research Platform + * @date 14-Aug-2018 + * @brief header file of core log interfaces + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2018 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ + +#ifndef __CORE_LOG_H_ +#define __CORE_LOG_H_ +#pragma once + +#include "ai_platform.h" + +/*! + * @defgroup core_log Logger core routines wrapper interface + * @brief Common macros, datatypes and routines of ai logger module + * @details This header defines the wrapping macros interfaces to handle the + * global logger module. These macro are defined when the macro HAS_LOG is + * defined, otherwise they are all set to NOP routines and no logger code is + * compiled at all. When the macro HAS_LOG is defined, only the log messages + * having an enum id >= the value of the macro are compiled. Thus to include in + * compilation only log messages up to the error level the value of HAS_LOG must + * be equal the the enum value of LOG_ERROR macro (i.e. 3). a value of 6 means + * to include all log messages up to the lower LOG_TRACE level. + */ + +#if defined HAS_LOG && (HAS_LOG>=0) +#include "ai_log.h" + #define AI_LOG_SECTION(...) { __VA_ARGS__ } + + #define AI_LOG_ACQUIRE() \ + ai_log_acquire() + #define AI_LOG_SET_LEVEL(level_) \ + AI_WRAP_FUNC(ai_log_set_level(level_);) + #define AI_LOG_SET_QUIET(onoff_) \ + AI_WRAP_FUNC(ai_log_set_quiet(onoff_);) + #define AI_LOG_SET_LOCK_FN(fn_, udata_) \ + AI_WRAP_FUNC(ai_log_set_lock(fn_, udata_);) + #define AI_LOG_CHANNEL_PUSH(level_, fn_, udata_) \ + AI_WRAP_FUNC(ai_log_channel_push(level_, fn_, udata_);) + #define AI_LOG_CHANNEL_POP(fn_, udata_) \ + AI_WRAP_FUNC(ai_log_channel_pop(fn_, udata_);) + #ifdef LOG_USE_FILE + #define AI_LOG_SET_FILE_POINTER(fp_) \ + AI_WRAP_FUNC(ai_log_set_fp(fp_);) + #else + #define AI_LOG_SET_FILE_POINTER(fp_) \ + /*AI_LOG_SET_FILE_POINTER()*/ + #endif +#else + #define AI_LOG_SECTION(...) /*AI_LOG_SECTION()*/ + + #define AI_LOG_ACQUIRE() (NULL) + #define AI_LOG_SET_LEVEL(level_) /*AI_LOG_SET_LEVEL()*/ + #define AI_LOG_SET_QUIET(onoff_) /*AI_LOG_SET_QUIET()*/ + #define AI_LOG_SET_LOCK_FN(fn_, udata_) /*AI_LOG_SET_LOCK_FN()*/ + #define AI_LOG_CHANNEL_PUSH(level_, fn_, udata_) /*AI_LOG_CHANNEL_PUSH()*/ + #define AI_LOG_CHANNEL_POP(fn_, udata_) /*AI_LOG_CHANNEL_POP()*/ + #define AI_LOG_SET_FILE_POINTER(fp_) /*AI_LOG_SET_FILE_POINTER()*/ +#endif + +#if defined HAS_LOG && (HAS_LOG>=LOG_SUDO) + #define AI_LOG_SUDO(...) AI_WRAP_FUNC(ai_log_log(LOG_SUDO, __FILE__, __LINE__, __VA_ARGS__);) +#else + #define AI_LOG_SUDO(...) /*AI_LOG_SUDO()*/ +#endif + +#if defined HAS_LOG && (HAS_LOG>=LOG_TRACE) + #define AI_LOG_TRACE(...) AI_WRAP_FUNC(ai_log_log(LOG_TRACE, __FILE__, __LINE__, __VA_ARGS__);) +#else + #define AI_LOG_TRACE(...) /*AI_LOG_TRACE()*/ +#endif + +#if defined HAS_LOG && (HAS_LOG>=LOG_DEBUG) + #define AI_LOG_DEBUG(...) AI_WRAP_FUNC(ai_log_log(LOG_DEBUG, __FILE__, __LINE__, __VA_ARGS__);) +#else + #define AI_LOG_DEBUG(...) /*AI_LOG_DEBUG()*/ +#endif + +#if defined HAS_LOG && (HAS_LOG>=LOG_INFO) + #define AI_LOG_INFO(...) AI_WRAP_FUNC(ai_log_log(LOG_INFO, __FILE__, __LINE__, __VA_ARGS__);) +#else + #define AI_LOG_INFO(...) /*AI_LOG_INFO()*/ +#endif + +#if defined HAS_LOG && (HAS_LOG>=LOG_WARN) + #define AI_LOG_WARN(...) AI_WRAP_FUNC(ai_log_log(LOG_WARN, __FILE__, __LINE__, __VA_ARGS__);) +#else + #define AI_LOG_WARN(...) /*AI_LOG_WARN()*/ +#endif + +#if defined HAS_LOG && (HAS_LOG>=LOG_ERROR) + #define AI_LOG_ERROR(...) AI_WRAP_FUNC(ai_log_log(LOG_ERROR, __FILE__, __LINE__, __VA_ARGS__);) +#else + #define AI_LOG_ERROR(...) /*AI_LOG_ERROR()*/ +#endif + +#if defined HAS_LOG && (HAS_LOG>=LOG_FATAL) + #define AI_LOG_FATAL(...) AI_WRAP_FUNC(ai_log_log(LOG_FATAL, __FILE__, __LINE__, __VA_ARGS__);) +#else + #define AI_LOG_FATAL(...) /*AI_LOG_FATAL()*/ +#endif + +#endif /*__CORE_LOG_H_*/ diff --git a/src/stm32cubeai/AI/Inc/core_net_inspect.h b/src/stm32cubeai/AI/Inc/core_net_inspect.h new file mode 100755 index 000000000..b09a1117b --- /dev/null +++ b/src/stm32cubeai/AI/Inc/core_net_inspect.h @@ -0,0 +1,96 @@ +/** + ****************************************************************************** + * @file core_net_inspect.h + * @author AST Embedded Analytics Research Platform + * @date 20-Lug-2018 + * @brief header file of core network inspection APIs + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2018 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ + +#ifndef __CORE_NET_INSPECT_H_ +#define __CORE_NET_INSPECT_H_ +#pragma once + +#include "core_net_inspect_interface.h" + +#include "core_common.h" +#include "layers_common.h" + +/*! + * @defgroup core_net_inspect Core Network Inspection routines + * @brief Implementation of core network inspection routines that allows to + * inspect on a node basis a generated network model + * @details A network context @ref ai_network basically contains a chained list + * of nodes @ref ai_node that have an associated forward function. + * Each ai)network context and ai_node datastructs have as a required member + * field an opaque handler (i.e. a void pointer) to a klass object. + * This handler is intended to be used as a platform specific node context + * that implements specific target platform routines. + * The inspector module basically acts as a plugin that exploiting these features + * by temporary creating an hidden inspection context (see + * @ref ai_core_inspect_net_klass) associated to the network and + * linking it by re-routing the klass field to this inspection context. The + * inspection context saves as part of its state (by a stack push operation), the + * internal state of the network (all node / network klass pointers and actual + * forward functions). + * Thus, for each node it re-routes all node's forward functions to a dedicated + * inspection forward function (see @ref _forward_inspect_validate() routine) + * This routine is the core of the mechanism and it allows to inspect a network + * node by node. Some additional inspection could thus be done inside the + * _forward_inspect_validate() routine before and after the actual node + * forward function is called; + * + */ + +AI_API_DECLARE_BEGIN + +/*! + * @defgroup core_net_inspect Network Inspection Core + * @brief Implementation of the validation network routines + */ + +/*! + * @brief Initialize the network inspection context on a given network + * @ingroup core net inspect + * @param network opaque handler to the network instance + * @param cfg a pointer to the inspector configuration we want to use + * @return true if execution of the API is fine, false otherwise + */ +AI_API_ENTRY +ai_bool ai_network_inspect_init( + ai_handle network, const ai_inspect_config* cfg); + +/*! + * @brief Get a summary report from the inspected network + * @ingroup core net inspect + * @param network opaque handler to the network instance + * @param report a pointer to the report provided back by the inspection + * @return true if execution of the API is fine, false otherwise + */ +AI_API_ENTRY +ai_bool ai_network_inspect_get_report( + ai_handle network, ai_inspect_net_report* report); + +/*! + * @brief Destroy the network inspection context on a given network + * @ingroup core net inspect + * @param network opaque handler to the network instance + * @return true if execution of the API is fine, false otherwise + */ +AI_API_ENTRY +ai_bool ai_network_inspect_destroy(ai_handle network); + +AI_API_DECLARE_END + +#endif /*__CORE_NET_INSPECT_H_*/ diff --git a/src/stm32cubeai/AI/Inc/core_net_inspect_interface.h b/src/stm32cubeai/AI/Inc/core_net_inspect_interface.h new file mode 100755 index 000000000..31b23220a --- /dev/null +++ b/src/stm32cubeai/AI/Inc/core_net_inspect_interface.h @@ -0,0 +1,121 @@ +/** + ****************************************************************************** + * @file core_net_inspect_interface.h + * @author AST Embedded Analytics Research Platform + * @date 20-Lug-2018 + * @brief header file of core network inspection interface APIs + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2018 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ + +#ifndef __CORE_NET_INSPECT_INTERFACE_H_ +#define __CORE_NET_INSPECT_INTERFACE_H_ +#pragma once + +#include "ai_platform.h" + +AI_API_DECLARE_BEGIN + +/*! + * @defgroup core_validation Validation Core + * @brief Implementation of the validation network interface headers + */ + + +/*! + * @struct ai_inspect_node_info + * @brief network node inspection context: there is one of this datastruct + * for each node of the network + */ +typedef struct ai_inspect_node_info_s { + ai_u16 type; /*!< node type info @see ai_node datastruct */ + ai_u16 id; /*!< node id assigned by codegen tool to identify + the specific node instance */ + ai_u16 batch_id; /*!< current node batch processed */ + ai_u16 n_batches; /*!< total number of node batches to process */ + ai_float elapsed_ms; /*!< node performance analysys: time in + milliseconds to execute the node forward + function */ + ai_u16 in_size; /*!< number of node's input activation buffers */ + ai_u16 out_size; /*!< number of node's output activation buffers */ + ai_buffer* in; /*!< input node activation buffer see @ref ai_buffer */ + ai_buffer* out; /*!< output node activation buffer see @ref ai_buffer */ +} ai_inspect_node_info; + +/*! + * @struct ai_inspect_net_report + * @brief network inspection report context + */ +typedef struct ai_inspect_net_report_s { + ai_u32 id; /*!< id of the report */ + ai_signature signature; /*!< network identification checksum */ + ai_u32 num_inferences; /*!< total number of inferences processed + during the inspection */ + ai_u32 n_nodes; /*!< number of nodes in the network */ + ai_float elapsed_ms; /*!< network total time (in ms) for processing + num_inferences inferences */ + ai_inspect_node_info* node; /*!< pointer to the array of size n_nodes where + a single node report is reported. see @ref + ai_inspect_node_info datastruct */ +} ai_inspect_net_report; + +/*! + * @enum net inspector inspection mode + * @brief configuration flags to set net inspection mode + */ +typedef enum { + VALIDATION_INSPECT = (0x1<<0), /**< Network validation inspection mode */ + STORE_ALL_IO_ACTIVATIONS = (0x1<<7), /**< Store all I/O activations on snapshot datastruct */ +} ai_inspect_mode; + +typedef enum { + AI_NODE_EXEC_PRE_FORWARD_STAGE = 0x0, + AI_NODE_EXEC_POST_FORWARD_STAGE = 0x1, +} ai_node_exec_stage; + +/*! + * @brief function pointer to callback report + */ +typedef void (*ai_inspect_report_cb_func)( + const ai_handle cookie, + const ai_inspect_net_report* report); + +/*! + * @brief function pointer to node execute + */ +typedef void (*ai_inspect_exec_node_cb_func)( + const ai_handle cookie, + const ai_inspect_node_info* node_info, + const ai_node_exec_stage stage); + +/*! + * @struct ai_inspect_config + * @brief inspection config datastruct + */ +typedef struct ai_inspect_config_s { + ai_u8 validation_mode; /*!< validation mode flags + see @ref ai_inspect_mode */ + ai_u8 log_level; /*!< log class level see @ref LOG_SUDO */ + ai_bool log_quiet; /*!< log class quiet mode */ + ai_inspect_report_cb_func on_report_destroy; /*!< callback function + called when a report datastruct + is released from memory */ + ai_inspect_exec_node_cb_func on_exec_node; /*!< callback function + called when a node is executed (pre & post) */ + ai_handle cookie; +} ai_inspect_config; + + +AI_API_DECLARE_END + +#endif /*__CORE_NET_INSPECT_INTERFACE_H_*/ diff --git a/src/stm32cubeai/AI/Inc/datatypes_network.h b/src/stm32cubeai/AI/Inc/datatypes_network.h new file mode 100755 index 000000000..c10d603f7 --- /dev/null +++ b/src/stm32cubeai/AI/Inc/datatypes_network.h @@ -0,0 +1,58 @@ +/** + ****************************************************************************** + * @file datatypes_network.h + * @author AST Embedded Analytics Research Platform + * @date 30-Aug-2017 + * @brief Definitions of code generated network types + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ + +#ifndef __DATATYPES_NETWORK_H__ +#define __DATATYPES_NETWORK_H__ +#pragma once + +/* + * Header to be overriden by the generated version + * by including with <> the include directories are searched in the order + * specified in the compiler + * To enable the override, put the generated path before the API path + */ + +#include "ai_platform.h" + +AI_API_DECLARE_BEGIN + +#ifdef AI_OVERRIDE_CUSTOM_TYPES +#warning "Warning: Custom Types have been already defined!\n" +#endif + +#define AI_CUSTOM_TYPES_COUNT (3) + +#define AI_CUSTOM_TYPES_SIGNATURE_DECLARE(name) \ + const ai_custom_type_signature name[AI_CUSTOM_TYPES_COUNT+1] = { \ + AI_CUSTOM_TYPES_COUNT, \ + AI_CUSTOM_SIZE(ai_shape_dimension), \ + AI_CUSTOM_SIZE(ai_stride_dimension), \ + AI_CUSTOM_SIZE(ai_array_size), \ + }; + + +typedef ai_u32 ai_shape_dimension; +typedef ai_i32 ai_stride_dimension; +typedef ai_u32 ai_array_size; + + +AI_API_DECLARE_END + +#endif /*__DATATYPES_NETWORK_H__*/ diff --git a/src/stm32cubeai/AI/Inc/formats_list.h b/src/stm32cubeai/AI/Inc/formats_list.h new file mode 100755 index 000000000..a0d530f72 --- /dev/null +++ b/src/stm32cubeai/AI/Inc/formats_list.h @@ -0,0 +1,69 @@ + +/* FMT_ENTRY( exp_(0/1 only), name_, type_id_, + * sign_bit_, float_bit_, pbits_, bits_, fbits_, ldiv_bits_) + * Specifications (in order of the bit fields, little endian): + - name_ : it is the enum used to define both the ai_array_format and + ai_buffer_format. + - exp_ (1bit) : it is a boolean flag (0 or 1) indicating whether the format + is available as a public APIs ai_buffer format. in this case the field + exp_name_ indicates the enum name of the ai_buffer format + - (7 bits): reserved for flags + - sign_bit_ (1bit) : codes whether or not the format is of a signed type + - float_bit_ (1bit) : codes if the format is float + - ldiv_bits (2 bits) : right shift value for computing the byte size of the + format + - type_id_ (4bits) : it is used to define the "family" of the format: + see @ref AI_FMT_Q as an example. Currently supported types are: + AI_FMT_Q (fixed point types), AI_FMT_FLOAT (floating point values), + AI_FMT_LUT4 or AI_FMT_LUT8 (compressed formats) + - pbits_ (3bits) : number of padding bits for the format + - bits_ (7bits) : size in bits of the format (NB: integer+fractional bits) + - fbits_ (7bits) : number of fractional bits for the format (for AI_FMT_Q only) + + */ + +/* Macro tricks are here: + * https://github.com/pfultz2/Cloak/wiki/C-Preprocessor-tricks,-tips,-and-idioms + */ + +/* Format none entry */ +FMT_ENTRY(1, NONE, AI_FMT_NONE, 0, 0, 0, 0, 0, 0) + +/* Floating point formats */ +FMT_ENTRY(1, FLOAT, AI_FMT_FLOAT, 1, 1, 0, 32, 0, 0) +FMT_ENTRY(0, FLOAT64, AI_FMT_FLOAT, 1, 1, 0, 64, 0, 0) +FMT_ENTRY(0, FLOAT16, AI_FMT_FLOAT, 1, 1, 0, 16, 0, 0) + +/* Integer formats (i.e. fractional bits = 0!) */ +FMT_ENTRY(1, U8, AI_FMT_Q, 0, 0, 0, 8, 0, 0) +FMT_ENTRY(1, U16, AI_FMT_Q, 0, 0, 0, 16, 0, 0) +FMT_ENTRY(0, U32, AI_FMT_Q, 0, 0, 0, 32, 0, 0) +FMT_ENTRY(0, U64, AI_FMT_Q, 0, 0, 0, 64, 0, 0) +FMT_ENTRY(0, U4, AI_FMT_Q, 0, 0, 0, 4, 0, 0) + +FMT_ENTRY(1, S8, AI_FMT_Q, 1, 0, 0, 8, 0, 0) +FMT_ENTRY(1, S16, AI_FMT_Q, 1, 0, 0, 16, 0, 0) +FMT_ENTRY(0, S32, AI_FMT_Q, 1, 0, 0, 32, 0, 0) +FMT_ENTRY(0, S64, AI_FMT_Q, 1, 0, 0, 64, 0, 0) +FMT_ENTRY(0, S4, AI_FMT_Q, 1, 0, 0, 4, 0, 0) + +/* Fixed-point formats including ARM CMSIS Q7, Q15, Q31 ones */ +FMT_ENTRY(1, Q, AI_FMT_Q, 1, 0, 0, 0, 0, 0) +FMT_ENTRY(1, Q7, AI_FMT_Q, 1, 0, 0, 8, 7, 0) +FMT_ENTRY(1, Q15, AI_FMT_Q, 1, 0, 0, 16, 15, 0) +FMT_ENTRY(0, Q31, AI_FMT_Q, 1, 0, 0, 32, 31, 0) + +FMT_ENTRY(1, UQ, AI_FMT_Q, 0, 0, 0, 0, 0, 0) +FMT_ENTRY(1, UQ7, AI_FMT_Q, 0, 0, 0, 8, 7, 0) +FMT_ENTRY(1, UQ15, AI_FMT_Q, 0, 0, 0, 16, 15, 0) +FMT_ENTRY(0, UQ31, AI_FMT_Q, 0, 0, 0, 32, 31, 0) + +/* Compressed formats */ +FMT_ENTRY(0, LUT4_FLOAT, AI_FMT_LUT4, 1, 1, 0, 32, 0, 3) +FMT_ENTRY(0, LUT8_FLOAT, AI_FMT_LUT8, 1, 1, 0, 32, 0, 2) +FMT_ENTRY(0, LUT4_Q15, AI_FMT_LUT4, 1, 0, 0, 16, 15, 2) +FMT_ENTRY(0, LUT8_Q15, AI_FMT_LUT8, 1, 0, 0, 16, 15, 1) +FMT_ENTRY(0, LUT4_UQ15, AI_FMT_LUT4, 0, 0, 0, 16, 15, 2) +FMT_ENTRY(0, LUT8_UQ15, AI_FMT_LUT8, 0, 0, 0, 16, 15, 1) + +#undef FMT_ENTRY diff --git a/src/stm32cubeai/AI/Inc/layers.h b/src/stm32cubeai/AI/Inc/layers.h new file mode 100755 index 000000000..d55a10937 --- /dev/null +++ b/src/stm32cubeai/AI/Inc/layers.h @@ -0,0 +1,88 @@ +/** + ****************************************************************************** + * @file layers.h + * @author AST Embedded Analytics Research Platform + * @date 01-May-2017 + * @brief header file of AI platform layers datatypes + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ + +#ifndef __LAYERS_H_ +#define __LAYERS_H_ +#pragma once + +#include "layers_common.h" +#include "layers_conv2d.h" +#include "layers_generic.h" +#include "layers_nl.h" +#include "layers_norm.h" +#include "layers_pool.h" +#include "layers_rnn.h" +#include "layers_dense.h" +#include "layers_sm.h" + +#ifdef USE_OPERATORS + #include "layers_lambda.h" +#endif /* USE_OPERATORS */ + + +AI_API_DECLARE_BEGIN + +/*! + * @defgroup layers Layers + * @brief Definition of the forward functions for the layers and the general + * ai_layer datastructure used to abstract specific layer implementation in the + * generic forward function definition + * + * The forward function for a layer computes the layer activations given the + * activations of the previous layer. They are added to the layer as function + * pointer and called implicitly by the @ref ai_layers_forward_all function. + * The input activations are read from layer → in and the computed + * activations stored in layer → out. The layer type needs to be compatible + * with the forward function, but layers with the same layout (e.g. `mp` and + * `ap`) can share the same structure. + */ + +/******************************************************************************/ +/* Forward Functions Section */ +/******************************************************************************/ + +/*! + * @brief Executes a single layer in the network. + * @ingroup layers + * @param layer the layer to process + * @return pointer to the next layer + */ +AI_INTERNAL_API +ai_layer* ai_layers_forward_layer(ai_layer* layer); + + +/*! + * @brief Computes the ouptut of the network given the input. + * @ingroup layers + * + * Given a network with the input pre-loaded in the net → in tensor, + * computes the output by calling the forward functions of each layer and + * selecting the next layer. When the layer has no successor or it's in a + * loop-back configuration (layer → next is again layer), the function + * stops. The result is stored in net → out. + * + * @param net the network to evaluate + */ +AI_INTERNAL_API +void ai_layers_forward_all(ai_network* net); + +AI_API_DECLARE_END + +#endif /* __LAYERS_H_ */ diff --git a/src/stm32cubeai/AI/Inc/layers_common.h b/src/stm32cubeai/AI/Inc/layers_common.h new file mode 100755 index 000000000..b0e04ba52 --- /dev/null +++ b/src/stm32cubeai/AI/Inc/layers_common.h @@ -0,0 +1,206 @@ +/** + ****************************************************************************** + * @file layers_common.h + * @author AST Embedded Analytics Research Platform + * @date 17-Nov-2017 + * @brief header file of AI platform layers datatypes + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ + +#ifndef __LAYERS_COMMON_H_ +#define __LAYERS_COMMON_H_ +#pragma once + +#include + +#ifdef USE_CYCLE_MEASUREMENTS + #include "layers_cycles_estimation.h" +#endif +#include "ai_platform.h" +#include "ai_common_config.h" +#include "ai_datatypes_internal.h" + +#include "core_common.h" +#include "core_convert.h" + +/* optimizations */ +#define AI_OPTIM_DICT8_DOT_ARRAY_F32 (1) +#define AI_OPTIM_DICT8_DTCM (1) +#define AI_OPTIM_FUNC_MP_ARRAY_F32 (0) + + +/* Basic sanity checks for generic layer datastructs */ +#define ASSERT_LAYER_SANITY(l) \ + do { \ + AI_ASSERT((l)->tensors && (l)->tensors->chain) \ + ASSERT_TENSOR_DATA_SANITY(GET_TENSOR_IN((l)->tensors, 0)) \ + ASSERT_TENSOR_DATA_SANITY(GET_TENSOR_OUT((l)->tensors, 0)) \ + AI_ASSERT(ai_shape_get_size(&GET_TENSOR_IN((l)->tensors, 0)->shape) <= \ + GET_TENSOR_IN((l)->tensors, 0)->data->size) \ + AI_ASSERT(ai_shape_get_size(&GET_TENSOR_OUT((l)->tensors, 0)->shape) <= \ + GET_TENSOR_OUT((l)->tensors, 0)->data->size) \ + } while (0); + + +#define AI_LAYER_OBJ(obj_) \ + ((ai_layer*)(obj_)) + +#define AI_LAYER_FORWARD_FUNC(func_) \ + ((layer_forward_func)(func_)) + +#define AI_LAYER_TYPE(type_) \ + ( (ai_layer_type)((ai_u32)(type_)&0xFFFF) ) + +#define AI_LAYER_TYPE_ENTRY(type_) \ + AI_CONCAT(AI_CONCAT(AI_LAYER_, type_), _TYPE) + +#define AI_LAYER_TYPE_NAME(type_) \ + ai_layer_type_name(AI_LAYER_TYPE(type_)) + +#define AI_LAYER_TYPE_IS_VALID(type_) \ + ai_layer_type_is_valid(AI_LAYER_TYPE(type_)) + +#define AI_LAYER_COMMON_INIT(type_, id_, forward_, next_, network_, klass_) \ + .type = AI_NODE_TYPE(type_), \ + .id = AI_ID_OBJ(id_), \ + .network = AI_NETWORK_OBJ(network_), \ + .next = AI_LAYER_OBJ(next_), \ + .forward = AI_LAYER_FORWARD_FUNC(forward_), \ + .klass = AI_KLASS_OBJ(klass_) + +#define AI_LAYER_OBJ_INIT(type_, id_, network_, next_, forward_, ...) { \ + AI_LAYER_COMMON_INIT(AI_CONCAT(AI_LAYER_, type_), id_, forward_, next_, network_, NULL), \ + ## __VA_ARGS__ } + +#define AI_LAYER_OBJ_DECLARE(varname_, id_, type_, struct_, forward_func_, \ + network_, next_, attr_, ...) \ + AI_ALIGNED(4) \ + attr_ AI_CONCAT(ai_layer_, struct_) varname_ = \ + AI_LAYER_OBJ_INIT( type_, id_, network_, \ + next_, forward_func_, \ + ## __VA_ARGS__ ); + +#define AI_LAYER_IO_GET(layer_, in_, out_) \ + ASSERT_LAYER_SANITY(layer_) \ + const ai_tensor* in_ = GET_TENSOR_IN((layer_)->tensors, 0); \ + ai_tensor* out_ = GET_TENSOR_OUT((layer_)->tensors, 0); \ + ASSERT_TENSOR_DATA_SANITY(in_) \ + ASSERT_TENSOR_DATA_SANITY(out_) + +#define AI_LAYER_LIST_IO_GET(layer_, in_, out_) \ + ASSERT_LAYER_SANITY(layer_) \ + const ai_tensor_list* in_ = GET_TENSOR_LIST_IN((layer_)->tensors); \ + ai_tensor_list* out_ = GET_TENSOR_LIST_OUT((layer_)->tensors); \ + ASSERT_TENSOR_LIST_SANITY(in_) \ + ASSERT_TENSOR_LIST_SANITY(out_) + +#ifdef HAS_AI_ASSERT + #define AI_LAYER_WEIGHTS_GET(layer_, weights_, bias_) \ + const ai_tensor* weights_ = GET_TENSOR_WEIGHTS((layer_)->tensors, 0); \ + const ai_tensor* bias_ = (GET_TENSOR_LIST_SIZE(GET_TENSOR_LIST_WEIGTHS((layer_)->tensors))>1) \ + ? GET_TENSOR_WEIGHTS((layer_)->tensors, 1) \ + : NULL; \ + ASSERT_TENSOR_DATA_SANITY(weights_) \ + if (bias_) { ASSERT_TENSOR_DATA_SANITY(bias_) } +#else + #define AI_LAYER_WEIGHTS_GET(layer_, weights_, bias_) \ + const ai_tensor* weights_ = GET_TENSOR_WEIGHTS((layer_)->tensors, 0); \ + const ai_tensor* bias_ = (GET_TENSOR_LIST_SIZE(GET_TENSOR_LIST_WEIGTHS((layer_)->tensors))>1) \ + ? GET_TENSOR_WEIGHTS((layer_)->tensors, 1) \ + : NULL; \ + +#endif /*HAS_AI_ASSERT*/ + + +AI_API_DECLARE_BEGIN + +/*! + * @defgroup layers_common Layers Common + * @brief Implementation of the common layers datastructures + * This header enumerates the layers specific definition implemented in the + * library toghether with the macros and datatypes used to manipulate them. + */ + +/*! + * @enum ai_layer_type + * @ingroup layers + * @brief ai_tools supported layers type id + */ +typedef enum { +#define LAYER_ENTRY(type_, id_, struct_, forward_func_) \ + AI_LAYER_TYPE_ENTRY(type_) = id_, +#include "layers_list.h" +} ai_layer_type; + +#define AI_LAYER_COMMON_FIELDS_DECLARE \ + AI_NODE_COMMON_FIELDS_DECLARE + +/*! + * @typedef void (*layer_forward_func)(struct ai_layer_* layer) + * @ingroup layers_common + * @brief Callback signatures for all layers forward functions + */ +typedef node_forward_func layer_forward_func; + +/*! + * @struct ai_layer + * @ingroup layers_common + * @brief Structure encoding a layer in the network + * + * The layer struct is an alias for a generic @ref ai_node datastrutcture + */ +typedef ai_node ai_layer; + +/*! + * @struct ai_layer_base + * @ingroup layers_common + * @brief Structure encoding a base layer in the network + * + * The layer_base struct is an alias for a generic @ref ai_layer datastrutcture + */ +typedef ai_layer ai_layer_base; + +/*! + * @brief Check the custom network types against the internally compiled ones + * Helper function to check if the private APIs where compiled with a different + * `datatypes_network.h` than the one provided to the caller. + * @ingroup layers_common + * @param signatures list of type sizes signatures (first element is the number of types) + * @return false if there is a type size mismatch + */ +AI_INTERNAL_API +ai_bool ai_check_custom_types(const ai_custom_type_signature* signatures); + +/*! + * @brief Helper API to retrieve a human readable layer type from enum + * @ingroup layers_common + * @param type in type of layer + * @return string defining the type of the layer + */ +AI_INTERNAL_API +const char* ai_layer_type_name(const ai_layer_type type); + +/*! + * @brief Helper API to check if a node is a valid layer type + * @ingroup layers_common + * @param type in type of layer + * @return true if the layer is one of the ones listed in the enum, + * false otherwise + */ +AI_INTERNAL_API +ai_bool ai_layer_type_is_valid(const ai_layer_type type); + +AI_API_DECLARE_END + +#endif /* __LAYERS_COMMON_H_ */ diff --git a/src/stm32cubeai/AI/Inc/layers_conv2d.h b/src/stm32cubeai/AI/Inc/layers_conv2d.h new file mode 100755 index 000000000..c1d89af66 --- /dev/null +++ b/src/stm32cubeai/AI/Inc/layers_conv2d.h @@ -0,0 +1,170 @@ +/** + ****************************************************************************** + * @file layers_conv2d.h + * @author AST Embedded Analytics Research Platform + * @date 18-Apr-2018 + * @brief header file of AI platform conv2d layers datatypes + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2018 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ +#ifndef __LAYERS_CONV2D_H_ +#define __LAYERS_CONV2D_H_ +#pragma once + +#include "layers_nl.h" +#include "layers_pool.h" + +#define AI_LAYER_CONV2D_FIELDS_DECLARE \ + AI_LAYER_COMMON_FIELDS_DECLARE \ + ai_u32 groups; /*!< groups for separable convolution */ \ + AI_CONST ai_array* nl_params; /*!< array pointer to non linear parameters */ \ + func_nl nl_func; /*!< function pointer to non linear transform */ \ + ai_shape_2d filter_stride; /*!< filter stride, how much the filter moves */ \ + ai_shape_2d dilation; /*!< dilation value along axis of the filter */ \ + ai_shape_nd filter_pad; /*!< filter pad 4d */ + +/*! + * @defgroup layers_conv2d Convolutive Layers Definitions + * @brief definition + * + */ + +AI_API_DECLARE_BEGIN + +/*! + * @struct ai_layer_dense + * @ingroup layers_conv2d + * @brief Dense (fully connected) layer + */ +typedef ai_layer ai_layer_dense; + +/*! + * @struct ai_layer_gemm + * @ingroup layers_conv2d + * @brief layer for General Matrix Multiplication + * + * Layer for General Matrix Multiplication (GEMM): + * \f{equation}{ Y = \alpha A \cdot B + \beta C \f} + * \f$\alpha\f$ and \f$\beta\f$ are paramaters, A and B are matrices, + * C is a matrix or an array. Size checks for A, B, C, and Y are performed and + * broadcast is applied on C if necessary. + * This is a sequential layer (see @ref ai_layer). + */ +typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_gemm_ { + AI_LAYER_COMMON_FIELDS_DECLARE + ai_float alpha; /*!< alpha coefficient */ + ai_float beta; /*!< beta coefficient */ + ai_u8 tA; /*!< transpose A flag */ + ai_u8 tB; /*!< transpose B flag */ +} ai_layer_gemm; + +/*! + * @struct ai_layer_conv2d + * @ingroup layers_conv2d + * @brief 2D convolutional layer with strides and pads + */ +typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_conv2d_ { + AI_LAYER_CONV2D_FIELDS_DECLARE +} ai_layer_conv2d; + +/*! + * @struct ai_layer_conv2d_nl_pool + * @ingroup layers_conv2d + * @brief 2D convolutional layer + nl + pooling with strides and pads + */ +typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_conv2d_nl_pool_ { + AI_LAYER_CONV2D_FIELDS_DECLARE + + ai_shape_2d pool_size; /*!< pooling size */ + ai_shape_2d pool_stride; /*!< pooling stride */ + ai_shape_nd pool_pad; /*!< pooling pad */ + + func_pool pool_func; /*!< function pointer to pooling transform */ +} ai_layer_conv2d_nl_pool; + + +AI_INTERNAL_API +void ai_dict8_dot_array_f32(ai_handle out, ai_ptr_const data0, ai_ptr_const lut, + const ai_float* data1, const ai_size data_size); + +AI_INTERNAL_API +void ai_dict4_dot_array_f32(ai_handle out, ai_ptr_const data0, ai_ptr_const lut, + const ai_float* data1, const ai_size data_size);/******************************************************************************/ +/* Forward Functions Section */ +/******************************************************************************/ + +/*! + * @brief Computes the activations of a 2D convolutional layer. + * @ingroup layers_conv2d + * @param layer the convolutional (conv) layer + */ +AI_INTERNAL_API +void forward_conv2d(ai_layer* layer); + +/*! + * @brief Computes the activations of a @ref ai_layer_conv2d_nl_pool layer + * The @ref ai_layer_conv2d_nl_pool is a fused conv2D + optional nonlinear + * layer + optional pooling / nonlinearity (average, max, softmax) + * @ingroup layers_conv2d + * @param layer see @ai_layer_conv2d_nl_pool + */ +AI_INTERNAL_API +void forward_conv2d_nl_pool(ai_layer* layer); + +/*! + * @brief Computes the activations of a GEMM layer. + * @ingroup layers + * @param layer the layer including output and input tensors + */ +AI_INTERNAL_API +void forward_gemm(ai_layer* layer); + +/*! + * @brief Computes matmul layer, intended as numpy.matmul(A,B). + * @ingroup layers + * @param layer the layer including output and input tensors + */ +AI_INTERNAL_API +void forward_matmul(ai_layer* layer); + +/*! + * @brief Computes the activations of a dense (fully connected) layer. + * @ingroup layers_conv2d + * @param layer the dense layer + */ +AI_INTERNAL_API +void forward_dense(ai_layer* layer); + + +/*! + * @brief Computes the activations of a fixed point 2D convolutional layer. + * @ingroup layers_conv2d + * @param layer the convolutional (conv) layer + */ +AI_INTERNAL_API +void forward_conv2d_fixed(ai_layer *pLayer); + +/*! + * @brief Computes the activations of a fixed point @ref ai_layer_conv2d_nl_pool + * layer. + * The @ref ai_layer_conv2d_nl_pool is a fused conv2D + optional nonlinear + * layer + optional pooling / nonlinearity (average, max) + * @ingroup layers_conv2d + * @param layer see @ai_layer_conv2d_nl_pool + */ +AI_INTERNAL_API +void forward_conv2d_nl_pool_fixed(ai_layer *pLayer); + +AI_API_DECLARE_END + +#endif /*__LAYERS_CONV2D_H_*/ diff --git a/src/stm32cubeai/AI/Inc/layers_dense.h b/src/stm32cubeai/AI/Inc/layers_dense.h new file mode 100755 index 000000000..a67c3f2e9 --- /dev/null +++ b/src/stm32cubeai/AI/Inc/layers_dense.h @@ -0,0 +1,65 @@ +/** + ****************************************************************************** + * @file layers_dense.h + * @author AST Embedded Analytics Research Platform + * @date 18-Apr-2018 + * @brief header file of AI platform dense layers datatypes + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2018 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#ifndef __LAYERS_DENSE_H_ +#define __LAYERS_DENSE_H_ +#pragma once + + +#include "layers_common.h" + + +/*! + * @defgroup layers Normalization Layers Definitions + * @brief definition + * + */ + +AI_API_DECLARE_BEGIN + +/*! + * @brief Computes the activations of a fixed point dense (fully connected) layer. + * @ingroup layers_dense + * @param layer the dense layer + */ +AI_INTERNAL_API +void forward_dense_fixed(ai_layer *pLayer); + +AI_API_DECLARE_END + +#endif /*__LAYERS_DENSE_H_*/ + diff --git a/src/stm32cubeai/AI/Inc/layers_generic.h b/src/stm32cubeai/AI/Inc/layers_generic.h new file mode 100755 index 000000000..e76980076 --- /dev/null +++ b/src/stm32cubeai/AI/Inc/layers_generic.h @@ -0,0 +1,397 @@ + +/** + ****************************************************************************** + * @file layers_generic.h + * @author AST Embedded Analytics Research Platform + * @date 18-Apr-2018 + * @brief header file of AI platform generic layers datatypes + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2018 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ +#ifndef __LAYERS_GENERIC_H_ +#define __LAYERS_GENERIC_H_ +#pragma once + +#include "layers_common.h" + +/*! + * @defgroup layers_generic Generic Layers Definitions + * @brief definition + * + */ + +#define AI_ASSERT_SHAPE_MATCH(x,y) \ + do{\ + AI_ASSERT(AI_SHAPE_H(y) == 1 || AI_SHAPE_H(x)==1 || AI_SHAPE_H(y)==AI_SHAPE_H(x))\ + AI_ASSERT(AI_SHAPE_W(y) == 1 || AI_SHAPE_W(x)==1 || AI_SHAPE_W(y)==AI_SHAPE_W(x))\ + AI_ASSERT(AI_SHAPE_CH(y) == 1 || AI_SHAPE_CH(x)==1|| AI_SHAPE_CH(y)==AI_SHAPE_CH(x))\ + AI_ASSERT(AI_SHAPE_IN_CH(y) == 1 || AI_SHAPE_IN_CH(x)==1|| AI_SHAPE_IN_CH(y)==AI_SHAPE_IN_CH(x))\ + }while(0) + +AI_API_DECLARE_BEGIN + +/*! + * @struct ai_layer_time_delay + * @ingroup layers_generic + * @brief TimeDelay layer with sparse kernel + */ +typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_time_delay_ { + AI_LAYER_COMMON_FIELDS_DECLARE + AI_CONST ai_array* mask; /*!< sparse filter mask */ +} ai_layer_time_delay; + +/*! + * @struct ai_layer_split + * @ingroup layers_generic + * @brief Split layer definition + * + * This layer defines the params of a splitting layer. It is intended to be used + * by his associated forward function @ref forward_split + */ +typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_split_ { + AI_LAYER_COMMON_FIELDS_DECLARE + ai_u16 out_layers_count; /*!< number of output layers to split*/ + ai_u16 out_layer_curr; /*!< current layer to split */ + ai_layer** out_layers; /*!< output layers list */ + ai_tensor** out_tensors; /*!< output tensors list */ + ai_tensor* in_tensor; /*!< input tensor */ + func_copy_tensor copy_to_out_tensor; /*!< pointer to copy tensor func + (NULL = no copy) */ +} ai_layer_split; + +/*! + * @struct ai_layer_topK + * @ingroup layers_generic + * @brief topK layer definition + */ +typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_topK_{ + AI_LAYER_COMMON_FIELDS_DECLARE + ai_i16 axis; + ai_i32 k; +} ai_layer_topK; + + +/*! + * @struct ai_layer_slice + * @ingroup layers_generic + * @brief Slice layer definition + * + * This layer defines the params of a slicing layer. It is intended to be used + * by his associated forward function @ref forward_slice + */ +typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_slice_ { + AI_LAYER_COMMON_FIELDS_DECLARE + AI_CONST ai_array* axes; /*!< Axes that 'starts' and 'ends' apply to. It's optional*/ + AI_CONST ai_array* starts; /*!< Starting indices of corrisponding axis in axes*/ + AI_CONST ai_array* ends; /*!< Ending indices (exclusive) of corrisponding axis in axes*/ +} ai_layer_slice; + +/*! + * @struct ai_layer_transpose + * @ingroup layers_generic + * @brief Transpose layer definition + * + * This layer defines the params of a transpose layer. It is intended to be used + * by his associated forward function @ref forward_transpose + */ +typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_transpose_ { + AI_LAYER_COMMON_FIELDS_DECLARE + ai_array* perm; /*!< Axes permutation order */ +} ai_layer_transpose; + +/*! + * @struct ai_layer_tile + * @ingroup layers generic + * @brief Tile layer definition + * + * This layer defines the param of an tile layer. It constructs a tensor by tiling a + * given tensor. It is intended to be used by its associated forward function + * @ref forward_upsample + */ +typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_tile_{ + AI_LAYER_COMMON_FIELDS_DECLARE + AI_CONST ai_array* repeats; /*!< numbers of repeated copies along each dimension */ +} ai_layer_tile; + +/*! + * @struct ai_layer_upsample + * @ingroup layers generic + * @brief Upsample layer definition + * + * This layer defines the param of an upsampling layer. It overloads its params + * to allow zeros upsampling, helpful traspose convolutions, for instance. + * It is intended to be used by its associated forward function @ref forward_upsample + */ +typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_upsample_{ + AI_LAYER_COMMON_FIELDS_DECLARE + ai_upsample_mode mode; /*!< upsample mode */ + AI_CONST ai_array* scales; /*!< scale array along each dimension */ +} ai_layer_upsample; + +/*! + * @struct ai_layer_instanceNormalization + * @ingroup layers generic + * @brief instance normalization layer definition + * + * This layer defines the params of an instance normalization layer. + * It is intended to be used by its associated forward function @ref forward_instanceNormalization + */ +typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_instanceNormaization_{ + AI_LAYER_COMMON_FIELDS_DECLARE + ai_float eps; /*!< epsilon value, to avoid by zero division */ + AI_CONST ai_array* scale; /*!< scale array */ + AI_CONST ai_array* bias; /*!< bias array */ +} ai_layer_instanceNormalization; + +/*! + * @struct ai_layer_mode + * @ingroup layers generic + * @brief Pad layer definition + * + * This layer defines the param of an pad layer. It pad a tensor. + * It is intended to be used by its associated forward function @ref forward_pad + */ +typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_pad_{ + AI_LAYER_COMMON_FIELDS_DECLARE + ai_pad_mode mode; /*!< pad mode */ + ai_shape_nd pads; /*!< Number of padding to add or remove at the beginning and end of each axis */ + ai_float value; /*!< Indicates the value to be filled */ +} ai_layer_pad; +/*! + * @struct ai_layer_add + * @ingroup layers_generic + * @brief Add layer definition + * + * This layer defines the params of an add layer. + */ +typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_add_ { + AI_LAYER_COMMON_FIELDS_DECLARE + ai_u16 in_layers_count; /*!< number of input layers to concat */ + ai_u16 in_layer_curr; /*!< current layer to concat */ + ai_tensor** in_tensors; /*!< input tensors list (if NULL==no copy) */ + ai_tensor* out_tensor; /*!< output tensor (if NULL==no copy) */ + func_copy_tensor copy_to_out_tensor; /*!< pointer to copy tensor func + (NULL = no copy) */ + ai_layer* split_layer; /*!< pointer to associated split layer */ + ai_layer* next_layer; /*!< pointer to next layer to process */ +} ai_layer_add; + +/*! + * @struct ai_layer_permute + * @ingroup layers_generic + * @brief Permute layer datastruct declaration. This defines the params of a + * permute layer. It is intended to be used by his associated forward function + * @ref forward_permute + */ +typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_permute_ { + AI_LAYER_COMMON_FIELDS_DECLARE + ai_shape out_mapping; /*!< permute output mapping order, i.e. it is a + permutation of the input tensor shape */ +} ai_layer_permute; + + +#define AI_TIME_DISTRIBUTED_AXIS (AI_SHAPE_HEIGHT) + +/*! + * @struct ai_layer_time_distributed + * @ingroup layers_generic + * @brief Time distributed layer datastruct declaration. This defines the params + * of a time distributed layer. It is intended to be used by his associated + * forward function @ref forward_time_distributed + */ +typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_time_distributed_ { + AI_LAYER_COMMON_FIELDS_DECLARE + ai_layer* inner_layer; /*!< inner layer to process */ +} ai_layer_time_distributed; + +/*! + * @struct ai_layer_concat + * @ingroup layers_generic + * @brief Concatenation layer + * + * Concat Layer. + * It is a sequential layer. see @ref ai_layer_sequential + */ +typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_concat_ { + AI_LAYER_COMMON_FIELDS_DECLARE + ai_shape_dimension axis; /*!< which axis to concatenate on */ +} ai_layer_concat; + +typedef ai_float (*func_binary)(const ai_float a, const ai_float b); + +/*! + * @struct ai_layer_eltwise + * @ingroup layers_generic + * @brief General element-wise transformation layer + * + * Elementwise Layer. + * It is a sequential layer. see @ref ai_layer_sequential + */ +typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_eltwise_ { + AI_LAYER_COMMON_FIELDS_DECLARE + func_binary operation; /*!< operation to apply elementwise */ +} ai_layer_eltwise; + +/*! + * @struct ai_layer_reduce + * @ingroup layers_generic + * @brief General dimension reduction layer + * + * reduction Layer. + * It is a sequential layer. see @ref ai_layer_sequential + */ +typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_reduce_ { + AI_LAYER_COMMON_FIELDS_DECLARE + ai_float neutral_value; /*!< Initialization value for operation */ + func_binary operation; /*!< operation to apply elementwise */ +} ai_layer_reduce; + + +/******************************************************************************/ +/* Forward Functions Section */ +/******************************************************************************/ + +/*! + * @brief Computes the activations of a TimeDelay layer. + * @ingroup layers_generic + * @param layer the time delay layer + */ +AI_INTERNAL_API +void forward_time_delay(ai_layer* layer); + +/*! + * @brief Split network computation in N parallel branches. + * @ingroup layers_generic + * @param layer the split layer + */ +AI_INTERNAL_API +void forward_split(ai_layer* layer); + +/*! + * @brief Add network computation from N parallel branches. + * @ingroup layers_generic + * @param layer the add layer + */ +AI_INTERNAL_API +void forward_add(ai_layer* layer); + +/*! + * @brief Permute a tensor along a pivot and save permuted values into an output + * tensor + * @ingroup layers_generic + * @param layer the permute layer + */ +AI_INTERNAL_API +void forward_permute(ai_layer* layer); + +/*! + * @brief TimeDistrubuted forward layer function. This forward function + * implements the timedistributed layer. + * @ingroup layers_generic + * @param layer the time distributed layer + */ +AI_INTERNAL_API +void forward_time_distributed(ai_layer* layer); + + +/*! + * @brief Concatenates a list of tensors into a single tensor. + * @ingroup layers_generic + * @param layer the concatenation layer + */ +AI_INTERNAL_API +void forward_concat(ai_layer* layer); + +/*! + * @brief Slice an input tensors + * @ingroup layers_generic + * @param layer the sliced layer + */ +AI_INTERNAL_API +void forward_slice(ai_layer* layer); + +/*! + * @brief Transpose an input tensor + * @ingroup layers_generic + * @param layer the transposed layer + */ +AI_INTERNAL_API +void forward_transpose(ai_layer* layer); + +/*! + * @brief Tile an input tensors + * @ingroup layers_generic + * @param layer the tiled layer + */ +AI_INTERNAL_API +void forward_tile(ai_layer* layer); + +/*! + * @brief TopK an input tensors + * @ingroup layers_generic + * @param layer the Topked layer + */ +AI_INTERNAL_API +void forward_topK(ai_layer* layer); + +/*! + * @brief Pad an input tensors + * @ingroup layers_generic + * @param layer the pad layer + */ +AI_INTERNAL_API +void forward_pad(ai_layer* layer); + +/*! + * @brief Upsample an input tensors + * @ingroup layers_generic + * @param layer the upsampled layer + */ +AI_INTERNAL_API +void forward_upsample(ai_layer* layer); + +/*! + * @brief Instance Normalization on an input tensors + * @ingroup layers_generic + * @param layer the instance normalization layer + */ +AI_INTERNAL_API +void forward_instanceNormalization(ai_layer* layer); + +/*! + * @brief Hardmax on an input tensors + * @ingroup layers_generic + * @param layer the hardmax layer + */ +AI_INTERNAL_API +void forward_hardmax(ai_layer* layer); + +/*! + * @brief Apply an elementwise transformation to the input tensors + * @ingroup layers_generic + * @param layer the elementwise layer + */ +AI_INTERNAL_API +void forward_eltwise(ai_layer* layer); + +/*! + * @brief Apply a reduce transformation to the input tensors + * @ingroup layers_generic + * @param layer the reduce layer + */ +AI_INTERNAL_API +void forward_reduce(ai_layer* layer); + +AI_API_DECLARE_END + +#endif /*__LAYERS_GENERIC_H_*/ diff --git a/src/stm32cubeai/AI/Inc/layers_list.h b/src/stm32cubeai/AI/Inc/layers_list.h new file mode 100755 index 000000000..b0e0a5762 --- /dev/null +++ b/src/stm32cubeai/AI/Inc/layers_list.h @@ -0,0 +1,92 @@ +/** + ****************************************************************************** + * @file layers_list.h + * @author AST Embedded Analytics Research Platform + * @date 20-Jul-2018 + * @brief header file of AI platform layers datatypes + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2018 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ + + +/* No sentry. This is deliberate!! */ +/* Template: LAYER_ENTRY(type_, id_, struct_, forward_func_) + * Where: + * - type_ is the (enum) type name of the layer. to have the complete enum + * value you should use the macro @ref AI_LAYER_TYPE_ENTRY(type_) that adds + * the specific prefix and postfix tokens to the type_ + * - id_ is the numeric id of the layer + * - struct_ is the name of the datastruct of the layer + * - forward_func_ is the forward function name of the routine implementing + * actual layer processing + */ + +/*!< Elementwise addition layer */ +LAYER_ENTRY(ADD, 10001, ai_layer_add, forward_add) + /*!< Batch normalization layer */ +LAYER_ENTRY(BN, 10002, ai_layer_bn, forward_bn) +/*!< 2D Convolutional layer */ +LAYER_ENTRY(CONV2D, 10004, ai_layer_conv2d, forward_conv2d) +/*!< Dense layer */ +LAYER_ENTRY(DENSE, 10005, ai_layer_dense, forward_dense) +/*!< Gated Recurrent Unit layer */ +LAYER_ENTRY(GRU, 10006, ai_layer_gru, forward_gru) +/*!< Local Response Normalization layer */ +LAYER_ENTRY(LRN, 10007, ai_layer_lrn, forward_lrn) +/*!< Long Short Time Memory layer */ +LAYER_ENTRY(LSTM, 10008, ai_layer_lstm, forward_lstm) +/*!< Nonlinearity layer */ +LAYER_ENTRY(NL, 10009, ai_layer_nl, NULL) +/*!< Normalization layer */ +LAYER_ENTRY(NORM, 10010, ai_layer_norm, forward_norm) +/*!< Merged Conv2d / Pool layer */ +LAYER_ENTRY(OPTIMIZED_CONV2D, 10011, ai_layer_conv2d_nl_pool, forward_conv2d_nl_pool) +/*!< Permute Tensor layer */ +LAYER_ENTRY(PERMUTE, 10012, ai_layer_permute, forward_permute) +/*!< Pooling layer */ +LAYER_ENTRY(POOL, 10013, ai_layer_pool, forward_pool) +/*!< Softmax layer */ +LAYER_ENTRY(SM, 10014, ai_layer_nl, forward_sm) +/*!< Split layer */ +LAYER_ENTRY(SPLIT, 10015, ai_layer_split, forward_split) +/*!< TimeDelay layer */ +LAYER_ENTRY(TIME_DELAY, 10016, ai_layer_time_delay, forward_time_delay) +/*!< TimeDistributed layer */ +LAYER_ENTRY(TIME_DISTRIBUTED, 10017, ai_layer_time_distributed, forward_time_distributed) +/*!< Concat Tensor layer */ +LAYER_ENTRY(CONCAT, 10019, ai_layer_concat, forward_concat) +/*!< GEMM layer */ +LAYER_ENTRY(GEMM, 10020, ai_layer_gemm, forward_gemm) +/*!< Upsample layer */ +LAYER_ENTRY(UPSAMPLE, 10021, ai_layer_upsample, forward_upsample) +/*!< Container layer for eltwise operations */ +LAYER_ENTRY(ELTWISE, 10022, ai_layer_eltwise, forward_eltwise) +/*!< Generic layer */ +LAYER_ENTRY(GENERIC, 10023, ai_layer, NULL) +/*!< InstanceNormalization layer */ +LAYER_ENTRY(INSTANCENORMALIZATION, 10024, ai_layer_instanceNormalization, forward_instanceNormalization) +/*!< Pad layer */ +LAYER_ENTRY(PAD, 10025, ai_layer_pad, forward_pad) +/*!< Slice layer */ +LAYER_ENTRY(SLICE, 10026, ai_layer_slice, forward_slice) +/*!< Tile layer */ +LAYER_ENTRY(TILE, 10027, ai_layer_tile, forward_tile) +/*!< Container layer for reduce operations */ +LAYER_ENTRY(REDUCE, 10028, ai_layer_reduce, forward_reduce) +#ifdef USE_OPERATORS +/*!< Container layer for operators */ +LAYER_ENTRY(CONTAINER, 10003, ai_layer_container, forward_container) +/*!< Container layer for operators */ +LAYER_ENTRY(LAMBDA, 10018, ai_layer_lambda, forward_lambda) +#endif +#undef LAYER_ENTRY diff --git a/src/stm32cubeai/AI/Inc/layers_nl.h b/src/stm32cubeai/AI/Inc/layers_nl.h new file mode 100755 index 000000000..2f857b8db --- /dev/null +++ b/src/stm32cubeai/AI/Inc/layers_nl.h @@ -0,0 +1,491 @@ +/** + ****************************************************************************** + * @file layers_nl.h + * @author AST Embedded Analytics Research Platform + * @date 18-Apr-2018 + * @brief header file of AI platform nonlinearity layers datatypes + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2018 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ +#ifndef __LAYERS_NL_H_ +#define __LAYERS_NL_H_ +#pragma once + +#include "layers_common.h" + +/*! + * @defgroup layers_nl Normalization Layers Definitions + * @brief definition + * + */ + +AI_API_DECLARE_BEGIN + +/*! + * @struct ai_layer_nl + * @ingroup layers_nl + * @brief Generic Nonlinearity layer + * + * The type of nonlinearity is handled by the specific forward function. + * It is a sequential layer. see @ref ai_layer + */ +typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_nl_ { + AI_LAYER_COMMON_FIELDS_DECLARE + AI_CONST ai_array* nl_params; /*!< associated parameters array */ +} ai_layer_nl; + +/*! + * @typedef (*func_nl) + * @ingroup layers_nl + * @brief Fuction pointer for generic non linear transform + * this function pointer abstracts a generic non linear layer. + * see @ref nl_func_tanh_array_f32 and similar as examples. + */ +typedef void (*func_nl)(ai_handle out, const ai_handle in, + const ai_size size, const ai_handle params); + +/*! + * @brief Softmax pooling computed on a single float channel + * @ingroup layers_nl + * @param out opaque handler to float output channel + * @param in opaque handler to float input channel + * @param channel_size number of elements of the input channel + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_sm_channel_f32(ai_handle out, const ai_handle in, + const ai_size channel_size, const ai_handle params); + +/*! + * @brief Softmax normalization computed on an array of float channels + * @ingroup layers_nl + * @param out opaque handler to float output channel array + * @param in opaque handler to float input channel array + * @param in_size total size (number of elements) to process on the input + * @param channel_size number of elements of the input channel + * @param in_channel_step number of elements to move to next input element + * @param out_channel_step number of elements to move to next output element + */ +AI_INTERNAL_API +void nl_func_sm_array_f32(ai_handle out, const ai_handle in, + const ai_size in_size, + const ai_size channel_size, + const ai_size in_channel_step, + const ai_size out_channel_step); + +/*! + * @brief Computes the tanh function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_tanh_array_f32(ai_handle out, const ai_handle in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the tanh function on a fixed point data array + * @ingroup layers_nl + * @param in opaque handler to input elements to process + * @param out opaque handler to output elements + * @param size total size (number of elements) to process on the input + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_tanh_array_fixed(ai_handle out, const ai_handle in, + const ai_size size, const ai_handle params); + + +/*! + * @brief Computes the sigmoid function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_sigmoid_array_f32(ai_handle out, const ai_handle in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the sigmoid function on a fixed point data array + * @ingroup layers_nl + * @param in opaque handler to input elements to process + * @param out opaque handler to output elements + * @param size total size (number of elements) to process on the input + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_sigmoid_array_fixed(ai_handle out, const ai_handle in, + const ai_size size, const ai_handle params); + + +/*! + * @brief Computes the hard sigmoid function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_hard_sigmoid_array_f32(ai_handle out, const ai_handle in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the exponential function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_exp_array_f32(ai_handle out, const ai_handle in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the square root function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_sqrt_array_f32(ai_handle out, const ai_handle in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the soft plus function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + */ +AI_INTERNAL_API +void nl_func_soft_plus_array_f32(ai_handle out, const ai_handle in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the soft sign function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_soft_sign_array_f32(ai_handle out, const ai_handle in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the sign function on a single float element. + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + */ +AI_INTERNAL_API +void nl_func_sign_array_f32(ai_handle out, const ai_handle in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the clip function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_clip_array_f32(ai_handle out, const ai_handle in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the hardmax function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param axis direction of the max index to be searched + */ +AI_INTERNAL_API +void nl_func_hardmax_array_f32(ai_handle out, const ai_handle in, + const ai_shape *shape, const ai_handle params); + +/*! + * @brief Computes the generic relu function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_relu_generic_array_f32(ai_handle out, const ai_handle in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the thresholded relu function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_relu_thresholded_array_f32(ai_handle out, const ai_handle in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the relu function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_relu_array_f32(ai_handle out, const ai_handle in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the relu function on a fixed point data array + * @ingroup layers_nl + * @param in opaque handler to input elements to process + * @param out opaque handler to output elements + * @param size total size (number of elements) to process on the input + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_relu_array_fixed(ai_handle out, const ai_handle in, + const ai_size size, const ai_handle params); + + +/*! + * @brief Computes the elu function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_elu_array_f32(ai_handle out, const ai_handle in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the max relu function on a fixed point data array + * @ingroup layers_nl + * @param in opaque handler to input elements to process + * @param out opaque handler to output elements + * @param size total size (number of elements) to process on the input + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_relu_max_array_fixed(ai_handle out, const ai_handle in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the selu function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_selu_array_f32(ai_handle out, const ai_handle in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the prelu function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param slope opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size size of the input data in bytes + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_prelu_array_f32(ai_handle out, const ai_handle in, + const ai_size size, const ai_handle params); + + +/******************************************************************************/ +/** Forward Functions Section **/ +/******************************************************************************/ + +/*! + * @brief Computes the activations of a ReLU nonlinear layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_relu(ai_layer* layer); + +/*! + * @brief Computes the activations of a fixed point ReLU nonlinear layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_relu_fixed(ai_layer *pLayer); + + +/*! + * @brief Computes the activations of a ReLU6 nonlinear layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_relu_thresholded(ai_layer* layer); + +/*! + * @brief Computes the activations of a fixed point max ReLU layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_relu_max_fixed(ai_layer *pLayer); + + +/*! + * @brief Computes the activations of a ELU nonlinear layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_elu(ai_layer* layer); + +/*! + * @brief Computes the activations of a SELU nonlinear layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_selu(ai_layer* layer); + +/*! + * @brief Computes the activations of a PRELU nonlinear layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_prelu(ai_layer* layer); + +/*! + * @brief Computes the activations of a binary tanh (sign) nonlinear layer. + * @ingroup layers + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_sign(ai_layer* layer); + +/*! + * @brief Computes the activations of a clip nonlinear layer. + * @ingroup layers + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_clip(ai_layer* layer); + +/*! + * @brief Computes the activations of a sigmoid nonlinear layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_sigmoid(ai_layer* layer); + +/*! + * @brief Computes the activations of a fixed point sigmoid nonlinear layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_sigmoid_fixed(ai_layer *pLayer); + + +/*! + * @brief Computes the activations of a hard sigmoid nonlinear layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_hard_sigmoid(ai_layer* layer); + +/*! + * @brief Computes the activations of an exponential nonlinear layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_exp(ai_layer* layer); + +/*! + * @brief Computes the activations of an square root nonlinear layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_sqrt(ai_layer* layer); + +/*! + * @brief Computes the activations of a soft plus nonlinear layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_soft_plus(ai_layer* layer); + +/*! + * @brief Computes the activations of a soft sign nonlinear layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_soft_sign(ai_layer* layer); + +/*! + * @brief Computes the activations of a hyperbolic tangent (tanh) layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_tanh(ai_layer* layer); + +/*! + * @brief Computes the activations of a fixed point tanh nonlinear layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_tanh_fixed(ai_layer *pLayer); + + +/*! + * @brief Computes the activations of a softmax nonlinear layer. + * @ingroup layers_nl + * @param layer the softmax (sm) layer + */ +AI_INTERNAL_API +void forward_sm(ai_layer* layer); + + +AI_API_DECLARE_END + +#endif /*__LAYERS_NL_H_*/ diff --git a/src/stm32cubeai/AI/Inc/layers_norm.h b/src/stm32cubeai/AI/Inc/layers_norm.h new file mode 100755 index 000000000..c326eb710 --- /dev/null +++ b/src/stm32cubeai/AI/Inc/layers_norm.h @@ -0,0 +1,150 @@ +/** + ****************************************************************************** + * @file layers_norm.h + * @author AST Embedded Analytics Research Platform + * @date 18-Apr-2018 + * @brief header file of AI platform normalization layers datatypes + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2018 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ +#ifndef __LAYERS_NORM_H_ +#define __LAYERS_NORM_H_ +#pragma once + +#include "layers_common.h" + +/*! + * @defgroup layers_norm Normalization Layers Definitions + * @brief definition + * + */ + +AI_API_DECLARE_BEGIN + +/*! + * @struct ai_layer_bn + * @ingroup layers_norm + * @brief Batch normalization (scale with bias) layer + */ +typedef ai_layer ai_layer_bn; + +/*! + * @struct ai_layer_lrn + * @ingroup layers_norm + * @brief Local Response Normalization layer + * + * Divides each element by a scale factor computed + */ +typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_lrn_ { + AI_LAYER_COMMON_FIELDS_DECLARE + ai_u32 local_size; /*!< size of the normalization window */ + ai_float k; /*!< bias term */ + ai_float alpha; /*!< input scale */ + ai_float beta; /*!< scale exponent */ +} ai_layer_lrn; + +/*! + * @struct ai_layer_norm + * @ingroup layers_norm + * @brief Lp Normalization layer + * + * Normalizes the tensor along the 'axis' direction using the Lp norm. + * Optionally divides the result by the number of the elements. + */ +typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_norm_ { + AI_LAYER_COMMON_FIELDS_DECLARE + ai_shape_type axis; /*! normalization axis */ + ai_float exponent; /*!< normalization exponent p */ + ai_bool scale; /*!< multiplies by the pth root of the number of elements */ +} ai_layer_norm; + + +/*! + * @brief Local response normalization computed on a float array + * @ingroup layers_norm + * @param out opaque handler to float output channel + * @param in opaque handler to float input channel + * @param pad amount of padding for the channels + */ +AI_INTERNAL_API +void func_lrn_array_f32(ai_handle out, const ai_handle in, + const ai_size in_size, const ai_size channel_size, + const ai_i32 pad, const ai_float k, + const ai_float alpha, const ai_float beta); + +/*! + * @brief Lp normalization computed on a float array + * @ingroup layers_norm + * @param out opaque handler to float output channel + * @param in opaque handler to float input channel + * @param exponent p exponent for the Lp normalization + * @param axis_stride stride (in array elements) of the normalization axis + * @param axis_size size of the normalization axis + * @param outer_size number of tensor slices (including the normalization axis) + * on which compute the normalization + */ +AI_INTERNAL_API +void func_norm_array_f32(ai_handle out, const ai_handle in, + const ai_float exponent, + const ai_float norm, + const ai_size axis_stride, + const ai_size axis_size, + const ai_size outer_size); + +/*! + * @brief Fast L2 normalization computed on a float array + * @ingroup layers_norm + * @param out opaque handler to float output channel + * @param in opaque handler to float input channel + * @param axis_size size of the normalization axis + * @param n_el total number of elements in the tensor + */ +AI_INTERNAL_API +void func_norm_l2_fast_array_f32(ai_handle out, const ai_handle in, + const ai_float norm, + const ai_size axis_size, + const ai_size outer_size); + + +/******************************************************************************/ +/* Forward Functions Section */ +/******************************************************************************/ + +/*! + * @brief Computes the activations of a batchnorm (scale + bias) layer. + * @ingroup layers_norm + * @param layer the batch normalization (bn) layer + */ +AI_INTERNAL_API +void forward_bn(ai_layer* layer); + +/*! + * @brief Computes the activations of a Local Response Normalization Layer. + * @ingroup layers_norm + * @param layer the local response normalization (lrn) layer + */ +AI_INTERNAL_API +void forward_lrn(ai_layer* layer); + +/*! + * @brief Computes the activations of a normalization layer. + * @ingroup layers_norm + * @param layer the normalization (norm) layer + */ +AI_INTERNAL_API +void forward_norm(ai_layer* layer); + + +AI_API_DECLARE_END + +#endif /*__LAYERS_NORM_H_*/ diff --git a/src/stm32cubeai/AI/Inc/layers_pool.h b/src/stm32cubeai/AI/Inc/layers_pool.h new file mode 100755 index 000000000..53ca02add --- /dev/null +++ b/src/stm32cubeai/AI/Inc/layers_pool.h @@ -0,0 +1,217 @@ +/** + ****************************************************************************** + * @file layers_pool.h + * @author AST Embedded Analytics Research Platform + * @date 18-Apr-2018 + * @brief header file of AI platform pooling layers datatypes + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2018 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ +#ifndef __LAYERS_POOL_H_ +#define __LAYERS_POOL_H_ +#pragma once + +#include "layers_common.h" + +/*! + * @defgroup layers_pool Pooling Layers Definitions + * @brief definition + * + */ + +AI_API_DECLARE_BEGIN + +/*! + * @struct ai_layer_pool + * @ingroup layers_pool + * @brief Pooling layer + * + * The type of pooling function is handled by the specific forward function + * @ref forward_pool + */ +typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_pool_ { + AI_LAYER_COMMON_FIELDS_DECLARE + ai_shape_2d pool_size; /*!< pooling size */ + ai_shape_2d pool_stride; /*!< pooling stride */ + ai_shape_nd pool_pad; /*!< pooling pad, y,x border sizes */ + ai_u8 count_include_pad; /*!< include pad flag */ +} ai_layer_pool; + + +/*! + * @typedef (*func_pool) + * @ingroup layers_pool + * @brief Fuction pointer for generic pooling transform + * this function pointer abstracts a generic pooling layer. + * see @ref pool_func_ap_array_f32 as examples + */ +typedef void (*func_pool)(ai_handle in, + const ai_u16 dim_im_in_x, const ai_u16 dim_im_in_y, + const ai_u16 ch_im_in, + const ai_u16 dim_kernel_x, const ai_u16 dim_kernel_y, + const ai_u16 padding_x, const ai_u16 padding_y, + const ai_u16 stride_x, const ai_u16 stride_y, + const ai_u16 dim_im_out_x, const ai_u16 dim_im_out_y, + ai_handle out); + +/*! + * @brief Max Pooling on a float data array + * @ingroup layers_pool + * @param in opaque handler to input data to process + * @param dim_im_in_x input feature map width + * @param dim_im_in_y input feature map height + * @param ch_im_in number of input channels + * @param dim_kernel_x kernel width + * @param dim_kernel_y kernel height + * @param padding_x right padding value + * @param padding_y top padding value + * @param stride_x stride value on x dimension + * @param stride_y stride value on y dimension + * @param dim_im_out_x output feature map width + * @param dim_im_out_y output feature map height + * @param out opaque handler to scratch memory + * @param out opaque handler to output data + */ +AI_INTERNAL_API +void pool_func_mp_array_f32(ai_handle in, + const ai_u16 dim_im_in_x, const ai_u16 dim_im_in_y, + const ai_u16 ch_im_in, + const ai_u16 dim_kernel_x, const ai_u16 dim_kernel_y, + const ai_u16 padding_x, const ai_u16 padding_y, + const ai_u16 stride_x, const ai_u16 stride_y, + const ai_u16 dim_im_out_x, const ai_u16 dim_im_out_y, + ai_handle out); + +/*! + * @brief Max Pooling on a 8/16 bits fixed point data array + * @ingroup layers_pool + * @param in opaque handler to input data to process + * @param dim_im_in_x input feature map width + * @param dim_im_in_y input feature map height + * @param ch_im_in number of input channels + * @param dim_kernel_x kernel width + * @param dim_kernel_y kernel height + * @param padding_x right padding value + * @param padding_y top padding value + * @param stride_x stride value on x dimension + * @param stride_y stride value on y dimension + * @param dim_im_out_x output feature map width + * @param dim_im_out_y output feature map height + * @param out opaque handler to output data + */ +AI_INTERNAL_API +void pool_func_mp_array_fixed(ai_handle in, + const ai_u16 dim_im_in_x, const ai_u16 dim_im_in_y, + const ai_u16 ch_im_in, + const ai_u16 dim_kernel_x, const ai_u16 dim_kernel_y, + const ai_u16 padding_x, const ai_u16 padding_y, + const ai_u16 stride_x, const ai_u16 stride_y, + const ai_u16 dim_im_out_x, const ai_u16 dim_im_out_y, + ai_handle out); + +/*! + * @brief Average Pooling on a float data array + * @ingroup layers_pool + * @param in opaque handler to input data to process + * @param dim_im_in_x input feature map width + * @param dim_im_in_y input feature map height + * @param ch_im_in number of input channels + * @param dim_kernel_x kernel width + * @param dim_kernel_y kernel height + * @param padding_x right padding value + * @param padding_y top padding value + * @param stride_x stride value on x dimension + * @param stride_y stride value on y dimension + * @param dim_im_out_x output feature map width + * @param dim_im_out_y output feature map height + * @param out opaque handler to scratch memory + */ +AI_INTERNAL_API +void pool_func_ap_array_f32(ai_handle in, + const ai_u16 dim_im_in_x, const ai_u16 dim_im_in_y, + const ai_u16 ch_im_in, + const ai_u16 dim_kernel_x, const ai_u16 dim_kernel_y, + const ai_u16 padding_x, const ai_u16 padding_y, + const ai_u16 stride_x, const ai_u16 stride_y, + const ai_u16 dim_im_out_x, const ai_u16 dim_im_out_y, + ai_handle out); + + +/*! + * @brief Average Pooling on a 8/16 bits fixed point data array + * @ingroup layers_pool + * @param in opaque handler to input data to process + * @param dim_im_in_x input feature map width + * @param dim_im_in_y input feature map height + * @param ch_im_in number of input channels + * @param dim_kernel_x kernel width + * @param dim_kernel_y kernel height + * @param padding_x right padding value + * @param padding_y top padding value + * @param stride_x stride value on x dimension + * @param stride_y stride value on y dimension + * @param dim_im_out_x output feature map width + * @param dim_im_out_y output feature map height + * @param out opaque handler to scratch memory + */ +AI_INTERNAL_API +void pool_func_ap_array_fixed(ai_handle in, + const ai_u16 dim_im_in_x, const ai_u16 dim_im_in_y, + const ai_u16 ch_im_in, + const ai_u16 dim_kernel_x, const ai_u16 dim_kernel_y, + const ai_u16 padding_x, const ai_u16 padding_y, + const ai_u16 stride_x, const ai_u16 stride_y, + const ai_u16 dim_im_out_x, const ai_u16 dim_im_out_y, + ai_handle out); + + +/******************************************************************************/ +/* Forward Functions Section */ +/******************************************************************************/ + +/*! + * @brief Computes the activations of a max pooling layer. + * @ingroup layers_pool + * @param layer the pooling (pool) layer + */ +AI_INTERNAL_API +void forward_mp(ai_layer* layer); + +/*! + * @brief Computes the activations of a fixed point max pooling layer. + * @ingroup layers_pool + * @param layer the pooling (pool) layer + */ +AI_INTERNAL_API +void forward_mp_fixed(ai_layer *pLayer); + + +/*! + * @brief Computes the activations of an average pooling layer. + * @ingroup layers_pool + * @param layer the pooling (pool) layer + */ +AI_INTERNAL_API +void forward_ap(ai_layer* layer); + +/*! + * @brief Computes the activations of a fixed point average pooling layer. + * @ingroup layers_pool + * @param layer the pooling (pool) layer + */ +AI_INTERNAL_API +void forward_ap_fixed(ai_layer *pLayer); + +AI_API_DECLARE_END + +#endif /*__LAYERS_POOL_H_*/ diff --git a/src/stm32cubeai/AI/Inc/layers_rnn.h b/src/stm32cubeai/AI/Inc/layers_rnn.h new file mode 100755 index 000000000..6098628ca --- /dev/null +++ b/src/stm32cubeai/AI/Inc/layers_rnn.h @@ -0,0 +1,110 @@ +/** + ****************************************************************************** + * @file layers_rnn.h + * @author AST Embedded Analytics Research Platform + * @date 18-May-2018 + * @brief header file of RNN layers + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2018 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ +#ifndef __LAYERS_RNN_H_ +#define __LAYERS_RNN_H_ +#pragma once + +#include "layers_common.h" + +AI_API_DECLARE_BEGIN + +/*! + * @struct ai_layer_lstm + * @ingroup layers + * @brief LSTM layer with generic nonlinearities and peephole connections + */ +typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_lstm_ { + AI_LAYER_COMMON_FIELDS_DECLARE + ai_size n_units; /**< size of the hidden RNN state */ + func_nl_el activation_nl; /**< activation nonlinearity (input to cell) */ + func_nl_el recurrent_nl; /**< recurrent nonlinearity (hidden to cell) */ + func_nl_el out_nl; /**< output nonlinearity (cell to hidden) */ + ai_bool go_backwards; /**< process reversed input */ + ai_bool reverse_seq; /**< reverse output sequence */ +} ai_layer_lstm; + + +/*! + * @struct ai_layer_gru + * @ingroup layers + * @brief Gated Recurrent Unit (GRU) layer with generic nonlinearities + */ +typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_gru_ { + AI_LAYER_COMMON_FIELDS_DECLARE + ai_size n_units; /**< size of the hidden RNN state */ + func_nl_el activation_nl; /**< activation nonlinearity (input to cell) */ + func_nl_el recurrent_nl; /**< recurrent nonlinearity (hidden to cell) */ + ai_bool reset_after; + ai_bool go_backwards; /**< process reversed input */ + ai_bool reverse_seq; /**< reverse output sequence */ +} ai_layer_gru; + +/*! + * @brief Computes the activations of a Long-Short Term Memory (LSTM) layer. + * @ingroup layers + * + * Implements a Long-Short Term Layer with peephole connections: + * \f{eqnarray*}{ + * i_t &=& \sigma_a(x_t W_{xi} + h_{t-1} W_{hi} + * + w_{ci} \odot c_{t-1} + b_i)\\ + * f_t &=& \sigma_a(x_t W_{xf} + h_{t-1} W_{hf} + * + w_{cf} \odot c_{t-1} + b_f)\\ + * c_t &=& f_t \odot c_{t - 1} + * + i_t \odot \sigma_r(x_t W_{xc} + h_{t-1} W_{hc} + b_c)\\ + * o_t &=& \sigma_a(x_t W_{xo} + h_{t-1} W_{ho} + w_{co} \odot c_t + b_o)\\ + * h_t &=& o_t \odot \sigma_o(c_t) + * \f} + * where \f$\sigma_a\f$ is the activation nonlinearity, \f$\sigma_r\f$ is the + * recurrent nonlinearity and \f$\sigma_o\f$ is the out nonlinearity. The + * \f$W_x\f$, \f$W_h\f$ and \f$W_c\f$ weights are sliced from the kernel, + * recurrent and peephole weights. + * + * @param layer the LSTM layer + */ +AI_INTERNAL_API +void forward_lstm(ai_layer * layer); + +/*! + * @brief Computes the activations of a Gated Recurrent Unit (GRU) layer. + * @ingroup layers + * + * Implements a Gated Recurrent Unit with the formula: + * \f{eqnarray*}{ + * r_t &=& \sigma_a(x_t W_{xr} + h_{t - 1} W_{hr} + b_r) \\ + * z_t &=& \sigma_a(x_t W_{xz} + h_{t - 1} W_{hz} + b_z) \\ + * c_t &=& \sigma_r(x_t W_{xc} + r_t \odot (h_{t - 1} W_{hc} + b_{hc}) + b_c) + * \qquad \textnormal{when reset after is true} \\ + * c_t &=& \sigma_r(x_t W_{xc} + (r_t \odot h_{t - 1}) W_{hc} + b_{hc} + b_c) + * \qquad \textnormal{when reset after is false (default)} \\ + * h_t &=& (1 - z_t) \odot h_{t - 1} + z_t \odot c_t + * \f} + * where \f$\sigma_a\f$ is the activation nonlinearity and \f$\sigma_r\f$ is + * the recurrent nonlinearity. The weights are sliced from the kernel and + * recurrent weights. + * + * @param layer the GRU layer + */ +AI_INTERNAL_API +void forward_gru(ai_layer * layer); + + +AI_API_DECLARE_END + +#endif /* __LAYERS_RNN_H_ */ diff --git a/src/stm32cubeai/AI/Inc/layers_sm.h b/src/stm32cubeai/AI/Inc/layers_sm.h new file mode 100755 index 000000000..d39cf930e --- /dev/null +++ b/src/stm32cubeai/AI/Inc/layers_sm.h @@ -0,0 +1,80 @@ +/** + ****************************************************************************** + * @file layers_sm.h + * @author AST Embedded Analytics Research Platform + * @date 18-Apr-2018 + * @brief header file of AI platform non softmax layer datatype + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2018 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#ifndef __LAYERS_SM_H_ +#define __LAYERS_SM_H_ +#pragma once + +#include "layers_common.h" + +/*! + * @defgroup layers SoftMax Layer Definitions + * @brief definition + * + */ + +AI_API_DECLARE_BEGIN + +/*! + * @brief Softmax normalization computed on an array of fixed point channels + * @ingroup layers_sm + * @param out opaque handler to output channel array + * @param in opaque handler to input channel array + * @param in_size total size (number of elements) to process on the input + * @param channel_size number of elements of the input channel + * @param in_channel_step number of elements to move to next input element + * @param out_channel_step number of elements to move to next output element + */ +AI_INTERNAL_API +void sm_func_sm_array_fixed(ai_handle out, const ai_handle in, + const ai_size in_size, + const ai_size channel_size, + const ai_size in_channel_step, + const ai_size out_channel_step); + +/*! + * @brief Computes the activations of a fixed point softmax nonlinear layer. + * @ingroup layers_sm + * @param layer the softmax (sm) layer + */ +AI_INTERNAL_API +void forward_sm_fixed(ai_layer *pLayer); + +AI_API_DECLARE_END + +#endif /*__LAYERS_SM_H_*/ + diff --git a/src/stm32cubeai/AI/Lib/NetworkRuntime400_CM7_GCC.a b/src/stm32cubeai/AI/Lib/NetworkRuntime400_CM7_GCC.a new file mode 100755 index 0000000000000000000000000000000000000000..3a3a70b0f5d5bdafa8b2235c969b485b0d61c245 GIT binary patch literal 412942 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

t6IxID2yj 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 literal 0 HcmV?d00001 diff --git a/src/stm32cubeai/LICENSE b/src/stm32cubeai/LICENSE new file mode 100755 index 000000000..95545969e --- /dev/null +++ b/src/stm32cubeai/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) STMicroelectronics + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE diff --git a/src/stm32cubeai/Makefile b/src/stm32cubeai/Makefile new file mode 100755 index 000000000..4e33d4f38 --- /dev/null +++ b/src/stm32cubeai/Makefile @@ -0,0 +1,63 @@ +# This file is part of the OpenMV project. +# +# Copyright (c) 2019 STMicroelectronics +# +# This work is licensed under the MIT license, see the file LICENSE for details. + +# Directories +CFLAGS_STNN = -IAI/Inc/ +CFLAGS_STNN += -Idata/ +CFLAGS_STNN += -I/ +CFLAGS_STNN := $(CFLAGS) $(CFLAGS_STNN) + +#Sources +SRCS += $(addprefix ../cmsis/src/dsp/BasicMathFunctions/,\ + arm_shift_q7.c \ + arm_shift_q15.c \ + arm_dot_prod_f32.c \ +) + +SRCS += $(addprefix ../cmsis/src/dsp/SupportFunctions/,\ + arm_float_to_q7.c \ + arm_float_to_q15.c \ + arm_q7_to_float.c \ + arm_q15_to_float.c \ + arm_q7_to_q15.c \ + arm_q15_to_q7.c \ + ) + +#CONV_FUNCTION = $(wildcard ../cmsis/src/nn/ConvolutionFunctions/*.o) +#FIRM_OBJ := $(filter-out $(CONV_FUNCTION),$(FIRM_OBJ)) + +SRCS += $(addprefix ,\ + py_st_nn.c \ + nn_st.c \ + ) + +SRCS += $(addprefix data/,\ + network_data.c \ + network.c \ + ) + +# CRC is needed for cubeai to work +SRCS += $(addprefix ../sthal/h7/src/,\ + stm32h7xx_hal_crc.c \ + stm32h7xx_hal_crc_ex.c \ + ) + +OBJS = $(addprefix $(BUILD)/, $(SRCS:.c=.o)) +OBJ_DIRS = $(sort $(dir $(OBJS))) + +all: | $(OBJ_DIRS) $(OBJS) +$(OBJ_DIRS): + $(MKDIR) -p $@ + +$(BUILD)/%.o : %.c + $(ECHO) "CC $<" + $(CC) $(CFLAGS_STNN) -c -o $@ $< + +$(BUILD)/%.o : %.s + $(ECHO) "AS $<" + $(AS) $(AFLAGS) $< -o $@ + +-include $(OBJS:%.o=%.d) diff --git a/src/stm32cubeai/Readme.md b/src/stm32cubeai/Readme.md new file mode 100755 index 000000000..1b1c26e73 --- /dev/null +++ b/src/stm32cubeai/Readme.md @@ -0,0 +1,235 @@ +# CUBE.AI enabled OpenMV firmware + +This package provides the source code for compiling the OpenMV H7 firmware with STM32Cube.AI enabled. + +It is a modified version of the official OpenMV firmware enabling Cube.AI optimized neural networks for STM32 targets. + +The process for using Cube.AI with OpenMV is described in the following figure. + +![Process to use Cube.AI with OpenMV](imgs/openmv_cubeai.png) + +Starting from a trained network model, such as a *.h5 saved model* from Keras, Cube.AI will generate the optimized C code for STM32. The generated files need to be copied into this project, then the firmware should be compiled using the GNU ARM Toolchain. Finally, the binary has to be flashed onto the OpenMV target using STM32CubeProgrammer and the user will be able to program the board using microPython and call the neural network prediction function. + +## Requirements + +> Note: It is recommended to use Linux to build the firmware. Even if it is still possible to do it with Windows, you may run into some issues, for example because of symbolic links in the project. If you're on Windows, you can use [Windows Subsystem for Linux (WSL)](https://docs.microsoft.com/en-us/windows/wsl/install-win10), it will provide a full Linux environnement and the compilation will be painless. + +- stm32ai command line to generate the optimized code. [Download from ST website]( https://www.st.com/en/embedded-software/x-cube-ai.html) + +If you have the extension already enabled in Cube.MX, just add + `/STM32Cube/Repository/Packs/STMicroelectronics/X-CUBE-AI//Utilities//` +to your PATH +Else, unzip the archive from the ST website, extract the .pack file (it's actually a zip archive), and add `Utilities/` to your path. + +- GNU Arm Toolchain Version 7-2018-q2 to compile the firmware. [Download from ARM website](https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads) + +For Linux users, extract the archive somewhere and add `gcc-arm-none-eabi-7-2018-q2-update/bin/` to your path. Make sure `arm-none-eabi-gcc` points to the location of the installation. + +For Windows users, at the end of the setup wizard, check the box *Add path to environnement variable* in order to be able to call `arm-none-eabi-gcc` from MinGW. + +- Python 3. Can be installed using [Anaconda](https://www.anaconda.com). Make sure that when you type `python` in your shell, python 3.x.x is called. If not, add it manually to your path. + +- OpenMV IDE to develop microPython. [Download form OpenMV website](https://openmv.io/pages/download) + +### For Windows only + +- MinGW is required to provide a Linux-like environnement. [Download here](https://sourceforge.net/projects/mingw/) + +At the end of the setup wizard, check the `mingw32-base` and `msys-base` boxes then click `Installation > Apply Changes`. + +To start the shell, double-click `C:\MINGW\msys\1.0\msys.bat` + +> Every subsequent command shown in this document should be run in MinGW shell. Note that in MinGW the `C:\` directory is located in `/c/` +> **Important note for Windows users:** It's recommended to do the compilation in the C:\ directory directly as the compilation might fail if the path to the object files is too long (`CreateProcess` has a limit of 32k characters). Moreover, be extra careful with symbolic links present in the project. + +## Step 1 - Generate the code for the network + +### Code generation + +The Convolutional Neural Network for digit classification (MNIST) from Keras will be use as an example. If you want to train the network, you need to have Keras installed. + +Go to `src/stm32cubeai/example`. + +To train the network and save the model to disk, run + +```python +python mnist_cnn.py +``` + +You can skip this step and use the pre-trained `mnist_cnn.h5` file provided. + +Using the stm32ai command line tool, generate the code + +```bash +stm32ai generate -m mnist_cnn.h5 +``` + +The following files will be generated in `stm32ai_output`: + +- `network.h` +- `network.c` +- `network_data.h` +- `network_data.c` + +Copy the files to `src/stm32cubeai/data/` + +### Preprocessing + +If you need to do some special preprocessing before running the inference, you should modify the function `ai_transform_input` located into `src/stm32cubeai/nn_st.c` . +By default, the code does the following: + +- Simple resizing (subsampling) +- Conversion from unsigned char to float +- Scaling pixels from [0,255] to [0, 1] + +The provided example might just work out of the box, but you may want to take a look at this function. + +> Note: The preprocessing for a neural network quantized with Qmn quantization scheme is provided as a commented section of this function. To use quantized network please refer to the [documentation of Cube.AI](https://www.st.com/en/embedded-software/x-cube-ai.html) + +## Step 2 - Compile + +Before compiling, please check the version of the gcc arm toolchain by running : +`arm-none-eabi-gcc --version` +The output should be : +`arm-none-eabi-gcc (GNU Tools for Arm Embedded Processors 7-2018-q2-update)` + +if it's not, please make sure you installed it and that it is in you PATH. + +Check that there are no spaces in the path of the current directory, `make` will fail. You can check by running `pwd` . If there are some spaces, move this directory to a path with no spaces. + +Once this is done, execute : + +```bash +cd src +make CUBEAI=1 +``` + +> Note: This may take a while, you can speed up the process by adding -j4 or more (depending on your CPU) to the make command, but it can be the right time to take a coffee +> Troubleshooting: +> If the compilation fails with a message saying that the .heap section overflows RAM1, you can edit the file `src/omv/boards/OPENMV4/omv_boardconfig.h` and lower the OMV_HEAP_SIZE by a few kilobytes and try to build again. Run `make clean` between builds. +> On Windows, if the compilation fails, it might be a problem of symbolic link. You can check if the file `src/micropython/lib/berekely-db-1.xx/PORT/include/db.h` is a valid `.symlink` file. If not, make sure that symbolic links are enabled on your installation, delete the directory and start from scratch. +> Another issue on windows comes form the 32k character limit of the CreateProcess function. If the path to the object files is too long, the compilation will fail, that's why it's recommended to work in `C:\` + +## Step 4 - Flash the firmware + +Plug the OpenMV camera to the computer using a micro-USB to USB cable. + +Open OpenMV IDE. From the toolbar select `Tools > Run Bootloader`. Select the firmware file, it will be located in `src/build/bin/firmware.bin`. Follow the instructions. Once this is done, you can click the *Connect* icon on the bottom left of the icon. + +## Step 5 - Program with microPython + +Open OpenMV IDE, and click the *Connect* button on the bottom-right side. + +You can start from this sample code, running the MNIST example we used bellow (The code is provided as `sample_script.py` in this directory) + +```python +# STM32 CUBE.AI on OpenMV MNIST Example + +import sensor, image, time, nn_st + +sensor.reset() # Reset and initialize the sensor. +sensor.set_contrast(3) +sensor.set_brightness(0) +sensor.set_auto_gain(True) +sensor.set_auto_exposure(False, exposure_us=700) +sensor.set_pixformat(sensor.GRAYSCALE) # Set pixel format to Grayscale +sensor.set_framesize(sensor.QQVGA) # Set frame size to 160x120 +sensor.skip_frames(time = 2000) # Wait for settings take effect. +clock = time.clock() # Create a clock object to track the FPS. + +# [CUBE.AI] Initialize the network +net = nn_st.loadnnst('network') + +nn_input_sz = 28 # The NN input is 28x28 + +while(True): + clock.tick() # Update the FPS clock. + img = sensor.snapshot() # Take a picture and return the image. + + # Crop in the middle (avoids vignetting) + img.crop((img.width()//2-nn_input_sz//2, + img.height()//2-nn_input_sz//2, + nn_input_sz, + nn_input_sz)) + + # Cleanup image and binarize it (you may uptade the theshold) + img.histeq(adaptive=True, clip_limit=2).binary([(0,180)]) + + # [CUBE.AI] Run the inference + out = net.predict(img) + print('Network argmax output: {}'.format( out.index(max(out)) )) + img.draw_string(0, 0, str(out.index(max(out)))) + print('FPS {}'.format(clock.fps())) # Note: OpenMV Cam runs about half as fast when connected + +``` + +The code should yield the following output: + +![Output from camera](imgs/mnist_output.gif) + +--- + +## Documentation of microPython CUBE.AI wrapper + +### loadnnst + +```python +nn_st.loadnnst(network_name) +``` + +Initialize the network named `network_name` + +Arguments: + +- `network_name` : String, usually `'network'` + +Returns: + +- A network object, used to make predictions + +Example: + +```python +import nn_st +net = nn_set.loadnnst('network') +``` + +### predict + +```python +out = net.predict(img) +``` + +Runs a network prediction with img as input + +Arguments: + +- `img` : Image object, from the image module of nn\_st. Usually taken from `sensor.snapshot()` + +Returns: + +- Network predictions as an python list + +Example: + +```python +import sensor, image, nn_st + +# Init the sensor +sensor.reset() +sensor.set_pixformat(sensor.RGB565) +sensor.set_framesize(sensor.QVGA) + +# Init the network +net = nn_st.loadnnst('network') + +# Capture a frame +img = sensor.snapshot() + +# Do the prediction +output = net.predict(img) +``` + +## License information + +This software is under MIT License. See LICENSE file for more information. diff --git a/src/stm32cubeai/cube.mk b/src/stm32cubeai/cube.mk new file mode 100755 index 000000000..dea0e57a8 --- /dev/null +++ b/src/stm32cubeai/cube.mk @@ -0,0 +1,28 @@ +# This file is part of the OpenMV project. +# +# Copyright (c) 2019 STMicroelectronics +# +# This work is licensed under the MIT license, see the file LICENSE for details. + +# Overwrite OMV_QSTR_DEFS +OMV_QSTR_DEFS = $(TOP_DIR)/stm32cubeai/qstrdefscubeai.h + + +#CFLAGS += '-DMP_CONFIGFILE=<$(TOP_DIR)/stm32cubeai/mpconfigportcubeai.h>' +# Ugly way to make it work on Windows +CFLAGS += '-DMP_CONFIGFILE=<../../../stm32cubeai/mpconfigportcubeai.h>' + +FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/BasicMathFunctions/*.o) +FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/SupportFunctions/*.o) + +FIRM_OBJ += $(addprefix $(BUILD)/stm32cubeai/data/,\ + network.o \ + network_data.o \ + ) + +FIRM_OBJ += $(addprefix $(BUILD)/stm32cubeai/,\ + nn_st.o \ + py_st_nn.o \ + ) + +FIRM_OBJ += -l:NetworkRuntime400_CM7_GCC.a -Lstm32cubeai/AI/Lib -lc -lm diff --git a/src/stm32cubeai/example/.keras/keras.json b/src/stm32cubeai/example/.keras/keras.json new file mode 100755 index 000000000..bbcd1084a --- /dev/null +++ b/src/stm32cubeai/example/.keras/keras.json @@ -0,0 +1,6 @@ +{ + "floatx": "float32", + "image_data_format": "channels_last", + "backend": "tensorflow", + "epsilon": 1e-07 +} \ No newline at end of file diff --git a/src/stm32cubeai/example/mnist_cnn.h5 b/src/stm32cubeai/example/mnist_cnn.h5 new file mode 100755 index 0000000000000000000000000000000000000000..d69186bbb092ebb519a857a2a128af56f30f7482 GIT binary patch literal 456728 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℞TRUEaejXr_K_IkBW8)S#x>GWEt}}#)@86J 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%0DX0&nF)7V4o?Oc{M4O6ep^OU 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

g|{f=QmBnwj8edwM80&MrOKg3Hl67E!( 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 z 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%0Ay`zGMBE!fZ9MeL^Ucb8f(; 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 z z{gLsXj>Vtd6ZnS~F2o{YE@<2)ulJB8x=Pm~bCo|dbT44^QBA&n9d$e$RE71eR<^sV z82ndt%xw93?4y1DdP{HQq~2l!rl&F1|05J8hhv+|5p>O??>61xKYJ`jdT2bN6eICu zeFWl)bD7DyjaYqWJS04;pe9;~8B22T?c5z!NjuK>iYHJSxEESnB?`o6@IUV>LH|qQ z#E7&Yv#o}$Nr}UZ-sM>Ni`X7Nk3dwz5I5-esT8=NMd~cZEh@l|pagslvc{>sIjnK3 z4b~h#iU`?Sto{-PF|8-~dpQO^)o<80)uY&wk${gIvXSpy1O3W+wCd#If=msjd2hmX zz1xT>5#zs(OGZrbJcwUO#d(`$2mf^B6VyA>9)_LzzZfUw0;M_CY(Cwo&M2#JzMV!$^09;Q&`N||y3OLAEx_2t ziAX0F{#)%rtjGgWZF~{eaTE_XlUp$CEVeIkf<>Vg)*g6-z`;B??tIUdI($d_A`{r$ z$b;3YCD@=83t8bKXz{#;p$}1TyLtuY>Cy;j)TTU?K5S-LLv6=cIP2zeT_MsCBW-F- z-6E!GupQ1qjP#K!2zy$KikoZjEBOf|h7*~|Q(-vI$s^XZ7crKJ0U4%`wGWdqVnfgK zf*+J&IFEr#aj3si%T>EQgbH;9O8h03D`h_3`9z~@q!u~v!EYyjoLs5ML-bGZP zxR1E`MZqv!>4zh%K=t{&bB5EJI4LaWQpa9E`z2ehN0F zzsCApPu%`i4e52nh!2#wyR|^tJu}(tiOmEkL_SIa1dLz`B49r4t&p6VWM^g z0`?TZL)8|8^Y&rn9(fk>TG$koshImsi)miH#v1L5*b3F(%x&@)mRCF;0$c_p>b+t0 z>NZ9Ox*--9%4^v1k5jx)-4z~VkVhGfCCd(RJewM9?@7Xd3h63Ev(WqBcih`FiOFcL zMzBf_jtXQkl?B%5aDK$PJ^o`qP|gD6S`cpamUCQ0Sz3o21P%Vx8hX1HCo7k+tqS@q zDqIhXth_L;GoI~`)5Q8Sq}!yYVL87F{lqwok)r2TyE{9i{}^w^h(r8&G?ppVK#*mz z@yd7EyJ`nwt$xMn{iA3PLUS>l!^=YxQS-Bky}B4dY#SakIJpxlp5s|dgBInkoT-Cy zId$an*v6>6uxeAoQClO(tY}4VsR`!l{ldEqn&?!RgDHQB!@XV?PySisqJgG>XV$y&NC<$C&FlJ9g-jl%%6f21=n%*R2;_ic(Z4- zmC>-M3{#Ge=S%6GWBOMqGuS1|UQCIE)1{5v^9WVAeI&1iS~hm95`ZdsaYp>8N7QWt z9)Ev~F@_5vArb?*#2npHnp0Qu0sKZLqD@$e$e zWMugptbBC{M^gTSQ0a5*sR)Au=^Or0yKtp$KYibWA@np9&RsLuD(PVA0^f}~=U6z0 z7(#q7nrHH|k+;*cP%BnNlQpQ{@Y#kK+2ZjC*A~H$10TCh zZSmHk9Qwb>|9`O>9$w@jT*>%*?5?6?zW`2UOY$#J|77m(HcZz_!K*VPICi5C!>=Bq z^=T?xvnWz!{q6E82FLp z{;yBNU@RMbtD9GU-H92@ro85~Q@mq-9(a*b&b5+%Pk!!FRy{CID?O39}VxyYs&N>iFANxd^YDHM6-ld`PBSrvy_7nCb6 zWhhuij8k+@PZb;WtXHb-c4BnXQX_!ua3vV~?GLnnpWTkdJ!4 zm^PMvAHd7nd+ZQ-wUVDoLd~}oAIH2wrF|5u7A0NP+nmif9m@uMCHM!%EmNpVsrQopMKzgmmZcGPh}^F(QI>aJbW&j!}3=IX1db6G|3Se z6N6z|kdAO=nsGkspmXMVn7q6S5qobaD0m=fbpqB-BsQhYM))-~U_&8s4kFYr@E{K# zhjoY{+kjv{7Z^!2V~LJA>C9m$4;#zxd?Cu`oRYy`Y=9xD7p%X)7oBtDSL>85s(>-dNu2uVgQ<;OEHovO`tWYUUe^XWw<$~g?ic#Y>L5|24#S;Kq1FC|lOqpM zt&AbE>3-B-yBY1Y16r$1{K49B)XnmOxxX2~x0$7gZB0h@ry7{gw!qQYMF>u${zREP zEGZM?PYfBwZxxY6Y5F5}aO4uEekfv_4>VEMXE!R1((ouahpD~ahMsTxa7{g$asi~( z1)OHpo}qNc9m5=xO?W(W6ZlpcOkq(r9)I}75|o^0N>*eh#!XkAE#_9O@J7G-iz{T=byCkzuV zrQlt14qm*NPd-yWw0?62j%`Ft-41j*T|;GcDrlO;nlk|i*8j&sOcUYps2eNiHW541 z3=NOUsoQWDc_`^SpWubX%^lR!HyfRC}Qx!eZ;bVd&`{`P11D8CqQ&xm5_s#dNg>LUBK^f-nu z9)r=t(>OLZfg9}K$DU7(VP=j`+2o$Q@*0xwUrIlP+!5z5!NBL6jv+V z@#EEWtP)v(XXH0gI=d8II)lt>^c;v>r1`VS3a2)VaF!OiaIcZXj!17**ss9?Za!X1 z%qAY?H8zIt1f}Rg7)Z~+@VVX0IOzzpr@qOsNFgSXa|buXrEwr=JZ@Y}!HHi&Fxe-7 zVLMMY_Ur+?*piI$T$(?%jk&10c2>O2n_Jga!S+*6n#bx5nEE9K(=K&!SL6ON&ry8t z)3j|Ys=Jeg*&k;wba!!QRC>7CzCV~|@jPa%ki#`ROoU$}F(}v4yd`r94}&LQZEiUm zc~pgkUeoyYTaV#RTnVbP67b-!J64r8;JvOJeI^cKlJ#+nJe^PM$>+?;LlcH`Lr^j4 zCyS9vM=t69$@|<8noAtsh$`6kPi8lK>cC%g6?I?I@u6QAlcrKP)D9C&KS+JL8h4n% zy$lwRGaJV*0Vdj#C~&ky_huVn-ddyNPb?hQ<>KiT2Sn7YKt6T5Yi^l}9c_c`)HOA1 zV%ON>d08+zI~#@7VfdoC3Tsx$V(n5B7L}?G#s6iy6J&@XTeq$o^@2Fx^ix{l*9k6J&3OI^{E_<1M@F&PJL;ZP-w#G8-y|0_%(Rqa2zHdK60MTyO2vdmFDGK zd{9jWH$M@%hc2=yvN_Xg@h72Qv)}5Mo!(gol1mhPetOi%%oKA`rW` zPUinGT#G!zI6NjzXt{eKZhiMc+4c%3@axc$AW6QuUI>gkh+V3bAGCVJyxxoPqi!t4 zrP+6pcQ7Bz^OA63!6HmK*oH?RuR=l37~%z%SYY9S9j;@s;`(vi;pMQ!l^~5Q7Q@!D z5PR!~>*u%PLvkuUOgF)$mzxpqM9kdmWVkFM?Qiy8_@7clN}e!r+9Qz}u@<9tL?Xgw z9%l61#RTmf_Vy3ua!)%TFZD1s3JcR`KMVWw6OsJf5VB%X7~DzPLGD*3Rb+`%Kjtx^ zhEQB2Z>7OB@)EivW5KjY44tz_Bk3_`Ty$|FUKK6GA$OrW$_-Z!+JYs(ZK^y*)euAZ z9WiWOR-*B9FSpI(3brMgLulhOOj2Egucd)FJNZ3zS{=n?V#wD&I0J`IciFckikNdZ z1hdyvz-kAvmafbsHr8{k4}m{ z;?51)UEvl4&SHb-M7hwWznrpkHZQa_mGgc*ihGxl!Firur=>M8jyrL#gBQOtiyQKt z%tbfoa=x!)v`%UrhB@)OHfwn?&M+UFgc_0Pa*W;ELfP?&^~jlAggvuD@a^JRxK?Q5 zsD?NM{icCg-NxHSX{Pz}5@keU@k6Kx>n}7T>js1E66%%}oXlU}^cljdF2bN;CyW=q zg`Y@>rW~3EHlu;7Q*}$OKRy$X5lN zRu*S=Ld)=R+6o*h9f!9w_rp|74SFLhAf%p$2mv)1Jda>e>!^$E;wC7Je#VZ!8D_cf z_OgBSc@>(~%H}tYRNkE^s;~ zQOwTK8{3wovy8XP@Veq5;`Wl)cF$eBSrrbOr(Mty7Q(gBxzOn-M(}}^#1(gi#kNK) z_)Naw3LV@RX@_uDEUdn*N6L?du)Q{(e`ei%CMf+0YPsyXZAmUjxO zuMaDvp1Gnt({n)a+NoV?O25^W_Su!Iu69@@^6AD$Rrzh*3QuR9R^0IRl;R897}c`H zf^r?hHHri6VKWO1MynP*5>g&e6jHSNEG%rOU7%PLc~xzd=eltt@6?r&VlSwSd3Qou ztBm&QJ@wGfxrqUZBT&>dLjD*r_N$k2_i;&hsP91@d?Vc6(g9Vs z!^Nf%E*6onOxg|Wk0FRx%*0QxLgbQP^}s86+zU;Ewq-QLj<@2g&~eC||HjhEf4ycn z0R?LU*}j%@c(ZlE{}=;oTz@g;Uq9g7ikW;(i8Q1vT93g|_1u4(mJsJ<5Hg7E?Cw*kIu4N*@y8`Xu@;h>a#~*W%wBJbBwoyAo3p7D!1GWh3OCGW;*K#;_~r|x{GmDf_cNIu=1oo6#jF8*WNaS-WiR*QAV)O zKZ?yu$m6K4CG89<|8z6!2Y;|2X@m(DzhVF5kccP+V$#!BOt{P$zdOc5#bPNE?|x%7G&2Ql ze1q=#Zv1jh#LP9sT1d~tN8UBKn)Fd7do=Asybz|lf*5&jc<&pJ-%;5(lR6Wgqp26Y z+kkr5uQ0931F$Q!$L(E8XjVx^>f99e^p`O9g&MHOwSj2K8V_yfLc9<9#N-Yx!9sH? zN=x@fZ02QX72iUH^h!2-y@5O(@mO;!5%)$J(EaZg-t|$YMddu@%AUc9?xnIax!Be> z3+3-($rCynX`Yv1=uW?mqn!DzZRk!cVm_8tz*S9DyzIcESy8CoD#zDO(#6EYlPEb+ zj+jr`h*Qpk!_r0w1eKsWLjdVcf!Ijij#=Vi+_@qP?6P>kPE@^T)ixG5x6cYuMq8lO zOI_w?REWd)jT0HiM}KKKYdDyOic&{Bb1sGLwpq9;`HHL34n^Af3HX|lhMXhvaHU<5 zrW);~LiVG28|nUOm8`Zh366C^Sogjd^NtF_lKklb#J4FeZD5ye)}f{L7NgA}=iae_ zIbQ*qV{*8jt4R<%D2dt@7tB;w;O1Va;F@#8IVFkHOm#S#rN1)9>&FR@u=Hg$n~$)E zR)$RP_;D_Als5GsHnU~Te|ZjKs$6J61bg$)p50+q+?yLunCOT-R!{xK9zS}E!AJA3 zGvp?l(YOF#sLamSj67RHWBHP;#b}k%!TiPJ_)Ynl;OnnN5wjxZn-Czfh~59-g#{|H zIM6&5UuK;~>PC7$&N$*&^d8)P;1AhRI*^gABkoEf_&W7CAaI%uy$FXGy$_Akk7D2Y z?<`Qml5JYt$IKi^7qqHnZT%rAR?os&;X0Vf&^g}d3a4*nC|qmA9c{eMo&-zcxPS}X zMfO5DMh8;%iTL+S98MAyq=Q&v^Zs%S=RIU!UJc;N&y5IkH-x(`M9iHq53$EZ@TP7vT3ol{l7TMHfH;5a$3bHGemI?& ziy>P_MEJWvb51LZpPz>69sz9a`^&w0bR9)C1uXycWURl{%;^V{Khih@TO(*+-Amb9 zH&1Li?oQchZ#>TT#Z2pPSlPy?U(Kh#$<%^A9(JjnadOnki-#a1)$Wxx#Co^Q~*Aq+p=T(CL$5q!wQ zZ^x@fV0s>eja$*a!5EMEl@O&l_rj-9kXo_|hzLjZ-#7SZ7|B-WIiP#$eWpEO3RYe{f-gC* z*cJ~@JiJy5`P3ljYz)HJ^QL&4Dh)%)GR8Z(5`M=Gpwv+U!*~7=JM#u-Ze-w`pAZ&l zitvq17ofG+4R3R&BhjD|Uyns2ZPr1QDel8{adDIuWZ|Vk2V|oX@QSC6f4^1WrwBl^V{WV)o8t}aL74h_S*K@-A z^*P7EH13&HEU(Q@ms3?%WJ>?OaOwx^uSzfvxz7q(XR}?S zZ4kX-Ax!#=@a#k=4jPZ)CieHRQ#O=a|3H7XUK~%z$)7T$R>UJ>?7rVJ7XSGSr)d(y zo>lAN$4&vpZ*zgf`B&(wI*n0mf|f+IQNNQ5^_|W62`Y%kPp8U?-Gy27%A#u*v@_){XdJibMf+xJP4WQ56fC zF9YAS98|x*!}9FSV4F|hn{*c#l!Pna_6U<#{<}+Y|EL7{?&KyVso*xb4Rij<+C7>j zEg;61|4+Yq&iNAs;%{PZDpdt3%l1}Yn@$@)rOwe7v)pxFD9zWDoVd24U*Uf~AFa!c z3Mw&2WX*18Dg9~^ogFB@P40g`@3bgT$U6FXPO!Y8l3sYT%KW}D$}g8Kp4DFS5+CT^ zY*#XlTuQT0>vag8qhdMvJR?|UnLzpNal{K!U#53C8~xusi2Tu@KDlqq)kTNza9$P) zn?rDE>ujuhZil16i!hTIfeVO{JakZu-;tq*JX3Y_j4fdA)N?UvW*jOX`?2YVkD}9M zGaRpu#YN(QEUj)s56v7;`4^Djn2pM1d@l4=D9Xz-V7@U2UOxr+okOEAV~{ezDKa?a zE`SzA+O^W0XIbcqM=!}=N!nEDqAgl_v_FNt&k%;!dazrhk$fIg!Q9pq;`97_2e z?K_F{ztn8S7=Drq^~Kx9Aw}L4>OQAo zbSQ}RWJY6P-Uu5xa2r_r0d7a8<5eu>AZdSSUS9~0s{4pv8jrcXx8bIrhRh@$+A5B7 z>Q+1P<@hLwxiw;;#Y*G~o`pa4^>o^s;MSU892_UZ&wRNTZ;(^_Jp*I&WTU#Z|1siDJH9=;w0 z#EQ{{_)eO2jfnkZ)`HGc#jGL33d%Q?@Qyede&Mccx@{L{v*R37JeYyPoB*a-8b-Xu zIFwEJ3dgb3b4GJv{k(P@xah-e^|Hd9iRKs-IgFsoc96N=1n(`>C6n)o|4g%>71)3% zsr#t$-icep>eCE808`T5PBj+Ly-OGY2jehPK8t$C&tb~&Wk^(dQ8q0I8buE{nT^T7-qIkpWJ8s`wyY`Vk%#dcvRNJ+54g|hOuTJP$99I)i2M$f0A=?O(zKp z<0kN%60Tu#X*nj_-GoFwDw6 z4y9gm%sMp-T6=u(s^vJ+eS(qGEQ`#VRrr(|is^^Eu{bjuKl=jkK6@Jf$NsVSV($kx zSqZ3zjp7GCEyA=tw4Wt^-ou~Q*?3Pu=+o@eJ)B0qaaU|~dWjy|=^IEBXNk0!s_B=p zC9xhhpH3s!%ojHw&E)3jWfJe>8*9{c!M2=ae6F`Zm%TKCm#N~l67ejXi|O+_9`%p? z;34&n+q_d9H)x;!B`OBXj+((~#a8%}S4-6=gsmi>&;F1Dl)W*A>IpT3W#;@pqh4l# zIgINcKr=)W-_wWg4!&o`h?f9o$}h3Fh224t=v1;%>$|cE@KAJT%;4v1<;Nh@D{dH;FUz zz?2irZpLSa(~#6`WTAX9HtnV&3l*4%#I0_ei8>!?E`Qne-31s<=tE(73_FqE&vXw9 zBVyHY^g0wF>U}eDY71~;!9vL9(kw_ibF!E+G$ua4h?zG=dG)gHx;!|EJ%%5#bRUi6 zLum!&kLJ0d{dpMnETwyd5cN<`3&pz&e;*rz5q1pYSTZJ@pNFY=8?h_C z2786+-}rP1%8zJZ`bKHWJjt*(l;QetbTl@kWwKe5MDTV{l)tg06f>`{#XL3DS` z9BD%xuon13*^x}tZ%Id-M>AVnMSk(S^We}>f^#ET2>WP@jXv?1K>o99-Pd52x|q1% zluKN(fbVPOim4V-aHt=|-X;y?ED2-ZCarN_HJYY?{HoOWw2AxF> zNPJli@w+!^&JV@7%PshRQJC*a`wP8*lQ3(3iqIs|Xy;kt`L{$2?iIw^{-O7$!&eydEX;kgNFep)jNgve3UjXEOLbFl62zM zrKED@@eSPh=A*ooUhlMO4wUjFc{<##`_a66yC?F#9A3z4xG|XLZjD)ADA1{17xnb+X2qr|7+ziB%J)U?__Gmop6c^|xQb_&^s9o)hJVw>RUP_8IWz zyu+)Wi7dz03H!sIK~B*Z8|4#_&CDR-qRV%T(;^Qb`G`C>@jWJvV6MD7woSN)js<5h zw2;o&i3Nz2`45$a^ZDi5n#dnkg-ib}C++bToEA~9+8Y@J{-Lg2sZ8vwJ>vKxC;*SNQhX_xj;1fsI5KS#oW6gB zgq;LlJkDZ*jisnQkpiRljflF`fo$0WI7hyf+NVEp{kaHVUh)hk%umO+{!6eMy`J5p zb68+XEqwGd@Q(ao7r*Pz%5`X-hX7*#uC|FzmVPk)5Ajs?qbp1?_^hk?eNzcJ05e`huXCc2s zIvV^XSKw+Pf!&)zF_gWGEvqxb$3bOW=S%SoY1h=GxCRmqCz+_#F70M!>>-B7zDpg)3+LMh?s@v z$+I}+mJQ|iwqZRqG4U5^^dev3y3mv|*u)H*wieUKD|+%*2CFpIV6ofBBWk+~deUdG zsO-zI+hR-INX2mJJ4acC(|9F5ia+vqG?V;cg_>i!ICLxn#`_Y9(ISiXp?z=rcuVsB6IuE(@zO{a_tEi9h!~F#`pOJNMsFX7tM&T4v5z zxIzjmMiVn=Wj`hkmD-2>uw3aW9V0{b>oL$mj0gya*ExfP4EzL5 zaU-t^>fM@<>%NPo)}5HWGziYSAF%VwI^pd74w7Zrm~n79@=d5`XLuNI1CBCbiF;5Q zy%f)Hj^clN;*Fc63vS#=`rd9~zP@%a^}@cx%)1wmo0x)I#wQ?9xdd_s8`u^7O<1le z47KyL!#`pTgD3H@>*^;qjuqZtZNZ7E2sri~LiQNqIheN~KCzUtoVW1f)N=^i3c=%2 zG@jQ+!%Ug{D$i0-;p+=`nv+koKVaKxDbGuH!>XJLHe8d>vZZN9@_r^HZtlQ(i>dq} z;(`4gD*>g~k<iDF-kMVpfHx?S(1-0X7??pySS8W`6Vk z7&`B`9@{XAYp1QHBGN*;=RQ}82o*}1AuCi?C_=It+EW^oU5XYd6(N!`Qc;R{trVe9 zwygL5TOU-v=YFpHT<3g`GF{TuC#{94w74Umh6YZjA&;DSXYCP8f5vmIpDSS0q-}M> z?-V6OPol!+M0#+-nl7$bM`66j<2vVLNrv@O-NReBH(Q!;9pfac)Gt74=7*Cqa8U1v%cPIo_UBC6f-xGX%K+ zWikza&93Uk(?A^$+IL@vX1-ZTYYyz7EA?Vl>yPiHRYS^Y!ss3v`#PCwHTQECNCNF% zUqn+|`OI{`hC-&@rBUZL@NU&lbiz;C>cKG14Rl*crr#P!+TsSK*cH*Y7u*Z5y__DU zXj;AJ45D4VPBb|tg914VEH^TYvYy_d#1%1gvABv(KD|wK3J2ILx3kQL_ky$NNJy^{ z!MqI*S=JpDB;?sJ`CJ2RFj0onuGviBeY_HnbTKSSm36Utrtjj2$ztZFRls~wve{*cSd3bD1RuwbM$qs~HfdWP-WPm^N{}HA_guiy-D&IsXA1t@ z_M6F7Ohrx97-(jCG1r!3EG;<(*UTO8MQ=Lhe+Xb3>wdC~#p{{)s)H>2qZ+iL*9kQ= z89LkkGAU;TCO$x(&u})_TYs2^7g{5K%P#caXkvvnP0Y#W9ZPDjV((7R!vVWD?Dy(? zOfP*6eVbNHu78W8{PVs4@@JTMnNXv%GDWbf=q-|?afufobK?p+-BaN(?G6UM)%?$|DDH`3tAXgmj{V^ zaU65n31uM?aur`NFw`C+%f7N$y*L=1wt`>rB}5EV$Ei6gw7o(Lzn(gy`*JIG-HJv~ zv@y-Qo5ilpE@DHqWmvo9M*OMy%7(wa!%|J_g(anKLPM?z{C-K`;}FKceIbG4zC ztU#CjyV@+|HQRz}ZnB#*-?H1qzbxDiPZjojPZhqH4P>KMi7|r@e=K#soWPAm5yFbC z7unV7N>;{aLMM$RmU_B`jXfMMlpOYD=`u|$%lIhUE^5rq50$sb>_`$GkN?H4-*sW9 zACF;mQBu%$dL_u{Z({!yE3%|{6PWq!!-CF%PUcWDh`oGx#M19bxo~mEc9vkAL?uVcJ%%89ZQ@ag4QYwS>fIWxUEb#uR7RG2!$S z_DN|FboMyoXX<(uG&Y&}IYe5%7?{jvY@fwCe(NCHJ_t4iJxuP~HOmRMS1djMYBKpp z$%4V7I;OZ&lbPO}i?i2~1iu{>?4|u!cn=F>GrM;{XTB+FZ)LGZ^Q3V(;4Qndp@BV~ zbWZST8x8--Ml9G?5mBqY+{!+8cH#Td zIl|L`U#!+W8b<9S;d~&99e>ctc)K`z@N^SfFlY$0jo+~SPO&hs&qjXCFj{s)l!DJ( zfk^p%xa?|!GT7v8yZy_u4mF1u=b>UyQsZbpA&+>rl1YuZFw(!@}Sg`y# zP&iRzAc*fsf}{B)`d)e+VUOhKw3s+OnKzOGX(xJLIzjc9Jf&Lb)4!M|OtL?L(-lf+ zTzdgK#h&4B$v#~8`Vo^_8ju_M5+zQ)=nYN9g5&P+nrER9r7A0HC^E| z(}-T&>%#FrA0hWW3VU5_@L*~KB3!1S;Kd5ud{B*hbN#6#YCR?X8bD>+@8QAQozVRt zMtTb}vEXMnI*xHIZTAD=_Q<=eQ!GU=TpPn4%P(Tnr49+c?lFSionoP-T@)i1>}1A6 zq*zE#7AttQpZ)NXW6tsage-$SY}}a$;c9!l5Ip&#U?Ltbta5qG4*JKjP07>P5i33B zy!Vcv{y>FwRw*#b(P8%cf>`dbVD?H?fnIUH@Y4NF_?tJMMo$|}CDU|B$MOeK^{-<7 z#9;bY%Q^7o$`u`a_I}$FR&DfwRWQ9H7QtosX^~$Ai@uHBkjONIJ?R4Ir|*m{5k@+ z0|KSwh-2>O=a_!(9fnRHLW4FJqWbe3WGy|5?M*qb++l;W=kBtZ3)f;n&1C$WBu|yy z87x#+hP*TFNO#ORT(;20M9ym1wdWWfDViX?YzGc;&3(Mz9Yhz3i`?{=Nh4))Po(f zHO4*8`d#u%5owW??0u&!yrT>_Q?wVi&m4ee%_Urj4?tFYCayRo!bQV^^CF6o^Eg|W z!FRp?HO5$48(XpFGueVj+Nchp3 zWO4EMZ?lT~N=*L3K#TtKg~I$hUY4uA)(Jm6qlItHM}=!1XN0von=BTOy>9tuwy5Rg zmU8pvw(r7@rclA(J`8J{-LXtt12JR7Nz>FDl9dMdz*&KZBi(sE^8mJJBxCF_HOz`S zi_yB@g_H}cP<81a>t*W5nwy9X7hKVJ@Gtutw}7?n9)>6PT|vk5P|rQ6d&2i4<4!pX zo!rOHja!6w;%nhkydUW!Q!(A)A};+NhKVW%(D-H-ev4ZpZ{8sM`tE_SXGhTHwH;cQ zb>RAM1*GkNTiyzK$DF@kVl5x}nXu*(@-_^HrbjIco+QgIzkJ5_Ui4(DwU*ev-<{<> zNr}Pi`D;XFP@d%U&GKIfBIx4&r`Y2MmTsf_pv@e(Eyx z=Qf~whaaZRd4_^c2|5uQf}Wg1P`vh*_5OPXrIClBURDIh+udx8Xa+`bKiL=VsoUoC z2I5g)@M3-mY%^c*8Oogc8u#KqpZjo&NyUqsx>!9oo{gKe6PssiLQGK=R})>>o{R15 z)|4=~%lRU*VGj!!>j`0wrDdLF8S{>g6g0&YFtBYdlD2O{YV$WCcG*v%JZc7;R0g51 zWE@jh^NWSB`9CH%%o2wO-T|FXw$$3+W)bgZZ;`UwUD#;- z(!#{9*-X43+(IFu$28X|+EQ!l0E-mE03mI!l)0h(3d=8kr!Br2=2(mlT5e%ra?f)0 zqmvdXVH3@z=O$PVYuRlnXZY7*P{;|(ElV>^ds4$JH;+^lD(w8sMQ1)Un%FA%gwmcr3Z8A^H^y1iS>*~sb+>?^sqH}r#=aT7T(07z00utwI`hRy@1?^ zrPw#v6uB>sBX{E%v=0f#!$wUAmCa1OCL9hMf1$^JHt)@o<=!?G`kP{mwR3J`W^5Hw z9+qRb^Axh3_Ymcs5ApU-22_(yVb@sRAslo9pY7Ce=0Y?oho8l~>L=JTYc`He-;BM> z;*e$4jM!z9QL)|&k(~2V@i7@6H~1p|lsu+3R)gg&f>5&+P9|s3_PrHd{VT9%ff24% z|3hsX_k0+v!;Kv6FZ zA`&IcBY71LYURS_sxtly`iYy|yLjWN7ksxDGOyxrG&d}TeZqH)cAJHn+y7wX7*#mm z7AKGMY9!Q@V^2vDL@i{gyjX`8=$KJUrvlv>J)cyLMUt=hVyeBTO#`(I=={VmO5CJL z_xT=vtNsu&{lTBzVq-e-unziKpYTRblWQ<~wAis6#sAGEMehmpV#N^}YwAQF?@E%+ zkDm}}oJ=d~SJU`RS-R1uPfiI_@$PCclr=q=?xJBBrTUY#1}LLr&M0gR9K@FNZ^6Nh zVt8?EG&YC5Wd|Nd3O2=7a1QJe(l@7LT#^#Twk4zgUb9f*yMkHym9Zf*W7)r1=Imiy zo3QlE6Lgo&XS2IaVcNO|p(lnQv%(k&-V#(6BS&Y$J!wDRtN(O44&RmbBvPIM*_?4u zNI!x_2R%r<|2Xo;p2PlsPjKp-E@5yTY#gMp`O6BYR~I|qJK+Mp5e9@(za6yG98tr4}jHhB=uI6IJT)PIJ< z`*$E`UD{u_g?9QXQ;Am&9Dga}%Gy*QqYf=H&*AO$07Es^X|m{V1nj8AVf6%zH8&u& z2h*rKN`+Kg6zD@_CQK~kN$P7Jj`QD->3P1BntK%yb1p;d`T)}ZBtorMyAWpb2x3hy z@MOYG{8Q}39^N(Z^v`X)4IE6HNS&VlxP{NlPh4jihQfeal#)D4g&bAL?~o7_a= zby52Apcq$HNzgC_?mZ1Zgcs#X6xE%J%Zj3$zr6vjy?W&4;7hGX6e(B1n!cZ0Oesz- zypM4hHO`$xM-N`2&z;BVX0IWceNm;R{;v?fK7_nPT*xJ8Hq7!{b(XAwnm{G?1lH@WY*Uzu*MWi)GnG}WJspqXKV z$gAtls%Y%?g>8ZiAXZ)OqO8d9z7(*<*_))1~&VVA*5Y%pyNB7RjS@)#@T(a z$rXc3jVBURXR(t_U6{IJI+`w8;@0i?Sow4gCK>a4;3Fx7IB%tqYwMZQ(*4-vSBi=J zoQ(GxfjQcvC~OCxzse$@Rj?Xfrcp?ZszhBV&vI#mV!ez8tkv~};*JU|SM*2H?nbCe ze8Z!KGPL1t0oxm#$7aY`!dF>^9iLVRN39tU4Ze#BRq}Z1k&B_X9%9V3mDqN71WkM! zg>NTQc~`wS&Ddvx&F{kSRO=)<<_EGgpS}3AuAhm-mZSBEG8Wd(g^xlycE;Yoqo+OW zS`KF;Y+r|RtJ5rTVLd*NbYK(q$k3?ZYuI&@votdN*{i?-XwF;#6m+u_S3Y59a|)^! zHe>90-aB1vNy2>%8k01eb4|=CdJFfn>UW^~l^y+iHHyA;6jJuk{bZ&bOfOSLQ^jFl zy7GG@y>ru`N1neh?@&CxcvR7a+b^JBn?-l6&eCNmEi2IwS8}TwO!oJ<=RoHlIv<6T zwVfL&mX4>CQz2||unqfSv4d5KRI|Qc!_lZ1!K^mwS&Z^6v)p&^n{dG~m#zN$L>N)~ zOHe7_BfME(&LXwbEyl*(6Xg2DasAgswt8X~dv(mtGAr%?6Fs()C9wr;(6?ku%R|4I z-@CPfi-foEUjxDDLXO~c$QVA~e?ZJJktW_=KsB0bG_8)aPj6_@6vH88GVv1*zvsQK zpNi;muM)lF-T~(f6S{nAC4GDtNBxoyDdAHwWO}Cau3~EnJoE&uuEVH&67Sv$UO^u& zPav0ul_WRn2Ru$~p&2)>;!D(2@=*ySt(OBi7sZ0_*S|yOkOG-n`_S!XZTeIH73W8$ zKxgDy^7fxbCe4O4>EmFYS)57kxQT+y@m#Owxy?B>=;^)g zj-!G+Z8~{Ypc_L(DZ5mc!W7Nv`=S(VXtAWH{Bv|iKMUFx`Isdk2D8*vtoCdptBIH^ z#Ef5sEjwjUxLcoDN7$fT*M)s<|IXC>X5ovtGAlhJ#;z}OLQ`A;b3G!454|bE)01mZ z(c8viR$8&6O784>MjEElV>YJBkUi*JjwsEiY_|VItlKR{Ka|&!<^EKPDvBai%?#=& z>Bh?gdYt>?LZ5GEkm+vTNo8+Gt#7B$V7|AC5hS=SuS3e`9^u)8F_bN1OKZ$jNJ-R| zhWITZcOL`F3b{s)ws?{07d<+>$&S9)yV9|zcHB3aPM1SM$#GpF>QjuU&diCQjfXL) zvjXvhLU4U-G3u-~;7wf+)Nhp`{AdO)1%)B~bre(T`Gpr3KjOsiX86=RWhb(-QKq2{ z4Su&=wmc5mQ!?8l@e zCU`DZhKV5Q!ec0IjpCgGN3mKq5sUP7u;b_m zQifz&LSUliOD>PIF|x;(p45AyNN8M)Kgd_o6nA(lEARPqnT8+3}XE6vW`#({HJ6Co0d@K zAwP%3tLvlTn-cqAE(X7pQ^LTNm29`tbY`8N%)a&aq*P$@T?tB@5sZX&+%NxvziXVQV$Axlh%?`UAg#kNvb~Qr%R+gMBpi3XS)(hl z4;C+vBL4G7G^Q%!PuO*AY#0ma_;)Nzyp`Si&koVcH=$iN9#Z=Mp=bI!3|*uI|J3DB zSGxeuppP)IwxBf+lt}r*R6IH}owgq1UB~YC;GlN_-lI3+<%XG9wR$x9@6N*xhX6=N zXEK`m0!72(&~%_57lgmic||mN$uNxF{EK<7nFFIKElj8204j6B(Kbek?w->`ki!-1 zDt>}1??gF|)sCc3ET;3y-_bpiGyb>OQ%;R6-5r-mxt!_pD6Aim>jl#KvWs@wiBPPY z8=X6=MKMj2sC20Ye?ETW&|GZpF64zGv%uy*cgUK2hJ24h#?An#{WIZ}$T zdg%yJNx^wZ1NOYo0h?0~K`o#H*1jWY?AU>Z)_?PVqDQZz%u9Lc|C z(U#{vFwoqCOvkbGK=nFO<44or=s37^Rq>sLG0rYLkH!IuaX8TiH%lu}{%<{AMONbV zivr{Y?t$pmQ)tfKi8B2I*myGtKGj$7!D<8o?(T;U=O{;8`{B*$9Jp>B1d+_Y%u)Ov zO2bttZ1!0MYfZzIbOp?_2*A$B0JKEP;O=U3ghtmhAFl+amt)JmWV*65!XKe|#6{Ns zr-!MgKM{V--ol<}_E;{u(8zKka@d^{4_WIW6T#UilTB=k6*9hmV!{ti;os4COb#5u zz7=d_mIfJY^&}rwe)<+$qVZf<9@5K>$ZugP`xP)~183o9U4w5pfA2rJ2aRhl(fOta zgBS7chI|7$|a`etBd zkR{FInJVQ^PIPciH*A+VAT_N43bnbgJk@{?1@ffT-VEgwN$Pv6NquLIdw%o zo%wY*ozL0HLCetk-idB+9ZVch3>)iVj3SEXs|1lR=q>f-xTprxAw_&Vq8CJ2QX#O3Jn>B;!?otQ(QQwc? z4u8^k!aF$@h?B*Pc8DzP!UpXi+EE%sdou^nGZzWo4?7=^y9#kFMwU$fT!fqwkwo`c z>Q0Nq;;XkHc{m#hv*jqT%!W#4XVR_XQ3R)EBt8&GtuL7*s`V)6!fvXY{sj-u^Ltmv zG3ra+K`A}k=|RV4O5=Oqij|Y8M06x)Ce0){Un|}XxsmMqj_`Ya4sCf=k1MvL$l5`iu5?+`&?l9&eq9Eg{?vjl+YW^4 zmEpc!4j#oh60DSuzx7IT{;O!tmyTCn~c1F|5l8vE7?6 zS~U}+-glw=8DYlDM{MkPeHeboKyLaIww%QxC*&<)r-4gP^5Ne827x_#u{{`NCs1Ui zIgQNt$vfVgk)vcCRgsmkmLTzc63@8QJ9!D^@S~@sgk2<*>+3%UD5~X6cd`3 zH;jAVHc*(02z{&`Ns~&hV@LP^vYKc{Hm8$m6~FWKFEFQfy`r>jtu-m~*|DEzjBhO1 zPs>|~yetP%>;C;X!8zO;4)(#eeF~j>BT8?QHA%C&8W+>H(>B{lq#Un6?*?0tq0b6h z{51(p5k+u2`;BWVjmUSBqk5&WWUQ2pqh*8WKT{2IZq=l^$xYb#YAD5cOrx`!PcSn5 z7p6O@k;RH*{Op}c9slv}(}@>IX5v3m-#5VO+M_kpm~oT3v?ZzA`7v#sS3xQZ_tJvn zjwGLLNQsH#C^)r-5>2;~!2Q&wf)_RI-9y6P4s0?!Olx>I=PS1&l2|#HtY)mHxIN~y zaL+!vsCk)kMx;>`Hy+$OHl5zdt)owJlgX)r=Y3k&lSxWAwO|rOo&O2Xm2MOpHNvX> zjT$W;J(?aqI)hPTICnvC;yH!&v?#70_nw4Nt%L!cjK79F&i^TGolZv$ib=b8JX!y? zCFOum5c2%!#5CS7vvea}DxFBxF6SWCbOTdz6fx&{3Jkf{&{xT|ZWj|Ym>p%Crv1n6 zYUJTs_bFk;^U;W&*T_PRe>45WO-%32Po~r-L3AbrA3mzH>i_%&N%KK?x@7_eA2z_d zdpU?q*o37wLz(6=I|Th*$XUh{QInE`e5+cVo}7%0J5sPIK^sL18!-RZ2o!%C#V#w1 z!^=krI5!~6$4(^Ydhri?3;^U{quxsNzj&}>txB5N2jMvfrN-=7mHi;e_G^JI$_CZd2 zIQ^Csp`g8`IKY{Zwl}_^K)eIxTw8DO<$X&-E@IF=&Qsb|jTMn^A--k<-WU2HG-x)q zRNX*NMIpi;U4vgo1NJ0+M(xT%Jl)Fk1!wc1xtuc~|Ng|+sX@@4n26Nu@jTDE5WU*k z*it!wDfC%GUUMjN6yLCO?!VZL8#__>Ck(DHln^VsjP)FgghXHrUQap9;>M*x=8i1l z23=$Mk2}~eRoXcF|@UO5E(bW zKt5}NUw0I0?oXokpB_W~S}Q8r{$R(?)qLmH$vd1XAa*Agf0oPBipQTJGCvkK;+Iq1 z;udrm4j;oL%ohs%l2Z|^Ed$94Q4G-?j6Wy3;E=S1 zHN>W|vf(0d3N*$PF-dI8az^$mZSWDqAo*(o-(@$@5V_+3Eq{M;m`D4v2s#g z9!C9H>u`;0VHIZGn7%X)zcuB^VfO-BHIwr%xsGn!t3sWtzM%IOqqTV|v~$L5Y)@(- zv(5PstDA;4WV7+(e9#iQ03k;cSb%#5liQ?+VN+&f;Fygl-6;v_S9`E=wmy=c zd$DOxcR)EW2=|xIL6s1LpvUttZt_x;D!9S!NI4v;WziI`2K9%Xm^Ua4P9qeNeO?J9M9F{kdkp6o&LCwMAi(a+uIh=kqxd~6Hu^HS{6zE&+n6puL|Aw zT|%C_HAuRufP&MMX~4D)X!35;l=aOnZ0CSEkgAd8TIX5L9oNW z>X>_*`|bzPI15!8ekhxiEb1}VeI@Nf2fCapaM@r5;r@T{?>mM6)_%te8?JL7O~!je zcZ7ecLTt_kG8*0r3$sJ$miY&|AAsbT$;gZ5tmn*`NElmyuRp6H$#t|xV_rhFG#47b zZ$k0Pd#v1;Mi1`j!~UK=(!cV%i`xz6W75eAiqx3rt>2a>#adWHHUG2KTX1p361J!- zQ5d$u2SXn(WXIPf2xR?_tu#+yiMyPcT;4v+yEB4yO)1Ct^W(5~oi#JQZ_bn@dRc_2 z803t82xfoPSnkAk!n^Df$ZFq@_t#Fsk!RILb1t8pPYjm*^uw{Qt<2ppAAbkM;nv_( zq;sz4Ypw-bcFe>m{xxTFlX2j~01Q!&K$qxH+~N$k4Z~GXXnqI*Q|=*XpaKQ-@_z0) zwFs9`CqMg2C@Ot|bFVHE?2FLWuS7~7AJFkEA6xY%)5nvlw9%jf%B_~LbLPFQ{b%4~ zBgVTB^7$D!ly>s0p2Boh>X(RwQ|(}iFusbKh$-mi^RaqWB_{G-a}^I!8Zbtms5k}Y z=S%Q#S{;^GE`r;0Mh^N4ba22&q~*0^V3-dkUg7@_?(fn`km4NnH3)wlCd^f_!}agS z@V9gc4%`et=IKCuk?KUg%0zf>)WOf_1z6%V8(w9Z%=*(n(oJ%JO#N)k=qSPdV?QC+ zFdSP0ETFmm0&--BV2Q$KxDP7Bg%K4vC^n1whbXqy68uf4F+&IZe9!}n%g3Nq@#n+M($@oFN^SXLl6x(bgN z?|N>EM&Z^}o>9Gs%;cNE@e(HMo`a7S|6suLM{1t0v9`&L7MW+Va0LZCOMC@#OU5%z zMLK`u0Uq?X<4aN~?gdPsX^;7ScG6DHtd^sKE!UytTaO*@+-bhcNY2-@r@V)ysJ{Cg zMp1bv37001Gxo4Na~;bUtI#LT7_7IN*mAMzRD5dOJyJ;bvR*FV2xs%r*eSyd{A{n`WPF}yQUD218k6}ZglX4?xcv9xD7 z7%<5gD|15e{Bb1=7QDmm%rIC_+6(269e7b00`B9WfAYh*-zf}AE)lS*kf-#2;$$5> zn&J)8ud$%(4@bRohM1BmPMmq;X980r$py0ZXqG{0eXsR@$GXZHj5sF z#x!%zMKhsr|E)A3pbsk!4X3kP+wt&C6T%&*(}O`n$YqBDrH_b0@Ycgfzg7cBTTQs# zdCLAPT@3w-Vz#$u7S@fG#SpWdLhkL|nCy^=oNXC+w>k?Wd={`H55)1RYA-bV+S&Y* z%Q60(fRK+qh}jSW=d+*j_a&b{YE|){Upkzc=AxxdiOhF>VwEGZF*vgT>vg z_Jm=Y;|gpO9xWd&w93RYn;O?md(5_gARdg7eIq$ir`!729jx}S~etNks zopPNx+rvG8UMMP4jbkhwayBpH@qql?jc8qIpjYp3mN-O>Hf&CIL0&01!>8&F;bUAMGEM*!wBSA z9Ko+qcc3TQ-{ZT8vlAb-CPcS*&Ix|d~cPVewTOC#nHx5OX%L~I}jZ;mh81T zQ+MAKy6Ev0(xW*)!FV#w*!~9IO|vNIj}z5Yaesd25Yl}wMy66Kw3cU)^L2P<5<5nr zr!46AmdhAB_$l%qw`0vIeh%>6>gZ(`v2V&^9QRVAb#JnvF=Zy#I9d=Fu1uFNKE<&) zchF`pi$bdwDBiY3>zg)6Hp-FSqD#o_2&YNMF5o%$aP3_bfZ%CL^lJY>{4wFr$01$P z{p*J@t%`K=j3Go;=OW-H*P5r)V%cz6-nXHNVTbrVV4XNC=JV-_qeTe!8wk6+GuV`C zh&kK5@Lc>Dz6EZ_pR7`pa}X?j75hX7lIf}K za5!N=RuLUY`>6);4R_IbUXliHOF~>?EizmUAaV9CmfF|DbJ{9edOZ$HY;It{r&Y-6 zzYB%YarEvmXVy<_h3?B!_?x_#0tQzi=;vm7csz~jtevUo@-q#Gf4YL=sdupW{s4;QyMZr9x^QIuc#3>wOncYNr+PzWN-E#S z?-HtXP||^XJO|R+OPci6!i-Ei=aTGdJ>GR8MyJ~bQ_KuaDqPArNh*~va}_74IR4JM znM6*v_8?eEj~tU58%onLK*rIBA_PrXagCdY08n&at;>Sl0>KV|JBysZXND zA3Zc}!4LWwl0l;smQnuJS-hLcmu|Q7{9@E{YG)&9{HH(~Fm?+qaZ)C=2A;>R|IE8e z2U->SCQBHO}xQ8L8z|D!GWhDivc=^cYg-9VZWCMQCen3i8}^$gDLUhDrk{g?Eyy z$+06_$$2#C;Xm&2l&Aj|8IkfpH7YPyp@uFAVjDzh+|*cBT51B*ukxh&<1+hY+yc$h zcbL}IZ^Fwjyo1a^5jxR5OiE1}@%Qo&@?{Vv6wc@UmU7IZYA(B|;DFuimC$Te!AdSk zvX#T9VKnFZ%>LtxMCCY4J+01;9~PmPS8lQXe?|D9G@JWbxc@lj0QAQh(wx(rKcDs( zD;0;(XO#QLfJ2yU8IP&! z9r0+FEu{Hw_DfC&CQSQ=gz5Phv}z~(?w4TXe^z**s!rcyF2Og}7Hw}caDC+~>}j}7 zVn2T4b?0>Iczz2TpFhN^noiU%-;F|TQ~Ia*6dvtAaBJ9VoT{8a;P;WJt2gjw=p~#C z97xU&-0|UYK32&|ljpH+gqNvNk04D?8?VA+oGi(!wji>=oEkY>Om}Dp291*A2jX4G zzP*RHrF{OH#`o|I@vPu(m~hB!on^)1EX;3;gqML5YEHjn!vZ!_BS2!o9X=yyAymX3l2HGGrSJfx%35eEy?{ zabHE*k3loAq6v^#3+1#E9sN~v1iP$JeoejaA zt>tV)%v9L(^J2=z=bSsanaVYyD0y5c&ETv%@vRl8)h@>n&i-#wqH%PKe%r9Ki%f?lB|brOm3 zcU2X?BcE>=NFpod(B(>53UyASn~h1N~yCUsdr#>wgu~X*5uTe0d(9#kN!?l(+7wNLl~gVx`O+d3NyYZOU@zYiz8n2fl#Fvyv&p#TO*@Ry^?4|Dn2OgsCu8;N^;pPzUVHofp*o`!whn3# ziP;D|i-pxJ0se{+h%&m4U{^be3Hv2njE=^aN8-4*B}F(`_)4gF)h~oU6SY{dImpuY zsy@@>+Rb+dS9b1zy--^EmdBWOq*)=;hC1M*h^w5S@eITl4?Z*bs4`}o0L5fj36Rq5h zBK4O{uPy-UnVc~lF#&ZkLs8#gfcsqg^(?;y?GSIo&7X>MOAg@il)J2Ap$P(BUt=;h z7Kk~%5mRPeLSwc$KDLFxaNZdVj*>vzm(5V0X$xc~;fd5`6nOuI_f2^UEjWbN#&^(S z{ER)neGwmByV%|FnP^{m6a((R!zg|ydU~q?BSlVP`T#WyS;*)8A$c%gRSx|(yni?~ z6ep}-K-Gh@o(Ie#2Xk&q%T*_3leO^We8<1m!<0| zy`0^bi@P(GXmfBnEEIP@#RJ=q~hpPsBULFz8Q@Muz==n3KF8Hs2EQrRY6k z?cbvIM=~;Hzhcp8Nm}MVjB-Ym;@2T1y1Zx?q#Ja}e0B?(&dE{4oEy--v$ zO&eERZ4HCI#A^eT8?+4}Sg{N@dfv zAYm|w3=KRf`*JPb^Lai^CK%C2ez2W!qI50G9y7-s#Qw$hLap{;AQt0EXTZ^3<;x1K%`(q$P}KL(yi0 zE3T(=1)XT){T|mzjjH*M@?}Z_P28$W_c{ylXR13Tr)E=fv<$h;evcR5N7K5be(tTX zrttHji0Md2jM)*0m$J(lL&HE7s8|84s#>U`~@1*p(O# zhoV_J_RJeX(LSQ|G0hFpREx#0qaadp0KShHat4ngkKHa1jp81F4oM37m4}Sp+mPfl zonBcwmhsR2mEF3O__GoPhwrdwv5DCDb^=pw3PFiXp-{i&GSk|$8_)g>KtPNRbN7qF z+t6L?x!WCf)#VFw;XL;jhqW!rjCJc`fGaba8&E8;$~JCw5K1?u>nOexQh(lTwS-8zro z$(*TefiJaZfa-aVbf*IE>aCno5<8PmHzvey^cuJ9Eatiha8ueEvwXW@R#VCT zl*eMKax5%^3b4f66RswsVJ};Z;E)^83w;QU27lye3`TWp1m4tku|(D1tROxZM((bN zJ@0rF24R9uPo*=zXwI0CV2>Tyv- zgF;D(hGa0DE7Zf1+p}R5Za}`03#c`N=YsfWv`1nKM*UrYy*-z(qbV1<>Tl4v-W3Hi z^l(^tJ7$Z-v+}Bi(DrI%QSv%SFEmF$Y7<)>5{}=AP7p1hhdB*~NK0`;L(L}mKdT0< z9)*0t3%b1#(3$OyvJFNsFgOGSg(VQXpU8LgN3hb%kmg^Fqmysr$YMw*t?9q zQZkZWuIBg3rAhR3Of5-{UqbXOio7n0QaHbpT2~g3&Enta+%+p;ZRd{9iDRe*cKeo?M$cp2>G1Eo^1II10nJW6QKk zT+m;P$YX;rV3jsITQV3Ldi${0@f0gkHR7Fn=6vJ25Dwmnc>QHM>oq>dJl=G$NjZ+p zdG&Av^lf6eG#3kY8)3pTcPM`O$~0bYWLHKOI>5`R4xibb+TD_#$jCCV1@vNP-?Ssr1kkTF`;e*X1J!| zQ=tyc_{8kohPa{tpWI^CwO}gBC-~#FQ02 zWUxSTJX zOB%=Y+W%Mvf8)%{aaqFoi3Y-DwN-+Qlal$%mbJojk5pEYX3PY)CBi+Q-@=%N`NBY# zcp>klH@h%UlhKIX!pOz%1dU#vWBZ%H{#y_soU_ao(uNnAuNJdlw=eh!&G}C)-|e?! z7xvc(kJ4<|xRVY%13v-_L`JYBlRH?t`V`onDiY53hq9+T$^;R+8^VtIcGhfUgAskD z%+>WYd*7$ey2gXZ|zvNbHZ6RCw2papD!~p{mV)^7PE1OG|{(F z7Uu6pLAiT8n;<8Ovme%>MKH$Wdm|{WW*P-5adxA{cpAH}3LoaQvf<4x)UNsrKYDKA zP2qS_?MTOn(a&M7p-BNRjqt}aA4~6uP|22bEV}7}gd8`#eCGVoT_CwHw#`RA|7YiM$6^hORu`jbXPW zpuX-n(vF!?RMIz$3~s@ef)Kn*kf0@|37B)D0(DyD$k^Bhv4{N_xnw$|IPdMX^BKG! zGn1}nT0wb63$g<2QDoK!t0AiNmOqED|EK7@Q@aNak~YE+k2!Aw+|Q zN>j8?OM|4WBFf07fwC$qm4u{HMyV898d9PXE!FS-{c&FXb2^)vLpa>5}kz{0HOT zWwAraqwssfYT9sfC3NaevlgXd44clMU#ALDu5t!88?LfV9%FIflLzWng(6T{m5NPf zQtePJ+}<&fc~*q5SeqvHHc^31l}Kjc7-0RIlLRhq`n=!uOHee)fJLvb7OeKyWQN_G z?G=4p;HH(rG!~Gceo+JK>@F1a)m8{LPS`Kl`naEU%{a|gC@8|K&w^$A%wzS-qgcRv zX{(Ggydz-!PAY=C zO4=;ts+Ztq@iBJ!fEDvvy2;Fbh7UWotzQsB?@S&wOEGO@CBgX%27(74rP%hhCAnaus-gwNya+l+%P>6zRkPh1s zdj=MAr`YwRbT)5K9IBU3!l}MsEE|~%GxnM(%+B6i{K33 z!6ms*!{%3uAZ?z`zUYpIO;0iNl#r$e#a*Zg)5c)LMs_Ns2-aCQSa!oJ7UA%L1!#*f zNBeKUdZp#m1SLl{3U`m$`kSJ}Cyn)#g&XMd{SFoUSqY}6-v zd|0ZDy=Pol^YDq-x@I^#J!XK3pBI6Dj3iD+UST^sxwBpSEV`fcv$WiJq%=;(j_D0- z$&!uCGe8$d40f6^fBjR6+cX9<>^6vDv1OqSy(g4O;mD1T>;8JuyU9KHi03V&Hl zz(y4NX;b_TS!}!`iAvDG*vV{-$ z4#}oipp}ut+QO;?QKJI!zBLB7s~r*9w;tj1>=0_LgXxF!*^-^sC|?nPl~z21`>&E| zL^tOAI zb%OY;&G^$B%#``g)!eUunLIEcy%0^Du)TovNBdB4G+FR!!E_|f2?9=?;k)qb5H#eo zAh$`-3qFS0X&cd3kcKbv5Al1KIBNgsvw=oQq};D#pO>D3)ps#$lF>rY%f)cmFbls& z{bp}86b&l6DN9m8&~D@NIFcf^c4h&!RXvE^S7 z7HN3mxv&%r<GLaRl181)bi>@6~kL@Dl* zH7SWqg1Xxg)}o(-NvYBBi}ZqO^C)PRi&EQvoSQiFItmj+x$|H&YdJZI-mFYTUd}vv zHO!qMsGL$Q~h0@AuE6e9m9XHx?sX`}zZl*XM7!c=TFjGmoxf-!f6*cO}9z_UH{Ga?lG+;!>4;ggVh zaUPSTEy(WS659M!pL8z#5&Yv`g8o;F1(%jIu-iLCSfel~UV z)F50BwC$k%cyx035)ORF;QhW9eTBm z)J-#aRxuh|V|nh+^f5H;&FPYqI2~4zBK3uJ^f*tEj`5%6vU9V^DMN<-9$ZcezquRm z+)G?clO@m5CUj`QQ4)Um7u#h!_&i#O+AI4o+&l@6p=D^8^bDts)hTDpIC6|Tk4+k^H~V`>sCJMJLM_b_4#6zE^_P-@kYqkT#r@ZXA1=v+`HoiVxS*``Yx&mSXc z^iX=YZ8fIvGocfn7olz(fXu3|oO2jR;>S2+%`lC3Pxvh681Hhfya2;br;xjEKIX*S zfTVd7{MY_P0N=((WZglJ**@%#iN(5y?QqmEqXW~eY0}wd9Ov)dYX%}TJE{S{b8quJ zMGUReKaWd7dh{*%CqB&K#mm{eA1k6oPs9{yP;CK~@D8kwObVPh({_cD8iia?pp<~` zh<39__QY@4x@0T)?f0gr6ZIG_WJYG5i_zcGiSEyBxDqsxBKSV~_~|IfuX+vNZ38%Z z+>OSbZAAVhhUf3+l9TUHOtwCU3s=6v=JjLrv5oj;A;4LiFL)4dOoG60)W_T4!Y@mN z7>!4E1B26odMJCJz@iP|Xbs5%DZESE`UD?bHd0k>9db8pf?u`; z>@>5G9~6d9`%Xg|N3rwDAvV+SJUT+gqc(mW8ePUf`O^$U6q-W&@&z0ku8Bpao-im@ zL}T|owo>^7rav{uhu&itSN0bEqcdS@H4&@Ux#Cu2GM-FrME3_*+`gFt@Ohu;VK+py zK4QPI)2qnKn+`ejMOO>PSlKd3RP#evj6Z|DBOG$+hmh~X=grjv=pOTiSz*Rw8A}0{nYsfS}Kc5b*r`$Ssj5H$TKIuO%R3iVgZc7U1~0bUYeni%9-n%b8Y= zKb{FtOn!=##1ZsQ{RZ0X_F?RPd#rvHi->PipfNukvo7zzS)~VT;m4J*S~U(oOB9hN zXO1;bdQH1FE1==XCZ=zlhVhb4D3__miTS?F_tsVRykLNNG&`B?&N;!3yg1A5C)XpD zJH(S`$U{zKISTq_;jB;`ws;pH(4iPHlVhPEhB2V4B+b9gJUbudi|#zbXRJlbG|>DLZIeAWa=Z+*oEK2Cv~QVb@!&*e$p$3IG3!ngO&uf_N8i(Qg%6Pu7h&?#R@4-@OI3XO2)XAUNZ^12g$xI5( zPXb`&*U995H86kiS!U|7T5v6?W4XUyu|Okx9P`d&uNL2ALPEs?mp;zMczK2`*jvut zwU#g~BUOl=^Ji1v@VtMAEwq|vKt4DNPl~;eKkgTT8(Q)9!ZUtmROW7$)fn!z0#S}r zVeMl|J8LfBGhXn!SSIi9BtoL!6i*i1hh(P)?AwA7Fr)%i$ChF7XfC;4v>b~w=HPMu zYb>~|LAq8^h_iW)W(;7}^8nN&^IUm%IyRJ!An#IfGFszDxB7>Xy3BS`a2Fw+lDXW` zo{sHTW9e$^GprrHkWBZ0Y+eX+R^~`Dl?$TzLyPeGZxEjBcA$fPeu&s`3kMz=k<=|` znj|Gdi8)JYtj!}(uMRO$4JzGx4JC^0kp62xs}}?!*oij#-u zBg$Bd#gykGBC8JF8G&%;%#5)6_gMM&`KVTIVXys0BS(KL42yW@%X2y_a!VJiX$WKK zm6Eu*Y9Z^lnuG~M(&1|E#av8y$Ga^Lj*2#jm~sHt6JB6WZ!SK|TTllU3<+V-I8vE`g-^&PL)6%ti9inj%UmRq==~ zI1Xt8&Ndb+g9Seq=#Hzz9rF|%b?4cY_RVNgJ_7HaRLluAq(+qpBrkgmPm5z1)~*5l zU)j+6{)gQepNzPQ*|6EQol27fG4f9U=Y#UUZ`&}EtXCuD^M>di-^IF|cV-`(bMXpOdbl6K$~t8F zpDG#Ebt7@jCJGhlf#@ay)vaBG?6)Im|D!IbZ!x1JKUu0dtxo|XjA-EdcItZ>jqX-H zfAqV9NS7-p`PPG-yBqO?=Qk9r!f0AyF8*G9glH=fO0Szpc@ypF$*^S9r%mS!6lu7Y z&cv@>A{Z0Zj=46a2=WRjsYcOA`2nNPi@aydox_$mGCS?9*8OIZ0JNN>Bob8~_-KD+9 z=F|EqBPicYg|=_9Z@_y-cFK zFZQp@25m2oW8u8}m~7YyKi(&gsC)@i-z&IfN7y&hfu5&)#HFt}NOj!BvyImgV4Vr$ z*pujqSdEG`UfjW2$T=`gtlDl2iqrXPbV7z+j20u+1JmgA+C+>v7mig^WoYNGaC%>N z3kyy;)A6_#+`c@98kU8SZPRS-3D=~|v7Cj^v#jI1L$TD+h`tVc1LcRI^tYrC+6T4h zS4a(BX`9h_m*vp=Xi2MuGI&;^5k`NXAuLLq=8ONt%UyFQr{VyWTLj_9Hc84`AVh}y zeaJDW5go;A=%kJ|n*b58$+ubE-B6b0IhHLiBfi^>W7?%F1&SXUnAwNZOzO)@wr+o* zVEJ509FKb|nEuCsy{_NOtp1zGqQVsfn;pvp^`q4VHWO=D*CkOnC_NKQ&~)Uy*lH$y z%mTLF%2>NgiS>7+vaYAmNPoQmE+^LF<0c)HoZg4BLs4idAB_zMj8U&71}_f{%(c9P z;Ph|o8FwrAc8_B5yVk&mjm4d~cdX}$CuY7{j;CWTG7X0+Hacu2?%7Df-!vQ|%1PK9 zn1gd^Z`t;g3_MsOMusKzI6zzR# z!-3Dvx>WFs-$y6Ew!(ecKx`Z-j}hWCp=<#d1-as_#8YN)OaTk^Un0hfOAVgyz``GK zh}OGmicr zL2YXUw0ZJjA~j{+jk|}XQjV09=6{6!r=s7ItLV+R4s900`10{@~l#ddRGIn&}9Ku{*VW?CoT4#D=_tj7w zU3eHhA6MX8@NO)=RK{X7)xge#qI7*VQ#i?c^atW_W}X&Gf@4_pvrU4I?jWA)`pZ79 z)xoY_M-+@%ih0elP%=qJ*~~L|+?0U+oB{N3PL_GcAvPf6$###w!lFm-WcS^a*yC3V zvD(v)#s4vbmg5+#D6M4couipAt%2#+)hxE_gCMP3gZ)u-WJyuySxZix;Q8lQ0{^fg zHh7q4wm9dbdh8Uzh&?M<-DC}>99PaxZP3U4uY=6@v^K>ShOm~ACj~MW=QF{xW~Q~U zQ;^~mBv?1eQ?PBHi|I8j38rJZPw+5w2&=k#+pIxz5gWT%g1t4q#0=v^SzNOb@4giX z+V?0kInR|WWSBRzy4fNq+R(|AQ)b}WZ%={I&00Z}i=E(?RPIlbF`&d_q#AiU!L=$4S_VPZoBj-){Kqt-ut5%=Jyh*mmKNgGq3G#ea zp@W(hLY|@yE~H#$N`LK8I=c|Z-#^CkMLb_5d=vf?2$D7N@a4V4y@h)amOGq=-mri} zoDb@F&bFlD1^n+gp(g$Y^O7fi4${Ki>HndA^%s`7vXyC!6^4;UFS}g&gZ-;%BiqjbA=h{g$R9=O`Qr&2S`b>%} z5#kuMM=WdVTP*Jwg?GO@G4kCR*bC(&&MFl`YeX3Y)z~z@D8oLg{)HMtqi;a0Z+GNg+*j0}8C-#bo|_)*stKW#9JG zVModQjw1ce&7hS$7k;PgG=1P%`KEct$#b_B)rXBB zxe=^AOu+fqO5CuveP%AslpIZMGgO(+3bOnS;?h+hD&d2F6O< zac{$&S%p2g_umFmlgo$eitiXm9E8rLhir`I4n!5Xp>FJZh>Eu&M7#+x+gn*F&p60+ z=EFmM0c29*(X^@tnY#_}i|>xg^=dHe*>33YJW!B@GMyaoVjZjavnOj9ZF_JRTTaVB zF3OAlIm3}EnFhm<5;zse(~B2PSfJ0jK*ySSZ{`YyEVH5Syz}iKmW3rDGwI&BlW5P$ z!#g1zO4YlJoZ8>0T2+ooyem0M`XHu^%}3z@-X%BY&lR-<{@hs)p_gaipKs1RycbZQ zdIRo>ygR+E28-W!B731b>3zQf|GUS?za|u4`r058ZiF9dwNU4IX5a9$TvZH`SNP6W zUwp&1B_v~l9E}dAYL&J7lgk!fA?W=o$<5v&C&nF4x zCoJ)^i{A&nR^wOwI>=ZYM81fcKy~V2ME`R|+QWP#h~D6gOcAop=b7e{63BLm!|>y4 zS&H{n+`|c|uNp=p%CgwfC_Y2ypAq$+cTw@N7{Au5lfNf+c;;!%AyjVKNqZMggY;ko zZSYu2L(lG}m@7jla8n;}_zRR~|G+{KVY+%Yl1Tdjs=t;&eZ2x_|0~1I`!%1R4y7H9 zp@`7hOb^90kdbN#OKr}mQYpr0f1W*@SB#>H1bF)lM`vg{CN~Md3i9#yjyp3r(8tW5 zTtZXzW{6e3hj3>MItJe(>DW5_S5$_#Z3?6|CI-t>c&FQkyA1pJNN(F4!ZKTWOdILz z>;v>CT$v8P_=mQ!%jiMLZlZnM2|3D*`yXvdOU9VgIzGWW_aAI;JcnUr7tVZ$q&;th z>FB=*QWcA!IV+Or*L@i(p7I!L-Ih|R9`EXVO{LPR7J5464l;Isg`de9+U<3MX01u3 z8-35H{j((nYDdxf*cejcF7@83Vf2r?mxGNR=oas5_D6E3Ot=?$eJrFu)$*K8Xu^Fe zb7(T>wEWzWO1Ty{NY*TquIcNO;!Q)ECqI=sNAmO1Sue_adWCxD&n8`-Gug#+cUBU! zF``b2UJ4Xw+NfskBdo!CKTYIv-rcM|WvWbj4b2@gSoSs&YfLWVYyVz6@Z62|`=jY) zNC>{oSA@@kgOD4iLVs<#;1nJLf7h{CtUikJq@FS}$^Yl#S7F(oJ{%d=fb_q{BwRm) zg0dEn{aF?2S|!3exQod9OdO1!E6{xY8A&oQqARiop!^#&{ICiA_qGiUi?XoBcs=}z z-a@(JDQE1=Az_m=+?9EXjVD96^ZY8cnrYL=kz(Yo??cBm-^0b7&p#FU&&5}QB&ud+vfA)q+nSxWj9aF=cNI!Kum5@htcTCKaDS-o195nq7daqs7VU`dr#4 zo(864i{Vk1A>84J^K`o zEloD^Z}58669jFaLa5Cl{hwc`ZV1o9Hh55w+7Cn>4yRJ{N=n#U0=>V7$iX?7`o>S8 zLE}sOK50gc)0C;p+lV%qOyK_4XK=i-hPD^QlCXUg#rB=Y!Jo3^^W-9YET!o{&`8?4 z*?@vm_tWD2CUhZ$^E<|=(J0&7_#5#Y>O2}T=E-0Fd-kI}a~M5dS4wk5FF`TZn11Y^ zNI7Xy_@$SKi*~bMV98lVb)R6m^eetuHe-FtOH`cGqe=1msay3PSne#kp=HYZ3*4(G zrc4^wIe$A=ht>}IbGAt}nuWATSVfGIzciueuogwG{lkvfNRnD`B06fvQRS9;{++jx zM8&vH-N1j-APg8Q^E$}LNVb(s&Hu}r7U<5THHfgF|ndW9DcIE&r) z64p1ZrsQ6CYN;rI?R7)?C%%vdOYP{(I#Dv^>Mtglrx+!N$CZw*BA^8RH2w z50><=emn`9UO;CSZ}Vv=QQ9tN8r>^L+8t|Y!2x9|>|IKWUh#}%eH>}%8qrFZg%mSy zEj{MU#$Q9%QC!h(D&4}*TJzkfu-Sty+^r@XkyS)Plj$>3sm`o`ghl7llI7b;>uLhI zSdFAHiySCuiUZlkMNrLz-E?7<7fFRKrVeXadfVto2Y)z{h}9J;ll3F%L&r$y)i{de z=jaJ%LdfTv2PIWKqtomQd0szAFa1Abskalf_b_@l`3gMp;}LA5NjGn+L;CtBHs_`o z;hH9W)xV7SV_TWKaSOC7yK#N8JgG|gAaYY6hJJTPO7sdEwIurvj# zK%8710f|r-ERN-zoPF^)K0$~^TZ_{6(I4T;`$}u$D^V5}hY$PtdwKl_O#d~OR;>%c z)>BzfU7=0Sx(`77r34vsUWv_{dvJM>2;Tlg_{<~x*%*iS2OnZ$@KH#7xz6VbHdK1Y zlkD|Q@QnEPu~F71Lv zp%J9ZIS*&onrJG|pMDGKrkoLDX-Y#Y zO|ThFN-tB$$xW0bxaX~BpoI?AucA*){xmXqB+dTXOcg(Ki4<%os7;52{w^UE&+T-3 z^Bel-l275mvh>I79diFEQEKNbdLAZeK7HeBs;!+vM@QVi$EuNZ>Z2iUP7HL^EjI*?-Skx$)dd?9}Ck*W7^te z_B7xzM2fVre;fbV@Lh)Ngj_Uv24WWPY^$x;8JBu*Ewm4QvVZkKk~C^kTcH#a(0 zSuNMlF!cfwvL$Kp_dJ|_$vehH8kCU|jvCo>Ft-nf@av5vDlwAmQh%4rZs*Fr`U^#_x1R<&1GS$NOxvtJ7d)WD2Rd*D&9P zGX<`zlJC;3tX*L&zFTDC9emHO&(GHSeKToJ7Wdq(Gbh=AOR&0M0h@jey8EUXkM?Y*U;Mrk?>3M0 z-0E?3^J84Tyb9UkB6PIMomN*ofb7N5baB!QTy*B&0|D3Yt-+nP)nCD+u z0e1<%pCwJ}?G5;DE|l&+EhhDuJE`;qXG>-ig(!QF{=!An;BCQs05i!o@hCm@i|6-U z8(Ju4Os6)4&;+A5*n3czhLlVrk3mz~eETR}FXp~4iD+_Nu1C+^cn3tvg3euZq0!6M z(j4fAa3$W

M_yGlXq zCAJ@0NOk&(M4_h<%-z$uPFj?`mpg=(5I>X8py~BhSht7g>!R#P>#qfO5x1dW7U!VN zV4v zX&}7>=QY0K;=@EJ{kx4Set!*};7L2T$Km1VQVj9=iyQvCU|VSmW2rMJ2>J@QyZ&hE z5Fyb+r=V_m9x|KGqIo*!a_;FzVs9W8CBdfeHH6hOkgq+8`np9a zRsAxoQeL5~s2$OKS2zD`IEK7R!ne8H2~j+Zh73Cot^NL(#di*(-sw0HR|vtz6sUX{ zhZUJ$p`vpVseDJ2Q;>kz$m8hN6ToApJ-pavBsRoDp;;XIvi8sy4u!$LP@D=KNnX{> z(C|70_jhs7)BcIwr6IIxRvtR1YE$lRT{@>LPhW@h^RA^HogO-YX8sxvRXu)YnzaB4 zhmK+OyfNf05{~2TTOoV9jdwlP!oD~d<6kvngi|Em*Zjk=dlEPkH3H)o2EzBO6UMeT z)--|29vf3wxG`BilPA5qCvb#& zZzpu*a_0Vetnzw;JL}Kmc*sHgn>7;#v65uGz=WQ1PD-t^0YY|O!{X-U2yz)@FQ#sT zn|2`YKm11i(p*$1Hlr%I4u{-^(NLMmr2CkEW=m{o_3h7SFHj`)$ocftbUx+G=gvi^ ze~8ULi_#k_>8t5se2l7v=Y^@%+_8uvNSHf@JMr+-b{t!0O^=RvQ1r1PERo{(tk)k= zejtLpZ`#n3;F0uqkaOv$enwwYAM_0mV z7PN#vtD?r;VY`2r)03UT)W#XE*SvY>=!6YjuKtFCJ!Z7hEdsyle8@U%2mPnYv*=PY z>EG*qm?=)9s?ISqIqn6VULL_5%%mH2W^{bRTZHVrNatJUP-pd9tT}2y>xOcFbMFS~ zneh#~Cn(cw56-IQE&=%~QBd)(!THZZ^mN7tWXAIy&@F2`^;e`T1&e4&MmnaO-o@jd z49se2!s*Nk=>PVjY6;GD*egw`9gld9T9cY3G|2t*2`Fuiq^WP@spO&zUHRPu$8Sq1 z^9<3g09`Vk?@YD6yc@*3edRMZ(U*UW4*H%!qp}K3&YDD{hey+#M@Ez`9*N@DQ7GoG zW9H3U*yXBA3Rbmn{JN3uuDHpWSx2dD<|In1>%#`gZ4{Dufb7Q1CF33O6rdkNDqjVd zf1l^AZYx7xZURa3eXvbrK0CdTXYxiTpkU`uHu=nEn2RZ*s6!qhPi&A=QIB8zdv1Gc z5N6)FfSxVE==~�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 LP~&fokhlH^Wg=4j literal 0 HcmV?d00001 diff --git a/src/stm32cubeai/imgs/openmv_cubeai.png b/src/stm32cubeai/imgs/openmv_cubeai.png new file mode 100755 index 0000000000000000000000000000000000000000..f1e798f7c65ad6d3ef1e77d4bdc9b39b05c8cb81 GIT binary patch literal 198884 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

QRi^1p5tJUlx0!-x*69q!if5fuD<)yQ<+Bzmm| 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�cxTEh*yBlb0cE?JRlyz5D;-}lIK=W|&qg_O%>(lkXWiRUSo<$oL5O6>r|cjMAPylkQHI!xZn^=S^&Kf?aQ zA7OC+8Y`ENaq09UET8`hy|owcIxQypnmrqm?y_KGMbm8=lGu`2kk(mMNCZiHz+j_? zrxboMNsM$?)%bsdk3<3C?g}^Fa}TAUI*$Imywl>9o!-8nzRo#%e!$G`Lrm{J#F6_y ziB4jqCsBUjrcAqi=TgY)AMK^Ru7&E;jmoo;qUwx{zOxLUIot=C`=cc9Q zVfzyQ>4oDvL)uPz(;(4WI|hlPD0!A;#Bsc7Ui~_rVqtS;rw-HUtx>AXQ%lxavn$tr zcCBHqvIiv$iH@mwAxWMxDFlIECQv?cJ|I!Msf05$n@=*xdPo^?=WU0XC@Y>nagL2n zpK^5?zq*GgZ4&xEQc1kpB)(U7YNX0z*k7a5S;6;14%FwsBn-2d$*_vA0uTYY@hJH| z9x;1Dg(p3pURz>vYJx0DnV71xx}qJxdimV*S3(Qo8mg5qpIxrKf1?GJYRY>K^w?Of z^1?<1&(qXGO*i(Co?*U}JHvKqutv~{6qUe`DovUTD!yg9k~54ItAoISC{Hs}$r(mI zomAp0!$dhlT7g6{Q?ht|2GY2ouXcd@#+i)ufnu@g_A^n+36v$tHM71Y6^dRas7RQZ z%8;I>A9+||QJx{Jr7SIZ-fe{vE6#FMMXFH0GfrpTmaxEo`e5QOrxeQO)w?vW0a?f{J)>=-zW@z;#bM*vY zK{vIa1yVRoHuY`>h<5WAXTcF8rL$~F(-Gy{0l!fYN(i=$F%{xC9%tSiiy=p;lswmC z`yC-1fHcO^>-EX=oH&jP%aFXtM(Z&E)!JZ;qf)17Iu^$n45FeR&iznpJs$V0wM9Se zIHT$N3Z;CqEO!)Uos$&|pfpuQpUt@MV}U6tNs@##&58`6CP`9^(Js)2B+F#64P;qf z^a0}7f!8d{-d3^}I{&2o6^qa42dqx718m&+HP;=-A)uyOej zlGQVm4mFwW!*CV)YaX3dL%U^&BR9B4%?{_DIg9WVNuIhdZ6RJGx6~f`I5XVITW{pn z`#$nbJUvrT5G1l(8Ao!>m>*e$h=1$sJNl9BO&WgeBNWpkOe;d)PdRcjTSv$76$1OV^XjhUj_JK zmB3T@N>HjylFKq_IsnyU&s+mi$y9lkZoGMo`X^@z^b)G2t%n9l4Y_umJ`YWiqDQ}wVi#1Qr`I3rBaC~ii$O!L`sF{ z`C~?z>!%u1K3#@09Pd*pwT(VI66gU33_Z^q1KA)5#(>rsjps=`&m+sg7Anv$z5Awb z@?>j^;&)SI4JGzv^q+T1yWxNNNzU8`RIF(QVBwGt?5QFfBeX^{NR0eaPsmpciphStp|3a zq-1HM!=C90mRlYEx6gf<(^uVs(o?T5m|%>dQ7!S&_a50MTJw6E)`r{cK0f~6{}dOG z7{2)LzQ98dJ;Y;=J@%%oEOy$vv+3ML+g(K7E#8z;bUIzu)>c_vU3qm;2MZu+H1^>8 zA@zw8(zyLzM<)=8p{LtS1$C^3ROci*XP^~IbXgv@38YVyEpb`*u~wj@#G+Ze;^=I? zr%+O%(hcV-PKpTSrMu;|`NkC3?dFmwT(!ed&zibIl;@;j0olImJ)~ z_(Jhg`zn>Nk0%xV!4PW%gI3@9`n`?BB&4vUiO0pID&2vHlop*Udac zA~9~3jg3VKNFqhaH$<@@NiA_!Sa%?ZGf8tO=%xZGEm`}61pVPyAB+VK$Nk194FbVEiC-73()7@ z7vn6UwVQQ`P7up(+uj)K=+;|m6}JLWt+&_bZH?26jOlLpB-&K`Z>x-Zh}prR2>c?-XF(V|zr^l^yV$*O7uowhLu>s!R~DaO@%&@7EF`W;pa~iXF1EQE_tpg1>PH? zn`vWs-{Jjy`1ZqZ>Re-+Vig=caG0Y%`?GxZv!CVIv12^=;Dh}6pZ_^$&z@y480-vS zJMFsYZlnMTjw+dD8RyQOUdaG&2s|cYGqadPEBXxUMFKk>!bH!>`Z9A5;5`ZXE3|sEKRS;Xry$tf9`j;kCES@%gnjVqAAqv zg>Zdx*-cp-3#8PASE57su6EXp-`Co)#guYvfe}U3W%u;Uj;j#D7N3JGvjt657THWW z?uSwiz>eN?U|6A)%eFd-tZ?H^sG$D#x$ipwai_iZM1(*H^@`C~;Ie(Af5(gPQkA)V zcQCi_4sO2d2U)**hPB1#S-*OW?$U9hwKJ63Z6=$R-CaSqnbBD@44a@M5LQygQWBP# z!+Y3$({05JwCQ{JR!_8>qrG_LEb|U+2Y>NLS-E{L%}+o0jyRviLz@5ko{YqMIjwYi z3w_1YXD;!J|M%yatd$W6x`UWB({zUsi>oc7qOKv=25k(Ur})mhZ{|HW?x!=1`P?JV zu+bS1_zEQ@f&a#a(mdDHN&!Fo!S^sf)p*nAyp;~vXf$}>fd_ctfd}~PXFtos4?oPq z4?oNkPdve?Q>S(YvTw7NYmG6w7>C|^YNHThOrKg_UgrGy^PE0?hNqr-ip5KpDV58F zrShw*nOeub@Vo%!`Q*mpD-R*M+okEn_Kb^C9!BSs>wEA-Ouyg6_sf7mg|jFL!`>C7 z^qk;D5Kt+VP|=WFC~|AatOGsT>dnYJP_6`EG=n(9lTPhYykdO6{@|{*yk|yInDCZ+ zQNEQEn0WbocAc|Tuf+G)0PwGzAFp-Q#4E1b^|vdMZge6?GgR`m@5J?v%NDTsT6gqX zeR{QRgt+$gdk4md-|##$y?YNgFwL$T5Ayt@e~I2!FDS=CSECH!NTk#OHzxvPt)*OM ztk^jUQjKc)M)ixXp3qS>N7=*C=N$EPdmZ7ZkFI8LG!i(K`8?O-en`pKQpeQ>+HoDA zt3kBmdO@uC-&?@WcG!AO0aP zz4X!>w!sL)kZQF${$B62Z^097E%jQBg9i^4bv$o9I5gUD;=~C~y!awdKJ^q=mzIg5 z7$GGSjmDOGo7e0tQiklFyNO=ZqvTH#rxDh!6kdx78eK%{1qj8=+)bD~r95$n!1l3R zpjv5QvnCsnrsM^b>IaydK1gfrIHiiD>Xn$uBVy$fhO;zkH;|=kkTq%Nic)C~oAy}q zoveM9x7ar~#nMKHD9PVc_D{Uqk-=N}%;D&#JMG(YKmrxAXJHy4osEhpUf)XF9M#}$ zrEZP@mjhLhB+0nmZ?uh+Vr;$Qz?G{p9?@6RG$l>*@z}UYT{UCt6!*7#ZS;2>$6M%~ z6rj^?`Rs^#YQ}YmX_{^k$=S}b(AsXB2e;B&l~Uu+jwrKIZe9mtK!~k$Tr&JU+F_Notd`EF63vH{JOuR<4|4`QkA)mY$)#{5)#y zJdHyg{Ei`8g4FXk`2LUJ*QT&&-sRfT-?Ub{<_ojW!HR|++F@JgdG@pO` zIg%`YQ|7kTLX>9QcgsP3?uWjcsaoZmdVQv*rnvXsd%5@Cd-=>~KEv0(_BFopm9Ox~ zBaiUXOD|p5i)w58?(hC?e&%O>rkLc+&KKre(2OzEYc=kB|2>@3d9lcP>zY!EW~;?N z{inaj%IYdwYr;~AO0_zsSG_K9Scuf*c}9QOrax#?nw~{TkAk019LKbKZK~BOl}g=F z#f)KY_hGtG&LD~qs!Sjf2tsT>1teZ+mQrOGmC6i3DI&`f)~%v~rJEVbX_sdIGB?)h zc>W~i@*Glm49tMoW_VIi3Vh@a!rN&(?XNsuY%E>jVre%b>TtE$C z*u(9;V~|q_zU9YX9?%lkl`-& z-}&Lf8_{g1x$d;Lv<1@>9Qo6qXXW!>qxr*M{I=-xi??Y0{_Po2;OY(E%ra2m1TW4m zt@BSl_hqCIv<49p$h2V?rv$#@&O-}aSl!_F{{6$Ow0mz@RK_j(ErTTGJvZ*EF=bWI$eCih4QE!Q&vY{vDfPrHH3q)3H?YwX7u?eVhm7s?eb~2+uIlz zyq%m^e=8_4=boSdjr7_1V(z4+@a!f@-~9Z|tWSMe!EFozXEi zS#aI1p;oIB1Ofei9~~Ra?wnvUc-!3f9e}vgzF9G+&F@k1i^MIeZSkML;s<5?piF&g z5BqMqpWEO6H(0s&6w4>RgcsD9+;aqJMPYuiGtGaq+x!oGn3>LdS^SNEOY)D;zb*UN zow5Ap{Rt1%-BafO6_YEYOyNtHR>q5G_Y<`F|Ji%*ILof;&iA|bKH?FTk~<#L%TuDF6LuDF6*Z@raoeB&GZ!$153U;XM= zdE}8t)*-fe*6@N1`lQN?=#&18zRcv^#SVBL;8Eq08OGjus%gB-RK5<-! zs$WG22*b2rsoSm5X)kB}-)Sbkea2mB=rm8JWnZzR(^15cW;uO{Q132cFw~X~XK$7C zE#qWD8QQ{JtqDj})>vnNQ4uy3v5`ySS&{e(S{nqFzB>pCdqAf=#KEHFGg zgthej5(|Z11~JB1gPYl2^m-CUM~6{L(P*@?45CjE#95X!jcd~kVtO1sVp*wFab1rf z2uPA7v-5C><0#8cDjY{;&)RgttWqhXb?O-@d{En=G*Zk7VvY;-A=3LnuK9hf>epE` zz=WbQG{wNsE$qDXM@V#n9RGKJPI8Wvod#vgUtbsU z;fc)9Hq&Q$vP7ZR^Db0U^1$&^>^nS-k^;|lQsIinDZlIYSJ*Ug9jli4sTW_z&%feD zOpOejGv9T!TIJ@OZ|3HkZ|0Fl9^orr`3j%-#3#7@_S@-pyZx76jtdXgBnWF58XCrN zQZblzbBQEL(4=PPO3KV1@odj~0m2f-9l|6aj61lhh;U^_+0IHUkxHx;jb8P3=o<{l z^wYsX#~N)6LS{4a2&8ZjQejNAl1-qeTq#k~McX*-F+xyOipUrY;3$QZpmioXaUPOH zi$!J`6m11k7>0`)PeMCZw4*Gj7pXe9p{MoM^MMnr&2WGcXY(@Srn@NAj1Z>hpQt1i!7&D@3`Xnpcfgu-BE?us635sOgtR#B zxl<{Z6T}?n4!5)#Y=}W1To1?f5!p?f z`0vk&`NU9KN9tLDwEcG1ryRbc@SP|A&=x}AIf}t@k*VPUuGqebAAiBs-?N>?(}lfz z_p*2IUT(ehRve(J1ONaa07*naRKEP>FZ1z_f1G{$_HpgC*XB3F1%^Z$F59rk<$EW& z^hIx_R2ihxs&oI>{*Z_6yNi?I9;9?wZbc-<>C3yXHxpv4Wn^S0Lqk){EzdA9Fv+p* zUCf*L$Dc_&n`pGPII2L^EfJfDjpYG4NlZNqQNogBp0%#Oi9%tLdhH%sQ4@<|Z*>4{ z%!93%N^y)%xQr(h8pHLYlgxBlJla`eYI2w)*7yaV`Pl{9L9*^7(YXp^!1WULjCSd^ z3LI?sIG*9+(SU&=&B>a};aNW|voMxH3C%>22!r(EGz%Cx6y22Qbz%ntOjcupNZ|^> zL{W3FA@N)TR?>A$ z12$d}iZR+Ct-ueRcKwC^~5D2tQ{i?08De;sBbhgjlu?vAhVv}sL zHco|a3{P-1+17emDXPQ~}} z{aAAtEJbIS@!}Ajq(;@PP*fqitHUhD0vA{gTg0luM0FcZaD+sr;x-b6@3^=sK&m1o z7Y4mDp>8lz8lhAeV>)i)x-P9&hw;e~8qGG%PQCB5c3yms77CtaWISLxauE0=T5^2B z$4fL?Cv2+5DBsfQNPG#yZj4ZtQ(ZxSxigm5fGNw=jGrGk%D5Oh0? z?;Pf)TW@5Czau9!ePeW_U9j#qnb@{%qhqUMOpJ+>2|IQswry*IiEZ2V#I||+oO|z& z^q=(VUaQ~QRkf=ggz-9NakX70*Y6jC?0mRl`i~K+O&1Jg=Pc)WJtK<0u8`ZhZ)Otf ze7=};@jUw<)N>k%+yFn&d=!PwgHpbFG0PUY8Fw=W zOVP(#DUcFqrdOqmUy`cmuQm|QWmFMvZQO={KsgD`9*%nW?r}zoAiM6cTV$MX6es&z zhOrjspBrM#4B|6c=_#=)eh}1wr3_@#9_tQ%gTLJ{x(m|)wiV>2;(!C&Hwx`vrM|W* zmNil)V*Z>WxHHj^e5eCR3hmjf$`P^+0}|NfR4O!5<+wB|?m!B(G>JH^G?d!kd_@KB|LE7?_77&Ff*y!VI&=Na<)%2%DGLs|5FFn;Q zZR7DRg(#%hfZB#OTjN3%F|uS*#P)_$B4-;*9vw=n3wCPma_It2_n1gEhaQoIXxKnl z0$svsuz8PbjQt?PtHdVQWIC@u4InRr9$15(Buc6lD`iWE9g$@7?Epx)EEks4jMJ=&X_K@EU#?hHsx5)2@q)ITHVNTatF$vdM!a0TK&N`QRY!QMve3 zBTTl;#o9RlS(Q%x5Mm9Ee<2fTO%x{Ew76tQl@?1m#`JE4x*ER=zVt$j_kV(GA7D7z zFOu#*?#AZu!u;$KmO?Nfr%(`#|1Vr}_k=1Too}=p+m%lKdmkAImxh!rVb3;aRJR$T znP?+<3J=q5JfpYZ-8uYvzs)Rn6o(fyef0@P)8&?@FHo69#F1YpW35p*yV6>D{L z4!l4cK8$E-!)sd@Sh3nD`M;~#DWUwEthn9y-ZG>Z$XqCC^l|8HfipIqDXwCq!Grf* z^Ym%8_ps(rj3ds3Y6#5@)9U}3(^g&al4-n-;`bTT2SBC6e^2jq&X)YfWmNn9o=}N( zb>MdsgtV6Y4^wTqbrM8D%CI}#`x77HmWZG398FrHKTn+7o!f}|NPC_S!M^6a5pP#s zaZLZH=@p^)E#h4y_qMS035o?>`zl*6kuntLsFvWcGhZvkbQFIPp;~QMB%w0`mZY^p zDZ|;M5`TvIM7zwPYgiH1pd0CLY~=)95Udi&FMX9MkBRcyx#r4}C+D4z*MBjl%t&Zi zTV;}VBF_S178sPZUx1LpMMpQzew5RJ zQ&=D5ifFTRvVUi__bmK5KS|&ekVYXLgYbRJ0eCys&fSaj0`{u`RdYzt<@4<*6PB~{ zukW5cVZR*C^3ost?$rG`Uc%llUQTW~eg5J+Ql{Yb<^*7EB3ez2a)VV!9f>}cfVa}f z7?a=Lf4w=0L&c^-T7z{q_uj-9k@+FxHC{DS(bc2Sgka6Vi&>izU6njM9b{W)R#XEJ zvD9p8x&3k(62UF{FWHuX+loaW`|l%^u`$DvQAA1r5aF4eX&OjOVo`*uMagaZMowiH znQkqMUs);)2ykZ9%&r&<;TGyFZx@cjrcyhYdyuITv^^E^ULN*)UEOzYBMa_vm$YOg z-(48-HTQ(Zg9$^*)C`}s*z&IyFIF{w?Lm~28b9#Ds@}{_`W{*Z9Qbq|@G=p~I9O4!8x02R|$aI zOS5%qh;@KS4{aaRNJ5JkGv4r$c974+;I}TYHoM64eiw&x)q6Nz3K@|oEY00IuMTAF`Y=P2j8G>Xa zRf>MIs!&QP(@|m)DilFwh8mxWu9?tO{%mDP$B%+F2|v=ow@odM>4TuiF>0_p1}ZG_ zOf2b#jAaz31n&KUh7U1c&fmd3%tSsA3pgr?$f8aefDQ4U6dNxjruQyh<-lWKR#un8 zmlj1W9#TMH3XT4uP(&4)s;>dZxl7ysI2%@WW}F3S4W+76iRO&%Pr(FYEO#MFV%K9| zEykcfY>)U?a5&(&mUzsUQH4PyQ7HnqE5WMkrZTtN9#Usf3yp3?D`y!DUrrj4ue!v@ zGiTPXH7C2TwnSnXeeiaoJ9*=S`fa&ai?tD|$9E+j?BEiHK~_Kky8Akje&!O6_&ypc7F3{}zIg_&u12y|=4>a)z%o#6sTi&74E^ zhS%i2&rm$9JASzdA>8|sxu0H_nZdf-&wEkHn^)#$=vAPF;HM1v3;3VgzQKCu1aWJ=LXOtAJ2e{gR{uLkx(u4KZkL?MLO)<$4u$?8 zjuLLLAa;*-cSWcqwX9K@Id!GO149&b#-{1UCs(7wW$B@^F}*b3)YLRC5Qb~eI6pUC z*ItlJ;*giNT%BGfT}K@eQN4aoeoE_avmzl4cw&>+n6FM>;3C$l=RNVk8v~9gisC%w zYmV&!2%v0Kt%ab}vVsqOXh_IPhZ)Ad-niage<#HW=KpOB{wE#+TY5`B_fg!JuYA%> zBAJdm)rFtG<$NUM?tEPNu}p8Vz51M!?qK+R4!^JJUngjG?80FTyxv@0|BLkrIrF`b z?sy){#vv7Lz^!Vv@QiBbV=>B5xvVmfb4mOM{Nh(fuq_zrx4c^+NPz!AyZcIf;23UP zE>YDKbu1$fvnGl_c7K9qwY~6B8%G(S$QTEKuR;DBD$AGGl1W)Ryhu@w--RV^{Cz^K zh8ruc%q^R1KnfmEn}t4ZaPTML1muctN#KuUYPjgcyPn#ZP~0Rj))1uzp9#FyedYSI zDWQ6HKcX4X$f_^rMQUq3S+L4I&lYc7Rh*~*DVs2#kYd0D!)yC#rTgnYzk6xFiG>BzwXMli?C=gX+R0QxJ&lj#uFAvq&A53>OctVAaONHuB}=#bwkeHjKU)j6SVc z1ncUF0KtPLa}dbtgMG!OQ?)$ktnI^5d)ldd@t39T6wn*2b24t0AaNJWvN6;nlFX#r z#40El$o2{vX8->WJz!YS@RhRrCPz5Wdy?UK-SDlu)$>Uz;ZeZwc_s9@d+WjQ1bc_&n;@9J|#$slgeE~`E&4?RT|GZFpT)(`#6IVBJcEWzEYNYd62%6XdgUAi5vHVCgN<Zxk_`cM4lyO1TIAdsq9d{GqSbE}3$K{6gZEm;~JRX5O?|eRy z6DlcUqf55B?w_$6eO&QoE$9Bo03pFhT_UrFpWx1)_8YNo^Ob2$S{HJmT_6lGpBU~S zq38ZL#Y;SMN1OeCJM((lCL7zElCiJ-HLn;ppI>1W_U}KqFFVozv$Ul$Ra@i{#;6w1 zW@0q3L=;itgwDLr*Zr7sR043I1kz|J?Zn8KEc@l)IIWxe)B!8yTR#4)#1N&`#tfmJqmA= zZBcTjRhL00_i>hvFIdp++D6wq~K?!HL<82|Pg@nQD^osf@xkM!4m z?229NwW04(XAp)as66e^Ug*v2w01Xxz_6Ep`%{B?o3F38U3eNs=ot_DDC7Oc{);bq zZT+RH`2%qaYQPy1Rf6rU%OxoEiDttscQ6Bf+Uo#TEJZtuf6&&=JCMcqM3<2f1~AyW zh=!^m(|1d2YY{giJBXLkAnHohN7DO>tuMnG_$ZrD{O&tJ>L~E%Tt?D@`U0?QZ9$Z%zioe+4bf zPWqp`gAHE?o1IAU_qhK0e((P?SStM4+_85-^D^K4t`_1l;?w+v;dY+8_wctX*g6uc zDORK9>Dh?bgOd_#Itt)%Y#{V>^Y^artoo>g#Eaq&D6RWtAk_U#EVTP|@2SpcnQOy) zeo^4PwY~KuMbqi-uDUC)E)+t!dM5`4<8n)L=h`{`z%HGL;LpZQmCpoo)ALgE=m`3IXST6)mqdPk( zWt@G-we9JA*FP%Nm8=;}?r!Hu97a5;iBMHb_Nm@BaRV2v{$B3E{n0XceX_V}PhNdg z3_W3rJbuFYRrNM-au2r999zB^8<<^vMR#%S=$xBg#G6=LZxrMwv0fG!o^s9UyfAM@ z7K@nh-J3Y`bZPnl>#?OAltn6(j?yyFWA#Z7K5-*A`@%Nt>Gn>(!q&`Qy$mlO+ej}L zPhUbL-rIf!TGj0ALcNly2BQqy*YofD$p9&aZlG*!D6a zXh|P+p%1IAgQEI@@2#ClgVTLx70|dHD1&bP)DhaMf%zcr4 zQ4Y|xro)WXDvwj0yJ(p2QZb2FB`rGE)zGq5iTN&8Oy4=y3!>aq43${tdIK&3JDrh7 zC?!+^YEyuX0gEB7?a`8?UXb#zdQ>XaeV~r6FXNeu98f2G{GZ5Q6us0zMq!SGV8|J z8I>%iQ6+E1UmHbKmY*&Bp|v7!XQAbvBX&U*x1yu*6vK%TmlStFD3kx9QsVmu@Aw&2 zsB+$Ja}TGhy@{Ls?g+fkV%puGdtqA7taA_Vaz7Zq-k03&dfmPRe(;YIZM*-D%=O{m z>3+WLVtPeld87N>{gcYh-Wr_VPTb>3A#nDGq`*1jztOQweT+!@f4AMpn0l!4$mRnGBC z>UDtArbUw?Q>7(b_P60SAgx*YjXIzb)rh_Q^k!h%S(U0!!CX8wmMSVG3XHYMPS z;?r?W76Tqz%T;&gFzM2$fClv4wqt8U9A|0RY8o13e5~+-C}YUE zuU7j@F8FENu&tnu)4s+V z=*Em$8R_|nw9K3J(f{hil7>KplI{9?`JpH?WzDa6!c|;@s=)*~Uf+uo`Ln{-UYK>=O!ChYpWB>Q&blAaw?AE) z{h3TJ28~Fa~JQ z0-FuQ_pV5aK2x7qugB!*gx#!#Xu+AlT~*~RkslU$n*G&jy3pZe!Go|CH$kG1Fg2XX z%YE_e>H5#|HqgW)97Fo?&Z7H{+xM&coqD?agzA06g-sdFe4Q(<^ITznY50&5mLOl)rk9pm3T%ux!h|~7t zU^K0hym;E~frC^-Neio(K>&+v z7NRO%4puNX|K&S?nn=xbO*dn&k22JPscIs}WxdJPq(1~Hy;Gv^U%zzO^yEEVL1Reo z4IDK!HC|OpTCQQqG2NqqHye#L5%K5L2V|pJ+mLZ|FKOBaXRkWfzXkb3bBYpm`dWkZ zmMf3*l_ofC{GZ-u$ZbZ5)JCQ@0Z8KClXj6&Sb_&+MLv$vfvvO{yDdWEdx0ZVw8<3< z){`7l9>2ylLg2A2I!5BI)M#G;#iCNs-j`io>8?BwMzhdKY9-pb5?Ih-f!I)Vv^WC4 zL<3Hv)8mc-1qSvGFOQLUw6w^%fWDmZC)7pkxMcD{$8^8p%ChH~Dnyig?{jRcWzgBuN9ee%@a!FSPlO;cwcn*WEj| zghu;J%M=JlR}>wcExCq1<17h!&Ing;RbM^7A>$Ac!Q8KFu*jIS--xF0llc2z`-{C& zdv|U#>AXZ-gji<9xknM$pm@x8h}2{Ll(F zHOe~+H_5XFq{rifSnv|`v{UPTf}ACHCLy1*r21 zhlYJ_m6HPmnk!}R-Zg(<9K_2uILky8ON8xV9lPqdUr>kQv^)1hQX$>l-7!)!sZX-E zvHreXIN?6CmT;Z(74O$?{^Afty{_!k)v}|Kh(v-fX3j27qy!~B$ovA!3Md%I5b}-g z?*l;13gTFB7wLjiVz9sDxR8l?BQzag_mE4?73Z`C-~#(?2#NAGqaBL+PJ>Khi4Ti7 zX|dF3xmec0jqdQ12qK2U zT_jAI&ptDLt`95*wfyH?B&~k^ONS84Fw?xvJ zK|@1>S2Eu@IB4FUWLOH_-=9H>IRc}{Bd`xrfwU1CDWkBD0j^nu1tlefi} z{L*+Te2olQT(w+%(?p;fGkM*oRHm(o3!Qsx(G(N2qoaWd3bD93)iic3_59Kq&VAC( z!n>H~AT#lP8q@$VcK266+5p-c$regaZQ=0zUJcz57DSM`%r`OGC^&%oJt}FMq0P_w zn?zvMYBeeZ(eOel&hz1}9x$wUr>FN`J4|q_>xa+Pu7jca|HlHTpw@i#1fJ+qi@^C8 zPQ`|gyk9&~_OEkK?7#V9zW76A|0O)!|LYgC_O&s5o%uKa^)?dJj94({E2R8C>zcPn z!6iyLqBb`rwXYSSQ<82JB3C+_%%3|Cn(ViS7P(JH$0#*D%M$Cjx)B7!NA}NCp3khWC#A2D=1orysQJT0zZW#2 zuSNcre+u7Qrfy%0`IoBE+tr@Q_cL?fbcJr0g$Jsd^CgZX{IZMu#v+DMh29OE9-XT?q zgk=87ivg!AlnK zclWqOQ!&yJ^;i@|jA}st$%b9^zoGb%`UXM9>fBrjsee@d9SJtpc;5God-`ON#5P3Ep z|KIoeptqxN;*8R}$wJBp>d$JrA>Ug`#0^KbU~3*SmLOFbGLIAM?Fsuyrn`2MPh5MC zyJb8AqM`Vdp*cb#H;OCYZLgM_x`ydn$-nQ~pBMTlcRXJgJgsMuB>l}y$V52@!+w`U z9gigy+AVwkiQ*<$)*njdP{OHX4f6H<)--dk>Bsrp{qFsd_+t%W7|?`!i_rZj=r;1NbhA`O?=2xD~vtKcTh2B>1t zvC}^(A-xjb*{(e02UIRy-YmkoBFzVojxQUzdDE3Z3_by1bay!E-W98@Gu9n9Y#tU= zEXw-L4t*AHH7ptV7(kMVfT{`%Al(@V$Dl1fc5QE1x6PWTr_ivW1{+oFy$Pw{8lOjy z*Ea6F2mz2|RD+B}vMd+0D~SkcelSND9E1LR&NEuXVh@E&Wi|we)3@5$oTtjcBBVin z*D{esuUCAl?QtQDVgt`B5-7%^ z+vxQCmODlFHHQ6;8A}H?i>~!`9eD}=F$=z-GKgNHBu39~#spq`%l ztn^!uOeAjh;wn8^Tr3)IH6$p#2U_sOU9@!mUoQ*^c!_pBg9@IIa^fSkZC+xGX$h$1 z0wHAH>8oZho+t5!Vm8CsWnVwE>s`;i{2a5MFaQ<7R*K!iL8!Ra0I&uLu-vx^yxvHl zXFyS)S!3?Jgyy!-F>cv)blC2kU|vYeF{DN;6V-kun4Q$`X0ePt$qqN1L>QR!+J4S)&$4_ni^h zwtS(|H#8@3Vi8Be#`E1FrVrik-j^YLmIY7Wns3-|%&!f^X=KN=LXc8934l zQLsY_k6gD)CP!Sbp9ciLkTVF??eDYn5b{nLIa*RgTMehV1|iKU%}3Q_<8DURZsM*h z$Qu5({|RK z5z$ZJev!F76ubF)r$u@B$2SEDM}PS0W2+Ii^;e~Y|MKU3_t7vDAm(?-5Pmd0B4~d6 zQ_0|VZrQk~kN1O$$;bEEVvZB3Gb|2UvUyeJgP&ER zG_pYBSK=^iTY373e06+5^K=;m@KU=5I@_`UaQTE-^>WU%(GKGUNyl&Q-*cz8OW9|+ zjx&ww0~J}iuM+3TV)6=%rIWohV^_5w=1M10#c-@0V^^)@qv?%E>ef1XCR&z+6(y7e zqI}@j!FI@l&n3@Ckzf3+ogm? zh;d94bdCG|meP8ED~AW0L716Cqf@H6avWByAB@yYXKI%AAG^h(0DK5k(K*j0#D5U@HKXROecP{VlK=i`^+WUNFL z*<}#+-7p5LqD52Qi~*_x8_|yH_8k>b{r-E(zb4!-3*^u#a9D*D7Y0F%s)m|YXPaXO zKyHS!RiUnjvt`pxN^u5qBA`*fh#UgG;?Rnxvggb4AwIW2Vd%^<-vl+uBEi{%VvM=& zI3N1Gfj#e(LXNp^hZF_@fPqz%D;$xFO&ePqE?bZf6v9^OYoEYXsMsQb ztpK~!_=reG%(TD3GE~P6x|HFQ0lJfa@M|j}StiTw*+Hc+shyR@TH@;U|ACUx_jh(k zHx*$HUJ#Lz;K&tFsnP%?e9BbF-zjI1`Lw|5fMW|8L>;PFnw9}8zh@hC75cRH0LZE( zU2#K|W2kuJIh&cFr2hK}@`HTQLkp$ZOK0V=e+l~hu>Huf#F-}u)?t7mf*@Qxm5N5v zrzG#8ULCnwtvpq_lI0W^P|`dLkC6Me&%jU}fIpP<2jp^yxos1Rk{>(^3ODV=9gt3Y`qz8DoJ{$t=c2K^&@{?*uJh z-QdcRxvc0HQs;8SreoMbV)X~H`vJ?HAQZI%{~t@)ar#EgMOOa^mG_RgpTCRTzRsM| zlo@ky-n?zCfE%VQ(_SLMjl#ezG^K`W^|Q@pM{@d!$;4Eyn2y3^$_aibQQ~)-t(NeQ zHw^Pb9OWF-vnE@}Nwd>vbHgGrU0fFWUo^35XSmFr#thS~e@1My1~f?pW9#-E=C8%e3!6L{bGAQW^*Tzln@%B z$C4ad-v3yybh%KtZM)D&$L1U-&JIwkheDS>LuKTTA71FH7)4WTat~=`&A}2h+gX^~ zg)7EEFLg4SDtVyOfeSw(WteKoa_3%)OeQ*~s3#qzN|1wK0I7`Jc(J_XuO+m!IgkWD zusIaqBxd%&F<=fH(HQ2;Q0eCMbTKsPZk|b7Z~{f+Mrny7Ynpg?!1@1d-I|!XI5%ya z)zXDu_jh4(3Q7txio*gxHt<(W7;6zak?5&*k2(j&+C0NZr2 zCf>Lx1zUz3J$K@cNhn^wm8zG6{V zyY;9_YaQwV8My`9I@^9o6Mi+HzP<`mEIFC?P1F50VGFPzpXje=~aAR8f$jtuC$%PWHT+S*fIB?!ecp-MoGu z6cVX3NV1e3{2=v~7|PiU3~9xgiw2G#620%A{N?Qlc?29heo2bWnc;f4ijxyRC)10~ z#vizE{0p^+oOTBoVUh|6AYtib`~Ew4C1o_|rGO(hwslA*jo}h47fT9aeBUEn!>_@o zqExB$cs2+tKph6LQX3ih`eIoDzqd)*;uTY7yGCMpEKU5k!M$V(QK^3ue1>PsA0xhD za9CmZ$-ZP+sSE(32MyC=!fRRcmQ#x2*4;P$HIWxH&eOWLa%smzfQlG|S0gBKH@yUy zzNM!N_1>7^4}+FXm5bsC`M3j*OqZauxn9ZKgc2zK@lLnq*foy}KAoQ_<=uOK`!``Kb>&M;NSL>3lizrGReMz4LM(dv zl0zL{vT0X}!R8peQM`_A{fgyPWaHovcW`iUUupAKRU=30Q3FFRQ3KnZIWkgChE4_e zINrRxu5`5lEJok7p5gmMQ%q8^{%_>>EH1!FGlP%C(fNboId)yth z!SCL*n`MVK;T+N-Y@9oq|JA55MyP~EhfWvp_rQ|sjb|k zXD9|Qs#{8I+I2NQHo@lQ6HpP@*+{8eN#EIEt)vG#kU=a_qj4|kBrz?b2Rj4T=()n8 zr0`usu6h0hLn!`%w-vmc7|_s$py9_w@R(I!oa?2DWtX*t&g?OTpNt2d0S6W z-33Gd6m$7w3LW%$s@TgkX8FD`8sU-^pDT@kH-e4jFokR<9Ed;N-C>I{C(RL-U1+fp zAVq^viw^cuGs`|R1;A`an7m2l5jFVCo?iuKYQL#Oj{ zYyW2vrddt_1{i7pFZjm(XOam&{ev!{mGqTb60HtR!of}GRT=Ng1lsMPc< z4{HMqh~ffD1?n=mQXj2Av_y*T4}nmlFtb$=T#S0l&m}>^5PE9sg3fByaxqlM7Q2Qj zQdni+z;wdE-C=M>A8XIudrK(WtrV316^sm=C@RFCkII+Y1V@H>&5Ffc+h>F@8wp}v zSN>VPLt8f;JdI_S^{e#bv<`Rv**qmqCO($gE2B37vEOIEAVs^xQTdPa0uA?CRA4t+ z@#k|}fpu`WScTKdP{#b(kSB|3kdtm2L$%f4?9^z-<}Dt-3zIKXJ$&31pX z(o}(0EjhY>4-#|V*dM4$Z~dRTW5L=P-g{sm%%?Hf>^jG-u5$Q&vD58)?gu|f?gbV^pXgiDCOo0dH8VRNQY5^3hFZ{cnVIc>+v#v5qqmC>s_ zHQoMt6MX(Z8w7}&S)t?q-O2GoD9ruh*o1{`=v(Ax|f9FoMBvNxAJu1cFSa(K71PKp?GOL3brHe;zn znJ81LVUKPODtD|Ep%hJg{B*V)kYY7qUYU~P5=*;ZY6#wUu3MxwuL zGKU$@HP2Zf8Y@wt&{BYC{M+dGMnpOZiZd#O&tBauPO3Z-h#zQ4~rLFslRsxi*6#xO+A*Ved-^ug#5-R5j} zCj{v)bCZx=(Y^6-ffCY7w&$_iV!YOKcf%G16#SGoesF5-O}G8IpO~4MfITdGz9dp; z?##d4Ay@C$!!=`vZeP#0VVqljFwOFaH^@ht>lH5MPv1MPHvRhW?BB?*2rppTC&0W} zk%b}OdcH<=b#gni&}%hb#0vQWZ6VGiO!VRUa_-(I!XQo=OZZ|)RSub7GnSk;NswqB zU)qYl7ZeiO!WS(iI>+cwQN~Q`0FY%+7P_#O+}@^qryPtElXc#t;>fa{TOvxPvyH!P z)K6+lBh3dI}zVDu0XFV`9eoq3q-ng?jFZ z#gZK1O_MBw#;(Z}M{q)&&2F_uv|fpvGxQ`lb&o(+FlV+M$$myZwiTQo!QrQZEiiUI z%Zw5&6TdyRLx*K{?=2j56#d>69CvY^eHHrbn}oN(iN}JI94tk(a5vsm7m!gBKQ6n` zlEeq=9q`kDl$u@;>%!(IgDze?KLztgQ8tt<+S-y(b6w2EpKp-WXa775ypb(2HdvVn zP$2L~3>yUdS>shDK6=N*%MIAm&4>b4L}7^D@qI;tNNe=XyKBi&hmjn1xidNgdGoml~DNgA5+KKSC*t>uX6?872w z*a{ezga)x=keo}ERkOLKugu=wd)v2!hSGNjBZ!>6EQK^!?D&T_i)ErB7PJ;Oq zxG-;U{#lT}bYp?T$8Y`i49kqZ2h8vw|D#q|&VU(lS)x)6X!3t?z*dRYh81+uHVde? z$0_pvhCyj*nSFNxK{Ig>)K3?s0)oM2{M`lzJ4EjVLhwQUu~%ThG;L)A`KSU_tGJ5^ z{fhVcWLs-EK}o@|*>;N4%;+(dK#>98ocOu2tH5e$!5~r6z4Ic8a!Ud+iH{hSbn_yC zHBU`gw(V2~Gxe!oxH_2=va34WdJQaSt;v=;&hkcjibA<$(FR_#wNt6n_#s==e^Sf_ zcL98;4`Nby68@-Y@ry1@)S2-5Jg^WX!#BI#p~tVdot+>5FDi79mAur_ z%b(0{-s~e3%xd7AeBgP{dcTdCEh0<tPeQIdx~|x*I{`Q|E49Ja)!Sm8_wELFr>V0KS$m5S${aP0fw<9D zb-^Dh9>={0VGsd5rK(Qr@c!|D$cWrcTIPA8jnX?uP7o=jYtsAUk?xa^oUu>m<{w|{6PExF`cD(qYgC3O{kL)k3D`42j zTYmK_wTy%mGpct+-9d#PcZ~ni{l123M zgZz!|Q{558mt;L(sOYZM9KU~v;;#<*yJ^3G6s5RMOWRP&&p8j#Fr@%B#q9x#=B>U- za3HjH*VE-3JFF|&OI+!UX;o6+ma3v9*UA%b+(wR`>sp1vmvWytq9` zNM6RDK#NSV=AP-WYyvXYolq zi3n9C%YA#tdG7Xm{I>N1^Ow4!cWM1A6Xj#wMek|;Y}M&V$-{J52%anU>uHkbTIuWB zN>P9FZKD+>NWzK0^vIQs#}$8XxV_T-8ecWC&JrGrw$0N^tH~5~*>Yf$sKMaqDNve@N-aSscTw0GP3!e%*PIj zlChLG4W>+=xqknz+$x?nnxwpi9;;yRPb>r$oG0lnVnM7OE-J#+vBXyh==Ul&kD*9f zKdY(pC~R9?(jP9*HyBzhgarnyqG}FqzJNW>bh^d3NW@|O;~fV`HqvFDkyj*wnlUf; zpK=g=Wg81mA1&Js1`B36u;H%S=4S*fW^!pIlFxlD_9{buD0>rmmIxgUGOJ>Z(_s_A zH+M8^65~&W^ntXAE2rV=k+7%lzI9>hQx^DUjMWsVef9|J4JFM>i#p9o0rJ$6^;Uyd zt;e`J1-!G|0|gf$`AW>GJ)8;=gS_6tX;*tf_gdoID&&FEe|e)>RD+r%=unQ7nqm9236 zo1;B6^J;adPR%#etepS4zvkngQqi30e7THB55sNk_;w$TFZ-ypup1PMur(0|%I3%$ z%h!J-FAKEWU(F~piF2zTE3S$jy)ZAIhF=()FT{?IzMtp%_IsyQ5lWwDJiK2;KhD?N z(oy`b13S((vA18=QniF#pIOS{C*oY>HXaLeZ~alekaB%{r5?B3h*G=3$k*#a-s;a- zrJGyLj-apSErkuoqyCP^4vcsa<<+6XNjK0O!uAx&$Exm13*Y2b*8@?5Gm)6LCOcVevHX<}C0iSv|B%6@z97wy&iOgCutz^|XA z`=mH+3DfZF-SF;-=RqMN2R-;kWo8Rq^&z;-uJrX6p z=)a#ABxJc9(_AB@KTY4JXT^Fqt{nw9M91uiZ{Ou6O#!8|&RkM&sc~{ss*YR`P#HNt zZARIVqpnKTnMu{dwz$MB+Y#LkaEb8DmZ!2Ok{OQMMpq)R+%=*<_7d;NxyTURXhx4C zGA`q{WD9_jV6%5^=$L|V0rIw53mPU(U z((LdNkzMOe-ndI>%x9xz01yX(=%i4-c{0?987a|58K?}5@am?s`O?6`wh|0Tv==r1 zSTS(hG-;kls%)9DpJozERf$u^8=)tp6n9*#RgTULABFs&#)x@xayHmZu%It$uY>mI zKN`+i&hYBY7L7okw`uuL}92_`i`g=dyy1PSryM%~6oC(b76}YX{ zn6S|DhptC(WyMw6o`l|&UADmB4y+I>_WC!t>Xu!!prFx+K~RQNnV39BUC~TKFgFfU zJbv(zB;Kt|QAmr8nm8TPRMsTIcuTc3?(4DV|Dov}qa*vi=i!MlnV20X9cN;5V%xT@ ziEUdQ+s4GkWMWU8iEZ=g&;R>--rP66R^Qcq&pl`Fs@hdmoQyw)*S;*a_FAT9zy@yB z3RvDViJyXqnV2U~R4^<%MntM&|Ko4J_`nSxs?RLonGW zR(C59hA9w^SxyXnNk$(=6?5VW9=j*`FUvo z+lOEizpwH$miS_!Fj0M)y!XcRW82Pus1&2HCmOEq-J-VJm(l-jT5zYPju$RqcZn!m z3;$5=@}2Cn`x#;>KF9s(Rgs2(cQ3T=lV9NJfs-WQ8x@hnb%VFZ=d%Cr?>bv!bPDYO za??8fa-1JAb`GB3M(-_c*PJmP&+gjZf)A7BD7Cu1C@P@oxy`@Jys$7;Ic_BETl54y z`aivA|0NHM?RrMJ*jtL%8=SgEw7AE5ess{AOlmS1wGjN!e{l`K;4(5J-mUXu-|D)d z)%QNm#05P01!;6$JbK)o>J#LoWBE_?zP zP`WS>zkGTJ)=*0S7Q=%eh5lA1Utqq&&C%^k1KT;L=|;FAi~5AE*N(YgTwG4ZvNMj! z-yK|hJyxomQHrgzD;kJV+bUU1NoxW#`qfD!^3aQbmE%uyvXBaq9{SBOeSyx1!oH*x zLSqGVV1leXFLbV$FsD|BEuNc!NZQXNHaQmUw7@`!k;lvEh+51<&P<1b6j5uQ*2Ba} z)2pBaSxTIW3~554fWucHx|Qu{zbx>I0B3_qsYfhAd|<)poH7^3@W2a?h>&6)X+^;5 zA1s74w)R0$x=&6}T$lv6_71#Qstt2%k9y|rgb?y*iwi5k^t;BV$kZlO>ZYh{JjC9dD zhvcfkj#nMgZOv@C=DDy(*m#G^c&>8Zk_}>!0nSa2ih(`$k2X1q%8sWno1Dn<+vbmIj5VX z5rnQY{Y@gcJK+KcIvh!DwlwlJVdtIDZs8MH@kLvz{?ZV(PAbI1%kf6iIi_S%4(^=K z{X)V6zxiI;?+)HtEZ#|_$DOZj^oI?6?nTy{-Ga6RZDK}=+P?mBAhgJK<%<_QBVtJT zkzRj3OLcXxKgIvNAg03jR^#pxSI1O7dj~y8Zc>eFdk+cA_tJ+AdcN=4Ng5u{@w?!z z2D|~{1zMA@D@xX#H{=$ozX(O-9vu{>cR?yz>J4T)Z;E{lBLm{-`f#jVuJ=R5pYNwm z^Cr7YZ4E8vy(749{L0y7&>fFm-ipv}4Qx`-gg~v@47_Y-zD7bYOT$>MIn2m?_GZc> z23nXWNGs;9PUltt@EQG_WRb~%VM{ItrSt8lR0{Rpg^>xQ=8uT#HQJrqblJe1DHFIT zgOradhCWn85x!V`Rs@iNiRF&|OW7rrUS^E0?C$JGC`GKY&>*K1fBb4O%^KWl_*e=-{Z0Sq|x64A* zE~bU~TG4A$6KgbVbBgjp)gpDd4F}5YLFM#x_jbDHV_SqrSnlA^CO>tV_+;u)M}EgC zX-9__$z27zFuZOl${AI2mg-r8&xq-0Esa-)_sqB8k3gY^3Bm}-NhZ^^-T12^lOe4X z7@{U&bS@5F_p^a-z)W4DX^r!37jWF{&!T|c=ZH8-IXHz-;2%jKtej1{X;!HeWil+8 z!jz;f1?`xvmXhdZD4-M%L2Tc-U30%_G5F8~mlDhY5Y*Xuqj}PaYxRG8=-aN@;ZOZ) zOw2tjuu>YCx$SBd6R-N!T1AInl}bx6Dk6>cS}pz=pCWqyb4daI=;TCr`P<1oAgn-w zsJ0eAdf_M<-qth|EpgjNAleQe{PqzCM;aY@DIRUx<51l&`BmxcL{z;UlE6(ZH5Rh+2SlQr9Wl@0vcCy~p=?hDHZowz>z1l1Vig zLDYXN$RSbmjK4o_j?-~wtouxJEakm;sUz)Uug88>2!+%em88_9&MHKRB*L%a%z^#3 zMYYK4`1|>{X=majnf$yEBul2KLMe9gH4OPeZ-kAN>CNwdY7weoWek#JsM3jQ5W+MI z+la*uiI!9i@TuBDntetJPvcCB1q)@IZq!`yKic0oRs6t>peiZ|%H`HlC!8A2B&9Zz~ z%EX;h}NvLcMEgwvk`xjYwq)IVgIEq!}D+m{B zo;CEr3CFzXKGi(h^hWP&tvmR*UAe1{tS~>k-Hwfh23r~)O)q|6UDs7^$7R)$t$gt` z(NRvKxHQ<}W)df{Mx@EA;1qJYNl|*+)41OkMOth~W|=~nmhF3ABZyfjW;h*eCGeUi zCwBUbAR<gWx1#T&POU zr#sI{F`60nk@z6Di@N=9wN@8c0ai>wA=r_L&>;(^p;5Vg{?h&7WT}#KTY{n^vZN-v z8O%(2{-r}>!#@ZPhFAv1P8)p5ri~o<#09G&Q=SpN+QqKpRb_tIckNMn<_rlhm>ehwxZWu%W;rb z5AGlcmJ6%s$f``L6t+`Zium4UMAqFpCwoBsS^7`LbF0Z)Md9yN%Ec;LETA~G3<1+j zX-`GBvl!GYMtWC%u;Lb<4BLqTmP2XR# z`e@0K~^X)!yR-^`;@4YvD4;d+-u zBBYH#L8{U_o>pvj6k~g|Nn=6-ijWZ7yPnuWGom#3qyXr^SX8)~drD!Cr=EB#X<3zM zxr3s!qSDB=JTw+OsA;Gz&Q;_-r3`8%wyF+q1YdF>VWzP?OK^1u9!b!laAY89LdE|c_%}ZAY4(Xqp3VeXV zV%W;ex5gFvXIBpOC7rihRV8Z7w%gII{pazdY}bJqrNi^nso7;hv$%tUivtUdk8CxI zo{UsFjh~PK;7Q4@rl|uN!51=vr&qf2)8OnzqkAQ(6ygD=)1{=+-*%7dkhTnf}BBi%P`1Rcj_7G~^JDyyd%o>V6Dl-T?B3*o5Z1~*1cK&8q`5isQ z?WeR|gn1OXM`r8-e9D!0+;(1KIN$l;tu>nS!ytDWw>8;;XtnLhqp&d;{__tQ@BP6j zs8J+*W{MK$Fw=XBEL*oI@%MmB;UngisATrr0t=Lf&_Yq=05wz?q#g*VxJcHMWoC&`hTvDMyF)LtL0 zCI+%8gBEPeU_0f^zw)%=n;E{mO3Z}FG(2cx;<`&3!zo;r1fd#gy+3_;(i`{@jS~Cw z*eu62+G-)nL2YTY)fUcz%kFsX$ujNxj4Zl(i)nf3l6TD|2A^I@RB+uMe#uLXHI&H{ zstl2PXbAEoD3h;%29=KbMes;lNv^!`$4HrsyDJu0c_M~N1@)1`YoC;U$B+J`r4ujTIky$izm2tyyN z-=KnUyzxA&Pl>;+xilE8+WfGJBaHg1fD8L1G(!n6LcNdnknh_biS`(^;kX`~{$Q8! zMq=PT*L>LcR1tVa*)p4y*&4o$BivJ88~!>W7Gib2!nnVG=pS0=vu%guL444atkLlK zPv?1|tVi_oR)0ch_{WwJ#@gRo#TZDqoEswnK`75`HolX6Z z-3b{6^CQ8!9bOIo0UfY0gu46mtDAL4;Nd_TzW*Qc(=bgFL{(gZq>@PS94MdVz&qx* zEkPd)2d_g5kF`9%070+!XsLEqFcI%RI!)#JaUfD>HWL!wMSY4*1jL>{S$hr@lAgQA z3v+kqceO6(D#A`R8NNAfsP4pm#AVQ4clmLWl5QtD6ok}#)P$*-E4FcS?VBD_!J4wX zqNEryK$1Mm+@hvpG=!2P-Cl-k;2D%r6$Us=L^r@UxasJ( zFTo_Vtg(La)l9Z)18#)2oneQe4Ls#TY$`zXG0l~Qz6dx1e#X8>LfvHwBoXTt^tAo$ zSE6k+Xfg&NwSc(N~0fD?sky?8b(Kfq~$&Pm<_BA6t>%D2e7-JZ`s$Sf@XK zD$AI8vS}0SaWhFySQ`ZfjnMMpv`W=P>%9p`LE`!UAY228q_!vgn+bi#pt3w>+kd6_ zwI(gSSs3y7-s+=`UMujy_fmdW=XJ>!_@#AqjAYVOd2jem-%GF&5Stl<>Ni$>C z$cQ#w!@2vYWcnf}XuD1p!Pjk`B_(X2yr~huG^EDUL2AV#ps;YdfFJuCRbSfFOwd#1 zKaai!HXOWm8$fwNB-Cz5&l-^{+) zA#7~*Vxq7t2`Ga$_J{M8a3ouRd_)5KdM0-gLh_7zX6wn{*6}^l091i*R6rx^7=@0b zjz~LpcvJLVbrQsBtl@So=}^nvbNA8+*tMT$nf<7cYslP+cRTdvY?l{=Yt-_kmfD+z zx9dW13j1_+xCr*W@5m3Ac_f(&y8@k|Jwb4za6{0{5o4JVO#$H@1QLivw;?p}!ajmA zeDdtyTR{=<>US|!4;+R2hwo^_$LYb zMUD5Kd4o&00)mP?e+?SkK7vRh)YOK_+>S}$Jzm$g{@Cc>Rw4_X<%40-w^43Q#*FDG;&T>pF_nor+FDSi~70`cIepyq} zy&7@9O`G59S8(u)=t(_o+lH}7;?D3swz|pWqssO{K8+LnIa_>pWi9ZS>fm%d`3u8* zX=c7RMi3l!27gP36S+_=a4sxxA8DewOlz{F(sj(Aw_hD?FgSg=A)RsbFGlXr`R%6v zfrTpf9$nxyGPc@)v&+z+!}Bs+AS_vbfN_07OjOS^_i%oGe(==bQ(WHv0}tu$(PiRf z5v*0@aOg>`>h)(2H4Y5P)cgSz-!;|el9~BkbTg2w5{ODqpyz@k^UKa zD}?oD!A1{aMw&n-#Q%s zOdA)I$Zh+?(nMPs)e9Q~Lk{)!5Eg4LX2E1tSzo;g&p|;+gdS0H|ICAap`Zn7Ar$@P zR;aF6y%xQa+C|fWgIoyogq!6S?Nt+5a2kI841W0JJ%XyH!g-QFunz%mi?(l|+7Oz- zR7e3?vXlvkGQV84@|H{mE^+MnP=0oPp70S*{7+%5c$05k)!DbG`yt4(-U!G7(J`Yb=*R7Qe&Rh4G>unH@!N}L#gPtm;zI!O~Wxl*Eo!d7N z!IPe7VrW^1&S0I3jqwV`7mTGCf=a`+Upu1upWe5oPwQXxeSY%=kH_z(j>q%vUD9#p zj{S+XAo}?!u2HkQScQx(oMgq&afj7Agv)pX|GE+@X!8D&+;*l`*LREAYL_^E(7v~m zj`~Ep^}PAZ$@Vb8c|I6Q5GxFrMC06!DIMw&C$r%^g%)vN_9F>}MwOC;Y%|xbK1ua#9E}trI zq(P5hI$ov=+u>9(=xJiS=iq%F2wJ-FonMU#yCrb;d#yPWuF9612U3?WXE|{b*m=GO zBiP>&P&+^Kg;ADsg7%uYL9sk(_-5wb9i3Oc>7`~+IY{8z`S}~Z4$mI<{lcLVg9bSD z=XEuzU*e-w97;J|@4*>tJOGZ$oXq+)W6Kf${BDha%06E>q-#H(#W8u#`y*{~BwHv}* zZHbTF2k7X%frph?U8byhYybuq7Z}haxHL(YFKfRVkg2!LvhjN|;EHomMMU$=x_3T_ zELyWJ*<*kY!lO>PalaL?pBeht}G{ zjy_5PliF$r4Pn`8qBCLlZmdeFs4CO|mK|Y6p!@+%OmWmOrIDfA_n&ySRS^O)V_LYc z&6SE`JwZmeD_-zuWBa2a4z6R=eoaxkUs+a=a&rr3>*3FNx;MB1_ms!FfGum|aKHvQ zRNFgbP80*6oD5w%s9O+#g9r;7{@aWd?4qk!#l8w;RwW%D5kHbI<5ny;Ob~LRs?XNK zOiDEwM++Q>ig&QFa0e6pG*==KGK{`kREbQpY&CYs{zL9AxJlz?S{<$_V`DV*;{$AR zfQEtV#C)qHRa!BBf5A}UL{k>#I$WQSEOi<&jx6%j%7Rk>s5DvLV&@$RrF~gPOMr$w zEFA9leq%uXO0y&-Ml`)GGJowC8j8})KDJm*&kbEgW3Q+FLK65Hx17yQ0daA0@HoWY zZTq2ayZiqE6-gd#g|@YAGwFKN!lC5$^mSP~rgOW%^kYvh;z%zKXK z^+dBS-+hYb(v@J2i3ZtnNOW%wHGYa?#IaBq{!%o0tPkNgZOH~X~=zH_jcD%sT z)w_F?M(gtEZgvD^@>F@|R#Tb+3nd42G-{usXxCbyUo=`hrZkh<0hW|Ny+lMV*Qt71vEZbbIFs9{;z{=V|?x4{(~owk>X*g8|W5p zN;wXulnZRVaTobbRjk+;r=#{oxLW1fRfWg6`-bldN!EBs$MnNdMUcQtqM2!3)>J(=KzR_h0V)0HXwazBJLI zNR9Q;9|{1$5R;{9A$M9?RpAg7vbA}cnhTYxRV3tZCd<;Y@(Sea$$^1FX)(wbEI4r2jR~g z?}xLVMeQzig;@1j@8CPul;Itx*-0j%B){ z!9ED^>>X63sTSuyF>}rqn^%m|?v}z0V>?Y!tWdW{D=Adg7qsMLQvQxPLx2(*CaRRR zDI>5Initn?K%p8<;dsghB7JTiThPt%X~i!96+3&!=+d|^3*E#SE7UzvCMS?WvF^Wsf|3=6gBX zm6+TklwAj#Xhc%Aj`rji%0b45F%@^`sHqrbaVlK`d)i;l;}6C3)xeGx)!{)GlDq!Uo~KWPziE~)+J ztb6+%UeaLL{#C4lPtMks2V)2H6UUc%HLm?w|G3)I_1=B;kLlxYuFoP5;66I|IVmdA5>spIsN-X+u<&qRoYQpZisRz>mt-;8j4{d~KO?pM3f*n7{A-whVQ`qyskCE9h8 zRUtwP2mL4-X0}^l2D~oRlQ-?*1vN zpQtYo(vm-|(FNgWiiaNciaB7Y@5Z=&wy0F|N6pvb^oDQw%q=Vs)PMzbk<{DSDUe%_ ztAU2VaDT;ofapo|$G<5N)S*x4@El;s4{Ly5(a@3vz)nqsrtlow*a?Xgx(6&&i68+g zMsbs~e92=!kTh>(vr(fRmVRAtt6f9R#eppbl`3Utnb}hU;eE2rV@Z$_L1DtooErJ6 z^kV#=Msnr(elp|;6P>^65qGw_%iL$ITPJzGl~71Z3g=yIb1LL%^ombNdAih zgTF5G_ts5!AJ+fhun!)1DEatb)=HZZ*m&e4>^nFQcF6rV1upz9_@-^DKyh(#&i_Jj zlJrDzrGT)GAeHRa)}aTg+-*2P-hfjEFi=hw z$|D>{!xA%9>|Cvt1f@crDA{0l$W>r2T6)$xDEUb;&pN*VaQngB>3*Kh&G zHmYDGh|M6^$k=PpRj|aPD&d1>;#tG$O;?nwwV^iHj!w@@|Aj1MVF#KpbIrsr+LAzn zYvq&~O`dhR0!_-)bMbW2Z{uR2;FMW}HH|wI4}Jdmgrr z5FP2&lrzXo?uIyX3!2=mK{LPpcK9AbQv3zm3CJ2F_k15$8l%5vVJYUnpun1?zWAtDB$P6iN@UQd`?f&3x+f|m5YnBS5dhW(Hp%C5OK?oVp(l&c|J)jk z0R5ceIiO*yTI(PhwR>bkE%^FKp_V&JEYmLd|8N^NFsJ)Yb&+pWKi#@{z~7CXKLY}(@B zFWGJ9c3u`LR}~_J<^lR}#74wlJU3r3R&>8B)h;rl^N0)%a@|9+vNloE?8XTQrC(J{ zPcZ4<9uw=0X;BeR=T?etLnUQfF||9ub<4z4n4J8bq`fCG^yw1zcSw^J2+#bzLmjHV zG2Ylv62Tzk?vOkBOF-D}QXuJ=&BSC}NuH1b2(nkU;R62=E{4ugxjlYY01`Q%KZR!Np*EZHp ztq#)=D2#a|WLGpVIRLGU|A0w8V=PuNd{DxE)k}R9%mp2$qV(M2#-yP?%A`5}gXjEC zRU!2ffp~f?NrOM&my-DNBv)G)Q(}QbdHBS~yXvX>f3!YTC}O{CDQZ}pBI0WeQ(IeqWv0jKiurVkJL%SPIn(c-7Q#PMu&A;lPoK~H zcjV)AxQC={;83(Kqe=$5uGUrB4=Np;$7J-!mTGhmf&vl~Bf5xci7SGUKX59HY}s)~ z1f7`ROkKd7U(>qlt-r|{!xjSt*XtgdvQ#oy=RzzE6gpF(MrksK7miP=!SG^;=Wie+ z6sw>?>j-3ovhTI|x~TpA;Z_B6#Jz|n&)Fz$@|Q!Yrj6(h7OkndHTrbR4$HWDc3DO( z+})lt(gV#;JMR>8hcxkgrMg8X74Ey4!6rJ)RtFd)Sv+GHLr(smOO#S($|TkiqUbBl z<+fWg!^)V4EDNWJi9ScK;B8N$g6U#9+6Ny09x-m$cnuph2pt|XP&tKG%||d_cd1Z7 zutMml2o;k(5}&&G3k6bXsrm02!`7pEe{0yp??#e=28_4A2b)ySzbvErcyRY zQfIA}bm`ZORw~&w_q71_0R@8}-QF3vTk)6P(Gy)I39_=-@WG?ksbuAxmMOGH9rESE zl%wte$wrCW^58ZjlV}Hyh${ERN4;7*>|pimZ%^=#XUT#Bd{~$Hrn3#sxEVISX%o}2 zPm9aRqO*=lm#wYU$>XZaDpiUK>Dcd_&Qv-h9Jp|{wzhC^xFMTE%s`-{XJ2THw~K*& zKvxJb2DqLG5%LHwao}?r2>UXYINE;Io8EUzFXpJYz5H~y=@xvbQ0WGaCnXMkjFc;> zy`FV=89ZX#%UgqGsvNB$)fl3a#O0caOM<5zw8z{ zoYnTSS_4F9Mhrz)8I4DCur4g>4qi}Anw?c@d@gi&e*|vm=~Z((5Dr&{o_eSv;>8gW znf16SO2uoc;Nye;mqpByrmAQtII1gEEV*TxbnD_|8u~KnQbn@Fh$f@K=Mc7ZfD!GA zRU8p_%n;Y%{5Ui;^N)Zpj9+cHJ_t1Ij|5A+tJt#`eGkKjk_=4LvhvwsIcu=r;xD~) zonEt!&Myot)uw|i21t{mIgk};2o2X%rf*j@CMlxb_2Lg7iOe@Z5XKGg1qov#ZX#!Y zeG@GFAKW;4PafN!b|x)BBf0$EV2ezXs{zPt-n*HG@)2G;sx5b3`BfI0O&A6R` zmz^6l|MKqt9L}(9xXWM(1miekKwSmz84vxs4dwMXDt%rT~sjsp108jNYz#U>Ne6@Dr>u?jGD{arCD5 z&vW)zJz3_ZV(f$aAI!CvLZ!TTDs+S0&$&cJjOfcm3!8$EBc-C) z;kpX~&^+d#Ci9zWVlP^uU-@GL6Yq5!t=Nw<`I1K|pPtDDtKb@xTwQ-ME##5tl{*zD z4JVV_xqP<3{oi84M7AgYsXt2Nmq)X3wCpj@{=uMIO(XCimwq&ob$qVhgG56S9w+bU z;hMCp>+ZSxa(#^%9vADfUy>COBJ#G=V9<2mC^uw`CY?$v=y|7wOhj1r+WYxkPfrhA zOcu_PD4PekKq<3En8nSpdwyX}`$2t-A9o;B^;Ja@X9JbGgghnu>cHMMQ$UnWFz`xu zfzKv&Af5!DMFbvLduq7CFuY_{QurV4KXLIu9^zd9rp>qP70i%C{<#@urGeLjDV!aVtJd%#>!)qCrQe92O3f?P(^l3+Zh&q)pu$ z74*wEs3m#zsGLY&PR3bMRG| zXX86=xLpCmpyM&sM8Z7C!pqD_+@;2(bI;1YlhSvJF_wieohc9-eXZX^iqiHxF@?7^ z)#fU!;=mn42#E8@id%vMl-sxS6#Ve$y8=jH z;Ze7$SRxK&53*CiqEA$_x;A^&lUMyW)=*heB#P!QH^fERp(GL1xo zrm-taEOr!WNTG7&Oo}Dgu*r}Yn_9|yizHMQecsJdnoa5VemwyksjIfOc4DqbyRsFk zz_AoaXD6oGAXO8Id!UG#}PVmCMKdM{kV{2lMwR)Jxn!R#q0qZ^RR8};BX%Mg;J#vzilzpkJ-gV zp&DfvIVz%PL+=4Wmwg`K4zq1lm=)-6YbbfaccN0&8l$lHhCAJ@ARUHuM}9Fjz#tNy zDxI3{vK@S*vh)%X3OciE>71wb&betBWhPB&KNB7iV5mavufHuM8@%xXv}U!T;@l%` z20McdX!~fB-vd4gL&Z{G;Ck|Z zr(ExcR+o`adp0_V9;O;L-*@+jtJA|jW zejpsID&cN>#j9;U0FnHV3vh`hr;Q}EGkKfiy&90q_=%uX+1~t(P9_Q$ z%+89$FDbB1&5la9$ojo-wVKRs&VeD~k*|;v2!(P0sCOvYSgE9A03fL`LM559`@0jY z#=Xl>QzmH2I0IIXznd#HC=b1mK}I^iiCdO|U2NDHm*C=G($}RVClEZIpX;nB*TCOd zU#3a(*$s(ds`*|+ zVwVSP&69SH7B5DP`Tm2gjYIl&TBf5`f{UQQd?mvOW7&z>72{Z4Y2b>y*u3d)Tr{4I z@npw6?ywW3GlMu#+-8{v+}^Qp%4o7b^UsW@-tydTe4(!Wmc#q z#o{xNPnZ=~yD6+^li}fFWpZ!tF36B|Q95p8V5WN^|AFY%(^>p#X*Hd+G$yW^ijGB(~7N82Yz`iTVr?BPBzus$h6{< zLg%L39~B@@V|e63j#8z?)m2=Nsc)=m(53-+6E0gBd?=P!UYD!Qwkp+q+)q0oM^Wl2 z4(Q(`Y4^#RrVc@r>Tz6^n2XwOak6xRkL9TPdUmajI&Oq;G+3Hopm)Ep9QOa6ZV>t; z+1GkAJtr{y^Rsh9C3Vjv4X$Y)L|Zj%m^_{zqI%0rF`?R1mTVIyg0CDRRbHBl%h7hc znBwlUL_IlM?eE{aK3dnt%$sE8bpKwNte$Y{rMJnw+W^nR|mUc;z<6(gIa zeBm)!P*xL$-D|QExzqO14Wk7m$def->sRjUmDz!!_{5$3m#!{&4 z-`I{j9ce4xEc2xcLm=7sDir7Xoe2I=L?)n@EUIWxJDwyW6OPt)&S_I07dqB||EBPw zF368r)LVtYZ~QOAFvJZ}KlOIGX5`QCku^sk^9xU>qFG>QaS`{3Yr}6)B3c|FU%;GP zv8$7As1Y^g2-ugsm^w8omM^YJ*oGQiq8&NYG)fH$AD6MCE$uUGz8&fNwY_jhK01LQ zQoW^EIJuJS{12CbzXgu`eONbdf^Yb z4AP-wX-zRO3N$G*$7d(P9csPbYJbVnMz1)3D0eUc6!Dn`eEbEtDRFl zg+6Uu5wh!X*nBTQ5&;1T%~keaK;y~M{92`b&jU;D=Lkx~D0VJFGd;fEayqI|fN;Zr zDa&N#2g9m12(WC>us<-e1+KoaaH^@)xnk_rM2nOPXQ|)c-}}FQb(|7TM>Z#wGH@1j zFmV4)J~#-bEd+l|@D)fcPD3D0@4hPVOL=(#n$iqRx$nSQ_@5<1t%R>vd~gfU(w>$b zfksDMwS%MuN(|}m@Okj!d7l)dB4x@AxLM%LwtaDuwBXlAGX6TEF0dYL~P$rH3 zew;CgmnrYDSm}=H{fGmCr}?Y!&MyBojOLYS(k=#*ey0dm?tgJRZF3w1D6jDKZu(}_ zSD@C4S&yJ_Ek=+;35(3I`Y@+E92I@1Ecc*1&ZHsoxhiYBXKmf?>>kO|#wF69bfp{* z#b09P2boSMcDGp@o#~eVm2s=_hzgpxLx>Qs_mUM7=dMhXyX6@`$H48-|Gro`JljA6&TVJ$dlK}6ZvFqY0P|Gs zFHv8QY#p>(Z6z>l^*Q?<&ey;Mzsyx3WEXviUh3g--ens>@|tm={)3$ zMGlq#v&I>v3iYa%4hA;i1CRh37eUD0Kx*>=RF>Nw2-HBx&c9 zGXKcH7}tCi6SKfn#$n+xKsXr)LSHa%WRjUl5uRrUfzUO{wkSw#mCT*4vhqN0uP`OrwGKaj_iffV2BQ9^%46m^Ss-j_+?8*?%S9ntD&V7Mv`H8)z(kC%HKNpl{pc5w4BkJPg(Qo138K`*3pW>PgdN}E)U0l%oDDaKs% z_}J12Ox0cKHhYp5rYeUZ1uuC-T#LMpY2;VX1X;Cdh7y2WQERvKNhtO z_jt{VuXMbK!GmS@XS3Is=JPj)5S&OTNuaU04Q}^ZTI_qhjt2rRaUelqQ%z*#HL#(S z>(IcHSMX^G=dbfSA>U0CT)V9aCq@O*+$0<$P2aeU9E5yLl)`bFMItC{I9)wOULslXz)S(s9d(pt2> zW2x}OQ}Xba5DAw#LYE{jD?4f=kz{?b-xnR42W%`BgAq2n4ur($pF0o01YsS;T5wC# zh$JmB51kByQi7RlDRSq^wo3Qkab?;}^Z!mxct;k~CasRFfwK2ER&V46YnaCcHye#> zaA$a3S)~IwBo`)4&H{Vc6lfkiiAIetRS&>t$#TOk>v|K$zird;eGWagzwD6GrUDWZ zA`4^?Lm?+8C&8!aRbxH?v7T1V84hK~?|n<_eq^g?cTOg2CqoaEpeaM2DgmHSSV+`=1|e4ClXg>TVZeMxZ7EVjH3%z>)zPj(W+_K zFSw*frM>`3cD?+hqwjY@&QW_@-lF!u+cp{aDbqH$@EBis+{|%I&>EY|=vhz3 z9JH#=xC2BA*}?6gSR0x&I-ln)qHUB*AE?hm2LbT{&C;r()Ew{l1STYow<-0xcJyIm zX7Iz%r@Why@VmnmXO3s>fHOKg^12L!a*yUA&!w?-q>}{&Kjd`K9XyD& z0et!&2j=a%Wqyk`q6hrL(qY(1SGX{|uOuSN-8=cZ%*w+)sL}JuG@-PZ+qP{Rjcwa%)No_lcCzn%zVH10 z*x8xP&Q9*$d(S=Re5BQB6X(VXA!zBCrLC-th=>RUY!1c)h^b{2CJU)#WAdCsYi+!c z{vwjnh*9IHeDd7kRE6Iw_xIR&Zl^6YPjg9T>-k`RR)QvWLR|NP$4T*khug8`B3Amc zt%ByQO$33kW4rqba>CbsbR?vPBHo^ra8D zEZ~p&Wv&{v`XEfyFo@OmIn38IV(yFo?oyIeLp;}XsZ5mq(V&67!1{=71G(ZSMaV|G zT0x%*_nkEoKmsi)EzS6Yp)YN)Ji!|9>1|jqPEwW^QW5Mgjx+3C7Z?VK zP`o1J?Is__Ud425v=Si=i&8giwbi_Dq4D3vtS+%Kw_3HqPr~b{`lW`G?d0ahSIdr6 zRPP7GdPA^y;@uPGl6mccj#SeZdB7P@guY2@)!w7!hb)6)gOcXlQXGoy+u$r&6LP5P zU8VBh(Q5&wN{k4>1ET2M88$iVKAm2L3wnqUw9+_`SzS#0pkb~nVz{e>JdG-npshf{ zw=D#Z3zpnxL}56kvib4yo|4rIU`zk;QUlJQsp(9Z%;azcX}iWxAIe*v>Ci@q2~gdN z^WVg8P83s3zlFGuxm$jV5`+Im`|+6VdiA2FQ|E^V(RmXg`!?s>gW=cnlGyTZZszY| zBnPUtP)Dk)925d??>H<(P}#05rG3s5Rq*ut=Df?>_f_cAlFdSZ9N*{TgIljvb%=mL z`PHWI&JIuD>qKQOX_3|218+?Z&gwwDH7}Rv=9%qg#%23OM1KNmzG7^Wg+8AW2_MQa z;HnVKQj_&8&~W}~vr5`ShYwF|O8|R|LmCxtK!bnsZn~H=S52 zW+^|7$#59rRVj%mE29E5V69I(k;~oQo{U!vc4s=TE1-H`@W*fyK99@Qqc8Ze zCwX^fWf3OJ{c%!L*L?_Hz&2*&X=_zydex>a#*H;#x0SN9hg2UXk)wB93|-8EJHIG> zV#=HMbz`%H4n}rTPXkzC?tz~P$M*7+pjE5%e`D-Gh{ceh%l=zjkzr>MDY77D^-t(- zVn7eq%YYd&2$!e~M;ge+Bg8LI$(%feg%k2rc0G6DIlM{^W>7wP!VPRin=fXxZsZyoga>(%D4MPxld9FUeU1gGo z!bSJ>5hD^y78lo9fdm+|avz~gnK_j)>0ZFSS!S0QkX+HC{x3}+?XT})uk$cAaa+Bz1o;K znPg)&Lm4;?7e%>K)?j@Njru=(+>;Go|ey%1YB)mM`QpvKTD00T%~Us-F){6#Vhdd({j1Hl+Io4ZdLj_piHd;v-Jj!aZ*K z3IHEC%-npVXjyYWxNarvYtX3rP>m5^{Y?^95;3JJz-)d;b_nrzNSM(bvXfR%0!13` zfxRidw9TwK(){@7w{C3`x|Z4wT(DInBYtc_Tv#&ey7Q!`rm4Uw2sv)Lc>z9+WMfUL zEse6W!|DFM!SfLbZzCASC{j=xXeELH7?iL z_NGEtJtW*v&tn_g2WSS+&;!x@Vj#0j46x|@mq85k!hLjfEaqxmi0}(AHGzio=ELK2 zLR?iwjE;(%CR=XshV_SL>a|TE`YB9-3qmxImUI=T8InRmi^!8i7*~X&nn6Tj!7R|C zM-LxL%gHJ%Dhq$Opw|NRmH&2QOSPa9*VN@;!wqt{wqUb}nUvv1${0Igt0={CsN?}d z7!;3~{Wd%o%hyk}pc< z^6=X1Q)K?w}cQW9_3ViQsYze+vBf&`Iq9{SY)~u2sUDPD7UJtYM|XzfSXeD$NRT z4l1}(#=Ajfa;i{pxw%DY)d^0~L!d?sA6vx4XQLtN+A(F@M~nO3lNDunOC1aTHy2eF zD3zf`|9lTWcL%7Z1fFM1HeL6s8?PIWH^m%XW%Oye1RkEAkh%ABgCZz=gT=C$t-CQi zj8S^-C+%`|N<~yyd?l;tveB?Wm1(07+4)8s!H28ZJk+Yff2@3a7HC2LX`=F%JPQ&d zsY<3t*kMZgp)e7v5HUyeK2oj69)wB494iOqky$ho7uQb{lP}?Nrs4>{)CQ`P%<$F4 zDybr75$`N`Vn`)L5g83Cb@&DqJ7l;s#g9C?2>v-m&(Hq|w1jE1n;SAJrbM&(Ou07H zd*zPD<&kF1!g99MmD*GRsDq5bI@n7(1JF9DRd{)M_W{o-JLXBC5Tv1$6lC03n zzyEHYvz?$d4EAYKXbzA*QJ65h^&6=*Nle;b7fvNz5a(0n>*H6L#KQ%rO?^#=`)1_e zZl!2AUEQ^mOp=kOFNsowXc2RnUj{E(rY?+4luU$&kT{8@SS{_asgseJS!394U>$@gM!`1Z0uuK4E=M(zqx41oOGZh?k7*f4gPVkf1UBG;WqL#fTx2 z8MmZjQH*D;YMZQoDX5&}DsvO|7LY7HqxQrEZ%FM?lwdNX(r@^qT3V~SX zxk~?hDg5`z&sLJxBVyF^aA~Oh`ad& zv)W>Ncr;URwp14=LDv6EO?wE5W35+~V_j5vu73@_A$&^UZ5!qGSl%~-GS@5N^`aw| z@cl^qzb31tbDwU_=k+|T*j;tSd#m>|yVcUC-qfBqZJ%P1l>P#%+kk%+^--ChD}E!AxrkN<&j~Ir;CuRdFwPpIXOtirPZQ9iW#RA? z(X9ABou4qCsni<%b$S@^b{GAO;Va}nUA$1rGE0&vg(XlXtB9Qn2wGtP->*4Vne{evhCT!W*m;6P(KmNC~x3=CdCA9FL_Q^0(nIIF!DF>XMELUXpK$J@>C`Q1hpX9G{RHPc$HGlboIS!{XQ!R{F){MaVUS#asW^qw?n zSaSwxuX$c}MO*&Y&;cbBdaFYBof;6Utm@9UW>EpOWNK=Meos8mu7J;-^vB2e=5FkU z7sh#&?2n?S9aoTmjJ?id2^a-@74Lezx#4pfz^8Gr#t^daE8A_!&??3t@t-~ySzn! zkW>qSKXV!gTr{>LiH+{;YIhxQnd^J$0G$<+{pCJ7dbfGiMsxN91G>yT&$|o!@!Iyd;rYA*>K>lt*pzW}WNEfe zl%ZIzGZYu;aB1Il7@k@26?S+!_Uw){=6T!6k)K(?wDo#O$*kTVxNOhP*k`?X|F`+! zTZwzNKcf4zIY{Cd5$C$@!WYZif$JyS)}IYNZRmU+wtO0Y?D;yE)))%qQSUkT#X+w?QtGpk{agr6 z&9`tR$JBTiF(hpUj!J4NZr)@U_Y=S1im8|(IVwpK0#m&OqP&0kZ;|7zA20oG;WLIK z_I#J*jjW{@wK2++oHWg9cEZ?)U#U5T5(lZ`ixMB)hioFT8C4lLlxw)hdf&0dy=^8m zKHkFWGI}oO#|r+jZaVfQM!S=+`YUyoB7TApv$Ujnervn}1zqrUhn4Q9XGunugm1UBmO&4(WlpLS%7q^&U~&ITRYS|nO5&(m0qjO@XJUPl1fBu~0DV}wP>@c9OKx;G0k0dX-)T)x z&f=nKZ_9j@PFKc4g&KqA0m8RbmY4$_Emw#Ebq|TRyb+(t#Oce!)7%fZ@FgYbU1(B~ z=pOLxc1hWy75~iz2Q88JCx9jd(src!r2DieqSfhxWZSc!EdAHg)_muM4x7G>!1@w_ zJ?_(C<)~W4qFvVa7}8Wz!V)sJ$fD`6M7XnYK1Zclrq^^>2|?J##Ev0$nUIEQON7cu zMLJP=6-9evzSBJ48bRV2g{SAKBnrixz~kkl@n4t?i+n8`IUdVL_YVgE0gQeCqL*!;#=NP00Q;nEYI$spDj1DsBJ|l?N6t&@ zt+F)rlwP@}tyh@E)w_uMAhwQsh~3Pu2kP=% zblkQX(bL>FmF;#ih4S!Ttn#W`e(};nAf?li%@%K-`JI!To!^!|hYFoq&d@g#*R)Cw z!g>9V1|6C_D`~Rmm`Anh>W%jKXIYRv9c-St4>x*|TtW25(vYFO76<{(z;6@pK%D8m z#|f{vxcKS6#sipX_+{qybiwz!y7huo@&fOypKQH$ai`7Nl$DkLYbhXMkr~<9ho7F@ zNEr;EkE*S7faHkXz5jmm^`*$xqvM*x@ zDDdz+9bOX}d~=fC-g`Diz@4wM;|T-LwfL#>-q)I557QSq!pMh)6q;Lx;JZsauPtzv z!)u{RshMi1rjH0RklEfSw95rQ?cliViu z{VE?drNYCSiG|@irM_<`p$Ut?bf0zs_@7$LIR0Kw?_+=_5Hn0ar8w%L56)zjl07s@tbaE~JQr-RoQUJvPTw)T9Pd zaIrG~8}Cq;e4q(E3yOAs#*{*3a2y4vMzunUg}!GY)aRLKHH>fFsD+g@=vV6%+M%-# z;&w^}e-_}2oy;$f4mu+N;-r@Ybx=qMQF4aCW)5F#OhYLFv@mgy@5RKeN|z0!2t zeZeZIksOE;)yu~>`zlQkYe9F_l5VFoiNWQD_ubmN1;mIYz79itLjeu3Tq4+%eVWQI*`z2rudm zA$(nIlsGVfyWs3GRF^GN_QDP(F&Ir1|$F(>`^k0&~sEFet? z*1F1CMuwc~>ld2Dg7zz%=$}VtR^lLMEs&vy2h4cAYPD1Uyzu{V0i-2$N3}fZw48WY zA4Lw}cyBM`)^-u{BB6gAf2I)8tl5gud};MkP9q(;;r-~!W#axttd>EFknbbspy`D0 z8hu~bWYeBaWkc-~ibX9!+Nr{rip=Wla2_f!R>jeiGB7eCAuDrr7Kmc^M!5;ua?oP= zxh+Aft}Pm2u_a+Vb-8YO`2H<+HvP-Oijrlb${&MloB@!&i*2FH9ein_BFih<>^1bo zbMgrqUMWwt!dH^Ibv$-!GuV zNC^XN_u7kJwbwA*{Sj{JBe$5x<%KEJ0rw0FX+~2SFk8%>E^O=BfHK+%PS#8`AB{b` zC%zvPEwfTV73vJu4**Z^tfzTp{adL6~n+4h1?l80I;A2W6S{rPl5e~RIcdH+- zi(59wy2sETy9oa>8QxTZTpQB5=C->jDIfDW%9 z)Ma~Rq3E`@dgAy5H@~3;L8R9@)wRL)QmFg&2u)Y#cZk9Q8*Jog8HfB#(R0LS;@(@c zQ?rtmmQ0b*7z52kEnm}Q)rK$hb^msLSNsM#du|?{Z(0k}6L+it@yFlaN8rTQl4gB< zJ2%Qt7FkdP2{j`|d@Itfor z+}&LatJP*}<35S@e{G+qdX`&M@jTJ#JHL`lUIq5}Xw9!n=T8(8Bpzeg`fwx24P9uu5%bkyeXI=xmmrdKvyKFgBr-{P$7J zLI3dh^U~|aSo;*C?m3RpWb*e^owj7(>II4Sw^gDhcZgD3d=F42!@l?Bnhcfl-d3xB zs8Er`ZO_Mp5P|OtWB0gD7j91EB6Ap%1K%w5)&!m?3MHeOZnz^+0G_7>ahd9ueu|on zrRk1EMD&YqqCfFBI*#ECa`zHZVt3ohZPqgvDB6$Wp;B$SL-Htwc0*$w`k=eCu)gmc z>qh7Ew%uuaB+!7GuSaT*DA8t^oTDj`51-cpSI5TpjUj%wtPL94vjW8HSp6X3`z?XU zZh?PC?0=nH3B)|Uuvnsp4-2+OwQ*4d^=iHp4Fuz(^%uv)6rTO)Zy$~-akOfqpbEuh z*qG4uJz@CmJoHt?|Ce{y1X-eJ_gl?gs(azkyxX~8l9S|>S9?gw+p|?e=YrN8QgKCq ziYzmWVjgd@7}giYWNnMldz7J@ziK@|^vYF_;%H$!fzv(WRW`#rdAb%FC^@q7#b-oS z%uuVNIkpP7SACP5SMqowSo7@Ylr7qhgeEx(ixZ&X)|PXA|@Fd8M@kbeWI^~ zA^tR>`;IcZ3zT?*Liy&J?qidSmq3pCG8Xyrl_~#26uZ4`{QG~326b3?>vz*fQqz`E zzF(5&%&Lk?Ol#E=yZV)5uOv0^S=A7U-+?DcOWg z<+5XyPXrJdA;vtNL@glYUYViobfe^$u&Iz{1ps8vf)?^pgev+CQJWxrkS+)aHG&G& zY1yX+yKua~ubZ%MW?7`92z{SP@vg-7^hD2fdw_aytqiTs2AJ_9-gMYNmunAWEq?8VUU5T54q48-t z@#y6*JuSrMVab=@v3FB4 zLzkH24sv^{+T@=}>ajI>_AvEMnwBs7I|JdqQ*SE_wFzl`8|G;{yZ05nDf4_DW4Op`aSa*Y z3BCk*ud_~?^y%C|7Mv?m=&kNH2VMi0J5P`5Fv)B}*C{@p3 zTGz(%R}J|Wu1(VIW+t(dj`IT6Px`i?vT`vh77=3*efOQMuHi~Gz0-6hioK?Uoq47Z zf8|{Mw;x34%x)ek_D<=7lEQG*V-V>|IaU<0%FX|%$qo9&bPcX+O2YaKUhBj;y}SfY zR~PNxD?rz0v8(Pr;LoTtHt4TYe+ee3nnY{o(S#pEmKji&@O$I^s^u}n=JhuHk+yM*eurstH1UfI z%TmAJ9A+5%0znB~evk|Nc1x8kjmPbVGtw*s_W}#!HgMkJ@NAs=4-hBE;735Xd7BHyeSUpK#=AJiV{{(`@h(b5t_5D}h0ooR=u$`D| zl)syQNlAHBvehDMZq6s7 zbLOHPI}QrHlt>1fy^m-Y%8HRV#=8H0H&xofnsN$B?rd zZndlH3!|7rOHg2-F^_DXo|4O*>wb()*LG=25UiJZ=O;w*XXV*XN?*R^-@JVGf{VGL zHd2bh8n3LB|Cd}9g}Et=!=AU*%*r;_poy&|S}-@Es%yAN5o%4bFC>(_9#_`kW` zb%=?7SVMSPaTO)>ljhPP(!cfqQ(FnKi$rEUOITq;rhUcwWR?4!{( zBqPD9I2Z{FJ~!;tgwDC#Zciq#tv;3SIXJ%(H-etTM=)1+p$e2^DQRx1Cvx|jtg)fU zrRibMP^|(bQok(Sql46-K9kW(jva=9v^9#wJZJ}+k$Q+N)6VF=38yXUU{6DHbwEb;Y;l5VY|D^E2cp zGJ+9S`Wmv%dTVSTWT>7`mKe+Tt2e&@L%fYc{G`2!WkvqR`k+MbG!X{AaWAGs6NHuM z_!FY+w3puyI^Orc_-|$^+`&VZ-z1}F*Vo0`)XTH}pdK`${G4D<+r%r`gR#26FDM`u z7ST>PQjCH2(p5}Fw4aGc$Kz!crdB2*V3MTqeW_$A>aA^aICsy=+bTOZ_Bj7GA;lMn zAE^LZkpq8ND__{AQIurWhdGpmnd3}k@I`uiKKkE`#YE36ZVV4$*9v@}0|_eH<4#gA z8VUKF*wxX@-1JF)zkAss{tPEEAlH7+{4wOS(0#^lcZWb?!7&uKN}f>ktG;D;T6c%< zttWm@1lUlY0b4%+xciR?VAFBV{_!>q&Vok3`UK?d0D3VX#v;e_2|(EXwmYB3DFK83 zkaf#CI}_V=3lo3UeQ~Buep_4m{&=e4DmyGP-qypat-u8c2n0rYTz4h>kFN3`tOu-N z0dt!aI?X453FR@{ygsILfniT_`XUd$lh1NLNT=29&Ke&63EcAPwDs<{CW|$?)4=F* z-13VP4?DXjqkc}Llv`s-J#~*q_l-3doC_WUzg5WFpR6G#)cqhmMr5#BhZGdIBv+tM z;|lBn-~IA>(CwZEfnQ)uCd~%#y7IU1rX|ShvUufvJdVJ4SyPu9L z%*&;fXnC9-Q5;_xa`wP&FOS7ggLJT=ZCh{3ci7<%JWYQVO`N5JLQ#yC*_F7j{cxV( zr~r8y>pZBS99F;PmMFiDtjXCqtyt326ZZWbG72%4U{^y}tWG_@y4t_FS(S{QMMEaWgt2kw!>&W9a_AInJ7}`yQ%`LMg!;wDJx?nU7ERJF2gp4XHD6WS&wAHjixy z#SKJ->f-e*X_s>Gq*R_=&``)3EvDGP&ygot7mA94uC!q^)eTog8~6$zWI208-%9L) zV#tnnr?SE7U)K@N%%|ze z9g+WKftnmQjVGkOK6%lB0M}BL?NXu`vNvSrH-duEAehOq!8nv(lYoRMF;2{WVfAj4Di0~=%=lcQfBCL~0PZv=?T`rGzt_J5b9o@`J{S+eN^G6c9+)0Mx zPj8^4uK)T6y2bKGlt9(|JiOicfthh=$VvXDJuQbTJKh!{JAk}y9;zb4OldxY*+2~n zm-B=kGou#!(UKc8tTB547g%I-Gekm_T!4CALf6y#hou9S2kLjSX$!(oA0v4|2o>ob zMw$BcRSJE-34^J&6M^cg@zc+Ml-6M7)#$j@QcUmkH=P!@`-Ljrr>(#&*AMr%mpaO& zPIHVhfnnx z+HZT^uyINbS9;jXTF7ynMa;yjCOq>tUVmS-9p;!Xa5Hp28T<#d-vY=YO3%VgV@nHwk3QN>vVrV?kH|eQlc#F+ zj|hC&``i@}c5NTNE{*UH|3?C&J~jn9Qeta5{DK>FPRG<~xd!F9E?Z8#3(bLCF9}t4@u!78JO-4MRx3GlcL-Q4 zV657|^>xO`QwaM76z;}3xr!-P&f(9UelamFvjygWHDG**P@4+BN0AIM9Hx^qe!t^a zHfOeZj^-_Q{!9*AeLcOaQD~Jv4jq?5U}Q60#kLQH3_CM~vnPR2ZNp#gRdG&k*YVMX z0mKKo-gNk7ifeX|T`gWnzoyi3l)IY$gaj!OkJL1y?0y~hs&ppw*~E%600zaF?SYn% zTH=Kv{LMF*`*YpHq;K#ULy=B|PgpYG8lmZ;Md9z@l`pt4OJAHS8Y0rlE0IZIOiw(vu%9V9_m=0eo141JS-1;`==NB_##=A!#<>oNRQt zxg=>xGgRY?VKP4rtcO-P?h6d;e@ef<@?J{69&=;dgL{#(csZ2QINNB0JRE7UyI24R z{~?v@Ls5VU>Ss5Q%8dC7MkHU#omRBC8f}MYK-I4yB*(?q4J&&ThkHQz`n>2N`Qe@F zu)Tx(tr5~f0~k9^3a{~tn@SjE{*s6C_;^vC68Z*MQ2-&Mc11_i@jj;C5@rIXK?LVU zzcisnP?nZheok>5PbbByAFHD?a%LTipt<>h zOuYIN$V`v>UX|6jQtysYed;irZhAGJC_m$DCm@0Q^#=@W=u)FOLa=boOnlzoqt2wQ z*LjZly0@r(tIh80=4N*86&}DY$%{Dl@D=d^MM+IfnmL{f4~c~t2xb&w#Umk*PoTk6 z2R|hy%5kb}>=rqsr=(z6SR^>PK5oUxxA04nhHHjMA%69y&&4mHFv@D&R%wV%r?{J|z%=P_fbb&d{azvgM0Q0tN`tZc^-oRC;R_*+yso9&AW-taA)s)6u z{4X=H_4)%aKq;dCuW^X@O7nCTDlh>n@C58<*Dndw{sCW!bqcCE1VH%zzkU=l%am)9oZjZsWNtbLy*T)@ZxWK8@~n{W$$@x@pe#vT5$nqxTg5tJM_OAs&6# zozlt4$wtcMf&`gxo%6S%8`SN%U+>uzZF>7k^y+O%s~;n#vCnR+%xw?#xBtCj-Fu8^ z|56HcrpWuaoiklNu2u6-feS3}Qo|mK)wQtm*(|Ph1pU2_nGsI=N8a(?y}jSA7Qs-6 zHVC0%lnKdYS2stb2~rZsF3!80a{F7e_Zte4kpSb+^w6hJUjU~nlHT@av?Hv)kwxC2%*g|qV99(5S|`EpL0q$P}9F#AoRoi1C)G-;b5>ti3(GE z^K^9exXjh=Z*Xo^Z5{j&Mp9ZvzCEQ^*;AwBZ7=25Fv|O8_%U$Ld7tmB)oSObY}%4< z6--mFJdjCz4f!<8;TwD(sY5Vvr~fsCiWMBe<49`M-cGaXIr}3kjzUO3?Pf|hpX5I1 zASasDx|8pecn;}6zd#D&>g)c<_V4$k~6#lxM>VasfDJVgBx z3?Dp@R&2i~>?&+$rWd#IA>?v)Y~bR>;M@A9qO+oPzyQAH08}xumcR2*-THg6le-;- z{m=tG?Uo9$>e44NeC?&xBSVk?4XyT|{hH`j)pnYt`9Ta<7|sd-@%5i3`W^RYA);bf zQQ~Xw*lH2)`JOvG{6LmCAsF)#VzvJD+?)q@#ePbh2&R{yV3vb;xDyFeGCm$2At-Tv zeNsdzdMo#BE*Wzo$XKJn;ucSVV6ThOf&f8Y0&;?ArA!HfbeK@&d;I+dSbuch4%;YG zS0tH6#l9~>TxlO4aTNP!pZFNoewMnhyW|Ipv!h&J`MM}lr~WVrDN%j=8X!pZVB?c> zcg0v#r+Bh1@^;WRc_yGvhv;1R@<}|So(ih_5^(REPGZv5SA7hfzUX=d>>MfiGJLAq z%Sxl{9$g+)KCESOsPR!_Db+jOn6BL*rf=PxPgQ}7-)qJ*O3=wlNr2IAk_;KazIV8GuJ05mQ{61ma+lFU_Aj>vf#>E^Hb}S6ESc&m;1}Y$ znx5QPo%c}QhV5_*#`Lv9o=+1TiPn_ZE zcufK>{(c#K>}xYt1#~q9hk7dObk0C1KYyTG!@ws}mZPC`s%#2hG?Dunud zF6J84OjPF<_K?E)+A(aW4TgK|QNjuSRwAT5V)<(51%5W>Y=o>2To{RINwPD~o*BLb ze{hq;!*w5$`l+>?Z-oO>q?hl@2cZDeFM=`AC={P98NefKXFuALQut)>J&AYe?clUB@Rg#h%Nu!O~aMYUef`z}1 zW7h64w)rSK^CS#EP>3f^45BZ=1FxS|7Yn+pb87MP(iq~#4z5QkoCrTU=N9{nJy<+n zM|1UyO3SK<0b|S}BP&`F52w4)DuW<+YiZ&cR&!sqO%XX{L0+-vM?Z1+ytb6vr?>DD>k>p*bS@g-1x|u@}Uqv=Zua~3vbKOl-171^DM2v zU8+o~z^0VFF2`lX_~rTlmyduak40j{eq`rgp)a?%w-vX5Pw)OOu);IAP>^r%F_A5PWf zZWBbF46khJhcA>Y0jIBFb`alUh=yO^si?>4paxGU_nG01duFG4zZi<6W4wR%X3$&u znihTnm+II1cC&mA*q zJ@luHeSRC7Qv2c3y}`^S4z~BPncaPx7Eor@d2Du}F!(M;MQc*cV)M4lyGbZ}sFdMQwj|-lH>EuKGKQ4e|G~(5o zqXHdEH5)lix;s#pz=uuKeeJHbf_3Y>R2t0q$Z z*u5*{0k_zae>di@0F`dJ$8u^Cgrpy6J24|$?_!y-u-G2PV%EO{!i%94)2NQFexS># z`|8I~o#IMLrOD#)rHGXKpn0;eL_n|UV?&Q97kP>|5IwfT2G#AVUYqtEu27%Z!Azj0 z+Sl&@di+?uvwW8001la#8%Uj}9C4Mid1vR@?i|ELPEC7A9NW_8R6fwLIsN zbNELF_aaGll-{*T=kV&@?Y8IA3{>Qlws^k%&wZ#tG>P$i)6-i#uYD>+nu#~I%M$ku z^C!9I(MJxMS;+M>&kwYSbW9``Y`YWa9^GddylY3|E67+#2EMVak8_CuuUn1=B`9ja z=P%|GL0(mV9gVpg1V{gxeYl;{Dt3jqk(_;TH_%m5DIasi%Om+P^7-Rd&oN@XD(>!F zIKjn2vR2!elT1emR+o@xT3|gV^BwuPC{B}m7>D)kZ<7^6uN%#5wu!aAFt|?!2OBY$ zxi&tejCJt4p2;{KUa%fJ^b%$(4G=O^7jbcSz589h7LE+t{oQ}G>XCzosBg1!5E#B@g0K`>R=FB4I?3K6;I9KV$4WKf}H>=71=qp*R|ULrMS7#n#LZtyQU=$Ybp@CS6I}c#grhfs=Tx)%ekfBBj_d@=qOx-v@%&eL0$Yc!n^Uicm=eQ2kEG$T*2g-gr6!o4 z=4U-tb}7JZ-bsY#-wQYnZz!ctxvK0>;4uam%}Q%PxaXX~6}}s&xI2^4BlmCd?R$5m zdmxMiGR=(5tr-f@%*?x(dASW!60BnO#fM=+J&`xg&A|8!&iTRnVSX9;#qDZsa~~g~ zQ1Wg0l=+)@XtsHAA6L3DC&78vbNn$@*^jMu`RlfplQgg~oa_H1)S>_&!!5(Y8gSs5v&>MabaH7gnepE5t25IPaX^6eTV2{9EQW+E+V9*P9fM;$C$29la^>1AZ&%g;AHc0{G_QHecNk@O3|G30n|n z7t_Sw6u6Rw(6ZPg-Fx6axP*e{&@(L`EY2g*{Q0+&Tg#|*&+#Ja2Z*7}(AhGH!%!~a zqbkpQg=b@SE>$tD$B&ZGHz?zdeu~q1%JwTJ-}GTRKHq%qwWrp@$DI6Dt@rF^xfqfP z+m90_{BxtsY{ctj7Tn(o*gJ=>ELQT#ZpNj9@2|`gHFa&Ze8bS^Oa~O!h4Yt!vU80s zncbb^k&w^?Txo_QX5lkRewd6r`i=_$WNK3td35?c=Hmtb`$4|Um?b^dyg~xz0n=Si z5c}116EgjsF{(1V(a{@U$B}C;PDwXggC4ctO@juuG1L>T+gH$0gr=_Riij+}C;r4> zJ0}Bt4FfB%7ahhbIcpHH-1B-yX++4Ii~e?UD(r0V8CIGhJE}@2v1F1?$fzID7_tG^ zCO4^AtTicl&gJxNzhHPa6|6{qW$Rd*qe0ffcVjW>pyssuVunoQ{~oEQ0Xy#4I#61J zqoZ&D1S}VKA#MZ<|NKojMbgk3eU24pa&PRb^d28ZgFcq(97Kw?^MWX2)(=KyYx09g zsV5f9KV(v>(k?WDs+lCDIJXcFNXARcx_>CO^Z6;bJbfS|aShV^V|SVkW~JmBn-&{4 zHLORC&L^O-T?UV*JFEz(ukZ387*Md>js#=GJ8l|(%5HFw{w-gGV@n}3`8FSnw39+c zCRVf%h;w;dxtR`J1|uc2FC+?EGpMQ@~?mnG;cV4plG5t{~y@4dLlz_mK zpS4M_Uzzd)-yUJy?UY`2=Ch)wG(hgV-X#R50lES|AUvu3S4AtJsH&xvw#7RyG&eKb z>b#xGb z)^D6bLSraD+#>4g<@*pulOTux@_z$S{(7JRyFd)%UNlXiYR6r z&mxV5j@7db8CxU@5kUEA^UP>KjN7 zPF4yN)T0v9Q~mjFq~`~rON~nZ^pEHJ)lMHPYy|nk0W=SD?X+T$Y-A9tSv@sUlW#WD zQloU8vt7`wrekH+oS-3Z&=p^hlcEGv$cE6$7+8z}x`g8=R~M61`BA;VZmoN(jO(It z;~A4GG7j~NlL=nuABP;_2r0B5R76ICOL3yIlB55w6@Y_gR-=-t&fkLO^zTO?Ds4`G z{E7o%Ap+Ax9QYePawV=Ws&uS=m=WPrm{q*8WqpD2e+LRgHkbk(NT%mSTj)4LPZq$` zK*M7@KNtMfvy_bahag`h`bp+rS{ko%z#(k6V%ZsKv-7GwcDim`t{&nx-a~ z{a)RL?R<+cF+WtEZ@tUn;&;cg-Ued~`QxAHaVYTN3t41Rbcs)i@(YHKcd(o4ee}~6 zEtT!@rDuB8cX5e}?Q z{M#U+F&)t1pTGN@C;$Q$-jipCWqPrKnG9@3d@2>JjOb`wYDlm9C!C@MU~?@9zTGW+ zRC-31G!+-N5&a=FX>E=Uc$oM@34PpqOQ_O}6{HZsF;P>YR$&nlpAldnp;MNkK}_12 zCNBozpPmJe2N8p4_nu)gI{oCtdF|4P3V44SaOj);6NwQmvq&c?AliBt^U4U8BCAEJ zMG~Ey7Zms~c4|G4chs}n48YhHQP@5JlH0QF`B^M1To}Nq6=*R4Y7Kx)!(`%!X@hnU zs`vYCjuhPxuqY;X-Y<9Rzn`iCbQK7JnGB~KdFp{c6rs@%^4oloT-*EexyR#P=#2mh zkeeT;ng7Qv(l*Z;T5qy`T5jnE@nvPZ12UId-QK)%DNI8TCD}|nP1ZPKu)hJ?rses= zQjHH585Dr)!)Vz8SV*r^JFiF|bfr7ZV{S6F&BIma)V9~?KFKdm`Bz{Y8z zlkdUmAfOQw-0{SXIeu*z(r1X7(W&y@?>z(nXuSYTf^yu6 zCg6r}`1khUe7~frq#dIFx{sslag@Zt#ih9EGeYEc4S@f>$Iop6O5q1HOZUh9(kn31 zfs{CwX!;Y8Up#8{1_XX0Qk0xIk*7Eh6HVCk{k4AF&Vb4}ttHOKc`x9yEuKSrv(@7{0)y zwCDENp8I7TK#ESv1L(H^C@+lItWErb(~=ys=}g`ahNMwl*a6Q6wGGVsw{y+`Fdy>c z+t|beYUcK13P!qh_1@0Ex1ADo4ZS8SEHI$En~FXSte|fnnYEtV7RcWIYH$XaGec86 ztq2f0-)zP``C`QN^-2DdECANa#6hgE&*u48`lQFr6QL1c%G>zIw3F*=mg@6(*`n5~ z?icsx(~_rQ?(V!DhY32tX1a$TJg3pOU56lC@(-R)|w!CS6)PDLp@B7=DTHQb&70mSuOk?_Yl zQUEN$Ld-zZ%C`w6pFbGOmD=JQ_=5XCgn(u4^nrE<_7OUAXdOc&0&`~^0Db}YLn7dE zSkll`(btbP#BBuNu_eCGC17e0JN>~3{^O;at=rq*h~0Pn!>^kFeo=Uii<=vy!@6Y& zk@E+1rKu_D1315s{V%%u95`q1kB6<1kGlshK~B6WR$ot#=wmbK1Jb@vC%*6IFrPl{ z2=ePc`31t0YJNdX6!-(~r?iHG>r8e4T_^}z4~{ROeU1=S`uRW#iy8CBK`*5eQd_uJ zO$Z8{9xPUtKm<4+WK&Si2BJp`8m$O?nh9#AUP!*UL1Nryb2ww zTA)EI15YB(Az@#ZF)|Z1oQ?s7C><0N6R{y(7(O*EhPV{q4uEI24ReR7c1cuFRdpG* zz)E9nVL^%suh8+MF8~@$%G+C99I`jj`eA)zL%Yrh`lG(Skn_#~26$|mtFpPO6C868f+u=g7Pu}mXEB8+)IiGgl zu6+NY`T8ttn=3%A10%NFMy7EB>LF|HOx!L0q2ehyTJ;}xrYT?sjl^=@&l4(;f>L#P zXXx$&))+YjI&V=+R;XG{EI&7+UElo%|Ax=dP|i5`346-u$|6Rg%hF0b;BU~>DN*zt zjzIGRVghpqCAnd8^NK3B-1Q=svt@MZDsApOgKn5#Dp{SN3~Y`FEg=~!WokcpC8dfu zSvfc+s|pPkj_7D&kU{~QQ`tv64QxfgDXwQ23)m2qMTgjKfT_XHt{ zlf65fC?v{ZH{-0M$ud6hH)PTi2weY5i|(%uPelpgPu9x@6^fYpnFtCU1Pk(m2vUAL zI8}xnerSg16hY&HGOTd=6l@n*`tc;zH}*>97PcV=Sv}_nFU>z|Rzu}hQ~*_%A%G~W zFfI6?3pUMjfC$!XvlejPzUeqZm6h2(eex2g?p1jAwjU;)}J0(7Ze{V6sY? z`dQG*(e-$_6noqLX@}_c{ZpS-xCd)s!^zU0qz1D(R~1HQYpRr~DpL=Is9@H1=Z1ZgjjFyi)3_sGqvLF1P1lgF^rWx|$#3XC>@k?*HeG z{fI>u8w+rIkR4~T1*2kO<~KJdij%V!(uf z##OO`po`u^P>MBRmPLxDK;%E&V=top3QZk;7zb_eFB}G&Xmm`SM$3@*mzX@Ks-nYF zqKO-7?e5+7#mPyD)wxwlaM++@3n36NdXwOj&l*VaBr-L47+@+%GnGdgm$R6Sj;JA@ ziWTkI;?=4vKlNiKStBL+#gS>PsSLb*_I`KKNjB75Ee{ zO4iS(LhHj^YW)8$@eNHK9fAtYnqy#86*YSJb=r)#nQUKbtoI=W@I{hV>h9?dOUUfW z?y-K_%FPGwPHDYd3C?4*wCL6_+}dZZ$$fkHTg9i@H>%`?s5&d>WFOjA8azh%alDtE z9zzh4EENrD?x!CPa#Hv(MdlX_Wqa{yG-*rHBAH#NRxM236cMpO7CH*|BKxQxfuQMc zs{!GW5&@<1?WoFGM)Vdju**zVr0B>ufeI7?+US{9>F&~m3l!xHHY?PC*fM?SLIC+c z7qb9PXMCO_y03V#>iJF@1=B#n39Q_%A;8=z@WT(Vv;xSd|7e81uOq$=b08drrzfDT z2=>^~^TH1dSm9=bjrr8}a@CVlSH}v>HA@()1sae-_hm|1*G^eLbg%1uGgPV562pJh znb6%WG=9X^eZ>y24S~--{cY(HECP-2e*+s*6D(lHkRS2sL z0YRoLW>6|S4^MzSmMWvvXK*f(mWJedG!_&}1J%u935Qpit|8~e)}Q>2Cd+2vY@hvu zE~V+#It?R1dS?W~tSKt0{J2$CUL7{RxDT2g<8>$O?j`25uv}V$5R<20Bl3a)|Ro@QWdarfDspV{BaNtAYMP1BM1AD%*XBL)qop` zcHoJ!OkZ4Hb^`pq^FcIswla8T%N2K$3CsCy&o}(M&z~A};u~qmF(V;%G?(CW%h8+F zi*_T$44&fG<7A`;DHGh%^a%Pi45UH-v|@HH&W9TrzuE*+QkUtb{mztA;v4yN!a4s1 zLsS-$D$2?~?Q}z3y(Cuh!Vk;VvAec2y5}@3fhn0b`G;9zy|<(P(8_YN(^T42=G+%? zokeOU%n;S38pFKXy#Ga42%ZsT#Y6-7ph&RR)8dTMvNB$V2I=aK-+Tb4XwPzmB<9oT z{rQUXhHZ-@fOq>S27d(YOg*nofKzOHI?hmXZ~J&WkSGGZA3SjkC4oNn836$CyPxSi zz1NSxYyz~qfya8T*TlS!W>GKr{$3=?w8`I}TseZpPSLm|N&CVCS~0FYL{m4jQN4!z zkakJLR}^ zsJ@vJ`@rz`wV&3Ty@3H_WO{)vL9)$EVz^w&%U3?0B320oD??b4@K9wKv9U8!6Ha{k z`}Ljwt%7ZGv95{`JPrk~3c8|eINVEu;wxrf*_+=fEG#T>xYF{JFh=7&Sjx|lOB_Fr zRO9P-LQ;tb1$Ii9bWa@wZQ7{q529O;e)%(zn# zlOQ5uCMus{At{82g&H#CVg3kFq=BimE)Mr|3=iBLBOFE$H#f!!QTE3leK|$5pv8JpU(_29kvBYmrUmcB8$0qMwYr`{ z6>c)LNohW5MOv=QKnV`RhKd_9VljPEH*J_c5buoBWJKza6br#X_7lSUbg!V61#g^B zpwSC##Em7mk1o2YGE+~AS{+`F$B$gul{4OBDbAcUQ4^0B6Q)}kYJNZ! z3|rO@5yG2H)E(AaK;E0IR{bblR*9B@FfksMN?95Lk2Fc#4@63jrHfV1=lP4Y{F0Np z+F4z+i8@B2Wo7mwYQJ=7myQPNtF%cs{4H!#3FGQx3_=8I+CH5WphSj(Jwk2dYm-lVU_i;uCXavTj9Qw zL-{zVn`68&u741ft63i|r5biG0u?>ZzaN9z!*CBaJRYW-OjK5$>}S6ODVnM>Duj|O zrBG5l4|XvNOBs|@nTg9}?Yf;feqvGYfCv;9ItCRYVvZu24o> ziwF1DIl{-yDDY|?vmX0nN8aJ8AH!|1vN9LcDO5vK-8@*0K(r#~;yqOUCbn7u~ zZ&}E%Q^=oVtSBH;5!Jwc?tJyv4sph0Du5cWc2khh-%bgKld;XGs!e4of@$>54!BCV zrGA?E>-HHh_@h}Fp|w8`#~rbi%-9w4>zf%rkP>mablQtj$ds+FW|*D#f#X|~H?B}y zRE5tajK_UWx{=dPo=zJW{%zOZ0IgUhS8ukBI3CP4=q|wCa2v)E$ zy(52ih8nKg5Yb+5I%Kam!+72@DY=wr@wGs6#|boWgM5nz7d}a*EzQXev#-{2%jI3% zUi1-WX@m5fkv2k9zoX#r)N~~U#`I11LA(|Djd+c7EK&A_*BV~o+A<;)2B2ni%qMR7 z>66ft4Umb2<36~=7z`S(?!hWukr+1aHne?K5XjTgB`}h6`?(!8(k$-r_aP;1X*tYP zde-=Vk;bWCDbNncG5FKuoUII05K$r2Mds_Z7BLF|{yi($PRn&rFKE}x_5Mm|0zLlo z38$l3ztM<6^6y0P6I2FiNz3MeP97T;j$|52M%P&P*I#R0n>YJpVyd;ChU~@Xj*8-$ z3k3Tn6HGD-yRXYo2xkn5|2`%bj;y=Trkm00TWC`?tvALke!a&s*$__tZ z#sjV{=w`EAVJT2UBvSL&jf^^31)=`TcSM!uGs#8 zKi>89q{)V?`V3d@xwZX>6i*}D4{YBc`zx@=UoA-|;fqm^Q zIrMDxlM7c}BSYsZi-hi6${KU_3FH20FwxMxJX6RCHkh@(qS*z>NK{f;)0u(y3hP!G6P1@?# z2@izn2l1a3EqCvVc{s^rBIzu`@GF0XvDI)5=Hmw*2Mx`Kz}CSsRHHcdz2ciuA|?-0 zByRe-tJk|KA~jeKxYLswrcG8wW3XY0sgHNyhU8LX=d)VH*HYzKg!zAuDK4FABSKmP z*;t`d`xn8cfv2G}SXWUICpAimQ5FQ$Vv%byVWbE(oS{p2$F9wx-UN+Zq(f!Hhk=mH zmIu-3bE!?{(!)^epl{wN_D!xU3dZ+~WKP%BnaUM+T(j<}zz7 zYLO&dpj7`06>Qn^66a0f0SD!=r%dM!A^8$=`ZAHD+WA5S;N&P_&@saOQ~%gQC%zkT zD(JT*nlQwW#hCx?$p6E6d;lfn@hL7oh^{VZP&3XM5=tlpI@=xYshUU}c zmI|u6ygOVli6CBK&WR>z4Ps#_Qj*a!A&QOr^Rqbmpp_CybPaV-9)afC5i&N+aF33J zSy^ko_nt^h5;q5IhuK(%i;9ZwiAhD=fI>QjR2jKR1u{>pb$kdFUX9QkcIChDLQs5$ zbsq4@is}gI_(6y=v_|UA#$d3B;GBjSEc7eC@X(78R zH>g47Y9?6d5+alJ%Ccw}5hBpIss;!cN`BG)h5;xN!NC-eh#GL--KCgya0J*9U=*l} z!BGBD2D#T%66N|&-NgKh|Ai5sKAQYPXlNQl;hAAV3zB5eVX}Gn)RHs9|7t`=!!w`{ zv}a4d>!>G@YI*#6%=-4(!#HZE8WRG%zZc3XAKP5YRu+V^kvM2;Or9u9rVJZY&d`Lb zA9LoUs6A;l8!XFG_1g3Y|KQwMJ*BALJIPRyOua}qCT^*oH%aR3%;djJ`9J^F!ABl( z(EfmChqmBLUHqy=c%McMv2wVpO=KEH9yVNQSwlq~+%b@2@8pe@fTJYerJ&f}klKhm z^3Ck-@qZbXRFM*;^?zslKP9yP-~8OeFGg2%XZAmD0YtJ>s8HZQ#|4mG4MO$w0%#fd zMP+5DwsnH?Z@^^QkGSZi=OW836Z8JlT5$)*Pwu&1 z9S!^+jV5!UnwgHY)Ko&o{ymnarY0zHGBr|&5X0Tt4H*Twfm4T6h`GW4_b5Esz4r{4 zD3Fdffgj`opeKN?U1CzQ&&i0$`$>+W>nq$4YV@La~qyMpT=`;B+b_lm`zFtB`RD6~5sT$uLig!J_BxW2%;uT{k&0;r7m zBX4`~>ArW}YaYPoJQ><%awMnejN>l8{GSuGa{_m5vr~7F>cA`r41b9;rwt4D?RMF< z4(hzwm50;=t+m{!?%mO6dQj@zTHZ6^)uCKWTR zn1_Rvm6cbE@;HZg%qEIBr1-qjCPH-!pWiNl7Z+v}LZ0@!YNi=e0Pt#S8k?KZA7hMB zkVH^HY(}gX{I0p5WmOY@6uiv26!wdC^72X?-26zE5Cwy>cqRPm8n6sOTl*jwCY86- z25Y$%G++pbT#ijmaYB<*8X=?5AP2L3KIM+0F}0wJ*%!D-W7?O^TwnjnWw$vB6f#%U zbmSPY2dr9D=1YP^17TQAMp5Ar5P;`P8xc@_E_ha)X!_KlU-fbQyWmE-Fk%wtn^5KD zH`_h11$;izKP_HpH=<-N3^{_-v$uX3YN%mqWAYGF<=gp@;x-Pmw;4%e=cg^r4jw*s z%(xJ_$sv@Nlm8g03yq%&X|f`E?s`B)fkN#*eX29ewZ^Z$of-Liu8*OiVX;DV=~E?1 zD7J)J9_)^~$ig$;JBx-o#}RDSk})|cZ}RkOqRCj66hA%2>+ebEtH8lrS!*%UNcyE% zvMHv9;m|l10MHEuAn1u_MEuvEUP~j=?`)g37z;~E7J7Vrixo45@ys)2Opj1av?VpB zRQwAz}scN1js{8e6INO7VJOxcnST!qNHtu4u5T29)U-gv)uwTAlZzGD_yYq!R zbAW-v7gM1xs`nrm(XYOU4N=9VBee&R!ajNnb$+{YGXe<|Lm8d7UxrS8Nq;!@XdOlo zMTL@389cbT9zM6fp6tmsJU?dq)gHqzF&ZBQY9@t+fPurX?8$-eHV3V87p?+N?3bGYi1!I3m03_&(*%6#UzkIXB%H!__wA`ht?n zTglSHB`?BSD>Krjp@3O-^BGvBA139HN1PiGK+-B>9f8MP735?IEcD)2ECEWQi6x?xW-5d}o)g@^FK@XO~&sIXA!5bq_+pNM+Ey z9)2H%kL2tQX*2KNG#a$5q4HbukljF2%Jdu6gY%(IjM zwh(XeXgW{gYQk?t#_+zSVv!5FN{g`CYO07$NW|fIFj0`XsBPR>m+Gk7*GXgpBd1J& zOK{!P?3%%275F1NHx%E;CB9iC#yyPdJF3Yj@h4Se6HGrce|D7bjBReBsMjxVP=TVl zOe=FsGb8iRfX(C8I!w}bR3OO43tR6 zb&MFw5FEdw&t?ES9|?HEK)rQDeQQ7*^qs(O*I}2C9cIJN{}WX$>-u1xOD~uzwc_A> z$suY_&Z9Y@6>|X6pJ6dqJZa=#oN#PjO>fUaU1*U*7FKpbXKiXRbpE9bHhjOj?g)mB zr(DS*$RqNv0m{wIekBfEsMz7r39G{_sV*KTAIvONlP?9w}KMQ2+>~;HIUe zA>wm{Wo8n-`Uo>mrw^Umcg|5Iw2;D%)<;d54Olf9HGNH}dAPdPLyO6$rQS3&eagKw z)gCsg`@WXA>7$DsImEzYW#mL?IN|#9$v2^cLouDuSG|n_SX89&vueo{AQjR|dnXKg(Y12%iA2k$U%5TFqf8aK-GX~$+BW|*vSVfGw&EKeK1=Ltm?TS}1sEL7%TPfAZE z6fQ)%iVTI;=L4RSz656UgB!F3Y{lwPcEdFdSU#A>6zejV6i=OI`Wl{mJ7beqhWqUn zsIqKbR#%1YRIPWdM8W6+F3?k*zje!Q|Hi%LPiMpZ?`SG!6mbnSz0+Fr968J3V4V5$ zZLd0PEVQlW=-rVV1KeTF##TIidSqx(01t6+`xH~2QRY3VUzkrwsoj5ad$W(w0BFs~ z)mxZ&c<>sJ#F)N5-b4}d#si>>_~c|sMF8L*8VGa*HZG}AVOfkG9q3^YNwFj6YJ7d6 zj>&bZY##R!zWKf((SQCdBPS=m&=|-RWr)k5(;Ni=Kf=q)=>z%~43v}IZfq~cqp){LD8=&lBOF-$D6qZ4|K4?YXmnd?mzbNI~`1RfZ8t5l5tuou^ z+0x3&is!U2fd^3e_-XnSXJ#5XB&MN(#oT!f0SJkaykCa`?;A}+V``9}ntBBMZ$4oI znkT7FC+in(P#m;>HufZGB!mK5l1GPF)VOoJ5i5?MLOV{oA&c9))BAJmn)mY>ewc)1 z3%cOHc>$l>ircm`8uPg1bf?W05C?X_(1FZ!Nh~As4*|&xw2`nOkrfQPk^qt6r;~;A z_m_|7U0$C5UYr5Tl)6*K^IAOp1r_SM-pE4o)Z*#)bO8{^b9V$!v!T_kd+)? zfhB%=bsjA|S4Oly$=SHQnQYWBfoLIr3%Mtk(Ji z8{fxAXlQ6CEPoW3v*+=4zf!kmBcH|={F6e8Jc1k`!UC+Udb25fz_#&Rb>1R-iHGM) z|M($j-*t~IloK0{LBrIq9aGm1MA?4@7}SW9W6nJAYOkU!^?O1Fa) zo~Fe%B=y$CyIy@ZfxTBibOo3H6wKv8t6{CV6r*qF8y=Wl=W+f)H)DE623+XCNa=m8 zbqJ=o1}oUg(}~*mogb^ucVxOv$?ZE^(gyF|h4uy{dT8Om1p+aFP?r};(qDmN=zQAn zU+L5PRC1;Er6XnydFOoT)fmx|a~zB}ZW%62jwtv<_)TwJuA;cHL%q^r(!hF}PR9pA zp<$o_$k&<{kuS|dcnr85!=v#e9ztXoMBLsmG>Xy5$-zt4gYSHF%*-^{k$d-^z!d_q z8nu1YhuF&5nU&8?q`t#t(+c&(_r?*{-&YBY5#-pB&>2%9lrm$s{)G;2>3wACXa_*_A-|eC1a%1YW;HQ5b=<(7v*-^q!X0K!qY&rmB$u-Y zzUo>XABU~d7JnnLBjfRXH{6o#8C!Gfz?wU`k59>n9N1$49$UoYo6nbO zE&uXTEygeE3I&yoQI-pe{d*3SRi0Vld2c(wT+78pb+b$-_}dd^1Gg!r$}b3g24SWX z$&NQeI5gH2V&v9m(^>pa7Y#Ekh=G8d*9R_#&2E!NLPcVM!>CS6HTCVTM7St7*AKwk z`~)=TM-K7;wVIF+n9gs^a~7BtOY5SCGVzI>j_by_8^XXpbQg#zFAvKPqm94~`T3np zK|$e?6yHUU1{ZPv-qVqXu&}6zh^>15Bk4I@?Poz0Do0X1h&4{~w3}xIpGA7Ku@6h| zDp5^4VBrsyX))Lu&SKE5N2V+*;MpYUNYdMIy?y4-Azp!)JGrHDHu*l#$MeK?(2p?I z`Af{^?HO&WJ*iy>cxGbj}rdbz$-e2wJ#Mf1S5V{CL(`Wvh$D$sodfFfuWOXGv#75>{SUOT^DW&C7W9)(8b^P5H)dn7P{8dRwN>s!9w{pRlv4(7eME& zPo7wjAfeyuqAHlcnxEyU(lK9c!NiV#=pd*yF{AoT3w~#?YpwGMi4qY?;_s5cMFc=a zhz6+1Z0ziS)e_Vpg%9vsIUhQ|rv@c$Srz$$d{tG|Vp>PLs?T|{6vt)d>b^4k7dyKP zegh2S(a{mnrYexE{gj5vn3BBO?)qu^p@q`m{p5s5fwrRc<;!rZ<3XyhuMl(B9r{9v zlGFl6w);LDkTPRO1_Kh(4FGB&A~G_;lnx;3eK?#C3mHHP%xD3;5)jRjPOt$Pr~u%Z zE;idRWa3j?ebvgW6KE%}vwlhe8)B(&+X3gvXWbFPtYv%bjJo=;{A_+bHYERwh(B42!% zhm|tMj#B=`y+6IMHCF4eMD}#nXHHaiWZX(&x!AHAZphm8yb*IXO6&fZAkyVCJ`~-M zc&I)eKL6J{Or2Hn@6L@WL+G_4Cy{t>3Ws=qO9Ab7`@PxoNr{^wHsMhf4#{y9y|CNc zDHlC_%)iRUJ!MP#>@t^ zzllyat)OjmLRS?X)qasM?D_Y5qa@5fXy}?8je`0Rj7aafHx|Z zA2R+9%>|O_w`=fiLN>%D^_w!2OD>F~47bq9PkUpA5TQgDUErXUkxlvu_6)HuMx-9l7DF#)?P;a{RN`V@H(ELQ*X;X+D`osie(J@ZtTP z5u0IqFd=q(V7EVrv#!V$<5pN_Fgzu=gGs`Bis9`$_<2VDA#&EVHcc$$z2B4F(n-$E zj;1grMCSVLQ@VLkov|EN4g(x&7_FX0lDd7_egc)FV})>56d;Oa-B% zqsuEVhp$ia!OF|=p4uui4E^cp2&`l9no9h*r{mVqimo%QcM#+x)7Kp(Cc za+3H$wnlE;q~$4}pXXx=Iy^Q(y=x5c4$D|$=`}MPndX~*+xusHR%n>%Gw!aK$&%O~ zP@TkOb<_CguUDkDMpLvhkJ#7p1l9tW>n=Rwv8m}t#SKzaSX6;=&{ofWw5LVYtXZMT zSDmts(}%|HH?Fy)&oY9JY^O8|G*|2AVb$8=*9%H0X+w(^FG~Gcn5xlRho=)`%PZsr zRiq*$1^$S}?9uyB-eS=02KE>cp)J(S&u@V1uV-WTY8LsoyGj&eGN0n=NDC`AKf?|DYIfGI`aIKd7*AbY z{TdMH4@41uz0Spo|9b&wy;+VyaRK4%-QC^cNqVti!x|5O>E{K$6W|<${=GU|SzGtS zU)#oVPL7R{QBV|!Yoqi{LYM>ZkTcwx4~8>~j=Id!DpV$LKlwI&g5${%>K)z4JXNw$YCA3okNe z=ucdVVU0g8JG%WZB#Z|Gv6{EbnL~+5*bc`J)K1TI2een3@?XqO>^kL=eft>Qga*br zb;cZuj9PTUBo74s{Sg?BB_7Q2`DaWWMdUPk@XEy)bIIz&3Oa>Z9$>yo@svZTE2ozb zDXS=W+LNl)L>}61iMpt$p>8*XOyAflt0 zUw?h6(jA&U%L1wizrvvMDPuZ0p6pyu#FttpaA zaRQLTb3mC+G75K&?7-4|q^jKN&+6ZnN0(MG+ncb<8WhgBX8V7 z`Qry)-Pf~H>Fxf!RPi+b+FCd&rbJksycnvrggHc?W_&L?V*{Q~@7>NlXjyd1!?-nK zTGg=XOIGBkrkFik5&5mq>Q)h0IXAi4q zGkZ9~LjEN<-ObE&1?an7DenUXGo7P$N>HM+bI_j_X1bzw^nIzi*wF22tc84%_^;mi z3I0M!%el>Uw4y2zVDf`Q@ng0dkygt|bYVXUj?+T#92>qFS zT-d}pN)uV`e*DDydYmlvII`7aHvgFS>3-zln6appCw5Q#`N!u=R9L8M_bxco?~^FU zdZSZhu&}nnIN-3I55$a0!U}y;+zF1ycoJV~il6L#2b7nPx3<6z8TkLg3u}-2)}3ek zjKYne&;MjRNI+hCkM0zMWL*|TB`5)&lTfUAfF`+*7J@-_64w$(8}U&#hlPqC z2njno1)lG(MnaJEDb;4G0UUeFj%P-F_m4Vlps?-q3%qUWUM<-ah~jFx{?ebXR1Fx_ zQ4SgObia)P^Vi_JT|euCK+wh`)NI*IdhLn)zgq(V&>x0|%36cDQmA|1G?PJx*BNl$ z)n;1)XlQ66O`7#HtmYAM*S~(2Gp>Nr-WLEHEk=uZM*6%Cx&<(!ctYMh0FJt_x*EA- zOVQ4b=}QG?8_GxYP;FzigekfDl5=0V^J@Z?4!i zd}JC&C8DcD389Rc1sx4fA(1BMb>Hb4P0MHh`x-+PX#s%kGQ{_Ob&JA^HY~<2alLIo zE2X8Q7Duk@s;1+Gd!yf1({T9{@iISCm%w|zJb!_Z5T5`+JNe@Y%LyjdRDDNR9VBx+ zr1#YKuk{G!A)fO$;rn|^j!LQ#i~V2m&6i!hu+y%`5hP*Kv+ZFb?l+Q(M1O(T)q%Sy z^i=*A!{0tN5f^no&?pg5kCRH?$1!Rcj{cn6@AY3ri&|D4{p7dbAFik=ai1oTr&AJq zzuJ+G`qy<&_wf1y8<4l#d3%QN@m#Z1zp~ry_I*!L64D7|M(v+dSq?$DaA*WbBp%FU)bO($PWs2+sx(3Rd#h^V704mTSV z3pGW#xOZ+i;%V8=$1?EvJ(WX^c?}OmBx6f=*E5KZyF{q<5sjjw?gi5f;yQ| zvZE-}szsTgzI`>CmxPKlKA+_blls1x%+k&rh0Uh?FgnN;lmiR0yGb)hk3JPXnDDwC}oOFg(697q!*dFSK zni6jtZ>Gz#wu!l^p-73g0#JGF%`Iz7Tlw}Q7{|OT3}3T$-KMl$*2;?hU^tdSQ1C6c zJ)9{eQjWPR5vbnPJ03`GdtC`)GidoO8G%$VSi>)OR4{|J7(()CfdFjcC||SY8&DR_ z1{5H3fPoQC0KJL=79t{_5@Y?Mr^j7DkpWv=L!-W-0q8ZE0$J%~7Jmvr64|?_uCF?4 z2eS6Df1e}z0shc5fS?Wp5`BOo5g(5pf`}I|WW-DUxgtC~d<;C+N62>ZIt)U15>0C- zzh1DMy|>ODoiuzmZdX~7MH{LkQA>hZI;G9FRw7+P1TIhm(?Qn20)~;E$J9aga;=c8 z5)T$a8YbwwbP`5&8JNmYuEwVd*t8domp6YWJN<-RN5lmR6{H#Ka_U$^UuP)P?zvXqjru_DH zL6xk*t(Kk;u-=%qg0sYSR(?LFu%N;LDH_ibh3kCW8O_`z{O@tWR-Po?!JdfkTIkHx z=IH3;-&BpS5An^>6^n0D3jcOzj&m_hve!6*&rEqzg%-X-qUp7b?j*v$H$O+=*6dxs^Y{})=A$BW+IAZ#StBjbf6Q$a40 zq~mgf?guu|RC)F$>b!365@}rHTa>``U;S�nj0u!69ptlHaMu*eQL9u1DqC`tLpj!}YKRqm8$WX|!6B*1v=>`SV7CxZ3eJDgK*(oi?DfU&s zkua3?dvjxBTt|sR79w{<|Pzhg})!Y@fuFTNyjgW8Z_&m zjl>X50D7py08?eH))3NP1Z;rCVNDMak1Z&T-8}y1Pfs#R4Zg;Wbz6NgTNtSfL;|0j)G#A#eBjt;LVT|FeRG zMwSP0(j7;dJ~r&DYel~lBR*tAtam;W!tAc*(|HWf&eefIJS0Pah_Uis_dPsGl1cxHp0@a~-vjh8TsrDSC3&$r4o9%Yut=8*N^sDbF zM{EPTfw9TXFZwyA6U|?JZW7pAf0y6VF^yl=>WO~C#>r$yQdpREDVVrN2C3wB+Or=0 zh~#~U8oMaB-9HEhX0Gk%7ZxfBu`BWI)$Rzp3~QP7H2ZO$w>a+y8E!tz`g)x0*kgQu zsWmC2I&KT`&o2$dl8UD#cV+!DH|qk_u3$q4w#>Te2#?>c*PEbl7|Gjh39Ou*Lv5i+ zAGf_Ygda((8)hW$-BBx-gLEv-=(#lEB?m?BM^xTa7LQ>idA5&TKU32etgGHcr-mn< z(72qlQRc+1@?kMn8cu{66e4)1#R9!wV5tFREIP##?(N@OjYNg4=7ryYnUESreWgXG?Y z1({k@_k~Xbns40r>cz*hndww@qg75z=`2do3Wj3oy~|&s0lqF1eOziHT>@j@rk;x3 zRy9j6m9t{=s9Dc&4mU^?y{&k#e>->DxdW>^hnby8JU>UxBt>a&$}_kDf$>lWx*si? z`%ELk$+pn<(~Ymj6dLw#Bnmi#>b)OhCLm0UXzR`%_TJUkM7ynTUIc=T!zP}lO*CXr zXD$((8e|m@4w6YYwFWn#98xppOXa3KvPvdraq^pyONW{IYDN@(eA7}T+nA|T;u zD;93f7x%Na7LUU+Zo1Kl{qRpd6CUOYL!P)dDYOcIm;R z+D-2nPkZ7V&DT_h#R}_)yC@LV^fbh|(?TE3`iHe9?I=7A85@wH*kRj~2b}^NXyr!OT#i;1@B9 zQAVq#TLqLi{<07LDg~?~mINFpgFiBMi9c=FpwmQH;uloLYEs(;bi$5qk*H==CAxf0 zYr^(J5th3FcnQ6g8+QTB!xQ6{jh;2u7Jl79SGTDN-|xJilWTSdP)>ekB}@T@BEOEZ zv{<26Se1C7=t@dORU}S5-`L0jEHj{&!$asQ;kcuRA3K7_WrTZ@EK zI5-#+3ybO>HZ*viLX=gyBrx5*thBV3C8{u^Y{|;>?$=xtJ}3Q?4j2dol0h(ixmvq) z4M8Ev?)+6=Zq%}Y$8ARlG*1fE_dMS$^Jr`qc_3bTq9g z*QgdmdJE44Y%#G2$?exsM}Rkj2z~qN)DQ+P}rrx z;+mdG5am`b!2f46TZT*kEZycOj<1ORIXL4|TV3khh{r21H-j99#AbpvGrwsZO!`;J z;eixbB8h)8OxK)S@Cg=}^gwksX(+uDUsHj?iilLp=GYJW{&0xC%%DFwZ)%<9`krMH zF*}>xwFtImH1Jzm>Lyr4-9T7rAZ#ZvMAj-9fwuzn?CbT2y0mo;wbh_;-yljjx$9a8 z$jPyf*>3+Cp(KA8>pR6B9MuGRJ|zXJ=t3-sf2*B1XUpajA_?e4-L5>Xn?4BPMt_Rk+d|QYord_`d2+hk&K8v zOB~yG#14PIfM6D~iUfn6Ithg51l2D1P*sK89Vl|TH_=)@$4A~y+6VxL1@vHm^&qH3 z+Kf;(S0H%{P^%L=ez!-WoctJFtutDF^0<_!f)z0_)M`nq+SGx&I&iRIYKC@g_XMP%H{r&IZ{U+k&-`0Ek)=<;i z+jLBY9@uZ@pbh;iUuXQ0wec(<#&+||XRS~)HAt2>jex~PR7#osJE(oA(i1OoL7Rvk z;P|yU*q<(Zhki1VmsPSI*Wp+fM znUYYB7mh-y@=LW}P6qRO2x)tJ&s;0!U^T`bL&7F&k!1V%siX7tSn7_%g_Yt{Qe%@s z|NW$u@E^}1$qX<8P9JjZ*sg)k%mQQUdThRFU(-5!)=$uv6A|fUWuIOfj%+s8MCSe< zuD&uT3if;ZK>7}NZu(q|2t zUAaqKJaNOx5$b_rA*Gf4DOiP1MMMVXB>|b4j?RDoqKEa_&RK;l%`6fa+5}{9Y&2&C)+M@Ba=~Go!5!zg)M|f3nSO< z->#p0?yKCHyVLT9*e`K@`R`~&eLUObyBeM_EuWWT$w-aosyE+aE#m4abuF`o`gYYleyJ#?-fLfoyO zz`E1?hEgiwM+63XT&8#aFh835j*B{JJ`e~o_#IaA(4hGtwfSlKma8!eeGeU;=g>sA{G~y*zM3@TF+)hEGfz| zwPmayeI$96!``ylwR*z*b6pVB)qv%;KaQ_IMOAw}eR+QRn{bHraB+GyJ4w^MAV?(n zuC8i3;pUF^FQLj*{8yxisa~)4Kh6vh|3j2eaH#M2{rw`IpNA5ov3 zFPtuGR=WoT+F-X8R7e(beg5~!XY-7! z;q;WQ16IsYPFzJLy0>_6hRDP9t{%?wmo4&#_Wz3I-)!_Ft*>7cup29rKi4=bVBQFw zvyHdk!gMn{ob?D<>)t0SX|05eQ@OX%;(T){^7s3pj{en3YMyg)E{x(=2(J|z za&e)a)VILEw3~tK9EeoWXt=BHPvDx0Mz&_24lZeqSgoyhl`mhB{p>cL+_x}~V4yRy z>I@oF%L!4u^jduT=AK2}u+QW(zk21_I#X6w@Bk`X%yWK03&)UTy~xJ^L(Z9vAm`6N z!jM4l8aMaX-_DuE_>DHSzJek2oEL?XlRe>Q2sX-)P`->9O6JeX(ziEMq*J z=~<qXBf_$N7;qA%+DWa)0f=@**GH2`s z(kX{t{jspD(nOWhptJ3+Dp*ou`oLBiZ${I#Pa?!Rrlwyt=h2E%aVV^!Kes*cxu;~ zF8-=36F0KgR_5EeAn;a&EGsO{$~z)NSG6GWC+84*J$!(D8IqjPJ(JSs{q93V`hos5 zn_`$<_b&BRvxK67IyUltd83A`FDXf$gmDa3Z*A>Qurf~v=UI7m{T3!?r^yKy3814J*spr}2YgR{ zV{QfNi-uewX{l5hZ7QXERG|$VxV&-^v?bv&`V{}|!fv(0f2X!jkLRJcOOl>by#VQDn|g@n`i=4CpmVJ})-`*S3nlXc_qG})}DBE2irIeiB&A2CJqkP(9) z)sMa6dEy|Ud|e3fnT4B`B&l3)$sj5Cu7@%%=#B}FKr#391Sv|1>0tA0&ub#X-gR)@Z; z(F+CdDs+I`YQg+Z;YKioGVF2H376GWSUN-ak6NSN8y}xdA4aumKcVMiwqO*d&)zrS z3{OZnTCaG}-mQDT^c^r*!R(|(59 z179mK0cW7QT}MvfT@eAv=v}5qt>)vy#3~7AauqxJ=`h1s!Qjz`&Ui=v!qp;=+mO`T zcMe6%i#`4CX4lW|@21Dcwk110AL`DLFUGRdD_vR zlTg&{u905cN#ysWW~&XXqiHAt-djAoELUgdt_pic5&5PR?`eU0HS~jngTax3TM2!U z7&kvx-N_Wge#?W{Jjod2-@Y)e{Mi9)aSai_r4y)G>+EUW?%bqH*Ph|_p~qdci}Rg9 znN_sCxf#JV(_H|;EeCh$-@dJ&H$s+~&T%Bk>Vu}!h^2q{v^F97X`&j1LgGRxJ#KBV zY=&ruThP{wD*NO^45k5P8bIPMYpY}P zPVJRaB}_kAwSSRc2-)p9oJk?O@Skc7$5P0Sd_OhLQAxClNrWKFj|tw-bdO)d&;JXf zsnK-_aZ}bn`oV}0qPc0!b-KMkC9$>8WGf8M^QLFSNm})%YLllTb;8@PfK9Ugqy^&) zkCp#=K?aMoqI1VduN{~mdWZM^>hwTEjv_wx*rm$8ztKQ|gkB)Pj{mwFzSF;uKW^P9 zL0Px;amU`apR!>xzFDDmKC9*fP z!Rr#TJY>bCJ=UZY;QA2I>sjMUv?i6PTo_hMKKF#-E9-wL#hxKm&2+#fIIExW~Vy)8%56EQ_(vrdo%zN}%9UPzF&Bk*V1bv-bRVXnN zh<%w$&Ii=FcwZH!{B*hV$a7zGE8&{syCA_9Z`aY^z+RKld^oJ=tvEBC)YST;3pWnZI(!I-?^M=#7+5H0hmPjMj;LVX ze-SP2ajXhuX`Ac&`=tMfB+P>3D4s{Hub4*1O1iZh{rxz!tE){?=anAYTL)VYbu;8Z6haLeY4UK$`QAD` zz{S|imexKrY)GK$pZb2mVP5s^CnV)7wb||Ig=2W#V_L|!o-j3RlXP^0LgW#fvsn*!o`UOVO*|)j5EztvW#pQpx@1|h zSXOwLD~pKk9s?y|ppCJ18AlKOtydel-;#|L{AR`U2uDgqiSKD?^T0)_R!&YfT1zy% z&)`5kwUuvVBwo4YnHIN7%9eXElJ@N!U*v4ad)n9_FVy!iFr{@iLPwQwFkgBD`teHt z-kpW5!z{kjO;`x(gF)ri+Syp(W zo4}LcLXz0wRdl*7WAZ0;v}Bj|O*KB9I41oX{$=0+zATha!$1lmob$1i$M$^yqjtOB z;)z#sjG%Vd5A%Oj=tx0#PdV8=TQYoQCaI(drX_v2I)}P_g9Zaq3Id1ifSCNV?Lw`| zkmv)kP70j9Lv4&LC47j+f99tBYmrm5bQ@QMM_hX?2Wn3GT#o7is=7jZNY%gG<)^|ZBZQ3EUE{3VS7W` zmd>vS8m>mIBzaa}mcOF=28Z@7AZUIu-td2QR}@|s3%NMUM$1l(t|!zCy?%~2ODP_3 zv=ukP;qa3%e?^bO8fT`wR0)TSVfVB6TUr{`9u_afFO}t?Y~4)u`xe`I6oF;aw?K>) zSyjX&rpb<{^Uu(}66MP4h6wZ%&;|dY8bj?FGV?2z31QE8U6fSRmRk zuk1npO^%m#5PCHA5?2)Gj&Zkd10`ulRvsa5OWZ)>gAtd{181dwXe|wG5cB0P z2>8Jw246APY;QyLmlu%V`v1YPYFuq5F*QXKuO8moiN5nwjuoyUH6<|R_5bmMBA4)$ zXRSCV8XSzck}Vh44U*rS+76Ul%*ykN+fy$g<;Ci1BR0tJE`&IO)?Oqip?0|QjtHSH zDM~MyLu{AH2sNld@Gr*1AEbb_W_j;FtG$l`B14nqm(sQ5?^p_{e_wxti=ahQa{SxS z!}iI6$dHd}WflLQj*csLJ!KRb*1tQ~|KkGiI4_uNmlV|Y5*mmb1Pb_Z%SQ~f!B(`oi%d7{KsI z<}cF7UQ4UCof6YtF^1%lK_u8dG1JPMdbq(-? zBeHomX6SonbgTDH2$JNtp6wLrDewG+X|W*YN9yDgv|xq;CMQ+i%g{8CPa(+N*0oCY z)7r zGgb>aTuAr%gO^Tf3Bl>_=-IgIKSo)$MpC~0`)0#al~B}XQ4q3c`d~!-L8jXNE>~8t z0{MKwndE8>OJa*>Zn~r@pG?e3_=it$)Wr}x?Rb?Qk8o3nN>(m}WO9Kb_HM)S}A7Hq930~^J%6`tUX>*4P{C5VZtA_?>rMnvNXndZbsa^kJ9RW zvzw3b+3y`CkPbfgUxVRTe=-~*tmsJA3&n}&EjFJs38f}xLHZ&`gas4HXsW~bZ({+s zX|Gax21M9bqtS<@kO+^JOnk0~6%@K8MkxP> zK)9ba>{71bW094rBEG(rbS%Z@dxhm4GW}UWiqSDRqD)_3h>G zt>bC`#c?DPU)o88BWD!fk=d+N4ZYDQO>JEafCSWkNZ3jYp?xd+%MuImjEP!^Bf+02 z=mUng(9I#g@u+ssyGn1_l<1?~*}`F^hr?x`R9u}WTsV!Jsuy8Ik8A7+GQRSOi~C0y z!$&J=L1Z||JXc#|szcDD9v)9#*A zE)SN2$O?1%a$%Ys_Y%YE<&(ZO_V?@Lc;z$-J*G2du{RlxC}Lph)6tdx>rcvPI*G&I zw3+Yra?zBq9GQSm7}dDZtySBL%~~kAMhy~8OiXSlswo9`SbAUk{{)11Q4%QcxxqD$ ztzC($H9KGLKm&-gx-3vx(x1+N3G&33*Bxk~>ERd&k$lwHBD3fpgD{D--6>^;hoq#W zOgW?z$yb5*~WmwsVYX@~mkbE`HubMuM4Eo!OKQSU@aUFj|W_Suvj4LS_ zlE{)8IaO@EVqkguIkl`wmdsa#?YdE=AOLQ^VJ;Y!p8*)|v&f#!M!yxjHv?dv4hjCN1!t z>VknIplG{a9)=C?<(HKqTdSJ#!_f z248;pdSQ+?1WeX}_9Q_*ix+Svv(N6Q!vn2TCh%KpRoXdkNF!x1|bh_0vjqM4oMDIi~1F1|y;@k@xA z--%)T>B+#l^~I>gX_T62#&4WZ_hIaHY7{*6%N{)wuMdk3vu5vb<>*>LtIoe;4W_lB zVTrY}!HcgdQ7@itktqe^#{Ctd73sDpjjOJ#S$xK}+y7P^&2##`uU6#in)D2(rN#C9 z6A?(`_QqPaukp^76pM?j6Jwjiz;`p&X*l8k4G7w5HTswgGnPi3KC_d}2Jk#YY`2FI zRGN1WagRr58Py>0uYgh-1N`#S9*S8drLDELnD({9A6~nwjST-?wBN_|XM1NvWjH&` zj&7(=GnbTnQP(D>^87#+3M?@Ihk`a75H1q9Y)S3x>~?_wii(*THDM5zBfaqH4bpEz zHX>|oFldUW6vuwMUxHU>j)L1u+gahoB!Z1cncW1Pnq+V%d zq=F4pNU5VAQiSg0FnV-Zpx*L#AbJsMN)Ke8P_qd8O(|%uqQ1If^Nt~U4^Vjk1N%3> z@2?K_rV7WE9^P}?`j(XqP*$5y(}OeZH&nQLyxh9?=SMf|xK}qaS8fSC&`XUe-RRu3 z^mjepT{Qpmf2Rt}$^kZI)gjSA3KXtTi)G;N4%Po^wK}uf{u8!$aKQg)iuM{FiMt~8 zOy?D#T!HfFzbexSazGeYI(ZmOpt<<_RbhJ3xy&UOnFhro{PoD3>X=Anm(%h_>K`iV z^moa|T(&kjVs#D1ygyh%6|pCqj#>i(>kY0x$3AKEEZ{~l{dTM(6c7Hn$Sp7(u7)wM ziEg;&&3s%nR>b&bkMngnF_}KOZX)cpTbE@qg1tluQHnH#Klk*BjD*TN$uPr@o!ydB z16es(xt;ma?hj3ZF6$rWdC^QY{SHavPiia>uF&XZ(n~HQ5a%sG-dm81RSu!aLFXs>@92qW?@m7!Id}et_EMJ zUfDjFon<6rphy2 zmYfr%k~HpDyFG!Q$Bf7Q$dfCVx>8mdca~$?`?l&F`sHwEDMFm$@JPDrzh@2;`8@K0 zz4GJ6EbH!H0v!KY2b^WT_DcJv}|p1C@Wl{__#JbXumv`{~q`AHiRk6fM_e zJlhoD{dsFCU_($!bH9(y`xR1uupA!#c4>M#^#cy5ddYigk`Q2D6@~jxn~Nvrn}(K- z8e5$5SV#jQl9EEnw0ZBz%~x%06k%CeB+iVZ?=HfKP(9&KNKJg*-(-(S9|zcKz}kc2 zT)-6BeGzbEN9)X{pjsBUleU}P$)Ce?b{#}~&YQqa*W~_kPZGHSP{yZze#U+K_U(Vr z$HCm5^^?R%qoIQR04%~s!J=RMmD9lrRNNP{9nVQX7+<_{{XwHa?4|wbdNEDV>z?lE zJ)n;F>^ZV|-r5R+-;sx)Pw4HonF8;6RmkStjLmeizCKjJIv4qch@1k=#;R1>nN2so zF4UzGhT&SoCiUc9TObyZ17>F6_mb8egMuS$r0?ET{c6Veu=y zYaAAt$iGCQ2;HJxz6X<@lI$tx}`fnZ_U$U#$5 z&ORlda%u!5;=c*AI?XwIHltg4^AU5^52WzY`bWX9n3`?zZdTp!1zMa;ZT+&-F%-;Y zJWG$qw`!(ZB~9FKc1L<~QS`d56v)G0HEY!n2vpddyl>eyJbS8%Qugqa^*Uk?e;4s1 zSeZ$u9zTE<<1JTaYw-aue1O>a5=wp{)hqN3XC)={^n!YI=ZcxqZCh?&GBQx3$(%A_ z`ca<+kA)zLHvEf%Xx5WVI zjx7kxEz@a?UNgxOPg&CBv{@M`c=Tk#W2fG?ENN>fDM?I8p^(OKZq33TPBCE1*qf`S z5PH6)pz7_VEs+uRmR12$I=~*IW)H053KdkQX?Z+%e}q7tyiHfz1tjv&WBNZiIdK58xdHeX3NJ4X zTE^axc>eB26_TygZfiR2dI!zR0HUJM%6P%$8uvdb)nkhVp~hW&1lEaePPwD!1z+%0?A+LqyG{h|B+#T!@6tEZHtJ6uS5DybbZ#fz&7Mh z56b$TbEfKvk{VoRTRZvWS}Wm~aF*~_i$kxM8k%--k%MBw?EWY(sTsRt#HfWtWh(yq&g@%&{0D2 zw0V@U@_Inp5+ly%kBQ1y;tke|eIR~g&uPIdbEXtmJLXMmw;wG+pudR!4>adiA|)(} z+2X-&c044&8U^KSJf$8Bo}x;UBCVK{3bxSGCFZx%q-Y)8q>NlW4${BpT`_4p7x8fvg1%$wZ)b=K>J=eMKnQ1 zwN3jS_18lAEwD(-xIn?FrODiHV7)AcgvW zPedUa0u$k{C!YUlwK%SUf=C|-U4NbR5h|7TndEr&0e^83AYwf@5(2&nPyus;)#C1a z?T!-V2FM=KJKr3nq@;Y$HAqKGOG-mis7;(PzGDD3tmpIH&Jsu{ffCo-y&mFoa>jvm z$nE8n0yNp9I|OwHFmCgK2pVb;1q?kTw3oEo@Pxeicd|X0Ahhewtw4{V2OSk+2>kanCIu`Cyo+m6#9;wFTfki0-E&|w;dv=xCyw1fDaeQq7ptcH3!y?@iOqv z5w^YntyG@clY33I_mjJ}`yN%c=eac0Yu!D$dTvft-@ssSY-}5Fi{NxYfC%)}LLlT{ zVi1s%jnm$igmq4a1zR^kt)dwmF-UWh~HBtiN zHp_W7;Lua^t$z3{GN$j|3z#5$AmEc5MWwMI=9x*gLM*VNHE@#ly{I8tT4K+h>(3%IBFvcsDJ%Mt`Ki$4rxY~Js@ z*j7m{^Y(eW*^x{M67Rc6g~OLayD29-jUa6Kxn`u&fOwtDn}2pCh>A^yj7Ez{Yr4xF zNlq=T`&B%4d0G!C{t$on2N1t=;>^`H6l%9e9SvORBnJ+#S zt=s>lLgL*pX{eOMYg`?cL~Q|Hbiv>^N>h%q)UUPpOr||&Xc-tjSq0rF79kQX*LrXP z%PuM=!R*9Dtm~6SNm?v&GFJ4$Zm2lIPd655E|5UhhPMx)UZxG{Ny9GeNB-~W~2yd&hY2JH#d zMT`njIzHA2UrkAPcJEI$Me}lN9_>)&zChXHa}DEHaMf8_S_VWHz99NH84hCn2jZ5( z4cgyBr{)E-!#B4AiiJkkc|3lzOz`UBIAc6f8|`o16vl z#R%qh)k*-C{(}Jt0k}`Ute1HUblUqX4Gy z)%DS8hmd?>LT>~vi8z|e;aul;9j{)47y;)m3ogKBKsJk)<9`0&O5%kW_#lDqMzVf& zlxuYaWbr6f60Lw&2KBOvCHrLCthof7aLY8CYlvZrj)vH8e|ZDE5m(?%lgeiF76g|lCfuw}dJD`O+<-%&OcF%_3(B#=Vb<0>!7r4{nAtyD zo^x>An+(bp@Bp?gO*bnZfQ0XY$7QWqntkBfCu#7sGFd(K_tCayJFah~*_d!l#=l7x zgJOY4s+w@|TWTS~Od|Z;H*{-f6T0*2c6EN9I*VYasvWoLrD2zQPFz z&3`Uqrv?9#7M}5@HWT-T%cG3nV~MrImTth~-c+d~5XV49_iwtlMGJs6ru*`-zy%W2 zEtn>nBPu*S{|#M&M!#91o-mXnLU}guk?6n-2_h^lyhU=iMVmf$>KyG3`#~m9<4(-FmPRr7;v$8nywn)`CQ`QI`f?0o`;*m>TYZcyk{z=ERU<2_Ig0A^)ewdkj&}) zFdJnwG+gVtk>!I~a!#rytLb%TI>zH6eDNTr1e8|ge{pF-9UF-5l z23Jh+*TNcLyOUR;qCpD$fh2HuoN)K*fp61h5U#c^=*5akhL)NgK+Zi4K^gC!eX}bx zTkUQu1%T~W?HVnPbl^tj89JCl8v`<|qCm;zm;Lx(6xC)^)L{1nuaZbCXcc7lQ1kHIHTB&n%{%c<;`*Y|5up1k>L zQjzuYLP^njfNflTVe|327C81YCBUrk@$V44A#S}PUjN;Rk?no<`q;~rmy~7W&f{)4 zU>4kbpGAK~6ux-AX4lRXGjrpZUAbmtHy+Dtxi_I$^$VaHxw}DqJW5jIzgrS=JIK+g z@!p6wc1!kbCtZAdeR1cLd^&(>a~49FZP=S$ez>C1!xiz3!~O6vh=KM)DMX=iEdM9< z>E9fie=#?j(E@bQwyHeF$9e__`*S#0K4p9);0l?sTBK!U%m=hpP%T2MBq-Vs)aHC| z-_HFq!wf+sDFFS}Xa;As(=g7^@G#wn4@Mio$Usm4Y_#GjAN_=tJC<}=6qS@jfGHo? zR+%o(caA43S)W2sew5JjWbrv{tC_HpGROF?DggN}gcABkfVdD8UVXYBfz#aU`y0u4 zO3tkv;9d!q-O!NC2!~z;D856wMZk7WJ6aG&o-HYfPfHuTMa0D8b7sV;O{?4^nep=ez5V`7c?+x>#}m9+{x$Vq9pvym4g+ z8lDGCty1~j*uX{Su}s(<1TNgTbZG z;i|CFAF~6zL@0oMW(&kK>OS3H_5XUA$dkPI^9i+DuRGXuEgg8 zRb;k8i|`S|CT5r3{Hni;0`@(nJ9m4ax&#h_0>D;i!b-sXG8Z5@0J7wD+V6o{E{%>t zjq@O&8Q{NJaxgSBgvQ;0AseVXE7_&*Re{4y2B(!iNC!Jy?Z^QpQIc&RoGxSuTV9f{ z4+guyYscqzJ(cEriQDi1q$vKo&4eZU;Sc2mtH^p6+oNULZRsv6ZZs|BoOSkR>%Efb zjoa(ct8}A*%Am0LZq0C%BC5?{w3nmVPWg?B;OY^yQC*tl3d`hXx4LzjU>@x9EEN-% zvPypbLF)@S@N60GCT<*wMdCBbU*M)$>@`EgDR@>MgNW)xNgm<7gCSq(A)3}}>DAcH zG3+LN`~H$He^Ku05=$KBF}yFhhLl+Cr%z4NGI5%hH9nD4J$_Su9%cq5n@M5DP%O^q zEZ_ANfZws)v9(u~rOgzLJmndyIcjj?|1>dI{lVPs|0J0F{=B-LJW?`RvzAItp#+6U zi<<2{x=o7+mQa>6litX zoc}Jk&OH9By9F6;$)(>YG4b2kkdUC!U`_q6R=oe?0w60Zy9&=%&y6@9#gC58My>^i z;l5A$jQ4gB>yY>NzSE*=yE(g%)q=R48I^o%(ux3|!#tG<`_1rA{)_bx!+aY1vD15P zVXdjOo9UQeSI?gCJ6F1=zooF!hs`$P9x5m~c>Hh+yhLgLviZ{@yaJ_fVq(&d0sC5k zA1xICggHAq1GBu3aulp&ew&F{4K|B7h^%r_zqjo5*wTQ*8zl`55UkBN+K_}ZCZr}} zQ3ZfZR;a}kI2R^Q)>3_b!%-WS)G9%_u-Su%uh+$!Xl~wCG&-P_%(sZ_h z2y~bOHL~_HZ(pCE-|jq|NLHFutAcxvve3cA@wa|;)pKD^)#8y5Zrg+t;L)>Y$X*`K zC)@_Y8iU?fJOpI|l#Qk+Ta|EfQ&p*>ls)~8a{*5oEN)0JrZM=fzK0CUd0aWk7gLMUmk*3SC6SBJzVas*gO{JN7#6vw30Ena0 z4)$!h_r0>Y?Z{sqcZ3LuTKn0EGa3J4+|NXw1Xt;Hz6wSr{1)>ENUTqxFcAnqh8j0E z47pA$oK4I%S?$f4S$YFtnZ}Bk2OUSEP;htKo`(VM=UXMK# z8AoX^$@GT_Bu)H{=V*M>AIDHuX~zh5C3NMq>K~bK55Jb?8M3|UoZ$=9@6M`nY*lR% zbN6-+D^LO|*lDLFoK&}RB@2A)N9}l3k>kuEDtcL4Apw>Z2xq6hl=sx?^Gf&ySyKZ| z^76pj<1lOb@L~urqq!**Fx}6Aj$pCGHbkZ35a)CHGOQ@2rF2n8_@*z{NP7H#tH(ES zI>bGdyP+JL6;z5&wghlvLv`Zatl2qE~cQ&@Jj2?@9F!pF@6>5+>P#m>P z#(a`lHp<=jFXoU(sY3ys|GxD_?>Oai^U3w9!?;z-y8W}Jt#ubw_ucN4_~YIg*O{vq z|J4p*(^gA0w`Kpc)$qY$lFu(!X66?I6cXh-Rg3re~|ov@@M`(=T=sNsQkZT5m|4^3Q$5`htzJtHFO#@xE!LE|nd!?+KrL|Ly4JA!DiE^rOW1JQ}rZ>hGNA zOPY#b=R*?X25f0fVD~`L&?W%aP59izMPpKIwSLM#Q8Ri}3(W1~dv5Tyc2-UIKecw_bg4 zeB374+rUA4Wc%_U?DucK*KVhsZ+Jj^zqdC!YsE_pGl$934ty6Cgq}VU$Gpj_UgK|U zAwI$RP^G~mNYH&2oz-$Qt8Bd$mMy6s;209N=+TR*`0?4}cgQrUtxJyB7t6Tza|VLe z648P5XsHbTv9Jt;PMXrd#Ju`@P2<g)dK$4Z zpuFK`7m(_};)9nqWhp!vctA&^J!5FgPuEFHYXvo01rC zp5f676IC*=m=Xr&P~??~Ru($XQ+-R=T~ac_bBB)FFjyjh8#^P1iq<;; zwg^;LHRm}6Ky28r3Z@l{w%WsX5}tN+r_#Vr*M4af>NPg}l0*55jgj|Xw{dLhUuHi_ z3yrbk;^6Jg!{9Exm5eK71)&#(p;G>bD)cX*RVUYItTg7oNb*$URE28@W#jjVh1GbXZk84o{h| zAB~Pzr;ft*_ksO@>p^bUtk6xW(-VB4Wr0sIrJV-a>ATW zNRkk#^w#0L!(sf_deXiDg0aodJwb~~%EOZe-ZQm)rWD|8G=qv%Vd2Td$cSSxUGbr; zp3F=^;0lY~WQ?BEXf1T4D3A0M3om^-mf91dYI=tD9dN$muc zvg2Q|>Gx9cj+##dBqTn{KK0+WAq_$%W0`}%(|OWRXePcY_}BN*EXQw^+EG(`{A3#* zM+^0G?vsEmwo30mmwq;ZC*Lzy%qP^--_Moa`tW(2qF=OOctooW6M>dj=lDvOJ$z}I z4;|cex!)nMd5^Ix&4b4?Mt#_t21u3*JsWFfvvAoGggr{4g7^(tloBOZD^ zSJki?$NG-bF?jyq$O@lx^J%|-g!AjaZF4Yt#1&iz^X*$r+dW4gKMO(hE(V9x~iOBRy6{_h)`Vw$wwP$PxYtNBGqEF_Ch|N z9Dia;pifXAt_S~I)GL>3dD4P{eH%65AM{1!4f6`#9C)yPZPRPJt<$;HlN%=Y898T< ze`AXIRYgG}ZbaZ}ht@BgKh4KO7ct}^PO~Vpnyl$?5#KJR8yNtr@6uSS+nhCSk%O>w z8jCCdSs?H~)ltjkUl|>OFM>pThAdS+ToRenF+T#_sx8rRfE6v9V}Z>I;?)MRBSsDwFJNQk8LgUsRHS{{h&tf1I)aw{VR2pv=7`Tun_4 zbU(2u+sAK+C0z&yR(h`9jp1b`G%6%%yR~(0j2vCsNv^0FVM-DusNIX`5;7ZL3CMaOv0#E+K#l{%06)Wdw1yt@izy%5hJ82-R z8VTT|&@^|j*QpZ_bH*jXbP-^^q(VYD0Ac3lO&bL^yyI);hKEwI!67<(EZzwut z`9jXjM6g$J?iHP4(M|^mrpd4?A03P)s!F~RD1w^Nvu3QqJgprj%_@oPFL-70 z?k?|V)VnNI&w)N6&!u%w@! zHQiBa7)_-vt#rjo=hFtG?UT)_(jt-i$nmO1%R5qR-(5701ZJs<<0*mVSr@Rn%_I2ZPpbQo;Na-SVw+^<+h|nj zS@iQbrdZy@KqB2&u$B1%w1~VdhYSW{03|5YhI#Az4kQs5c|i@TfL*wslwPVNv0I?f z;~FZmHkfFyJ_mi6dWA_NzX^$8(qC=&T5?{ry6PG5`QNY{fRMlL_e+5TR`E)p!&cJw z^AMp&Kj@NA*fU{R215ZTtV7~?D$?el<-YfGwEehvvJyVP&m`LoUR=rbdfvnh{17gk z08AttBM-V^0IQ1K?R<0h1`OZ%WGpasfuAz6bt{DbP8Tb5C=2JA@%P_f4*4 zS?a~`-7X91eAjAlz8)4_9cQqs|BfXAYH# z`%VM)%U1O{;xLXPxol+=fhs6>iJ>d0j{2sl1(FNKt_4xitWo3WS{vp3=_x&V!x49; z9vo*luQ6MD*W*-BZVlth;mhD*%B`ec2!_?cydrp6So3vIVEe5(4}c;+-N60EVO_d= zgn7PSdXO3|k}WmkU85)YuI&IbL(T6G0<}nR1Ny)F_Afr}{~>Nf#-29wC z&O|swx2%|7J!NFN!R!NFX*m`{xPF_L`AbD>IcHMgF^4$RzaL9HEIW^>T2?_J=J+e& zD~%g)kHi@@&s!u@Al{r|eAb$+UbF=DMWgrfy+(#$d_qDRj|26rmJ1Q|j2w)o0ysVt z6)aN9gT{NXA}4M<0kj)9N-?bZya)h}^Vvo}yY*62(ZRGK+ZhPcVR64SZGXPE0D~!z zFajMKZ-E~xr`@Hq+=hiU=+F!VdwWk!wfE|;fg52H4CF#_u8PFVTVDn^fvfPv9aw|6 z&_4oDN(#y7O^{G<2l)n^Idw0{Sv0HC0hO=a_ zR1|EMrUZCm=n<6u|5-V`_rb4oNXO6K)0K3hN?&O*450O`cxPFTR9nrj{OLX1NW5^l zWe(|YvW_m|nD?WzuZxh16W?G{vSP@nuYc#+RAH5Q1^I80zI)eKBs4QmeMZ&wcSM1t zsK}^3Wl!zLBHMw=$B|R>XO3{uw%D1LP1y-Yv9%otTm7AHoUJOE46(&sE^VgjOJ>R5 zW)A^=x}MEUvj?U6ok53KK^fgv`Dl_V6#^aaw}63BfepOmHPef#m-LTHZ(7exCmoK9 z{FdshkWOAKU_=^G#n3Z`$DUlYB~qf(2BKX5UuSO>9LKUmi`tSw%;*tV%*H{#CM^mI?pbXHYnW#-CUNJ3)7ILT>`lU2pV zH%M^7cAO_sv0_mplx)r!=plW7Pdu8qEU_ZL?C3WC36Ycz|H=JP7)5DDJu$?M8)*E# zvtzh|Cj+3C8V0X`rjnfxlRmPFNr1xq&^A8U`xzD>oXcc#zmc=o_5Tj=Nwqnj{jMzy z2O`vf*9>5;|1Q8pNNE%zpn<|7M?-kc9&h*w#F+<+`tmBL-)(z4^d5#6%@U?wc&qCw8*Y9;N_=j6^EazOaGpBP1U+ zxv}K%3+T&qGtU0>Pwu3u!;V;&6yJbBKPg3+NiAL*Fvs$jQ;P6XbGm;ro+VX2!cKA=m)K&S_cipiB8f%~^y zrBhjDxp73GcggM3Y4a-YmVOr8$$C@|u#v{XcaVPuGXFJBU{;_CGQu7iP)*53#*^9O zz^H#X09r0er$hj0N`U$609=I+s0bElXlOY)T^eivHUs(&$Ct5bNdt`)8kf(n#B+f|%a*JFkw68-)|MkDu#J3Z*VflJK>qZx z2`sfgktL^;1jM3&1S?={|LKPZBxLB3z9Yd2UsGAJf?5mZl(Yb6jF^ETj)d>!2at(T z&Y)4};$LtoSGJhFEu2i z(rggDVpMN==A34%VReirG=w1^h-z_M(W4evm1`Ghw&}x%t!fsEnDq^CxS0c`W(-e!t5}!mr7Y5^xSx>B;Nz)j++dcG^zn4j28iK<|_?Q3$lHd zF~qQQGxLqRv7VX`G9?iUe8fw?aB$?NekfGF%9ReO+E!>jxGY`{y-Q6+K>&mYWZ5GD z<}d~dXh++*vnH>m6lT*5RB2)1p}8i9P0>L$Gec*QHZ80msECoB2#NF zPKfXyL3$sq(seBiu*))N<|Ye%x%$ql)<+Co>~7_a_dWEJ6MBXm@t|e5F%nS!HAeVJ z5mzVzNkwXbK>~s`AT&>ShmQHx)W2w9=k+#}jp*0Rni-%|MD?V+^>)5piCHbE+Z=8% zb9u$9SN2ds6B=+eLj^i%uWSCS9uL0C@EtebyaRcQ@Rvs%GVKfVNR9U#x~;an{6&`Z zxOQM>q&6Vb*nU|TCuF+m{c1SzqwBN~{z&_9NRtgIM-=>T>nh3W3F z0GmwYm?R@3Bj5|9N|KHlGu7DH^$!imDJco*%cFek%CTjaR9F92!=fz;P)dCdH#9az z!N->YrYV4!0vIveievI&(VtOa;cpEbb|j-s2@e=(T# zpR%wIgv!gnL?DNyM0-|J)Dkf-n|_Gct``KE6o4NLi`u5?r-Xf8KGqS(X6XJz5lY6r zx*qqY`>C}5V)->qnkdZ~lEcopbs*!>J|@L~uUFE$Cg+V z=%Ivp*rbgIsDY4-57aybl0*!Avh>KA;GPoX(}ra?ZH($r+uewPAl#Oyy$NAN}RA zr0LIkZ3dThYv7$)iIld%l&@x?WM^1O)g%z=X4@z!{~{$)uYRyrhsvhS6KwHrs~wTk z^82^HNRB(KkWw1QsZ1ninNP?0^Zg?Z5=;p6!z++l+_q)UOPUjs>$k2$#so=NYT_`|)TmY{0|sq|dCb^>Ifem%p8zSp zB}>uxz|mcPxx|B8a|f#J?d^QGa3ElmogF=GYMF)L9K}5pChGT;Ll)}wbYlh!Z7Bd+ zw$;4uv+=@X5GPb|iZF0-YOa{^AxS0n%f)7W^OzE``(c$-A5eG*pdcw&IDOCw&?AUz zhiI<*M^Fr7AneWXyn zbL%Uog0?r9bbTULQ*&FC@kmL_hQ{C~h$;~J`03C@zw9{nkbZ+X?B(7U5kQWin)Fh> zGNRiPK<4apOkx6Om-}Wg}w7VjmaxJ!jJ-+s71Gm0JBx{bb-w%#d+#iWKtd*xkS-)8Z`7pFhYr%X6* zHZ;#(Q^2l>xRKxdsj@n|0^$=7TKJ6=pHHzUzN%+z)2O}Ou-|b+Hs`TpP+vTrV7Dp!OgqS za})R<7GU%D(y4sv)uPnR*lBlSiizD^#pK2CD{71R3y0K*f}s&zU7^oe^(o=~YTshs0Z}mFzYH6}Re0k3hlDY}D*D^5?h* zS2BdQ)5Y`188J_O2q3H8@SqkA2Wu^zYO8hSL>z`9#2{X8-o&=!XA$a(TjGbMq44@T zd@KYn4j>%nO*}Op)kd!eJ3kf z@393JEX*DlP1eI3Q`%d3mam75QSH|(;`Xjf1R(4Jg0cB0MwxSo>zXk|W4 zPyeL?9#*KhI)AFQQJ><+^g^O%RKdpPCZSJ_gJUJPNNRwBlBX6`Qm#|Q*~YSCC{nmq zJ_(GHz@G)UJ+Ju!0dD(p(O)Unpr_?(THLL0`2V`Wl^e_6v5u;u@xes3U=E39 z{kSWyS@;4i;R&IaJ%}q~8QMM^b0ZYVr&(MiEfb^n#o$J%!d$YEXdC6E_U$3|sl=qV0%; z)JS!v%cVWarGuMGc}BPv3Ljrk4NkBqrn4Nyf~m7{>FP)@_ck1Zy4HDq_OLC&7<-Mw zXW1=p(-!aVQPCa^#C{a%0ePU-_iJ&a_G9k{X$Yd+7Ee~u7Ve|dr81-mnlAXpcg&H36--K-nmklMOZxz3}^OwaxhVX zbb?qBHa2dOZ?k0lpPeuvyNNX4gMHZMl81QSkoolQP}NpxKHmdX)%N-1eAM-6tB%93 zPYlya{Z!;Jrj^4*f+JSA==%m}is zsU@cM3=hk)#h(^oypLaSEST_yj459(4yY$36CY#VxY-;BABRbzi1}G%Vp5hk6TBMrAny7pulpEGIR=b);q z78x&J)185``{+oi%dRd*wi?k?D%w@JA38Q5pSS7znZ?x2i1!Dp@PezYFVI7|1Q|y9 z_VVt?lk^5~jaDlcS?)&3Wu*zhA_I>{*AQpb>qPU7G_Rw(|~ zX{VbmA|lQ%u16)CtiNs;M90T9pgL`$TR7sXWkq4 zxEV(gss19Ab+b~v9=!*rbt*-*N9X{Y=rP#FLW|%r9mNX3|5VS$HZ?P?sdB!3H?Oqv zmaDPUoEs72^ECSMbncVI!&4I@<9*^)etgV* z$vz}Pw)ptK+vzab=Xu^Kl9rlY*i@IKvF60XwrUHV!FIP5qzR#OJuS2LlNw_W^8DS+ zy;a>7CqsPBWc`ikWp~{(=_}sy!1?t9=wF0A_ULPFyuGAd$i~R?Mqup9Z+KFE%`Tdp=}zaw&ooCv~tDMWAihI z0<_d+#yj^)!=Q@Uu=T8Wx4q6vDVnK8WtyFFzOz4*cJ`_C4g}J29tc6|vwDSd-BV~z z4`XvQHw7uioeMXPellLWyns(QYA@s=EIn<;8l%N+#mT4VOv1P1kU z3y*v%4Pe|ZNqFA}s%EAe!>MSO_$3^Yi9|#mrhU!;%*bTb%AK(HwwDc2lItbTs(g!N z0ZOc-AZEvFfJn^W_4Sx}b$4VLr#eB3SS;;8R7ORUqYxO=KR z<{5^rII{&^G@#`NEB=-=g6*KKK5`~%kJTAIxYUb=UN`He?M{NbQa-adivgcAC*`yB zlOT=#I@r@J;<#-~0t4YA#JY*;yb1fv&-xPNhS2+|BzaR@+lLZ?6QA;&zg;|IK3%Mn zESQx#^Kp`$=S-S6*k%Xa7M6lE#&IYG^qda$P5 z^Ve-%cd#dbvL1R4`Tk9NBkI^!?gh-|4JCfLopZ8xP{S}^X}#ZgzcQ?`?urhYciwV? zokWZjBKl_?arj8!`}hnsH9vds<*JqA1GV5ZvIu6aDel`lc-NdSPK3! zI5?P^o?bfYYf23}+GxQx0Qc#`PgxC=CuY^?0F4s;!YftnP;v4=JKSFNeA1%nXsJ0^ zWYu}IES`pW;w?L6qdJMdYv|}m`Is(U+A^Q-6>f~GS!Oh0EX-+CJHW?bce<}Lkyl3GOLXfgy54yw9hoR%QgImcLDxQd3$=@~B}EZWUY)$mn^53N#5H z3o}BE870@Afu0snbC=NZY^#Aw^~l>QI!`R)R_m6uBJ4Po@4i^;^Fzdl9S6q-UG|9D z9?`+06A4r>1cI+2eId>acU1S8SHLt5khj$m$!tT|#ilUhPlg-iH2MJthsi9oIE4go z->~y-+SQnBj`0*$prtipd>Q0^d*Nz>;$U6Su5~*^xnpcv!U~8Yom-adlJ|V#%O>1% z(`@m2y=ruegGY#BWKr5MBC}WaVy!sevf;btB1Yu{OT`Fsk34G3m;bs>%OgnGe7M|3 zix^P&($6o%q{T35Z_zz=`zC}d)a&sGV*FCA6|y)*U$_3knJ>c^l`y8;hEUKa@<-ba zJGZGLs1}pcNhZ%oPi7zc{clQWaDM&Djr&uV590I-9Mk=(%;N*p>A5Evq|WO%G!waG z{;shKR0Fs;(LhJ@Lt&N5V&Bx|ze5LBJc*sI7eeb?Pr*L9FKqeD?d}-|m1__MXg~miN+^OUg zF!M+~)0_`1H6xEIN4}i$$+BNiTNl9TAySvkYZuTD&O+ofkb{MBLBX$Ip}J13cG#>5 zr)QxIP{&>z$u2Fbj7x1;YFxTt`Ox^kew<$k|80E6Al+$ZAW5UiX2{sDFTs|lFZ5Z^ zNMpykGm{ARlVI^JarFIL?AW>1Pkjrz&3PPY!p0pZlprL1u{Tw-fE+qmPEPT+OGru2 ztDesxNfV>1o*W~|XmT=|5|?)kX5P%q5(LF_52$odpq6-JLYO59T&!nXEoiSMx8$)@YI^Wx`g#k9Olu??)m0fff z!$LY$na5}lcFXQrkjt4L3}DJr?9P(9()mLj21~iDiM@Kx z%lUqSk6U9W_0>Y9>3Vp|)aqyYXT+lqbm;rzRbB10m=0mW`NRo-K0^}Dy2A^=ROj$v zPLI9TC1(7_K$hHFr8pjw4D2ioqreu442Cm3oD9xTkuw;R%#7{xD2;+aSL>#PGA`% z%=#-Lzp!2l!melbR6&aF{LP%XH2jsjwly zVG6ulk>%&A!%$Qwv`*IApVFZ3vC)%5*fup8-oZ&BAXJD=H;3!+RA=<#6z-*~_B)x@jrN!jHh+oe6(loYyP#D6o^J}ASwJyJ!dqk?zRq*01C zW55naT1jk@8fk@oR(VS6=*Xk!@nWR5nv}GLjLgnm1=SVL+&ep$AypJBNi3hAV66MQ z!u|V)ri!fohN?pM8>|GEwJ;^h+Gb)fvdycruPND#)fKiyMrP(usgjTT=Fo~?+pLH>a>QP3rvDjZSW%9YJ$O0%h*Pd+Z3Pc^9 zYrz@=L+`J8&Ziu%$st4$_wCy(?dK_L{LBfy{K%9I%OPXQKP)O+HW_(ez~`imkyO#N z4Zv8CCU7`C$kUCDe>{bktJGK*U8#d+PAvOam*o2cBtGY>&+=o^OS_c!{&q?H$G`#^ zZ`GIdA0T5Y-XvW=)FZPyS;~THO7wc2f#@M9Z7j|G{V!iW8Y?9aAKL_8H}x*h^*37g zL`LeO!+iSlN!o@@nK205^lc6-!Gb(=cob-eQq%@&@a9q03-0y02Y5o6CibF=*Jufk z7vz@fzOryfvZ(Me0Dhz-X^JO)`xWBjc81>eQ+8dW7+GbJJBY zh;BRCMQbvB?XHzK(F#lop6Y&haJ4esS$VX4TgP3a;&(5>w>*TlFGb`Q&8@lMX%1kIobAu!~9KKaRVkd21o%LmBjT%;CDj0LC3RbO^G zKpDwbsgKTj+%eP{;MehS2;PPaF${UOUSGu*XV2vG;8;N z`$L$qEPrFnosE-TNCYB7t-(&EjtdK}maG3wC`d?~k-m+SLwTuke`?ZNYFDveRs3{i zqY#xPt|yXzu(=&5t0?`nx*T4htHydXj7)mo@)bR7)6peALa2UQHcdm&cynKYtT9v` zMuF16-&atANm_%cP!r&CJBG?brj&|0FmGVJr;lSNdY!%c{k8^gmfVb_}}tf4FPNcWx=#Vl>Iyy=g3r8qxL*y_0O zP38`ucK3u|^r4N^*k|1Q4TeG;o#Ni-T~a+Qzn=Qsh_G8MAaTFKDa5?hD=%!f4AQLF zN+4rNk!K7F5($F2WEVQpU&i2)M%gShDOo*<^L^Rk6=; zw5An7P-@|2%X#%AMwM{AJX3255T;|u|(wEob6rPZX(UDiT&-ez%g?QAX zyvNH{ORTwu@t0&S3>_|XBfLVOy`w!Pi1Dt;y+aGhtK9ppAkoDH)IK#zU=7y@`X3&e zouHCnk3~eg73elJ@42sW z@~vP|wgAP!XJEZ7FPL_0Kx9rx``cq{(dzLNpunru!o!nkG;VO?C}kaO`(= zu8m|h>5RP*M=}*q>D|rSwngo$HZMy%$)Q(G|3 zN4u<~!zvjvIo%aiAxTTgTni z*L7H*U1u-M51L-K{EHw@2$u_o&aR&Ts-l>$`mN5UE?E|~x z&2ZrxZC&epueT%eGm^v0(KjA42&C%>?OijWkQ~?LtBDwHby^&cLPIzyVq_YYDnnJrSWNBL94o3q`FR2r!)i#W4G!1K=PPVda& z_LiZh`gfV_Kjm#|TX2SgLnzQA$bvOHZ3AnJ)X+wGxt__)-}%_!Zh}NQ3eY@^uT6E^ z0gi!66w~p900qe;NJ|O5y%D;%oo@Ez0$XiYq_i0yG72kl3ZWgADx=Lsgg@RH;fKY(Z3R4y}R6Pz<8^eUT94$`SW>D+>`1QSes zL|-4mvIRC)JM5~1vXxJtutqv#&NKvmw}sfYL|$>1CJPx9`nleWMHk2Z_jxKSnsccp z1O)1E(koFoMck41x4R$92+JpjtN96zglJO?9v@#k(8XFG`OKc`5>O#ON&&>lX|`|PYBO!RM2fl->Pi%lM2=oKQYe|Zm?>8 z*+Q-1FXj)sv-|xv$s`6vDs<0Le_JfvPl9{m8n(d_`2Ss~sVo#Rr)7k|U&_XERy&8V z5)GoJwTeP8myirljw|FR9nN|ORqStg!2|ND(t13NQ|K#%A#dNqbjSlIM0|2SdI%@l-R zeUY3BTUydCFYQ`Ug{-yrf8AcKJTQJ)Ms0{~j{nL4GO)!Bv1Ij7cX0X7>e%?n0zqi9B}=p+|tYD z(}RP9nL62{J^@=@B>m43ZLDmL18zI6adG;-8bt)tAC#Pr#C6_=u>y`;cWTwBE!={^68}+i#qjWYjTPY+7q-Yl@=h&zX1d)q8|img zQVc52tw>IkyegG?hK8Svz;Tyj)`C~|n_sz7kmJo)EA za>K-5t_9qaL@A>TS(Et<$+?AOW>#iB|24LONG2>sdYcN|?J1rd($=G2xQF;DBK|HS zN3S{16`(XvsCQ5BL9}B*t%qY^z>d5=O`yuw*U^7ES-hg@%}aPfk^MSH=n%Iw&L`n zr4YACL4UHFqRqV{0Xi8V4jd;5L6-zk=SV=o$2&L!xm|znI1{g#UQ3X?t*e)xn46wM zTx4JSB(S@HC2Zw4j$q{gR!Uv(gCOp*Dp~WB|p{eK% zp*D|b)vopBPo8ZW_}qVQdfThIa?rqd)SsF4uhya7Qb8Xe@;T7$vt0kS-4YU2;=hZ6KXhPN zW`yu>Lw2$RYux)GBDs_#s>MY7NyHWj|IR&65CiL`)o~4)L~Xc%Yy~5S(ytx5pC1%p zf(p4ACG`e}=4Q~YF~XuT5@E>i_(mW67`8x-x-z(WM~AD;l`;%fV)wVQoSw01`9%Hp zX4DdYD3kd`|6NFd#citW_xJ(wtkT5cxb`(Tm<90GtwEX+@vCG{a7CkPSB z%935}7iLb_*?W3;WEeOZ#$VUpKNfh2wa(w$EhQuLMqnUWz|N>jhl&coCZ%~B$KaC9 z&xkmAq9j@8>dlarGo&ox^N9_(gf=?Gsn105a7mL~Om?=U{O^At6``g=d4>SJ}n0_I#mR|KcJt7ZdcTK*4 z@Rladq}_CKv=DS}tEMmrKcJL`b(>VQ94t!D&_A2K>KaDRSzU}FUd-?JBLKbD0-Zt9 z3K?@1o`-yv`}f(oBe44{`T3@Z-HtG@UKt}g%5i=B$?9eG(4z0Km1aB?cBR$Z)c z!OuY3u}8_OQ@V7WgJ}PZ%eM&x9bs+O;t6n~P}Cy7mqQwVeJ=Tep$VX(D_rtHv$C2 z|L%YIX9-@ zosWh24~6qulo~jK#OIcmSELLSR8HT~$x(@Zo1Z$@N;L$T5#z!T{AZozS<|4oO24Jg zn^>-CIjn#4?l57AuKSeYsvdw&+Tli}?ZDNj1v^}vuxtTG27_y^kYT~`4!~_`0{^45 zf%F&_xUt5{0~&8hS2nPg#B75YGrHXJC7g#ESm(Y-#^m)M^pay z3~=<{=LA0f-z|aj{}KED{lYC~j#}t{E+fd!r!KqG8@uX^ZCL<*0R<`OpHC-%BzEy`@j3aTfjnrpbY-*i4XeCm6ct z6;d;5Fv^Q40{JudM`b?lXl)8Ph*F$MC^!a>lv(MAUUJ9y+ah^Eb~O+%`tO5K=a^FW zTCr)3fQE|bvCu|AvgTDE(^ZVBGYgnYV0yORZK6s8%yuU&JpNzILNhA!Q{}tx{lj#0` dWh}k${uOTnL*otJBI5(_5)+aZtmN1A|36KHCQ|?a literal 0 HcmV?d00001 diff --git a/src/stm32cubeai/mpconfigportcubeai.h b/src/stm32cubeai/mpconfigportcubeai.h new file mode 100755 index 000000000..c8c86a454 --- /dev/null +++ b/src/stm32cubeai/mpconfigportcubeai.h @@ -0,0 +1,395 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2013-2017 Damien P. George + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +// Options to control how MicroPython is built for this port, +// overriding defaults in py/mpconfig.h. + +// board specific definitions +#include "mpconfigboard.h" +#include "mpconfigboard_common.h" + +// memory allocation policies +#ifndef MICROPY_GC_STACK_ENTRY_TYPE +#if MICROPY_HW_SDRAM_SIZE +#define MICROPY_GC_STACK_ENTRY_TYPE uint32_t +#else +#define MICROPY_GC_STACK_ENTRY_TYPE uint16_t +#endif +#endif +#define MICROPY_ALLOC_PATH_MAX (128) + +// emitters +#define MICROPY_PERSISTENT_CODE_LOAD (1) +#ifndef MICROPY_EMIT_THUMB +#define MICROPY_EMIT_THUMB (1) +#endif +#ifndef MICROPY_EMIT_INLINE_THUMB +#define MICROPY_EMIT_INLINE_THUMB (1) +#endif + +// compiler configuration +#define MICROPY_COMP_MODULE_CONST (1) +#define MICROPY_COMP_TRIPLE_TUPLE_ASSIGN (1) +#define MICROPY_COMP_RETURN_IF_EXPR (1) + +// optimisations +#define MICROPY_OPT_COMPUTED_GOTO (1) +#define MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE (0) +#define MICROPY_OPT_MPZ_BITWISE (1) +#define MICROPY_OPT_MATH_FACTORIAL (1) + +// Python internal features +#define MICROPY_READER_VFS (1) +#define MICROPY_ENABLE_GC (1) +#define MICROPY_ENABLE_FINALISER (1) +#define MICROPY_STACK_CHECK (1) +#define MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF (1) +#define MICROPY_EMERGENCY_EXCEPTION_BUF_SIZE (0) +#define MICROPY_KBD_EXCEPTION (1) +#define MICROPY_HELPER_REPL (1) +#define MICROPY_REPL_EMACS_KEYS (1) +#define MICROPY_REPL_AUTO_INDENT (1) +#define MICROPY_LONGINT_IMPL (MICROPY_LONGINT_IMPL_MPZ) +#define MICROPY_ENABLE_SOURCE_LINE (1) +#ifndef MICROPY_FLOAT_IMPL // can be configured by each board via mpconfigboard.mk +#define MICROPY_FLOAT_IMPL (MICROPY_FLOAT_IMPL_FLOAT) +#endif +#define MICROPY_STREAMS_NON_BLOCK (1) +#define MICROPY_STREAMS_POSIX_API (1) +#define MICROPY_MODULE_WEAK_LINKS (1) +#define MICROPY_CAN_OVERRIDE_BUILTINS (1) +#define MICROPY_USE_INTERNAL_ERRNO (1) +#define MICROPY_ENABLE_SCHEDULER (1) +#define MICROPY_SCHEDULER_DEPTH (8) +#define MICROPY_VFS (1) +#ifndef MICROPY_VFS_FAT +#define MICROPY_VFS_FAT (1) +#endif + +// control over Python builtins +#define MICROPY_PY_FUNCTION_ATTRS (1) +#define MICROPY_PY_DESCRIPTORS (1) +#define MICROPY_PY_DELATTR_SETATTR (1) +#define MICROPY_PY_BUILTINS_STR_UNICODE (1) +#define MICROPY_PY_BUILTINS_STR_CENTER (1) +#define MICROPY_PY_BUILTINS_STR_PARTITION (1) +#define MICROPY_PY_BUILTINS_STR_SPLITLINES (1) +#define MICROPY_PY_BUILTINS_MEMORYVIEW (1) +#define MICROPY_PY_BUILTINS_FROZENSET (1) +#define MICROPY_PY_BUILTINS_SLICE_ATTRS (1) +#define MICROPY_PY_BUILTINS_ROUND_INT (1) +#define MICROPY_PY_ALL_SPECIAL_METHODS (1) +#define MICROPY_PY_BUILTINS_COMPILE (1) +#define MICROPY_PY_BUILTINS_EXECFILE (1) +#define MICROPY_PY_BUILTINS_NOTIMPLEMENTED (1) +#define MICROPY_PY_BUILTINS_INPUT (1) +#define MICROPY_PY_BUILTINS_POW3 (1) +#define MICROPY_PY_BUILTINS_HELP (1) +#define MICROPY_PY_BUILTINS_HELP_TEXT stm32_help_text +#define MICROPY_PY_BUILTINS_HELP_MODULES (1) +#define MICROPY_PY_MICROPYTHON_MEM_INFO (1) +#define MICROPY_PY_ARRAY_SLICE_ASSIGN (1) +#define MICROPY_PY_COLLECTIONS_DEQUE (0) +#define MICROPY_PY_COLLECTIONS_ORDEREDDICT (1) +#define MICROPY_PY_MATH_SPECIAL_FUNCTIONS (1) +#define MICROPY_PY_MATH_FACTORIAL (1) +#define MICROPY_PY_CMATH (1) +#define MICROPY_PY_IO (1) +#define MICROPY_PY_IO_IOBASE (1) +#define MICROPY_PY_IO_FILEIO (MICROPY_VFS_FAT) // because mp_type_fileio/textio point to fatfs impl +#define MICROPY_PY_SYS_MAXSIZE (1) +#define MICROPY_PY_SYS_EXIT (1) +#define MICROPY_PY_SYS_STDFILES (1) +#define MICROPY_PY_SYS_STDIO_BUFFER (0) +#ifndef MICROPY_PY_SYS_PLATFORM // let boards override it if they want +#define MICROPY_PY_SYS_PLATFORM "pyboard" +#endif +#define MICROPY_PY_UERRNO (1) +#ifndef MICROPY_PY_THREAD +#define MICROPY_PY_THREAD (1) +#endif + +// extended modules +#define MICROPY_PY_UCTYPES (1) +#define MICROPY_PY_UZLIB (1) +#define MICROPY_PY_UJSON (1) +#define MICROPY_PY_URE (1) +#define MICROPY_PY_URE_SUB (1) +#define MICROPY_PY_UHEAPQ (1) +#define MICROPY_PY_UHASHLIB (1) +#define MICROPY_PY_UBINASCII (1) +#define MICROPY_PY_URANDOM (1) +#define MICROPY_PY_URANDOM_EXTRA_FUNCS (1) +#define MICROPY_PY_USELECT (1) +#define MICROPY_PY_UTIMEQ (1) +#define MICROPY_PY_UTIME_MP_HAL (1) +#define MICROPY_PY_OS_DUPTERM (3) +#define MICROPY_PY_UOS_DUPTERM_BUILTIN_STREAM (1) +#define MICROPY_PY_MACHINE (1) +#define MICROPY_PY_MACHINE_PULSE (1) +#define MICROPY_PY_MACHINE_PIN_MAKE_NEW mp_pin_make_new +#define MICROPY_PY_MACHINE_I2C (1) +#if MICROPY_HW_ENABLE_HW_I2C +#define MICROPY_PY_MACHINE_I2C_MAKE_NEW machine_hard_i2c_make_new +#endif +#define MICROPY_PY_MACHINE_SPI (1) +#define MICROPY_PY_MACHINE_SPI_MSB (SPI_FIRSTBIT_MSB) +#define MICROPY_PY_MACHINE_SPI_LSB (SPI_FIRSTBIT_LSB) +#define MICROPY_PY_MACHINE_SPI_MAKE_NEW machine_hard_spi_make_new +#define MICROPY_HW_SOFTSPI_MIN_DELAY (0) +#define MICROPY_HW_SOFTSPI_MAX_BAUDRATE (HAL_RCC_GetSysClockFreq() / 48) +#define MICROPY_PY_FRAMEBUF (1) +#ifndef MICROPY_PY_USOCKET +#define MICROPY_PY_USOCKET (1) +#endif +#ifndef MICROPY_PY_NETWORK +#define MICROPY_PY_NETWORK (1) +#endif + +// fatfs configuration used in ffconf.h +#define MICROPY_FATFS_ENABLE_LFN (2) +#define MICROPY_FATFS_LFN_CODE_PAGE (437) /* 1=SFN/ANSI 437=LFN/U.S.(OEM) */ +#define MICROPY_FATFS_USE_LABEL (1) +#define MICROPY_FATFS_RPATH (2) +#define MICROPY_FATFS_MULTI_PARTITION (1) + +// TODO these should be generic, not bound to fatfs +#define mp_type_fileio mp_type_vfs_fat_fileio +#define mp_type_textio mp_type_vfs_fat_textio + +// use vfs's functions for import stat and builtin open +#define mp_import_stat mp_vfs_import_stat +#define mp_builtin_open mp_vfs_open +#define mp_builtin_open_obj mp_vfs_open_obj + +// extra built in names to add to the global namespace +#define MICROPY_PORT_BUILTINS \ + { MP_ROM_QSTR(MP_QSTR_open), MP_ROM_PTR(&mp_builtin_open_obj) }, + +// extra built in modules to add to the list of known ones +extern const struct _mp_obj_module_t pyb_module; +extern const struct _mp_obj_module_t stm_module; +extern const struct _mp_obj_module_t machine_module; +extern const struct _mp_obj_module_t mp_module_ubinascii; +extern const struct _mp_obj_module_t mp_module_ure; +extern const struct _mp_obj_module_t mp_module_uzlib; +extern const struct _mp_obj_module_t mp_module_ujson; +extern const struct _mp_obj_module_t mp_module_uheapq; +extern const struct _mp_obj_module_t mp_module_uhashlib; +extern const struct _mp_obj_module_t mp_module_uos; +extern const struct _mp_obj_module_t mp_module_utime; +extern const struct _mp_obj_module_t mp_module_usocket; +extern const struct _mp_obj_module_t mp_module_network; +extern const struct _mp_obj_module_t mp_module_onewire; +extern const struct _mp_obj_module_t omv_module; +extern const struct _mp_obj_module_t time_module; +extern const struct _mp_obj_module_t sensor_module; +extern const struct _mp_obj_module_t image_module; +extern const struct _mp_obj_module_t lcd_module; +extern const struct _mp_obj_module_t fir_module; +extern const struct _mp_obj_module_t gif_module; +extern const struct _mp_obj_module_t mjpeg_module; +extern const struct _mp_obj_module_t cpufreq_module; +extern const struct _mp_obj_module_t nn_module; +extern const struct _mp_obj_module_t tv_module; +extern const struct _mp_obj_module_t nn_st_module; + +#if MICROPY_PY_STM +#define STM_BUILTIN_MODULE { MP_ROM_QSTR(MP_QSTR_stm), MP_ROM_PTR(&stm_module) }, +#else +#define STM_BUILTIN_MODULE +#endif + +#if MICROPY_PY_USOCKET && MICROPY_PY_LWIP +// usocket implementation provided by lwIP +#define SOCKET_BUILTIN_MODULE { MP_ROM_QSTR(MP_QSTR_usocket), MP_ROM_PTR(&mp_module_lwip) }, +#define SOCKET_BUILTIN_MODULE_WEAK_LINKS { MP_ROM_QSTR(MP_QSTR_socket), MP_ROM_PTR(&mp_module_lwip) }, +#elif MICROPY_PY_USOCKET +// usocket implementation provided by skeleton wrapper +#define SOCKET_BUILTIN_MODULE { MP_ROM_QSTR(MP_QSTR_usocket), MP_ROM_PTR(&mp_module_usocket) }, +#define SOCKET_BUILTIN_MODULE_WEAK_LINKS { MP_ROM_QSTR(MP_QSTR_socket), MP_ROM_PTR(&mp_module_usocket) }, +#else +// no usocket module +#define SOCKET_BUILTIN_MODULE +#define SOCKET_BUILTIN_MODULE_WEAK_LINKS +#endif + +#if MICROPY_PY_NETWORK +#define NETWORK_BUILTIN_MODULE { MP_ROM_QSTR(MP_QSTR_network), MP_ROM_PTR(&mp_module_network) }, +#else +#define NETWORK_BUILTIN_MODULE +#endif + +#define MICROPY_PORT_BUILTIN_MODULES \ + { MP_OBJ_NEW_QSTR(MP_QSTR_umachine), (mp_obj_t)&machine_module }, \ + { MP_OBJ_NEW_QSTR(MP_QSTR_pyb), (mp_obj_t)&pyb_module }, \ + STM_BUILTIN_MODULE \ + { MP_OBJ_NEW_QSTR(MP_QSTR_uos), (mp_obj_t)&mp_module_uos }, \ + { MP_OBJ_NEW_QSTR(MP_QSTR_utime), (mp_obj_t)&mp_module_utime }, \ + { MP_OBJ_NEW_QSTR(MP_QSTR_omv), (mp_obj_t)&omv_module }, \ + { MP_OBJ_NEW_QSTR(MP_QSTR_time), (mp_obj_t)&time_module }, \ + { MP_OBJ_NEW_QSTR(MP_QSTR_sensor), (mp_obj_t)&sensor_module }, \ + { MP_OBJ_NEW_QSTR(MP_QSTR_image), (mp_obj_t)&image_module }, \ + { MP_OBJ_NEW_QSTR(MP_QSTR_lcd), (mp_obj_t)&lcd_module }, \ + { MP_OBJ_NEW_QSTR(MP_QSTR_fir), (mp_obj_t)&fir_module }, \ + { MP_OBJ_NEW_QSTR(MP_QSTR_gif), (mp_obj_t)&gif_module }, \ + { MP_OBJ_NEW_QSTR(MP_QSTR_mjpeg), (mp_obj_t)&mjpeg_module }, \ + { MP_OBJ_NEW_QSTR(MP_QSTR_cpufreq), (mp_obj_t)&cpufreq_module }, \ + { MP_OBJ_NEW_QSTR(MP_QSTR_nn), (mp_obj_t)&nn_module }, \ + { MP_OBJ_NEW_QSTR(MP_QSTR_nn_st), (mp_obj_t)&nn_st_module }, \ + { MP_OBJ_NEW_QSTR(MP_QSTR_tv), (mp_obj_t)&tv_module }, \ + SOCKET_BUILTIN_MODULE \ + NETWORK_BUILTIN_MODULE \ + { MP_ROM_QSTR(MP_QSTR__onewire), MP_ROM_PTR(&mp_module_onewire) }, \ + +#define MICROPY_PORT_BUILTIN_MODULE_WEAK_LINKS \ + { MP_OBJ_NEW_QSTR(MP_QSTR_binascii), (mp_obj_t)&mp_module_ubinascii }, \ + { MP_OBJ_NEW_QSTR(MP_QSTR_collections), (mp_obj_t)&mp_module_collections }, \ + { MP_OBJ_NEW_QSTR(MP_QSTR_re), (mp_obj_t)&mp_module_ure }, \ + { MP_OBJ_NEW_QSTR(MP_QSTR_zlib), (mp_obj_t)&mp_module_uzlib }, \ + { MP_OBJ_NEW_QSTR(MP_QSTR_json), (mp_obj_t)&mp_module_ujson }, \ + { MP_OBJ_NEW_QSTR(MP_QSTR_heapq), (mp_obj_t)&mp_module_uheapq }, \ + { MP_OBJ_NEW_QSTR(MP_QSTR_hashlib), (mp_obj_t)&mp_module_uhashlib }, \ + { MP_OBJ_NEW_QSTR(MP_QSTR_io), (mp_obj_t)&mp_module_io }, \ + { MP_OBJ_NEW_QSTR(MP_QSTR_os), (mp_obj_t)&mp_module_uos }, \ + { MP_OBJ_NEW_QSTR(MP_QSTR_random), (mp_obj_t)&mp_module_urandom }, \ + { MP_OBJ_NEW_QSTR(MP_QSTR_select), (mp_obj_t)&mp_module_uselect }, \ + SOCKET_BUILTIN_MODULE_WEAK_LINKS \ + { MP_ROM_QSTR(MP_QSTR_struct), MP_ROM_PTR(&mp_module_ustruct) }, \ + { MP_ROM_QSTR(MP_QSTR_machine), MP_ROM_PTR(&machine_module) }, \ + { MP_ROM_QSTR(MP_QSTR_errno), MP_ROM_PTR(&mp_module_uerrno) }, \ + +// extra constants +#define MICROPY_PORT_CONSTANTS \ + { MP_ROM_QSTR(MP_QSTR_umachine), MP_ROM_PTR(&machine_module) }, \ + { MP_ROM_QSTR(MP_QSTR_machine), MP_ROM_PTR(&machine_module) }, \ + { MP_ROM_QSTR(MP_QSTR_pyb), MP_ROM_PTR(&pyb_module) }, \ + STM_BUILTIN_MODULE \ + +#define MP_STATE_PORT MP_STATE_VM + +#define MICROPY_PORT_ROOT_POINTERS \ + const char *readline_hist[8]; \ + \ + mp_obj_t pyb_hid_report_desc; \ + \ + mp_obj_t pyb_config_main; \ + \ + mp_obj_t pyb_switch_callback; \ + \ + mp_obj_t pin_class_mapper; \ + mp_obj_t pin_class_map_dict; \ + \ + mp_obj_t pyb_extint_callback[PYB_EXTI_NUM_VECTORS]; \ + \ + /* pointers to all Timer objects (if they have been created) */ \ + struct _pyb_timer_obj_t *pyb_timer_obj_all[MICROPY_HW_MAX_TIMER]; \ + \ + /* stdio is repeated on this UART object if it's not null */ \ + struct _pyb_uart_obj_t *pyb_stdio_uart; \ + \ + /* pointers to all UART objects (if they have been created) */ \ + struct _pyb_uart_obj_t *pyb_uart_obj_all[MICROPY_HW_MAX_UART]; \ + \ + /* pointers to all CAN objects (if they have been created) */ \ + struct _pyb_can_obj_t *pyb_can_obj_all[MICROPY_HW_MAX_CAN]; \ + \ + /* list of registered NICs */ \ + mp_obj_list_t mod_network_nic_list; \ + +// type definitions for the specific machine + +#define MICROPY_MAKE_POINTER_CALLABLE(p) ((void*)((mp_uint_t)(p) | 1)) + +#define MP_SSIZE_MAX (0x7fffffff) + +#define UINT_FMT "%u" +#define INT_FMT "%d" + +typedef int mp_int_t; // must be pointer size +typedef unsigned int mp_uint_t; // must be pointer size +typedef long mp_off_t; + +#define MP_PLAT_PRINT_STRN(str, len) mp_hal_stdout_tx_strn_cooked(str, len) + +// We have inlined IRQ functions for efficiency (they are generally +// 1 machine instruction). +// +// Note on IRQ state: you should not need to know the specific +// value of the state variable, but rather just pass the return +// value from disable_irq back to enable_irq. If you really need +// to know the machine-specific values, see irq.h. + +static inline void enable_irq(mp_uint_t state) { + __set_PRIMASK(state); +} + +static inline mp_uint_t disable_irq(void) { + mp_uint_t state = __get_PRIMASK(); + __disable_irq(); + return state; +} + +#define MICROPY_BEGIN_ATOMIC_SECTION() disable_irq() +#define MICROPY_END_ATOMIC_SECTION(state) enable_irq(state) + +#if MICROPY_PY_THREAD +#define MICROPY_EVENT_POLL_HOOK \ + do { \ + extern void mp_handle_pending(void); \ + mp_handle_pending(); \ + if (pyb_thread_enabled) { \ + MP_THREAD_GIL_EXIT(); \ + pyb_thread_yield(); \ + MP_THREAD_GIL_ENTER(); \ + } else { \ + __WFI(); \ + } \ + } while (0); + +#define MICROPY_THREAD_YIELD() pyb_thread_yield() +#else +#define MICROPY_EVENT_POLL_HOOK \ + do { \ + extern void mp_handle_pending(void); \ + mp_handle_pending(); \ + __WFI(); \ + } while (0); + +#define MICROPY_THREAD_YIELD() +#endif + +// The LwIP interface must run at a raised IRQ priority +#define MICROPY_PY_LWIP_ENTER uint32_t irq_state = raise_irq_pri(IRQ_PRI_PENDSV); +#define MICROPY_PY_LWIP_REENTER irq_state = raise_irq_pri(IRQ_PRI_PENDSV); +#define MICROPY_PY_LWIP_EXIT restore_irq_pri(irq_state); + +// We need an implementation of the log2 function which is not a macro +#define MP_NEED_LOG2 (1) + +// We need to provide a declaration/definition of alloca() +#include +#include diff --git a/src/stm32cubeai/nn_st.c b/src/stm32cubeai/nn_st.c new file mode 100644 index 000000000..489a5032f --- /dev/null +++ b/src/stm32cubeai/nn_st.c @@ -0,0 +1,329 @@ +/* + * This file is part of the OpenMV project. + * + * Copyright (c) 2019 STMicroelectronics + * + * This work is licensed under the MIT license, see the file LICENSE for + * details. + */ + +/* System headers */ +#include "nn_st.h" +#include "ai_platform_interface.h" +#include +#include +#include + +static void crc_init(void) { + CRC_HandleTypeDef hcrc; + + __HAL_RCC_CRC_CLK_ENABLE(); + + hcrc.Instance = CRC; + hcrc.Init.DefaultPolynomialUse = DEFAULT_POLYNOMIAL_ENABLE; + hcrc.Init.DefaultInitValueUse = DEFAULT_INIT_VALUE_ENABLE; + hcrc.Init.InputDataInversionMode = CRC_INPUTDATA_INVERSION_NONE; + hcrc.Init.OutputDataInversionMode = CRC_OUTPUTDATA_INVERSION_DISABLE; + hcrc.InputDataFormat = CRC_INPUTDATA_FORMAT_BYTES; + HAL_CRC_Init(&hcrc); +} + +AI_ALIGNED(4) +static ai_float out_data[AI_NETWORK_OUT_1_SIZE]; +ai_network_exec_ctx network_handle; + +#define AI_BUFFER_NULL(ptr_) \ + AI_BUFFER_OBJ_INIT(AI_BUFFER_FORMAT_NONE | AI_BUFFER_FMT_FLAG_CONST, 0, 0, \ + 0, 0, AI_HANDLE_PTR(ptr_)) + +/** + * @brief Prints the layout of the ai_buffer (mostly for debug) + * + * @param msg null-terminated string added to the message + * @param idx An integer added to the message + * @param buffer ai_buffer to be inspected + * @return void + */ +__STATIC_INLINE void aiPrintLayoutBuffer(const char *msg, int idx, + const ai_buffer *buffer) { + uint32_t type_id = AI_BUFFER_FMT_GET_TYPE(buffer->format); + printf("%s [%d] : shape(HWC):(%d,%d,%ld) format=", msg, idx, + buffer->height, buffer->width, buffer->channels); + if (type_id == AI_BUFFER_FMT_TYPE_Q) + printf("Q%d.%d (%dbits, %s)", + (int)AI_BUFFER_FMT_GET_BITS(buffer->format) - + ((int)AI_BUFFER_FMT_GET_FBITS(buffer->format) + + (int)AI_BUFFER_FMT_GET_SIGN(buffer->format)), + AI_BUFFER_FMT_GET_FBITS(buffer->format), + (int)AI_BUFFER_FMT_GET_BITS(buffer->format), + AI_BUFFER_FMT_GET_SIGN(buffer->format) ? "signed" : "unsigned"); + else if (type_id == AI_BUFFER_FMT_TYPE_FLOAT) + printf("FLOAT (%dbits, %s)", (int)AI_BUFFER_FMT_GET_BITS(buffer->format), + AI_BUFFER_FMT_GET_SIGN(buffer->format) ? "signed" : "unsigned"); + else + printf("NONE"); + printf(" size=%ldbytes\r\n", + AI_BUFFER_BYTE_SIZE(AI_BUFFER_SIZE(buffer), buffer->format)); +} + +/** + * @brief Displays informations about the network to serial port + * + * @param report - An ai_network_report structure to be displayed + */ +void aiPrintNetworkInfo(const ai_network_report *report) { + printf("Network configuration...\r\n"); + printf(" Model name : %s\r\n", report->model_name); + printf(" Model signature : %s\r\n", report->model_signature); + printf(" Model datetime : %s\r\n", report->model_datetime); + printf(" Compile datetime : %s\r\n", report->compile_datetime); + printf(" Runtime revision : %s (%d.%d.%d)\r\n", report->runtime_revision, + report->runtime_version.major, report->runtime_version.minor, + report->runtime_version.micro); + printf(" Tool revision : %s (%d.%d.%d)\r\n", report->tool_revision, + report->tool_version.major, report->tool_version.minor, + report->tool_version.micro); + printf("Network info...\r\n"); + printf(" nodes : %ld\r\n", report->n_nodes); + printf(" complexity : %ld MACC\r\n", report->n_macc); + printf(" activation : %ld bytes\r\n", + aiBufferSize(&report->activations)); + printf(" params : %ld bytes\r\n", aiBufferSize(&report->params)); + printf(" inputs/outputs : %u/%u\r\n", report->n_inputs, + report->n_outputs); + int i; + for (i = 0; i < report->n_inputs; i++) { + aiPrintLayoutBuffer(" IN ", i, &report->inputs[i]); + } + for (i = 0; i < report->n_outputs; i++) { + aiPrintLayoutBuffer(" OUT", i, &report->outputs[i]); + } +} + +ai_u32 aiBufferSize(const ai_buffer *buffer) { + return buffer->height * buffer->width * buffer->channels; +} + +/** + * @brief Displays informations about the errors which can occur with Cube.AI C + * API + * + * @param err an ai_error struct + * @param fct a string to be displayed with the message + */ +void aiLogErr(const ai_error err, const char *fct) { + if (fct) { + printf("E: AI error (%s) - type=%d code=%d\r\n", fct, err.type, err.code); + } else { + printf("E: AI error - type=%d code=%d\r\n", err.type, err.code); + } +} + +/** + * @brief Intitialization code for the network + * + * @param nn_name the name of the network + * @return int error code, 0 if it's ok, anything else is error + */ +static int aiBootstrap(const char *nn_name) { + crc_init(); + ai_error err; + + // Creating the network + printf("Creating the network \"%s\"..\r\n", nn_name); + err = ai_network_create(&network_handle.network, NULL); + if (err.type) { + aiLogErr(err, "ai_network_create"); + return -1; + } + + // Query the created network to get relevant info from it + if (ai_network_get_info(network_handle.network, &network_handle.report)) { + aiPrintNetworkInfo(&network_handle.report); + } else { + err = ai_network_get_error(network_handle.network); + aiLogErr(err, "ai_network_get_info"); + ai_network_destroy(network_handle.network); + network_handle.network = AI_HANDLE_NULL; + return -2; + } + // Initialize the instance + printf("Initializing the network\r\n"); + return 0; +} + +AI_DECLARE_STATIC +ai_bool ai_mnetwork_is_valid(const char *network_name, const char *name) { + if (network_name && (strlen(name) == strlen(network_name)) && + (strncmp(name, network_name, strlen(name)) == 0)) { + return true; + } + return false; +} + +/** + * @brief Network initialziation + * + * @param network_name name of the network + * @param net stnn_t structure + */ +void aiInit(const char *network_name, stnn_t *net) { + const char *name; + printf("\r\nAI platform (API %d.%d.%d - RUNTIME %d.%d.%d)\r\n", + AI_PLATFORM_API_MAJOR, AI_PLATFORM_API_MINOR, AI_PLATFORM_API_MICRO, + AI_PLATFORM_RUNTIME_MAJOR, AI_PLATFORM_RUNTIME_MINOR, + AI_PLATFORM_RUNTIME_MICRO); + + // Discover and init the embedded network + name = (const char *)AI_NETWORK_MODEL_NAME; + if (ai_mnetwork_is_valid(network_name, name)) { + printf("\r\nFound network \"%s\"\r\n", name); + aiBootstrap(name); + + } else { + printf("\r\error network name!, please enter the right name \"%s\"\r\n", + name); + } + net->nn_exec_ctx_ptr = &network_handle; +} + +/** + * @brief Runs the inference of the network. Calls preprocessing function on the + * img before running the inference + * + * @param net Python object + * @param img input image + * @param roi region of interest + * @return int error code + */ +int aiRun(stnn_t *net, image_t *img, rectangle_t *roi) { + ai_i32 nbatch; + ai_error err; + + fb_alloc_mark(); + AI_ALIGNED(4) + ai_u8 *activations = fb_alloc(AI_NETWORK_DATA_ACTIVATIONS_SIZE, FB_ALLOC_NO_HINT); + AI_ALIGNED(4) + ai_u8 *in_data = fb_alloc(AI_NETWORK_IN_1_SIZE_BYTES, FB_ALLOC_NO_HINT); + + // build params structure to provide the reference of the + // activation and weight buffers + const ai_network_params params = { + AI_NETWORK_DATA_WEIGHTS(ai_network_data_weights_get()), + AI_NETWORK_DATA_ACTIVATIONS(activations)}; + + if (!ai_network_init(net->nn_exec_ctx_ptr->network, ¶ms)) { + err = ai_network_get_error(net->nn_exec_ctx_ptr->network); + aiLogErr(err, "ai_network_init"); + ai_network_destroy(net->nn_exec_ctx_ptr->network); + net->nn_exec_ctx_ptr->network = AI_HANDLE_NULL; + } + + ai_transform_input(net->nn_exec_ctx_ptr->report.inputs, img, in_data, roi); + + /* Create the AI buffer IO handlers */ + ai_buffer ai_input[1]; + ai_buffer ai_output[1]; + + ai_input[0] = net->nn_exec_ctx_ptr->report.inputs[0]; + ai_output[0] = net->nn_exec_ctx_ptr->report.outputs[0]; + + /* Initialize input/output buffer handlers */ + ai_input[0].n_batches = 1; + ai_input[0].data = AI_HANDLE_PTR(in_data); + + ai_output[0].n_batches = 1; + ai_output[0].data = AI_HANDLE_PTR(out_data); + + /* Perform the inference */ + nbatch = ai_network_run(net->nn_exec_ctx_ptr->network, &ai_input[0], + &ai_output[0]); + if (nbatch != 1) { + err = ai_network_get_error(net->nn_exec_ctx_ptr->network); + printf("AI error (ai_network_run) code= %d\n", err.code); + } + + net->nn_exec_ctx_ptr->report.outputs->data = out_data; + + fb_alloc_free_till_mark(); + + return 0; +} + +/** + * @brief Preprocessing function to prepare the data before inference + * + * @param input_net[in] structure holding information about the expected input + * by the network + * @param img[in] input image from the sensor + * @param input_data[] transformed data to be feed to the network + * @param roi[in] region of interest + */ +void ai_transform_input(ai_buffer *input_net, image_t *img, ai_u8 *input_data, + rectangle_t *roi) { + + // Example for MNIST CNN + // Cast to float pointer + ai_float *_input_data = (ai_float *)input_data; + int x_ratio = (int)((roi->w << 16) / input_net->width) + 1; + int y_ratio = (int)((roi->h << 16) / input_net->height) + 1; + + for (int y = 0, i = 0; y < input_net->height; y++) { + int sy = (y * y_ratio) >> 16; + for (int x = 0; x < input_net->width; x++, i++) { + int sx = (x * x_ratio) >> 16; + uint8_t p = IM_GET_GS_PIXEL(img, sx + roi->x, sy + roi->y); + _input_data[i] = (float)(p / 255.0f); + } + } + + /////////////////////////////////////////////////////////////////////////// + // Below is an example code for a quantized model expecting a RGB565 image + + /* +// Scale, convert and normalize input image. +int q_input_shift = 1; +int x_ratio = (int)((roi->w << 16) / input_net->width) + 1; +int y_ratio = (int)((roi->h << 16) / input_net->height) + 1; + +if ((img->bpp == 2) && (input_net->channels == 3)) { + +for (int y = 0, i = 0; y < input_net->height; y++) { +int sy = (y * y_ratio) >> 16; +for (int x = 0; x < input_net->width; x++, i += 3) { + int sx = (x * x_ratio) >> 16; + uint16_t p = IM_GET_RGB565_PIXEL(img, sx + roi->x, sy + roi->y); + input_data[i + 0] = + (ai_u8)__USAT((COLOR_RGB565_TO_R8(p) + (1 << q_input_shift)) >> + (q_input_shift + 1), + 8); + input_data[i + 1] = + (ai_u8)__USAT((COLOR_RGB565_TO_G8(p) + (1 << q_input_shift)) >> + (q_input_shift + 1), + 8); + input_data[i + 2] = + (ai_u8)__USAT((COLOR_RGB565_TO_B8(p) + (1 << q_input_shift)) >> + (q_input_shift + 1), + 8); +} +} +} + */ +} + +/** + * @brief Free network memory + * + */ +void aiDeInit(void) { + ai_error err; + + printf("Releasing the network(s)...\r\n"); + + if (network_handle.network != AI_HANDLE_NULL) { + if (ai_network_destroy(network_handle.network) != AI_HANDLE_NULL) { + err = ai_network_get_error(network_handle.network); + aiLogErr(err, "ai_network_destroy"); + } + } +} diff --git a/src/stm32cubeai/nn_st.h b/src/stm32cubeai/nn_st.h new file mode 100755 index 000000000..dbc28afbf --- /dev/null +++ b/src/stm32cubeai/nn_st.h @@ -0,0 +1,50 @@ +/* + * This file is part of the OpenMV project. + * + * Copyright (c) 2019 STMicroelectronics + * + * This work is licensed under the MIT license, see the file LICENSE for + * details. + */ + +#ifndef _NN_ST_H +#define _NN_ST_H +#include "imlib.h" +#include +#include + +/* AI header files */ +#include "ai_datatypes_defines.h" +#include "ai_platform.h" +#include "core_datatypes.h" /* AI_PLATFORM_RUNTIME_xxx definition */ +#include "network.h" +#include "network_data.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + ai_handle network; + ai_network_report report; +} ai_network_exec_ctx; + +typedef struct { + ai_network_exec_ctx *nn_exec_ctx_ptr; +} stnn_t; + +void aiLogErr(const ai_error err, const char *fct); +ai_u32 aiBufferSize(const ai_buffer *buffer); +void aiPrintNetworkInfo(const ai_network_report *report); + +void aiInit(const char *nn_name, stnn_t *net); +int aiRun(stnn_t *net, image_t *img, rectangle_t *roi); +void ai_transform_input(ai_buffer *input_net, image_t *img, ai_u8 *input_data, + rectangle_t *roi); +void aiDeInit(void); + +#ifdef __cplusplus +} +#endif + +#endif // _NN_ST_H diff --git a/src/stm32cubeai/py_st_nn.c b/src/stm32cubeai/py_st_nn.c new file mode 100755 index 000000000..fdc8a5ddd --- /dev/null +++ b/src/stm32cubeai/py_st_nn.c @@ -0,0 +1,91 @@ +/* + * This file is part of the OpenMV project. + * + * Copyright (c) 2019 STMicroelectronics + * + * This work is licensed under the MIT license, see the file LICENSE for + * details. + */ + +#include "nn_st.h" +#include "omv_boardconfig.h" +#include "py_helper.h" +#include "py_image.h" +#include + +static const mp_obj_type_t py_st_net_type; + +typedef struct _py_st_net_obj_t { + mp_obj_base_t base; + stnn_t _cobj; +} py_st_net_obj_t; + +void *py_st_net_cobj(mp_obj_t net_obj) { + PY_ASSERT_TYPE(net_obj, &py_st_net_type); + return &((py_st_net_obj_t *)net_obj)->_cobj; +} + +STATIC void py_net_print(const mp_print_t *print, mp_obj_t self_in, + mp_print_kind_t kind) { + // py_st_net_obj_t *self = self_in; + // nn_dump_network(py_st_net_cobj(self)); +} + +/*Function in charge of running a NN referenced to by args[0]. Raw input data is + * pointed to by args[1]*/ +STATIC mp_obj_t __attribute__((optimize("O0"))) +py_net_predict(uint n_args, const mp_obj_t *args, mp_map_t *kw_args) { + stnn_t *net = py_st_net_cobj(args[0]); + image_t *img = py_helper_arg_to_image_mutable(args[1]); + + rectangle_t roi; + py_helper_keyword_rectangle_roi(img, n_args, args, 2, kw_args, &roi); + + mp_obj_t output_list = mp_obj_new_list(0, NULL); + + aiRun(net, img, &roi); + + float *out_data = (float *)(net->nn_exec_ctx_ptr->report.outputs->data); + + for (int i = 0; i < AI_NETWORK_OUT_1_SIZE; i++) { + mp_obj_list_append(output_list, mp_obj_new_float(*(out_data + i))); + } + return output_list; +} + +STATIC MP_DEFINE_CONST_FUN_OBJ_KW(py_net_predict_obj, 2, py_net_predict); + +STATIC const mp_rom_map_elem_t locals_dict_table[] = { + {MP_ROM_QSTR(MP_QSTR_predict), MP_ROM_PTR(&py_net_predict_obj)}}; + +STATIC MP_DEFINE_CONST_DICT(locals_dict, locals_dict_table); + +static const mp_obj_type_t py_st_net_type = {{&mp_type_type}, + .name = MP_QSTR_Net, + .print = py_net_print, + .locals_dict = + (mp_obj_t)&locals_dict}; + +/* Function in charge of creating an instance of "ST NN" class and initializing + * the NN named nn_name */ +static mp_obj_t py_nn_st_load(mp_obj_t nn_name) { + const char *network_name = mp_obj_str_get_str(nn_name); + py_st_net_obj_t *net = m_new_obj(py_st_net_obj_t); + net->base.type = &py_st_net_type; + aiDeInit(); + aiInit(network_name, py_st_net_cobj(net)); + return net; +} + +STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_nn_st_load_obj, py_nn_st_load); + +STATIC const mp_rom_map_elem_t globals_dict_table[] = { + {MP_ROM_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_nn_st)}, + {MP_ROM_QSTR(MP_QSTR_loadnnst), MP_ROM_PTR(&py_nn_st_load_obj)}, +}; + +STATIC MP_DEFINE_CONST_DICT(globals_dict, globals_dict_table); + +/* Create nn_st_module module + add ref to it in mpconfigport.h file */ +const mp_obj_module_t nn_st_module = {.base = {&mp_type_module}, + .globals = (mp_obj_t)&globals_dict}; diff --git a/src/stm32cubeai/qstrdefscubeai.h b/src/stm32cubeai/qstrdefscubeai.h new file mode 100755 index 000000000..8ae8a8d31 --- /dev/null +++ b/src/stm32cubeai/qstrdefscubeai.h @@ -0,0 +1,1180 @@ +/* + * This file is part of the OpenMV project. + * + * Copyright (c) 2013-2019 Ibrahim Abdelkader + * Copyright (c) 2013-2019 Kwabena W. Agyeman + * + * This work is licensed under the MIT license, see the file LICENSE for details. + * + * qstrs specific to openmv + stm32cubeai + */ + +// OMV Module +Q(omv) +Q(version_major) +Q(version_minor) +Q(version_patch) +Q(version_string) +Q(arch) +Q(board_type) +Q(board_id) + +// Image module +Q(image) +Q(binary_to_grayscale) +Q(binary_to_rgb) +Q(binary_to_lab) +Q(binary_to_yuv) +Q(grayscale_to_binary) +Q(grayscale_to_rgb) +Q(grayscale_to_lab) +Q(grayscale_to_yuv) +Q(rgb_to_binary) +Q(rgb_to_grayscale) +Q(rgb_to_lab) +Q(rgb_to_yuv) +Q(lab_to_binary) +Q(lab_to_grayscale) +Q(lab_to_rgb) +Q(lab_to_yuv) +Q(yuv_to_binary) +Q(yuv_to_grayscale) +Q(yuv_to_rgb) +Q(yuv_to_lab) +Q(HaarCascade) +Q(search) +Q(SEARCH_EX) +Q(SEARCH_DS) +Q(EDGE_CANNY) +Q(EDGE_SIMPLE) +Q(CORNER_FAST) +Q(CORNER_AGAST) +Q(load_descriptor) +Q(save_descriptor) +Q(match_descriptor) + +// Image class +Q(find_template) +Q(kp_desc) +Q(lbp_desc) +Q(Cascade) +Q(cmp_lbp) +Q(find_features) +Q(find_keypoints) +Q(find_lbp) +Q(find_eye) +Q(find_edges) +Q(find_hog) +Q(normalized) +Q(filter_outliers) +Q(scale_factor) +Q(max_keypoints) +Q(corner_detector) +Q(kptmatch) +Q(selective_search) +Q(a1) +Q(a2) +Q(a3) + +// Lcd Module +Q(lcd) +Q(type) +Q(set_backlight) +Q(get_backlight) +Q(display) +Q(clear) + +// tv Module +Q(tv) +Q(channel) +Q(type) +Q(display) +Q(palettes) + +// Gif module +Q(gif) +Q(Gif) +Q(open) +Q(add_frame) +Q(loop) + +// Mjpeg module +Q(mjpeg) +Q(Mjpeg) + +// Led Module +Q(led) +Q(RED) +Q(GREEN) +Q(BLUE) +Q(IR) +Q(on) +Q(off) +Q(toggle) + +// Time Module +Q(time) +Q(ticks) +Q(sleep) +Q(clock) +Q(Clock) + +// Clock +Q(tick) +Q(fps) +Q(avg) + +//Sensor Module +Q(sensor) +Q(BINARY) +Q(GRAYSCALE) +Q(RGB565) +Q(YUV422) +Q(BAYER) +Q(JPEG) +Q(OV9650) +Q(OV2640) +Q(OV7725) +Q(MT9V034) +Q(LEPTON) +Q(value) +Q(shutdown) + +// NN Module +Q(load) + +// Net +Q(Net) + +// Forward +Q(forward) +Q(dry_run) +Q(softmax) + +// Search +// duplicate Q(search) +// duplicate Q(roi) +// duplicate Q(threshold) +Q(min_scale) +Q(scale_mul) +Q(x_overlap) +Q(y_overlap) +Q(contrast_threshold) +// duplicate Q(softmax) +// NN Class +Q(nn_class) +// duplicate Q(x) +// duplicate Q(y) +// duplicate Q(w) +// duplicate Q(h) +// duplicate Q(index) +// duplicate Q(value) + +// C/SIF Resolutions +Q(QQCIF) +Q(QCIF) +Q(CIF) +Q(QQSIF) +Q(QSIF) +Q(SIF) +// VGA Resolutions +Q(QQQQVGA) +Q(QQQVGA) +Q(QQVGA) +Q(QVGA) +Q(VGA) +Q(HQQQVGA) +Q(HQQVGA) +Q(HQVGA) +// FFT Resolutions +Q(B64X32) +Q(B64X64) +Q(B128X64) +Q(B128X128) +// Other +Q(LCD) +Q(QQVGA2) +Q(WVGA) +Q(WVGA2) +Q(SVGA) +Q(XGA) +Q(SXGA) +Q(UXGA) + +//SDE +Q(NORMAL) +Q(NEGATIVE) + +//IOCTLs +Q(IOCTL_SET_TRIGGERED_MODE) +Q(IOCTL_GET_TRIGGERED_MODE) +Q(IOCTL_LEPTON_GET_WIDTH) +Q(IOCTL_LEPTON_GET_HEIGHT) +Q(IOCTL_LEPTON_GET_RADIOMETRY) +Q(IOCTL_LEPTON_GET_REFRESH) +Q(IOCTL_LEPTON_GET_RESOLUTION) +Q(IOCTL_LEPTON_RUN_COMMAND) +Q(IOCTL_LEPTON_SET_ATTRIBUTE) +Q(IOCTL_LEPTON_GET_ATTRIBUTE) +Q(IOCTL_LEPTON_GET_FPA_TEMPERATURE) +Q(IOCTL_LEPTON_GET_AUX_TEMPERATURE) +Q(IOCTL_LEPTON_SET_MEASUREMENT_MODE) +Q(IOCTL_LEPTON_GET_MEASUREMENT_MODE) +Q(IOCTL_LEPTON_SET_MEASUREMENT_RANGE) +Q(IOCTL_LEPTON_GET_MEASUREMENT_RANGE) + +// Color Palettes +Q(PALETTE_RAINBOW) +Q(PALETTE_IRONBOW) + +Q(reset) +Q(flush) +Q(snapshot) +Q(skip_frames) +Q(get_fb) +Q(get_id) +Q(alloc_extra_fb) +Q(dealloc_extra_fb) +Q(set_pixformat) +Q(set_framerate) +Q(set_framesize) +Q(set_vsync_output) +Q(set_binning) +Q(set_windowing) +Q(set_gainceiling) +Q(set_contrast) +Q(set_brightness) +Q(set_saturation) +Q(set_quality) +Q(set_colorbar) +Q(set_auto_gain) +Q(gain_db) +Q(gain_db_ceiling) +Q(get_gain_db) +Q(set_auto_exposure) +Q(exposure_us) +Q(get_exposure_us) +Q(set_auto_whitebal) +Q(rgb_gain_db) +Q(get_rgb_gain_db) +Q(set_hmirror) +Q(set_vflip) +Q(set_special_effect) +Q(set_lens_correction) +Q(ioctl) +Q(set_color_palette) +Q(get_color_palette) +Q(__write_reg) +Q(__read_reg) + +// GPIOS +Q(P1) +Q(P2) +Q(P3) +Q(P4) +Q(P5) +Q(P6) +Q(PA1) +Q(PA2) +Q(PA3) +Q(PA4) +Q(PA5) +Q(PA6) +Q(PA7) +Q(PA8) +Q(PB1) +Q(PB2) +Q(PB3) +Q(PB4) +Q(IN) +Q(OUT) +Q(gpio) +Q(GPIO) +Q(low) +Q(high) + +// SPI +Q(spi) +Q(read) +Q(write) +Q(write_image) + +// UART +Q(uart) + +// File +Q(file) +Q(close) + +//Wlan +Q(wlan) +Q(WEP) +Q(WPA) +Q(WPA2) +Q(init) +Q(connect) +Q(connected) +Q(ifconfig) +Q(patch_version) +Q(patch_program) +Q(socket) +Q(send) +Q(recv) +Q(bind) +Q(listen) +Q(accept) +Q(settimeout) +Q(setblocking) +Q(select) +Q(AF_INET) +Q(AF_INET6) +Q(SOCK_STREAM) +Q(SOCK_DGRAM) +Q(SOCK_RAW) +Q(IPPROTO_IP) +Q(IPPROTO_ICMP) +Q(IPPROTO_IPV4) +Q(IPPROTO_TCP) +Q(IPPROTO_UDP) +Q(IPPROTO_IPV6) +Q(IPPROTO_RAW) + +// for WINC1500 module +Q(WINC) +Q(connect) +Q(start_ap) +Q(disconnect) +Q(isconnected) +Q(connected_sta) +Q(wait_for_sta) +Q(ifconfig) +Q(netinfo) +Q(fw_version) +Q(fw_dump) +Q(fw_update) +Q(scan) +Q(rssi) +Q(OPEN) +Q(WEP) +Q(WPA_PSK) +Q(802_1X) +Q(MODE_STA) +Q(MODE_AP) +Q(MODE_P2P) +Q(MODE_BSP) +Q(MODE_FIRMWARE) +Q(ssid) +Q(key) +Q(security) +Q(bssid) + +// cpufreq Module +Q(cpufreq) +Q(set_frequency) +Q(get_current_frequencies) +Q(get_supported_frequencies) + +// Image Class +Q(Image) +Q(copy_to_fb) + +// Width +Q(width) + +// Height +Q(height) + +// Format +Q(format) + +// Size +Q(size) + +// Get Pixel +Q(get_pixel) +Q(rgbtuple) + +// Set Pixel +Q(set_pixel) +Q(color) + +// Mean Pool +Q(mean_pool) + +// Mean Pooled +Q(mean_pooled) + +// Midpoint Pool +Q(midpoint_pool) +Q(bias) + +// Midpoint Pooled +Q(midpoint_pooled) +// duplicate Q(bias) + +// To Bitmap +Q(to_bitmap) +Q(copy) +Q(rgb_channel) + +// To Grayscale +Q(to_grayscale) +// duplicate Q(copy) +// duplicate Q(rgb_channel) + +// To RGB565 +Q(to_rgb565) +// duplicate Q(copy) +// duplicate Q(rgb_channel) + +// To Rainbow +Q(to_rainbow) +// duplicate Q(copy) +// duplicate Q(rgb_channel) +Q(color_palette) + +// Compress (in place) +Q(compress) +Q(quality) + +// Compress for IDE (in place) +Q(compress_for_ide) +// duplicate Q(quality) + +// Compressed (out of place) +Q(compressed) +// duplicate Q(quality) + +// Compressed for IDE (out of place) +Q(compressed_for_ide) +// duplicate Q(quality) + +// Encode for IDE (in place) +Q(jpeg_encode_for_ide) + +// Encoded for IDE (out of place) +Q(jpeg_encoded_for_ide) + +// Copy +// duplicate Q(copy) +Q(crop) +Q(scale) +Q(roi) +Q(x_scale) +Q(y_scale) +// duplicate Q(copy_to_fb) + +// Save +Q(save) + +// Clear +Q(clear) +Q(mask) + +// Draw Line +Q(draw_line) +// duplicate Q(color) +Q(thickness) + +// Draw Rectangle +Q(draw_rectangle) +// duplicate Q(color) +// duplicate Q(thickness) +Q(fill) + +// Draw Circle +Q(draw_circle) +// duplicate Q(color) +// duplicate Q(thickness) +// duplicate Q(fill) + +// Draw Ellipse +Q(draw_ellipse) +// duplicate Q(color) +// duplicate Q(thickness) +// duplicate Q(fill) + +// Draw String +Q(draw_string) +// duplicate Q(color) +// duplicate Q(scale) +Q(x_spacing) +Q(y_spacing) +Q(mono_space) +Q(char_rotation) +Q(char_hmirror) +Q(char_vflip) +Q(string_rotation) +Q(string_hmirror) +Q(string_vflip) + +// Draw Cross +Q(draw_cross) +// duplicate Q(color) +// duplicate Q(size) +// duplicate Q(thickness) + +// Draw Arrow +Q(draw_arrow) +// duplicate Q(color) +// duplicate Q(size) +// duplicate Q(thickness) + +// Draw Edges +Q(draw_edges) +// duplicate Q(color) +// duplicate Q(size) +// duplicate Q(thickness) +// duplicate Q(fill) + +// Draw Image +Q(draw_image) +// duplicate Q(x_scale) +// duplicate Q(y_scale) +Q(alpha) +// duplicate Q(mask) + +// Draw Keypoints +Q(draw_keypoints) +// duplicate Q(color) +// duplicate Q(size) +// duplicate Q(thickness) +// duplicate Q(fill) + +// Flood Fill +Q(flood_fill) +Q(seed_threshold) +Q(floating_threshold) +// duplicate Q(color) +Q(invert) +Q(clear_background) +// duplicate Q(mask) + +// Mask Rectangle +Q(mask_rectangle) + +// Mask Circle +Q(mask_circle) + +// Mask Ellipse +Q(mask_ellipse) + +// Binary +Q(binary) +// duplicate Q(invert) +Q(zero) +// duplicate Q(mask) +// duplciate Q(to_bitmap) +// duplicate Q(copy) + +// Invert +// duplicate Q(invert) + +// And +Q(and) +Q(b_and) +// duplicate Q(mask) + +// Nand +Q(nand) +Q(b_nand) +// duplicate Q(mask) + +// Or +Q(or) +Q(b_or) +// duplicate Q(mask) + +// Nor +Q(nor) +Q(b_nor) +// duplicate Q(mask) + +// Xor +Q(xor) +Q(b_xor) +// duplicate Q(mask) + +// Xnor +Q(xnor) +Q(b_xnor) +// duplicate Q(mask) + +// Erode +Q(erode) +// duplicate Q(threshold) +// duplicate Q(mask) + +// Dilate +Q(dilate) +Q(threshold) +// duplicate Q(mask) + +// Open +// duplicate Q(open) +// duplicate Q(threshold) +// duplicate Q(mask) + +// Close +// duplicate Q(close) +// duplicate Q(threshold) +// duplicate Q(mask) + +// Top Hat +Q(top_hat) +// duplicate Q(threshold) +// duplicate Q(mask) + +// Black Hat +Q(black_hat) +// duplicate Q(threshold) +// duplicate Q(mask) + +// Gamma Correct +Q(gamma_corr) +Q(gamma) +Q(contrast) +Q(brightness) + +// Negate +Q(negate) + +// Assign/Replace/Set +Q(assign) +Q(replace) +Q(set) +Q(hmirror) +Q(vflip) +Q(transpose) +// duplicate Q(mask) + +// Add Op +Q(add) +// duplicate Q(mask) + +// Sub Op +Q(sub) +Q(reverse) +// duplicate Q(mask) + +// Mul Op +Q(mul) +// duplicate Q(invert) +// duplicate Q(mask) + +// Div Op +Q(div) +// duplicate Q(invert) +Q(mod) +// duplicate Q(mask) + +// Min +// duplicate Q(min) +// duplicate Q(mask) + +// Max +// duplicate Q(max) +// duplicate Q(mask) + +// Difference +Q(difference) +// duplicate Q(mask) + +// Blend +Q(blend) +// duplicate Q(alpha) +// duplicate Q(mask) + +// Histogram Equalization +Q(histeq) +Q(adaptive) +Q(clip_limit) +// duplicate Q(mask) + +// Mean +Q(mean) +// duplicate Q(threshold) +Q(offset) +// duplicate Q(invert) +// duplicate Q(mask) + +// Median +Q(median) +Q(percentile) +// duplicate Q(threshold) +// duplicate Q(offset) +// duplicate Q(invert) +// duplicate Q(mask) + +// Mode +Q(mode) +// duplicate Q(threshold) +// duplicate Q(offset) +// duplicate Q(invert) +// duplicate Q(mask) + +// Midpoint +Q(midpoint) +// duplicate Q(bias) +// duplicate Q(threshold) +// duplicate Q(offset) +// duplicate Q(invert) +// duplicate Q(mask) + +// Moprh +Q(morph) +// duplicate Q(mul) +// duplicate Q(add) +// duplicate Q(threshold) +// duplicate Q(offset) +// duplicate Q(invert) +// duplicate Q(mask) + +// Gaussian Blur +Q(blur) +Q(gaussian) +Q(gaussian_blur) +Q(unsharp) +// duplicate Q(mul) +// duplicate Q(add) +// duplicate Q(threshold) +// duplicate Q(offset) +// duplicate Q(invert) +// duplicate Q(mask) + +// Laplacian +Q(laplacian) +Q(sharpen) +// duplicate Q(mul) +// duplicate Q(add) +// duplicate Q(threshold) +// duplicate Q(offset) +// duplicate Q(invert) +// duplicate Q(mask) + +// Bilateral +Q(bilateral) +Q(color_sigma) +Q(space_sigma) +// duplicate Q(threshold) +// duplicate Q(offset) +// duplicate Q(invert) +// duplicate Q(mask) + +// Cartoon +Q(cartoon) +// duplicate Q(seed_threshold) +// duplicate Q(floating_threshold) +Q(mask) + +// Shadow Removal +Q(remove_shadows) + +// Chromination Invariant +Q(chrominvar) + +// Illumination Invariant +Q(illuminvar) + +// Linear Polar +Q(linpolar) +// duplicate Q(reverse) + +// Log Polar +Q(logpolar) +// duplicate Q(reverse) + +// Lens Correction +Q(lens_corr) +Q(strength) +Q(zoom) + +// Rotation Correction +Q(rotation_corr) +Q(x_rotation) +Q(y_rotation) +Q(z_rotation) +Q(x_translation) +Q(y_translation) +// duplicate Q(zoom) + +// Structural Similarity +Q(get_similarity) +// Similarity Object +Q(similarity) +// duplicate Q(mean) +Q(stdev) +// duplicate Q(min) +// duplicate Q(max) + +// Get Histogram +Q(get_hist) +Q(get_histogram) +// duplicate Q(roi) +Q(bins) +Q(l_bins) +Q(a_bins) +Q(b_bins) +Q(thresholds) +// duplicate Q(invert) +// Histogram Object +Q(histogram) +// duplicate Q(bins) +// duplicate Q(l_bins) +// duplicate Q(a_bins) +// duplicate Q(b_bins) +Q(get_percentile) +Q(get_threshold) +Q(get_stats) +Q(get_statistics) +Q(statistics) +// Percentile Object +// duplicate Q(percentile) +Q(value) +Q(l_value) +Q(a_value) +Q(b_value) +// Threshold Object +// duplicate Q(threshold) +// duplicate Q(value) +// duplicate Q(l_value) +// duplicate Q(a_value) +// duplicate Q(b_value) + +// Get Statistics +// duplicate Q(get_stats) +// duplicate Q(get_statistics) +// duplicate Q(roi) +// duplicate Q(bins) +// duplicate Q(l_bins) +// duplicate Q(a_bins) +// duplicate Q(b_bins) +// duplicate Q(thresholds) +// duplicate Q(invert) +// Statistics Object +// duplicate Q(statistics) +// duplicate Q(mean) +// duplicate Q(median) +// duplicate Q(mode) +// duplicate Q(stdev) +// duplicate Q(min) +// duplicate Q(max) +Q(lq) +Q(uq) +Q(l_mean) +Q(l_median) +Q(l_mode) +Q(l_stdev) +Q(l_min) +Q(l_max) +Q(l_lq) +Q(l_uq) +Q(a_mean) +Q(a_median) +Q(a_mode) +Q(a_stdev) +Q(a_min) +Q(a_max) +Q(a_lq) +Q(a_uq) +Q(b_mean) +Q(b_median) +Q(b_mode) +Q(b_stdev) +Q(b_min) +Q(b_max) +Q(b_lq) +Q(b_uq) + +// Get Regression +Q(get_regression) +// duplicate Q(roi) +Q(x_stride) +Q(y_stride) +// duplicate Q(invert) +Q(area_threshold) +Q(pixels_threshold) +Q(robust) +// Line Object +Q(line) +// duplicate Q(line) +Q(x1) +Q(y1) +Q(x2) +Q(y2) +Q(length) +Q(magnitude) +Q(theta) +Q(rho) + +// Find Blobs +Q(find_blobs) +// duplicate Q(roi) +// duplicate Q(x_stride) +// duplicate Q(y_stride) +// duplicate Q(invert) +// duplicate Q(area_threshold) +// duplicate Q(pixels_threshold) +Q(merge) +Q(margin) +Q(threshold_cb) +Q(merge_cb) +Q(x_hist_bins_max) +Q(y_hist_bins_max) +// Blob Object +Q(blob) +Q(corners) +Q(min_corners) +Q(rect) +Q(x) +Q(y) +Q(w) +Q(h) +Q(pixels) +Q(cx) +Q(cxf) +Q(cy) +Q(cyf) +Q(rotation) +Q(rotation_deg) +Q(rotation_rad) +Q(code) +Q(count) +Q(perimeter) +Q(roundness) +Q(elongation) +Q(area) +Q(density) +Q(extent) +Q(compactness) +Q(solidity) +Q(convexity) +Q(x_hist_bins) +Q(y_hist_bins) +Q(major_axis_line) +Q(minor_axis_line) +Q(enclosing_circle) +Q(enclosed_ellipse) + +// Find Lines +Q(find_lines) +// duplicate Q(roi) +// duplicate Q(x_stride) +// duplicate Q(y_stride) +// duplicate Q(threshold) +Q(theta_margin) +Q(rho_margin) + +// Find Line Segments +Q(find_line_segments) +// duplicate Q(roi) +Q(merge_distance) +Q(max_theta_diff) + +// Find Circles +Q(find_circles) +// duplicate Q(roi) +// duplicate Q(x_stride) +// duplicate Q(y_stride) +// duplicate Q(threshold) +Q(x_margin) +Q(y_margin) +Q(r_margin) +Q(r_min) +Q(r_max) +Q(r_step) +// Circle Object +Q(circle) +// duplicate Q(circle) +// duplicate Q(x) +// duplicate Q(y) +Q(r) +// duplicate Q(magnitude) + +// Find Rects +Q(find_rects) +// duplicate Q(roi) +// duplicate Q(threshold) +// Rect Object +// duplicate Q(rect) +// duplicate Q(corners) +// duplicate Q(rect) +// duplicate Q(x) +// duplicate Q(y) +// duplicate Q(w) +// duplicate Q(h) +// duplicate Q(magnitude) + +// Find QRCodes +Q(find_qrcodes) +// duplicate Q(roi) +// QRCode Object +Q(qrcode) +// duplicate Q(corners) +// duplicate Q(rect) +// duplicate Q(x) +// duplicate Q(y) +// duplicate Q(w) +// duplicate Q(h) +Q(payload) +Q(version) +Q(ecc_level) +Q(mask) +Q(data_type) +Q(eci) +Q(is_numeric) +Q(is_alphanumeric) +Q(is_binary) +Q(is_kanji) + +// Find AprilTags +Q(find_apriltags) +// duplicate Q(roi) +Q(families) +Q(fx) +Q(fy) +// duplicate Q(cx) +// duplicate Q(cy) +// AprilTag Object +Q(apriltag) +// duplicate Q(corners) +// duplicate Q(rect) +// duplicate Q(x) +// duplicate Q(y) +// duplicate Q(w) +// duplicate Q(h) +Q(id) +Q(family) +Q(hamming) +// duplicate Q(cx) +// duplicate Q(cy) +// duplicate Q(rotation) +Q(goodness) +Q(decision_margin) +// duplicate Q(x_translation) +// duplicate Q(y_translation) +Q(z_translation) +// duplicate Q(x_rotation) +// duplicate Q(y_rotation) +// duplicate Q(z_rotation) +Q(TAG16H5) +Q(TAG25H7) +Q(TAG25H9) +Q(TAG36H10) +Q(TAG36H11) +Q(ARTOOLKIT) + +// Find DataMatrices +Q(find_datamatrices) +// duplicate Q(roi) +Q(effort) +// DataMatrix Object +Q(datamatrix) +// duplicate Q(corners) +// duplicate Q(rect) +// duplicate Q(x) +// duplicate Q(y) +// duplicate Q(w) +// duplicate Q(h) +// duplicate Q(payload) +// duplicate Q(rotation) +Q(rows) +Q(columns) +Q(capacity) +Q(padding) + +// Find BarCodes +Q(find_barcodes) +// duplicate Q(roi) +// BarCode Object +Q(barcode) +// duplicate Q(corners) +// duplicate Q(rect) +// duplicate Q(x) +// duplicate Q(y) +// duplicate Q(w) +// duplicate Q(h) +// duplicate Q(payload) +// duplicate Q(type) +// duplicate Q(rotation) +// duplicate Q(quality) +Q(EAN2) +Q(EAN5) +Q(EAN8) +Q(UPCE) +Q(ISBN10) +Q(UPCA) +Q(EAN13) +Q(ISBN13) +Q(I25) +Q(DATABAR) +Q(DATABAR_EXP) +Q(CODABAR) +Q(CODE39) +Q(PDF417) +Q(CODE93) +Q(CODE128) + +// Find Displacement +Q(find_displacement) +// duplicate Q(roi) +Q(template_roi) +// duplicate Q(logpolar) +Q(fix_rotation_scale) +Q(displacement) +// duplicate Q(x_translation) +// duplicate Q(y_translation) +// duplicate Q(rotation) +// duplicate Q(scale) +Q(response) + +// Image Writer +Q(ImageWriter) +// Image Writer Object +Q(imagewriter) +// duplicate Q(size) +// duplicate Q(add_frame) +// duplicate Q(close) + +// Image Reader +Q(ImageReader) +// Image Reader Object +Q(imagereader) +// duplicate Q(size) +Q(next_frame) +// duplicate Q(copy_to_fb) +// duplicate Q(loop) +// duplicate Q(close) + +// FIR Module +Q(fir) +// duplicate Q(init) +Q(FIR_NONE) +Q(FIR_SHIELD) +Q(FIR_MLX90620) +Q(FIR_MLX90621) +Q(FIR_MLX90640) +Q(FIR_AMG8833) +Q(refresh) +Q(resolution) +// duplicate Q(deinit) +// duplicate Q(width) +// duplicate Q(height) +// duplicate Q(type) +Q(read_ta) +Q(read_ir) +Q(draw_ta) +// duplicate Q(alpha) +// duplicate Q(scale) +Q(draw_ir) +// duplicate Q(alpha) +// duplicate Q(scale) +// duplicate Q(snapshot) +// duplicate Q(alpha) +// duplicate Q(scale) +Q(pixformat) +// duplciate Q(copy_to_fb) + +// ST neural network +Q(loadnnst) +Q(predict) diff --git a/src/stm32cubeai/sample_script.py b/src/stm32cubeai/sample_script.py new file mode 100644 index 000000000..f07a1fd06 --- /dev/null +++ b/src/stm32cubeai/sample_script.py @@ -0,0 +1,37 @@ +# STM32 CUBE.AI on OpenMV MNIST Example + +import sensor, image, time, nn_st + +sensor.reset() # Reset and initialize the sensor. +sensor.set_contrast(3) +sensor.set_brightness(0) +sensor.set_auto_gain(True) +sensor.set_auto_exposure(False, exposure_us=700) +sensor.set_pixformat(sensor.GRAYSCALE) # Set pixel format to Grayscale +sensor.set_framesize(sensor.QQVGA) # Set frame size to 160x120 +sensor.skip_frames(time = 2000) # Wait for settings take effect. +clock = time.clock() # Create a clock object to track the FPS. + +# [CUBE.AI] Initialize the network +net = nn_st.loadnnst('network') + +nn_input_sz = 28 # The NN input is 28x28 + +while(True): + clock.tick() # Update the FPS clock. + img = sensor.snapshot() # Take a picture and return the image. + + # Crop in the middle (avoids vignetting) + img.crop((img.width()//2-nn_input_sz//2, + img.height()//2-nn_input_sz//2, + nn_input_sz, + nn_input_sz)) + + # Cleanup image and binarize it (you may uptade the theshold) + img.histeq(adaptive=True, clip_limit=2).binary([(0,180)]) + + # [CUBE.AI] Run the inference + out = net.predict(img) + print('Network argmax output: {}'.format( out.index(max(out)) )) + img.draw_string(0, 0, str(out.index(max(out)))) + print('FPS {}'.format(clock.fps())) # Note: OpenMV Cam runs about half as fast when connected From 0f17925f98223c9cfb166a20d5cba83d0a6e732b Mon Sep 17 00:00:00 2001 From: Thibaut Vercueil Date: Fri, 18 Oct 2019 13:57:49 +0200 Subject: [PATCH 02/11] Support X-CUBE-AI v4.1.0 --- src/stm32cubeai/AI/Inc/ai_datatypes_defines.h | 20 +- .../AI/Inc/ai_datatypes_internal.h | 190 +++++-- src/stm32cubeai/AI/Inc/ai_log.h | 12 +- src/stm32cubeai/AI/Inc/ai_math_helpers.h | 42 +- src/stm32cubeai/AI/Inc/ai_platform.h | 112 +++- .../AI/Inc/ai_platform_interface.h | 439 ++++++++++------ src/stm32cubeai/AI/Inc/core_common.h | 57 ++- src/stm32cubeai/AI/Inc/core_convert.h | 28 +- src/stm32cubeai/AI/Inc/core_datatypes.h | 2 +- src/stm32cubeai/AI/Inc/layers_common.h | 14 - src/stm32cubeai/AI/Inc/layers_conv2d.h | 30 +- src/stm32cubeai/AI/Inc/layers_generic.h | 68 +-- src/stm32cubeai/AI/Inc/layers_list.h | 4 +- src/stm32cubeai/AI/Inc/layers_nl.h | 482 +++++++++++++++++- src/stm32cubeai/AI/Inc/layers_pool.h | 74 ++- .../AI/Lib/NetworkRuntime400_CM7_GCC.a | Bin 412942 -> 0 bytes .../AI/Lib/NetworkRuntime410_CM7_GCC.a | Bin 0 -> 926524 bytes src/stm32cubeai/Readme.md | 2 +- src/stm32cubeai/cube.mk | 2 +- 19 files changed, 1190 insertions(+), 388 deletions(-) delete mode 100755 src/stm32cubeai/AI/Lib/NetworkRuntime400_CM7_GCC.a create mode 100755 src/stm32cubeai/AI/Lib/NetworkRuntime410_CM7_GCC.a diff --git a/src/stm32cubeai/AI/Inc/ai_datatypes_defines.h b/src/stm32cubeai/AI/Inc/ai_datatypes_defines.h index 93c122a4f..4b2cbbdfa 100755 --- a/src/stm32cubeai/AI/Inc/ai_datatypes_defines.h +++ b/src/stm32cubeai/AI/Inc/ai_datatypes_defines.h @@ -124,15 +124,25 @@ AI_STRINGIFY_ARG(minor) "." \ AI_STRINGIFY_ARG(micro) \ -#define AI_PACK(...) __VA_ARGS__ +#define AI_PACK(...) \ + __VA_ARGS__ + + +#define AI_PACK_TENSORS_PTR(...) \ + AI_PACK(__VA_ARGS__) + +#define AI_PACK_INFO(size_) (ai_tensor_info[1]) { { \ + .buffer = (ai_buffer[size_])AI_STRUCT_INIT, \ + .state = (ai_tensor_state[size_])AI_STRUCT_INIT, \ +} } #define AI_CR "\r\n" -#ifdef HAS_AI_DEBUG -#define AI_DEBUG(expr) expr +#if (defined HAS_AI_DEBUG || defined HAS_DEBUG_LIB) +#define AI_DEBUG(...) __VA_ARGS__ #else -#define AI_DEBUG(expr) AI_WRAP_FUNC(AI_NOP) -#endif /* HAS_AI_DEBUG */ +#define AI_DEBUG(...) AI_WRAP_FUNC(AI_NOP) +#endif #define AI_FLAG_NONE (0x0) #define AI_FLAG_SET(mask, flag) (mask) |= (flag) diff --git a/src/stm32cubeai/AI/Inc/ai_datatypes_internal.h b/src/stm32cubeai/AI/Inc/ai_datatypes_internal.h index 010743d49..b19a10602 100755 --- a/src/stm32cubeai/AI/Inc/ai_datatypes_internal.h +++ b/src/stm32cubeai/AI/Inc/ai_datatypes_internal.h @@ -26,6 +26,7 @@ #include "ai_platform.h" #include "ai_platform_interface.h" + /*! * @defgroup datatypes_internal Internal Datatypes * @brief Data structures used internally to implement neural networks @@ -73,65 +74,117 @@ 9,8,7,6,5,4,3,2,1,0 #define AI_PTR_ALIGN(ptr, alignment) \ - ( (((ai_uptr)(ptr))+((alignment)-1))&(~((alignment)-1)) ) + ( (((ai_uptr)(ptr))+((ai_uptr)(alignment)-1))&(~((ai_uptr)(alignment)-1)) ) -#define AI_DIMENSION(item_, pos_) \ - ((item_).dimension[(pos_)]) +/*! AI_STORAGE_KLASS SECTION ************************************/ +#define AI_STORAGE_KLASS_TYPE(s_) \ + ( (s_)->type ) -/******************************************************************************/ -#define AI_BITS_TO_BYTES(bits_) \ - (((bits_)+0x7) >> 3) +#define AI_STORAGE_KLASS_SIZE(s_) \ + ( (s_)->size ) -#define AI_BYTES_TO_BITS(bytes_) \ - ((bytes_) << 3) +#define AI_STORAGE_KLASS_DATA(s_, type_) \ + ( (type_*)((s_)->data) ) -/******************************************************************************/ +#define AI_STORAGE_KLASS_COPY(dst_, dst_type_, src_, src_type_) \ +{ \ + AI_ASSERT(AI_STORAGE_KLASS_SIZE(src_)>=AI_STORAGE_KLASS_SIZE(dst_)) \ + AI_STORAGE_KLASS_SIZE(dst_) = AI_STORAGE_KLASS_SIZE(src_); \ + for (ai_size i=0; iklass : NULL ) + +#define AI_TENSOR_SHAPE(tensor_) \ + ( &((tensor_)->shape) ) + +#define AI_TENSOR_STRIDE(tensor_) \ + ( &((tensor_)->stride) ) + +#define AI_TENSOR_INFO(tensor_) \ + ( &((tensor_)->info) ) + +#define AI_TENSOR_DATA(tensor_) \ + ( (tensor_) ? (tensor_)->data : NULL ) + +#define AI_TENSOR_ID(tensor_) \ + ( (tensor_) ? AI_TENSOR_INFO(tensor_)->id : 0 ) + +#define AI_TENSOR_FLAGS(tensor_) \ + ( (tensor_) ? AI_TENSOR_INFO(tensor_)->flags : 0 ) + + +#define AI_TENSOR_DATA_SIZE(tensor_) \ + ( (tensor_) ? AI_TENSOR_INFO(tensor_)->data_size : 0 ) + +/*! AI_OFFSETS SECTION ***********************************/ //#define AI_OFFSET_BATCH(b, stride) ((ai_ptr_offset)(b) * AI_STRIDE_BATCH(stride)) #define AI_OFFSET_H(y, stride) ((ai_ptr_offset)(y) * AI_STRIDE_H(stride)) #define AI_OFFSET_W(x, stride) ((ai_ptr_offset)(x) * AI_STRIDE_W(stride)) @@ -150,14 +203,27 @@ /** Tensors datatypes defines handlers ****************************************/ #define AI_TENSOR_SIZE(tensor_) \ - ( AI_SHAPE_H((tensor_)->shape) * AI_SHAPE_W((tensor_)->shape) * \ - AI_SHAPE_CH((tensor_)->shape) * AI_SHAPE_IN_CH((tensor_)->shape) ) + ( AI_SHAPE_H(AI_TENSOR_SHAPE(tensor_)) * AI_SHAPE_W(AI_TENSOR_SHAPE(tensor_)) * \ + AI_SHAPE_CH(AI_TENSOR_SHAPE(tensor_)) * AI_SHAPE_IN_CH(AI_TENSOR_SHAPE(tensor_)) ) #define AI_TENSOR_BYTE_SIZE(tensor_) \ - ( AI_SHAPE_H((tensor_)->shape) * AI_STRIDE_H((tensor_)->stride) ) + ( AI_SHAPE_H(AI_TENSOR_SHAPE(tensor_)) * AI_STRIDE_H(AI_TENSOR_STRIDE(tensor_)) ) /******************************************************************************/ +/** Integer tensor info extraction ********************************************/ +#define AI_INTQ_INFO_LIST_SCALE_ARRAY(list_, type_) \ + ( ((list_) && (list_)->info) \ + ? ((type_*)((list_)->info->scale)) : NULL ) + +#define AI_INTQ_INFO_LIST_ZEROPOINT_ARRAY(list_, type_) \ + ( ((list_) && (list_)->info) \ + ? ((type_*)((list_)->info->zeropoint)) : NULL ) + +#define AI_KLASS_GET_INTQ_INFO_LIST(tensor_) \ + ((ai_intq_info_list*)((tensor_)->klass)) + + AI_API_DECLARE_BEGIN /*! @@ -207,10 +273,15 @@ typedef ai_bool (*func_copy_tensor)(ai_tensor* dst, const ai_tensor* src); * @return true if shape0 and shape1 have same dimensions. false otherwise */ AI_DECLARE_STATIC -ai_bool ai_shape_is_same(const ai_shape* shape0, const ai_shape* shape1) { +ai_bool ai_shape_is_same( + const ai_shape* shape0, const ai_shape* shape1) +{ AI_ASSERT(shape0 && shape1) - for (ai_size i = 0; i < AI_SHAPE_MAX_DIMENSION; ++i) { - if ( shape0->dimension[i]!=shape1->dimension[i] ) + AI_ASSERT(AI_SHAPE_SIZE(shape0)==AI_SHAPE_SIZE(shape1)) + ai_size dim = AI_SHAPE_SIZE(shape0); + while ( dim>0 ) { + dim--; + if ( AI_SHAPE_ELEM(shape0, dim)!=AI_SHAPE_ELEM(shape1, dim) ) return false; } return true; @@ -225,10 +296,15 @@ ai_bool ai_shape_is_same(const ai_shape* shape0, const ai_shape* shape1) { * smallers or equal of the shape1 ones). false otherwise */ AI_DECLARE_STATIC -ai_bool ai_shape_is_subshape(const ai_shape* shape0, const ai_shape* shape1) { +ai_bool ai_shape_is_subshape( + const ai_shape* shape0, const ai_shape* shape1) +{ AI_ASSERT(shape0 && shape1) - for (ai_size i = 0; i < AI_SHAPE_MAX_DIMENSION; ++i) { - if ( shape0->dimension[i]>shape1->dimension[i] ) + AI_ASSERT(AI_SHAPE_SIZE(shape0)==AI_SHAPE_SIZE(shape1)) + ai_size dim = AI_SHAPE_SIZE(shape0); + while ( dim ) { + dim--; + if ( AI_SHAPE_ELEM(shape0, dim)>AI_SHAPE_ELEM(shape1, dim) ) return false; } return true; @@ -240,13 +316,16 @@ ai_bool ai_shape_is_subshape(const ai_shape* shape0, const ai_shape* shape1) { * @param shape the tensor shape */ AI_DECLARE_STATIC -ai_size ai_shape_get_size(const ai_shape* shape) { +ai_size ai_shape_get_size(const ai_shape* shape) +{ AI_ASSERT(shape) + AI_ASSERT(AI_SHAPE_SIZE(shape)==AI_SHAPE_MAX_DIMENSION) + ai_size dim = AI_SHAPE_SIZE(shape); ai_size size = 1; - for (ai_size i = 0; i < AI_SHAPE_MAX_DIMENSION; ++i) { - size *= shape->dimension[i]; + while ( dim>0 ) { + dim--; + size *= AI_SHAPE_ELEM(shape, dim); } - return size; } @@ -256,11 +335,10 @@ ai_size ai_shape_get_size(const ai_shape* shape) { * @param shape the tensor shape */ AI_DECLARE_STATIC -ai_size ai_shape_get_npixels(const ai_shape* shape) { +ai_size ai_shape_get_npixels(const ai_shape* shape) +{ AI_ASSERT(shape) - const ai_size npixels = - shape->dimension[AI_SHAPE_WIDTH] * shape->dimension[AI_SHAPE_HEIGHT]; - + const ai_size npixels = AI_SHAPE_W(shape) * AI_SHAPE_H(shape); return npixels; } diff --git a/src/stm32cubeai/AI/Inc/ai_log.h b/src/stm32cubeai/AI/Inc/ai_log.h index 78fe7bc1a..c1bb39845 100755 --- a/src/stm32cubeai/AI/Inc/ai_log.h +++ b/src/stm32cubeai/AI/Inc/ai_log.h @@ -11,9 +11,14 @@ #include #include -#include #include +#ifdef __cplusplus +extern "C" { +#else +#include +#endif + /*! * @defgroup log Core logger class definition and implementation * @brief Data structures and defines used to implementlogger module @@ -44,6 +49,7 @@ #define LOG_DEBUG (0x5) #define LOG_TRACE (0x6) + /*! * @typedef log_LockFn * @ingroup ai_log @@ -127,4 +133,8 @@ void ai_log_set_fp(FILE *fp); void ai_log_log(const uint8_t level, const char *file, const int line, const char *fmt, ...); +#ifdef __cplusplus +} +#endif + #endif /*AI_LOG_H_*/ diff --git a/src/stm32cubeai/AI/Inc/ai_math_helpers.h b/src/stm32cubeai/AI/Inc/ai_math_helpers.h index bb008587f..09ba4844e 100755 --- a/src/stm32cubeai/AI/Inc/ai_math_helpers.h +++ b/src/stm32cubeai/AI/Inc/ai_math_helpers.h @@ -26,7 +26,7 @@ #define STM32_DOT_INLINE_OPTIM -#define AI_FLOAT_EPSILON_2 (6.19209290e-5F) /* Used for small calculation +#define AI_FLOAT_TOLERANCE (6.19209290e-5F) /* Used for small calculation noise issues */ #define AI_FLOAT_EPSILON (1.19209290e-7F) #define AI_I8_EPSILON (0.00787401F) /* 1/(2^7 - 1) */ @@ -36,10 +36,17 @@ #define AI_MIN(x,y) ( ((x)<(y)) ? (x) : (y) ) #define AI_MAX(x,y) ( ((x)>(y)) ? (x) : (y) ) +#define AI_SIGN(x) (((x)>0) ? 1 : -1) #define AI_CLAMP(x, min, max) AI_MIN(AI_MAX(x,min), max) -#define AI_ROUND(x) round(x) #define AI_ABS(x) fabsf(x) #define AI_ABS_DIFF(x, y) ( ((x)>(y)) ? ((x)-(y)) : ((y)-(x)) ) +#define AI_NEG(x) ( -1 * (x) ) +#define AI_RECIPROCAL(x) ( 1.0f / (x) ) +#define AI_CEIL(x) ceilf(x) +#define AI_FLOOR(x) floorf(x) +#define AI_FLOOR_DIV(x, y) AI_FLOOR((x)/(y)) /* floor division: x // y */ +#define AI_FLOOR_MOD(x, y) fmodf(x, y) +#define AI_ROUND(x) roundf(x) #if defined(STM32_DOT_INLINE_OPTIM) @@ -94,13 +101,25 @@ void __ai_math_dot_array( ai_math_dot_array(dst, src0, src1, size) #endif - -#define AI_MATH_SQRT(x) ai_math_sqrt(x) + +#define AI_MATH_ACOS(x) acosf(x) +#define AI_MATH_ACOSH(x) acoshf(x) +#define AI_MATH_ASIN(x) asinf(x) +#define AI_MATH_ASINH(x) asinhf(x) +#define AI_MATH_ATAN(x) atanf(x) +#define AI_MATH_ATANH(x) atanhf(x) +#define AI_MATH_COS(x) cosf(x) +#define AI_MATH_COSH(x) coshf(x) +#define AI_MATH_ERF(x) erff(x) #define AI_MATH_EXP(x) expf(x) -#define AI_MATH_POW(x, e) powf((x), (e)) -#define AI_MATH_TANH(x) tanhf(x) -#define AI_MATH_SIGN(x) (((x)>0) ? 1 : -1) #define AI_MATH_LOG(x) logf(x) +#define AI_MATH_POW(x, e) powf((x), (e)) +#define AI_MATH_RSQRT(x) (1.0f / AI_MATH_SQRT(x)) +#define AI_MATH_SIN(x) sinf(x) +#define AI_MATH_SINH(x) sinhf(x) +#define AI_MATH_SQRT(x) ai_math_sqrt(x) +#define AI_MATH_TAN(x) tanf(x) +#define AI_MATH_TANH(x) tanhf(x) #define AI_MATH_RELU_TEST(x, thr, min, max) \ ( ((x)<(thr)) ? (min) : (max) ) @@ -132,11 +151,14 @@ void __ai_math_dot_array( #define AI_MATH_SELU(x, alpha, scale) \ ((scale)*AI_MATH_ELU(x, alpha)) +#define AI_MATH_SCALED_TANH(x, alpha, beta) \ + ((alpha)*AI_MATH_TANH((beta)*(x))) + #define AI_MATH_SIGMOID(x) \ (1.0f / (1.0f + AI_MATH_EXP(-(x)))) -#define AI_MATH_HARD_SIGMOID(x) \ - (AI_MAX(0.0f, AI_MIN(1.0f, (x) * 0.2f + 0.5f))) +#define AI_MATH_HARD_SIGMOID(x, alpha, beta) \ + (AI_MAX(0.0f, AI_MIN(1.0f, (x) * (alpha) + (beta)))) #define AI_MATH_SOFT_PLUS(x) \ AI_MATH_LOG(AI_MATH_EXP(x)+1.0f) @@ -266,6 +288,8 @@ AI_INTERFACE_ENTRY ai_float ai_fast_prelu(const ai_float x, const ai_float slope); AI_INTERFACE_ENTRY ai_float ai_div(const ai_float a, const ai_float b); +AI_INTERFACE_ENTRY ai_float ai_floor_div(const ai_float a, const ai_float b); +AI_INTERFACE_ENTRY ai_float ai_floor_mod(const ai_float a, const ai_float b); AI_INTERFACE_ENTRY ai_float ai_max(const ai_float a, const ai_float b); AI_INTERFACE_ENTRY ai_float ai_min(const ai_float a, const ai_float b); AI_INTERFACE_ENTRY ai_float ai_mul(const ai_float a, const ai_float b); diff --git a/src/stm32cubeai/AI/Inc/ai_platform.h b/src/stm32cubeai/AI/Inc/ai_platform.h index 3d6a2da4e..e3c9ff462 100755 --- a/src/stm32cubeai/AI/Inc/ai_platform.h +++ b/src/stm32cubeai/AI/Inc/ai_platform.h @@ -22,7 +22,6 @@ #define __AI_PLATFORM_H__ #pragma once -#include #include #define AI_PLATFORM_API_MAJOR 1 @@ -34,6 +33,7 @@ #define AI_API_DECLARE_BEGIN extern "C" { #define AI_API_DECLARE_END } #else +#include #define AI_API_DECLARE_BEGIN /* AI_API_DECLARE_BEGIN */ #define AI_API_DECLARE_END /* AI_API_DECLARE_END */ #endif @@ -63,28 +63,28 @@ #define AI_ALIGNED(x) __attribute__((aligned(x))) #else /* Dynamic libraries are not supported by the compiler */ - #define AI_API_ENTRY /* AI_API_ENTRY */ - #define AI_ALIGNED(x) /* AI_ALIGNED(x) */ + #define AI_API_ENTRY /* AI_API_ENTRY */ + #define AI_ALIGNED(x) /* AI_ALIGNED(x) */ #endif -#define AI_HANDLE_PTR(ptr_) ((ai_handle)(ptr_)) -#define AI_HANDLE_NULL AI_HANDLE_PTR(0) +#define AI_HANDLE_PTR(ptr_) ((ai_handle)(ptr_)) +#define AI_HANDLE_NULL AI_HANDLE_PTR(0) -#define AI_HANDLE_FUNC_PTR(func) ((ai_handle_func)(func)) +#define AI_HANDLE_FUNC_PTR(func) ((ai_handle_func)(func)) -#define AI_UNUSED(x) (void)(x); +#define AI_UNUSED(x) (void)(x); -#define AI_DEPRECATED /* AI_DEPRECATED */ +#define AI_DEPRECATED /* AI_DEPRECATED */ -#define AI_LEGACY /* AI_LEGACY */ +#define AI_LEGACY /* AI_LEGACY */ #ifndef __GNUC__ - #define AI_STRUCT_INIT {0} + #define AI_STRUCT_INIT {0} #else -#define AI_STRUCT_INIT {} + #define AI_STRUCT_INIT {} #endif -#define AI_ERROR_FMT AIU32_FMT +#define AI_ERROR_FMT AIU32_FMT #define AI_IS_UNSIGNED(type) \ ((((type)0) - 1) > 0) @@ -97,6 +97,18 @@ .params = params_, \ .activations = activations_ } +/*! ai_intq_info struct handlers **********************************************/ +#define AI_INTQ_INFO_LIST_FLAGS(list_) \ + ( (list_) ? (list_)->flags : 0 ) + +#define AI_INTQ_INFO_LIST_SCALE(list_, type_, pos_) \ + ( ((list_) && (list_)->info && ((pos_)<(list_)->size)) \ + ? ((type_*)((list_)->info->scale))[(pos_)] : 0 ) + +#define AI_INTQ_INFO_LIST_ZEROPOINT(list_, type_, pos_) \ + ( ((list_) && (list_)->info && ((pos_)<(list_)->size)) \ + ? ((type_*)((list_)->info->zeropoint))[(pos_)] : 0 ) + /*! ai_buffer format handlers *************************************************/ /*! @@ -107,6 +119,13 @@ */ typedef int32_t ai_buffer_format; +/*! ai_buffer_meta flags ******************************************************/ +#define AI_BUFFER_META_HAS_INTQ_INFO (0x1U << 0) +#define AI_BUFFER_META_FLAG_SCALE_FLOAT (0x1U << 0) +#define AI_BUFFER_META_FLAG_ZEROPOINT_U8 (0x1U << 1) +#define AI_BUFFER_META_FLAG_ZEROPOINT_S8 (0x1U << 2) + +/*! ai_buffer format variable flags *******************************************/ #define AI_BUFFER_FMT_TYPE_NONE (0x0) #define AI_BUFFER_FMT_TYPE_FLOAT (0x1) #define AI_BUFFER_FMT_TYPE_Q (0x2) @@ -175,6 +194,30 @@ typedef int32_t ai_buffer_format; #define AI_BUFFER_DATA(buf_, type_) \ ((type_*)((buf_)->data)) +#define AI_BUFFER_META_INFO(buf_) \ + ((buf_)->meta_info) + +#define AI_BUFFER_META_INFO_INTQ(meta_) \ + ((meta_) && ((meta_)->flags & AI_BUFFER_META_HAS_INTQ_INFO)) \ + ? ((meta_)->intq_info) : NULL + +#define AI_BUFFER_META_INFO_INTQ_GET_SCALE(meta_, pos_) \ + ( (AI_BUFFER_META_INFO_INTQ(meta_)) \ + ? AI_INTQ_INFO_LIST_SCALE(AI_BUFFER_META_INFO_INTQ(meta_), ai_float, pos_) \ + : 0 ) + +#define AI_BUFFER_META_INFO_INTQ_GET_ZEROPOINT(meta_, pos_) \ + ( (AI_BUFFER_META_INFO_INTQ(meta_)) \ + ? ((AI_INTQ_INFO_LIST_FLAGS(AI_BUFFER_META_INFO_INTQ(meta_))&AI_BUFFER_META_FLAG_ZEROPOINT_U8) \ + ? AI_INTQ_INFO_LIST_ZEROPOINT(AI_BUFFER_META_INFO_INTQ(meta_), ai_u8, pos_) \ + : AI_INTQ_INFO_LIST_ZEROPOINT(AI_BUFFER_META_INFO_INTQ(meta_), ai_i8, pos_) ) \ + : 0 ) + +#define AI_BUFFER_META_INFO_INIT(flags_, intq_info_) { \ + .flags = (flags_), \ + .intq_info = AI_PACK(intq_info_) \ +} + #define AI_BUFFER_SIZE(buf_) \ (((buf_)->width) * ((buf_)->height) * ((buf_)->channels)) @@ -188,7 +231,8 @@ typedef int32_t ai_buffer_format; .height = (h_), \ .width = (w_), \ .channels = (ch_), \ - .data = (ai_handle)(data_) \ + .data = (ai_handle)(data_), \ + .meta_info = NULL \ } #define AI_BUFFER_OBJ_INIT_STATIC(type_, format_, h_, w_, ch_, n_batches_, ...) \ @@ -197,7 +241,8 @@ typedef int32_t ai_buffer_format; .height = (h_), \ .width = (w_), \ .channels = (ch_), \ - .data = (ai_handle)((type_[(h_)*(w_)*(ch_)*(n_batches_)]){__VA_ARGS__}) \ + .data = (ai_handle)((type_[(h_)*(w_)*(ch_)*(n_batches_)]){__VA_ARGS__}), \ + .meta_info = NULL \ } /*! @@ -269,6 +314,7 @@ typedef int64_t ai_i64; typedef uint32_t ai_signature; +/******************************************************************************/ /*! * @struct ai_error * @ingroup ai_platform @@ -279,6 +325,43 @@ typedef struct ai_error_ { ai_u32 code : 24; /*!< Error code represented by @ref ai_error_code */ } ai_error; +/******************************************************************************/ +/*! + * @struct ai_intq_info + * @ingroup ai_platform + * @brief an element of the ai_intq_info_list entry. It reports an array for the + * scale and zeropoint values for each buffer. Optional flags are also present + */ +typedef struct ai_intq_info_ { + ai_float* scale; + ai_handle zeropoint; +} ai_intq_info; + +/*! + * @struct ai_intq_info_list + * @ingroup ai_platform + * @brief list reporting meta info for quantized networks integer support + * when size > 1 it means a per channel out quantization + */ +typedef struct ai_intq_info_list_ { + ai_u16 flags; /*!< optional flags to store intq info attributes */ + ai_u16 size; /*!< number of elements in the the intq_info list */ + ai_intq_info* info; /*!< pointer to an array of metainfo associated to the intq_info list */ +} ai_intq_info_list; + +/******************************************************************************/ +/*! + * @struct ai_buffer_meta_info + * @ingroup ai_platform + * @brief Optional meta attributes associated with the I/O buffer. + * This datastruct is used also for network querying, where the data field may + * may be NULL. + */ +typedef struct ai_buffer_meta_info_ { + ai_u32 flags; /*!< meta info flags */ + ai_intq_info_list* intq_info; /*!< meta info related to integer format */ +} ai_buffer_meta_info; + /*! * @struct ai_buffer * @ingroup ai_platform @@ -293,6 +376,7 @@ typedef struct ai_buffer_ { ai_u16 width; /*!< buffer width dimension */ ai_u32 channels; /*!< buffer number of channels */ ai_handle data; /*!< pointer to buffer data */ + ai_buffer_meta_info* meta_info; /*!< pointer to buffer metadata info */ } ai_buffer; /* enums section */ diff --git a/src/stm32cubeai/AI/Inc/ai_platform_interface.h b/src/stm32cubeai/AI/Inc/ai_platform_interface.h index 2a075b8f6..394b78745 100755 --- a/src/stm32cubeai/AI/Inc/ai_platform_interface.h +++ b/src/stm32cubeai/AI/Inc/ai_platform_interface.h @@ -41,46 +41,153 @@ ai_platform_network_set_error((net_), AI_CONCAT(AI_ERROR_,type_), \ AI_CONCAT(AI_ERROR_CODE_,code_)) -/******************************************************************************/ +/*! AI_PTR HANDLERS SECTION ************************************/ #define AI_PTR(ptr_) ((ai_ptr)(ptr_)) #define AI_PTR_CONST(ptr_) ((ai_ptr_const)(ptr_)) -/******************************************************************************/ -#define AI_SHAPE_2D_INIT(h, w) \ - { .dimension={ (w), (h) } } +/*! STATIC ARRAYS ALLOCATOR SECTION ************************************/ +#define AI_PACK_STORAGE_ARRAY(type_, dim_, ...) \ + (type_[dim_]) { AI_PACK(__VA_ARGS__) } -#define AI_SHAPE_ND_INIT(size_, ...) \ - { .size = (ai_size)(size_), \ - .dimension = (ai_shape_dimension[]){ __VA_ARGS__ } } +/*! AI_STORAGE_KLASS SECTION ************************************/ +#define AI_STORAGE_KLASS_PACK(type_, dim_, ...) \ + AI_PACK_STORAGE_ARRAY(type_, dim_, __VA_ARGS__) + +#define AI_STORAGE_KLASS_INIT(type_, size_, data_) \ +{ \ + .type = (type_), \ + .size = (size_), \ + .data = (ai_handle)(data_), \ +} + +/*! + * @enum ai_storage_klass_type + * @ingroup ai_platform_interface + * @brief @ref ai_storage_class types enum + */ +typedef enum { + AI_STORAGE_KLASS_SHAPE = 0x0, + AI_STORAGE_KLASS_STRIDE, + AI_STORAGE_KLASS_FLOAT, + AI_STORAGE_KLASS_U8, + AI_STORAGE_KLASS_I8, + AI_STORAGE_KLASS_U16, + AI_STORAGE_KLASS_I16, + AI_STORAGE_KLASS_U32, + AI_STORAGE_KLASS_I32, + AI_STORAGE_KLASS_U64, + AI_STORAGE_KLASS_I64, +} ai_storage_klass_type; + +/*! + * @struct ai_storage_klass + * @ingroup ai_platform_interface + * @brief Generic "Template" klass for generic storage arrays containers + * from this klass several typed containers are derived (see e.g. @ref ai_shape) + */ +AI_PACKED_STRUCT_START +typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_storage_klass_s { + ai_u32 type : 8; + ai_u32 size : 24; + ai_handle data; +} ai_storage_klass; +AI_PACKED_STRUCT_END + +/*! AI_SHAPES SECTION ************************************/ +#define AI_SHAPE_2D_INIT(w_, h_) \ + { .data = { (w_), (h_) } } + +#define AI_SHAPE_INIT(dim_, ...) \ + AI_STORAGE_KLASS_INIT( \ + AI_STORAGE_KLASS_SHAPE, \ + dim_, \ + AI_STORAGE_KLASS_PACK(ai_shape_dimension, dim_, ## __VA_ARGS__)) + +#define AI_SHAPE_INIT_FROM_BUFFER(dim_, buffer_) \ + AI_STORAGE_KLASS_INIT( \ + AI_STORAGE_KLASS_SHAPE, \ + dim_, \ + buffer_) + +/*! + * @enum ai_shape_type + * @ingroup ai_platform_interface + * @brief Codes for the 4D tensor dimensions + */ +typedef enum { + AI_SHAPE_MAX_DIMENSION = 0x4, + AI_SHAPE_HEIGHT = 0x3, + AI_SHAPE_WIDTH = 0x2, + AI_SHAPE_CHANNEL = 0x1, + AI_SHAPE_IN_CHANNEL = 0x0, +// AI_SHAPE_BATCH_CHANNEL = 0x4, +} ai_shape_type; + +/*! + * @struct ai_shape + * @ingroup ai_platform_interface + * @brief Dimensions for generic 4D tensors + */ +#if 1 + +#if 0 +AI_PACKED_STRUCT_START +typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_shape_s { + ai_u32 type : 8; + ai_u32 size : 24; + ai_shape_dimension data[AI_SHAPE_MAX_DIMENSION]; /*!< 4D tensor shape */ +} ai_shape; +AI_PACKED_STRUCT_END +#else +typedef ai_storage_klass ai_shape; +#endif + +#else +AI_PACKED_STRUCT_START +typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_shape_s { + ai_shape_dimension* dimension; /*!< ND tensor shape */ +} ai_shape; +AI_PACKED_STRUCT_END +#endif + +/*! AI_STRIDES HANDLERS SECTION ************************************/ +#define AI_STRIDE_INIT(dim_, ...) \ + AI_STORAGE_KLASS_INIT( \ + AI_STORAGE_KLASS_STRIDE, \ + dim_, \ + AI_STORAGE_KLASS_PACK(ai_stride_dimension, dim_, ## __VA_ARGS__)) +#define AI_STRIDE_INIT_FROM_BUFFER(dim_, buffer_) \ + AI_STORAGE_KLASS_INIT( \ + AI_STORAGE_KLASS_STRIDE, \ + dim_, \ + buffer_) -#define AI_SHAPE_INIT(h, w, ch, in_ch) {.dimension={ (in_ch), (ch), (w), (h) }} +/*! + * @struct ai_stride + * @ingroup ai_platform_interface + * @brief Stride dimensions for generic 4D tensors (in number of elements) + */ +typedef ai_storage_klass ai_stride; -/******************************************************************************/ -#define AI_STRIDE_2D_INIT(h, w) \ - { .dimension={ (w), (h) } } +/*! BASIC_TYPES HANDLERS SECTION ************************************/ +#define AI_SIZE(value_) \ + ((ai_size)(value_)) -#define AI_STRIDE_ND_INIT(size_, ...) \ - { .size = (ai_size)(size_), \ - .dimension = (ai_stride_dimension[]){ __VA_ARGS__ } } +/*! AI_KLASS_OBJ HANDLERS SECTION ************************************/ +#define AI_KLASS_OBJ(obj_) \ + ((ai_klass_obj)(obj_)) -#define AI_STRIDE_INIT(h, w, ch, in_ch) \ - { .dimension={ (in_ch), (ch), (w), (h) } } - -/******************************************************************************/ -#define AI_KLASS_OBJ(obj) \ - ((ai_klass_obj)(obj)) - -/*! generic handlers section **************************************************/ +/*! GENERIC HANDLERS SECTION ************************************/ #define AI_OBJ_DATA(obj_, type_) \ ((type_)(obj_)->data) -/*! ai_buffer handlers section ************************************************/ +/*! AI_BUFFER HANDLERS SECTION ************************************/ #define AI_BUFFER_OBJ(ptr) \ ((ai_buffer*)(ptr)) -/*! ai_array handlers section *************************************************/ +/*! AI_ARRAY HANDLERS SECTION ************************************/ #define AI_ARRAY_OBJ(ptr) \ ((ai_array*)(ptr)) @@ -91,12 +198,12 @@ (AI_ARRAY_OBJ(array_)->size) #define AI_ARRAY_OBJ_BYTE_SIZE(array_) \ - AI_ARRAY_GET_BYTE_SIZE(AI_ARRAY_OBJ(array_)->format, \ - AI_ARRAY_OBJ(array_)->size) + AI_SIZE(AI_ARRAY_GET_BYTE_SIZE(AI_ARRAY_OBJ_FMT(array_), \ + AI_ARRAY_OBJ_SIZE(array_))) #define AI_ARRAY_OBJ_DATA_SIZE(array_) \ - AI_ARRAY_GET_DATA_BYTE_SIZE(AI_ARRAY_OBJ(array_)->format, \ - AI_ARRAY_OBJ(array_)->size) + AI_ARRAY_GET_DATA_BYTE_SIZE(AI_ARRAY_OBJ_FMT(array_), \ + AI_ARRAY_OBJ_SIZE(array_)) #define AI_ARRAY_OBJ_DATA(array_, type_) \ ((type_*)(AI_ARRAY_OBJ(array_)->data)) @@ -104,7 +211,6 @@ #define AI_ARRAY_OBJ_DATA_START(array_, type_) \ ((type_*)(AI_ARRAY_OBJ(array_)->data_start)) - #define AI_ARRAY_OBJ_ELEM(array_, type_, pos_) \ AI_ARRAY_OBJ_DATA(array_, type_)[(pos_)] @@ -112,39 +218,65 @@ .format = AI_FMT_OBJ(format_), \ .size = (ai_array_size)(size_), \ .data = (ai_ptr)((type_[]){ __VA_ARGS__ }), \ - .data_start = (ai_ptr)((type_[]){ __VA_ARGS__ }), \ + .data_start = AI_PTR(0), \ } -#define AI_ARRAY_OBJ_DECLARE_STATIC(name_, type_, format_, attr_, size_, ...) \ - AI_ALIGNED(4) \ - attr_ ai_array name_ = AI_ARRAY_OBJ_INIT_STATIC(type_, format_, size_, __VA_ARGS__); - #define AI_ARRAY_OBJ_INIT(format_, data_, data_start_, size_) { \ .format = AI_FMT_OBJ(format_), \ .size = (ai_array_size)(size_), \ .data = AI_PTR(data_), \ .data_start = AI_PTR(data_start_) } +#define AI_ARRAY_OBJ_DECLARE_STATIC(name_, type_, format_, attr_, size_, ...) \ + AI_ALIGNED(4) \ + attr_ ai_array name_ = AI_ARRAY_OBJ_INIT_STATIC(type_, format_, size_, __VA_ARGS__); + + #define AI_ARRAY_OBJ_DECLARE(name_, format_, data_, data_start_, size_, attr_) \ AI_ALIGNED(4) \ attr_ ai_array name_ = AI_ARRAY_OBJ_INIT(format_, data_, data_start_, size_); -/******************************************************************************/ -#define AI_TENSOR_OBJ(ptr) \ - ((struct ai_tensor_*)(ptr)) +/********************************* ai_array macros ***************************/ +#define AI_PACK_ARRAYS(...) \ + (ai_array[]) { AI_PACK(__VA_ARGS__) } -#define AI_TENSOR_OBJ_INIT(shape_, stride_, data_array_ptr_) { \ - .data = AI_ARRAY_OBJ(data_array_ptr_), \ - .shape = shape_, \ - .stride = stride_, \ +#define AI_ARRAY_LIST_OBJ_INIT(arrays_ptr_) \ + ((ai_array*)(arrays_ptr_)) + +#define AI_ARRAY_LIST_FLAGS(list_) \ + ( (list_) ? (list_)->flags : 0x0 ) + +#define AI_ARRAY_LIST_SIZE(list_) \ + ( (list_) ? (list_)->size : 0 ) + +#define AI_ARRAY_LIST_DATA(list_, pos_) \ + ( (list_) ? &((list_)->data[pos_]) : NULL ) + + +/********************************* ai_tensor macros **************************/ +#define AI_TENSOR_OBJ(obj_) \ + ((ai_tensor*)(obj_)) + +#define AI_TENSOR_INFO_OBJ_INIT(id_, flags_, data_size_) { \ + .id = (id_), \ + .flags = (flags_), \ + .data_size = (data_size_) \ } -#define AI_TENSOR_OBJ_DECLARE(name_, shape_, stride_, \ - data_array_ptr_, attr_) \ +#define AI_TENSOR_OBJ_INIT(id_, flags_, shape_, stride_, arrays_size_, arrays_ptr_, klass_obj_) { \ + .klass = (ai_klass_obj)(klass_obj_), \ + .info = AI_TENSOR_INFO_OBJ_INIT(id_, flags_, arrays_size_), \ + .shape = shape_, \ + .stride = stride_, \ + .data = AI_ARRAY_LIST_OBJ_INIT(AI_PACK(arrays_ptr_)), \ +} + +#define AI_TENSOR_OBJ_DECLARE(name_, attr_, id_, flags_, shape_, stride_, \ + arrays_size_, arrays_ptr_, klass_obj_) \ AI_ALIGNED(4) \ - attr_ ai_tensor name_ = AI_TENSOR_OBJ_INIT(AI_PACK(shape_), AI_PACK(stride_), \ - data_array_ptr_); + attr_ ai_tensor name_ = AI_TENSOR_OBJ_INIT(id_, flags_, AI_PACK(shape_), AI_PACK(stride_), \ + arrays_size_, AI_PACK(arrays_ptr_), AI_PACK(klass_obj_)); /********************************* TENSOR STATE MACROS ***********************/ #define AI_TENSOR_STATE_OBJ_INIT(end_ptr_ , curr_ptr_, stride_, size_) \ @@ -152,12 +284,14 @@ /********************************* TENSOR LIST MACROS ************************/ #define AI_TENSOR_LIST_EMPTY \ - { .tensor = (ai_tensor*[]) { NULL }, .info = NULL, \ - .size = 0, .flags = AI_FLAG_NONE } + { .size = 0, .flags = AI_FLAG_NONE, \ + .tensor = (ai_tensor*[]) { NULL }, .info = NULL \ + } #define AI_TENSOR_LIST_ENTRY(...) \ - { .tensor = (ai_tensor*[]) { __VA_ARGS__ }, .info = NULL, \ - .size = AI_NUMARGS(__VA_ARGS__), .flags = AI_FLAG_NONE } + { .size = AI_NUMARGS(__VA_ARGS__), .flags = AI_FLAG_NONE, \ + .tensor = (ai_tensor*[]) { __VA_ARGS__ }, .info = NULL \ + } #define AI_TENSOR_LIST_OBJ_DECLARE(name_, attr_, ...) \ AI_ALIGNED(4) \ @@ -165,24 +299,25 @@ /********************************* TENSOR LIST I/O MACROS ********************/ #define AI_TENSOR_LIST_IO_ENTRY(flags_, size_, ...) \ - { .tensor = (ai_tensor*[]) { __VA_ARGS__ }, \ - .info = (ai_tensor_info[1]) { { \ + { .size = (size_), .flags = (flags_), \ + .tensor = (ai_tensor*[]) { __VA_ARGS__ }, \ + .info = (ai_tensor_list_info[1]) { { \ .buffer = (ai_buffer[size_])AI_STRUCT_INIT, \ - .state = (ai_tensor_state[size_])AI_STRUCT_INIT \ - } }, \ - .size = (size_), \ - .flags = (flags_) } + .state = (ai_tensor_state[size_])AI_STRUCT_INIT, \ + .meta = (ai_buffer_meta_info[size_])AI_STRUCT_INIT \ + } } \ + } /********************************* TENSOR CHAIN MACROS ***********************/ -#define AI_TENSOR_CHAIN_OBJ_INIT(flags_, in_, out_, weights_, scratch_) \ - { .chain = (ai_tensor_list[]){ in_, out_, weights_, scratch_ }, \ - .size = 4, .flags = (flags_) } +#define AI_TENSOR_CHAIN_OBJ_INIT(flags_, size_, ...) \ + { .size = (size_), .flags = (flags_), \ + .chain = (ai_tensor_list[]){ __VA_ARGS__ } } -#define AI_TENSOR_CHAIN_OBJ_DECLARE(name_, attr_, in_, out_, weights_, scratch_) \ +#define AI_TENSOR_CHAIN_OBJ_DECLARE(name_, attr_, size_, ...) \ AI_ALIGNED(4) \ attr_ ai_tensor_chain name_ = \ - AI_TENSOR_CHAIN_OBJ_INIT(AI_FLAG_NONE, AI_PACK(in_), AI_PACK(out_), \ - AI_PACK(weights_), AI_PACK(scratch_)); + AI_TENSOR_CHAIN_OBJ_INIT(AI_FLAG_NONE, size_, __VA_ARGS__); + /********************************* TENSOR CHAIN I/O MACROS *******************/ #define AI_TENSOR_CHAIN_IO_OBJ_INIT(flags_, in_tensor_list_, out_tensor_list_) \ @@ -196,15 +331,17 @@ AI_TENSOR_CHAIN_IO_OBJ_INIT(flags_, in_tensor_list_, out_tensor_list_); /******************************* NETWORK SECTION ****************************/ -#define AI_NETWORK_OBJ(ptr) ((ai_network*)(ptr)) +#define AI_NETWORK_OBJ(obj_) \ + ((ai_network*)(obj_)) #define AI_NETWORK_OBJ_INIT( \ weights_buffer_, activations_buffer_, \ in_tensor_list_ptr_, out_tensor_list_ptr_, \ - in_node_ptr_, signature_) { \ + in_node_ptr_, signature_, klass_obj_) { \ .magic = 0x0, \ .signature = signature_, \ + .klass = AI_KLASS_OBJ(klass_obj_), \ .flags = AI_FLAG_NONE, \ .error = AI_ERROR_INIT(NONE, NONE), \ .n_batches = 0, \ @@ -216,23 +353,23 @@ AI_PACK(out_tensor_list_ptr_)), \ .input_node = AI_NODE_OBJ(in_node_ptr_), \ .current_node = AI_NODE_OBJ(NULL), \ - .klass = AI_KLASS_OBJ(NULL) } +} #define AI_NETWORK_OBJ_DECLARE( \ - var_name_, \ + name_, attr_, \ weights_buffer_, activations_buffer_, \ in_tensor_list_ptr_, out_tensor_list_ptr_, \ - in_node_ptr_, signature_) \ + in_node_ptr_, signature_, klass_obj_) \ AI_ALIGNED(4) \ - AI_STATIC ai_network var_name_ = AI_NETWORK_OBJ_INIT( \ + attr_ ai_network name_ = AI_NETWORK_OBJ_INIT( \ AI_PACK(weights_buffer_), \ AI_PACK(activations_buffer_), \ AI_PACK(in_tensor_list_ptr_), \ AI_PACK(out_tensor_list_ptr_), \ - (in_node_ptr_), (signature_)); + (in_node_ptr_), (signature_), (klass_obj_)); -#define AI_NETWORK_ACQUIRE_CTX(handle) \ - AI_NETWORK_OBJ(ai_platform_context_acquire(handle)) +#define AI_NETWORK_ACQUIRE_CTX(handle_) \ + AI_NETWORK_OBJ(ai_platform_context_acquire(handle_)) /******************************************************************************/ @@ -317,82 +454,10 @@ typedef enum { */ AI_PACKED_STRUCT_START typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_shape_2d_s { - ai_shape_dimension dimension[AI_SHAPE_2D_MAX_DIMENSION]; /*!< 2D tensor dimensions */ + ai_shape_dimension data[AI_SHAPE_2D_MAX_DIMENSION]; /*!< 2D tensor dimensions */ } ai_shape_2d; AI_PACKED_STRUCT_END -/*! - * @struct ai_stride_2d - * @ingroup ai_platform_interface - * @brief Stride dimensions for generic 2D tensors (in number of elements) - */ -AI_PACKED_STRUCT_START -typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_stride_2d_s { - ai_stride_dimension dimension[AI_SHAPE_2D_MAX_DIMENSION]; /*!< 2D tensor stride */ -} ai_stride_2d; -AI_PACKED_STRUCT_END - -/*! - * @struct ai_shape_nd - * @ingroup ai_platform_interface - * @brief Dimensions for generic N-dimensional tensors - */ -AI_PACKED_STRUCT_START -typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_shape_nd_s { - ai_size size; /*!< number of elements in the n-dimensional shape - (NOT number of bytes!). */ - ai_shape_dimension* dimension; -} ai_shape_nd; -AI_PACKED_STRUCT_END - -/*! - * @struct ai_stride_nd - * @ingroup ai_platform_interface - * @brief Stride dimensions for generic N-dimensional tensors - */ -AI_PACKED_STRUCT_START -typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_stride_nd_s { - ai_size size; /*!< number of elements in the n-dimensional stride - (NOT number of bytes!). */ - ai_stride_dimension* dimension; -} ai_stride_nd; -AI_PACKED_STRUCT_END - -/*! - * @enum ai_shape_type - * @ingroup ai_platform_interface - * @brief Codes for the 4D tensor dimensions - */ -typedef enum { - AI_SHAPE_MAX_DIMENSION = 0x4, - AI_SHAPE_HEIGHT = 0x3, - AI_SHAPE_WIDTH = 0x2, - AI_SHAPE_CHANNEL = 0x1, - AI_SHAPE_IN_CHANNEL = 0x0, -// AI_SHAPE_BATCH_CHANNEL = 0x5, -} ai_shape_type; - -/*! - * @struct ai_shape - * @ingroup ai_platform_interface - * @brief Dimensions for generic 4D tensors - */ -AI_PACKED_STRUCT_START -typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_shape_s { - ai_shape_dimension dimension[AI_SHAPE_MAX_DIMENSION]; /*!< 4D tensor dimensions */ -} ai_shape; -AI_PACKED_STRUCT_END - -/*! - * @struct ai_stride - * @ingroup ai_platform_interface - * @brief Stride dimensions for generic 4D tensors (in number of elements) - */ -AI_PACKED_STRUCT_START -typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_stride_s { - ai_stride_dimension dimension[AI_SHAPE_MAX_DIMENSION]; /*!< 4D tensor stride */ -} ai_stride; -AI_PACKED_STRUCT_END /*! * @struct ai_array @@ -402,8 +467,10 @@ AI_PACKED_STRUCT_END */ AI_PACKED_STRUCT_START typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_array_s { +// ai_u16 flags; /*!< optional flags to store array list attributes */ +// ai_u16 id; /*!< ID of the array object */ ai_array_format format; /*!< array format (see @ref ai_array_format) */ - ai_array_size size; /*!< number of elements in the array (NOT number + ai_array_size size; /*!< number of elements in the array (NOT number of bytes!). The size of the array could be determine using @ref AI_ARRAY_GET_BYTE_SIZE macro */ @@ -412,6 +479,21 @@ typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_array_s { } ai_array; AI_PACKED_STRUCT_END +/*! + * @struct ai_tensor_info + * @ingroup ai_platform_interface + * @brief ai_tensor_info info structure for storing size of the array list, + * tensor dimensionality, etc. + * + */ +AI_PACKED_STRUCT_START +typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_tensor_info_s { + ai_u16 id; + ai_u8 flags; + ai_u8 data_size; +} ai_tensor_info; +AI_PACKED_STRUCT_END + /*! * @struct ai_tensor * @ingroup ai_platform_interface @@ -423,9 +505,11 @@ AI_PACKED_STRUCT_END */ AI_PACKED_STRUCT_START typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_tensor_s { - ai_array* data; /*!< flattened array pointer to tensor data */ + ai_klass_obj klass; /*!< opaque pointer to klass context */ + ai_tensor_info info; /*!< tensor info metadata see @ref ai_tensor_info)*/ ai_shape shape; /*!< tensor shape see @ref ai_shape */ ai_stride stride; /*!< tensor stride see @ref ai_stride */ + ai_array* data; /*!< flattened array pointer to tensor data */ } ai_tensor; AI_PACKED_STRUCT_END @@ -444,19 +528,59 @@ typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_tensor_state_s { AI_PACKED_STRUCT_END /*! - * @struct ai_tensor_info + * @struct ai_tensor_list_info * @ingroup ai_platform_interface - * @brief info metadata for tensor management (used for I/O network tensors) + * @brief info metadata for tensor list management (used for I/O network tensors) */ AI_PACKED_STRUCT_START -typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_tensor_info_s { -// union { - ai_tensor_state* state; - ai_buffer* buffer; -// }; -} ai_tensor_info; +typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_tensor_list_info_s { + ai_tensor_state* state; /*!< I/O buffer internal pointers state */ + ai_buffer* buffer; /*!< I/O buffer pointer */ + ai_buffer_meta_info* meta; /*!< I/O buffer meta informations */ +} ai_tensor_list_info; AI_PACKED_STRUCT_END +/********************************* INTEGER QUANTIZATION DATATYPES ************/ + +#define AI_INTQ_INFO_OBJ_INIT(flags_, scale_ , zeropoint_) { \ + .scale = (scale_), \ + .zeropoint = (ai_handle)(zeropoint_), \ + .flags = (flags_), \ +} + + +#define AI_PACK_INTQ_INFO_LIST(...) \ + (ai_intq_info_list[]) { AI_PACK(__VA_ARGS__) } + +#define AI_PACK_INTQ_INFO(scale_, zp_) \ + (ai_intq_info[1]) { { .scale = AI_PACK(scale_), \ + .zeropoint = AI_PACK(zp_) } } + +#define AI_PACK_INTQ_SCALE(...) \ + (ai_float[]) { AI_PACK(__VA_ARGS__) } + +#define AI_PACK_INTQ_ZP(...) \ + (ai_i8[]) { AI_PACK(__VA_ARGS__) } + +#define AI_PACK_UINTQ_ZP(...) \ + (ai_u8[]) { AI_PACK(__VA_ARGS__) } + + +#define AI_INTQ_INFO_LIST_OBJ_EMPTY { 0 } + +#define AI_INTQ_INFO_LIST_OBJ_INIT(flags_, size_, info_) \ +{ \ + .flags = (flags_), \ + .size = (size_), \ + .info = (info_), \ +} + +#define AI_INTQ_INFO_LIST_OBJ_DECLARE(name_, attr_, ...) \ + AI_ALIGNED(4) \ + attr_ ai_intq_info_list name_ = \ + AI_INTQ_INFO_LIST_OBJ_INIT(AI_FLAG_NONE, __VA_ARGS__); + + /********************************* TENSOR CHAINS DATATYPES *******************/ /*! * @enum ai_tensor_chain_type @@ -478,10 +602,10 @@ typedef enum { */ AI_PACKED_STRUCT_START typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_tensor_list_s { - ai_tensor** tensor; /*!< array of linked tensor pointer */ - ai_tensor_info* info; /*!< pointer to an array of metainfo associated to the tensors */ ai_u16 size; /*!< number of elements in the the tensor list */ ai_u16 flags; /*!< optional flags to store tensor list attributes */ + ai_tensor** tensor; /*!< array of linked tensor pointer */ + ai_tensor_list_info* info; /*!< pointer to an array of metainfo associated to the tensors */ } ai_tensor_list; AI_PACKED_STRUCT_END @@ -493,9 +617,9 @@ AI_PACKED_STRUCT_END */ AI_PACKED_STRUCT_START typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_tensor_chain_s { - ai_tensor_list* chain; /*!< pointer to a 4 sized array see @ref ai_tensor_chain_type */ ai_u16 size; ai_u16 flags; + ai_tensor_list* chain; /*!< pointer to a 4 sized array see @ref ai_tensor_chain_type */ } ai_tensor_chain; AI_PACKED_STRUCT_END @@ -510,6 +634,7 @@ struct ai_node_s; AI_PACKED_STRUCT_START typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_network_s { AI_CONTEXT_FIELDS + ai_klass_obj klass; /*!< opaque handler to specific network implementations */ ai_flags flags; /*!< bitflags mask to track some network state info */ ai_error error; /*!< track 1st error code in the network */ @@ -522,8 +647,6 @@ typedef AI_ALIGNED_TYPE(struct, 4) AI_PACKED ai_network_s { struct ai_node_s* input_node; /*!< first node to execute */ struct ai_node_s* current_node; /*!< current node to execute */ - - ai_klass_obj klass; /*!< opaque handler to specific network implementations */ } ai_network; AI_PACKED_STRUCT_END diff --git a/src/stm32cubeai/AI/Inc/core_common.h b/src/stm32cubeai/AI/Inc/core_common.h index d65dbb204..5737189f2 100755 --- a/src/stm32cubeai/AI/Inc/core_common.h +++ b/src/stm32cubeai/AI/Inc/core_common.h @@ -25,7 +25,6 @@ #include "ai_platform.h" #include "ai_platform_interface.h" #include "ai_datatypes_internal.h" - #include "core_datatypes.h" #include "core_log.h" @@ -53,7 +52,7 @@ #define ASSERT_TENSOR_SANITY(t_) \ AI_ASSERT((t_) && (t_)->data) \ - AI_ASSERT(ai_shape_get_size(&(t_)->shape)>0) \ + AI_ASSERT(CORE_TENSOR_GET_SHAPE_SIZE(t_)>0) \ ASSERT_ARRAY_SANITY((t_)->data) #define ASSERT_TENSOR_LIST_SANITY(tlist_) \ @@ -99,7 +98,7 @@ #define AI_NODE_FORWARD_FUNC(func_) \ ((node_forward_func)(func_)) - + #define AI_NODE_IS_FIRST(node) \ (AI_NODE_OBJ(node)==AI_NODE_OBJ(AI_NODE_OBJ(node)->network->input_node)) @@ -110,19 +109,19 @@ #define AI_NODE_COMMON_FIELDS_DECLARE \ ai_node_type type; /*!< node type id (see @ref ai_node_type) */ \ ai_id_obj id; /*!< node object instance id (see @ref ai_id_obj) */ \ + ai_klass_obj klass; /*!< opaque handler to specific layer implementations */ \ struct ai_network_s* network; /*!< handle to global network context */ \ struct ai_node_s* next; /*!< the next node object in the sequence */ \ node_forward_func forward; /*!< forward function for the node */ \ - ai_klass_obj klass; /*!< opaque handler to specific layer implementations */ \ AI_CONST ai_tensor_chain* tensors; /*!< pointer to node tensor chain */ -#define AI_NODE_COMMON_INIT(type_, id_, forward_, next_, network_, klass_) \ +#define AI_NODE_COMMON_INIT(type_, id_, forward_, next_, network_, klass_obj_) \ .type = AI_NODE_TYPE(type_), \ .id = AI_ID_OBJ(id_), \ + .klass = AI_KLASS_OBJ(klass_obj_), \ .network = AI_NETWORK_OBJ(network_), \ .next = AI_NODE_OBJ(next_), \ .forward = AI_NODE_FORWARD_FUNC(forward_), \ - .klass = AI_KLASS_OBJ(klass_), \ .tensors = NULL #define AI_FOR_EACH_NODE_DO(node_, nodes_) \ @@ -132,50 +131,56 @@ /** TENSOR CHAINS LOOP MACROS & GETTERS *************************************/ #define AI_FOR_EACH_TENSOR_CHAIN_DO(tlist_ptr_, chain_) \ - ai_tensor_list* tlist_ptr_=(chain_)->chain; \ - for ( ; tlist_ptr_<(((chain_)->chain)+GET_TENSOR_CHAIN_SIZE(chain_)); tlist_ptr_++ ) + ai_tensor_list* tlist_ptr_ = (chain_)->chain; \ + for ( ; tlist_ptr_<(((chain_)->chain)+((chain_)->size)); tlist_ptr_++ ) #define AI_FOR_EACH_TENSOR_LIST_DO(idx_, t_ptr_, tlist_ptr_) \ - ai_tensor* t_ptr_ = GET_TENSOR_LIST_ITEM(tlist_ptr_, 0); \ - for ( ai_size idx_ = 0; \ - idx_ < GET_TENSOR_LIST_SIZE(tlist_ptr_); \ - ++idx_, t_ptr_ = GET_TENSOR_LIST_ITEM(tlist_ptr_, idx_) ) + ai_tensor* t_ptr_ = (GET_TENSOR_LIST_SIZE(tlist_ptr_)>0) \ + ? GET_TENSOR_LIST_ITEM(tlist_ptr_, 0) : NULL; \ + for ( ai_size idx_ = 0; \ + idx_ < GET_TENSOR_LIST_SIZE(tlist_ptr_) && \ + (t_ptr_ = GET_TENSOR_LIST_ITEM(tlist_ptr_, idx_)) != 0; ++idx_) #define GET_TENSOR_LIST_INFO(list_) \ - ( (list_)->info ) + ( (list_)->info ) + +#define GET_TENSOR_LIST_META(list_, pos_) \ + ( &(GET_TENSOR_LIST_INFO(list_)->meta[pos_]) ) #define GET_TENSOR_LIST_STATE(list_, pos_) \ - ( &(GET_TENSOR_LIST_INFO(list_)->state[pos_]) ) + ( &(GET_TENSOR_LIST_INFO(list_)->state[pos_]) ) #define GET_TENSOR_LIST_BUFFER(list_, pos_) \ - ( &(GET_TENSOR_LIST_INFO(list_)->buffer[pos_]) ) + ( &(GET_TENSOR_LIST_INFO(list_)->buffer[pos_]) ) #define GET_TENSOR_LIST_ITEM(list_, pos_) \ - ( (list_)->tensor[(pos_)] ) + ( (NULL!=(list_)->tensor) \ + ? (list_)->tensor[(pos_)] : NULL ) #define GET_TENSOR_LIST_ITEMS(list_) \ - ( (list_)->tensor ) + ( (list_)->tensor ) #define GET_TENSOR_LIST_SIZE(list_) \ - ( (list_)->size ) + ( (NULL!=(list_)) ? (list_)->size : 0 ) #define GET_TENSOR_CHAIN_SIZE(chain_) \ - ( (chain_)->size ) + ( (NULL!=(chain_)) ? (chain_)->size : 0 ) #define GET_TENSOR_LIST(chain_, type_) \ - ( &(chain_)->chain[AI_CONCAT(AI_TENSOR_CHAIN_, type_)] ) + ( (AI_CONCAT(AI_TENSOR_CHAIN_, type_)<(chain_)->size) \ + ? &(chain_)->chain[AI_CONCAT(AI_TENSOR_CHAIN_, type_)] : NULL ) #define GET_TENSOR_LIST_IN(chain_) \ - ( GET_TENSOR_LIST(chain_, INPUT) ) + ( GET_TENSOR_LIST(chain_, INPUT) ) #define GET_TENSOR_LIST_OUT(chain_) \ - ( GET_TENSOR_LIST(chain_, OUTPUT) ) + ( GET_TENSOR_LIST(chain_, OUTPUT) ) #define GET_TENSOR_LIST_WEIGTHS(chain_) \ ( GET_TENSOR_LIST(chain_, WEIGHTS) ) #define GET_TENSOR_LIST_SCRATCH(chain_) \ - ( GET_TENSOR_LIST(chain_, SCRATCH) ) + ( GET_TENSOR_LIST(chain_, SCRATCH) ) #define GET_TENSOR_IN(chain_, pos_) \ ( GET_TENSOR_LIST_ITEM(GET_TENSOR_LIST_IN(chain_), (pos_)) ) @@ -183,6 +188,12 @@ #define GET_TENSOR_OUT(chain_, pos_) \ ( GET_TENSOR_LIST_ITEM(GET_TENSOR_LIST_OUT(chain_), (pos_)) ) +#define SET_TENSOR_IN(chain_, pos_) \ + ( GET_TENSOR_LIST_IN(chain_)->tensor[(pos_)] ) + +#define SET_TENSOR_OUT(chain_, pos_) \ + ( GET_TENSOR_LIST_OUT(chain_)->tensor[(pos_)] ) + #define GET_TENSOR_WEIGHTS(chain_, pos_) \ ( GET_TENSOR_LIST_ITEM(GET_TENSOR_LIST_WEIGTHS(chain_), (pos_)) ) diff --git a/src/stm32cubeai/AI/Inc/core_convert.h b/src/stm32cubeai/AI/Inc/core_convert.h index 66df17921..e48f78b32 100755 --- a/src/stm32cubeai/AI/Inc/core_convert.h +++ b/src/stm32cubeai/AI/Inc/core_convert.h @@ -66,33 +66,7 @@ void node_convert(ai_node *pNode); * @return a condverted stride datastruct */ AI_INTERNAL_API -ai_stride core_shape_to_stride(const ai_shape* in); +void core_shape_to_stride(ai_stride* out, const ai_shape* in); -/*! - * @brief Convert a shape 2D struct into a stride struct - * @ingroup core_convert - * @param[in] in a pointer to a shape to convert - * @return a condverted stride datastruct - */ -AI_INTERNAL_API -ai_stride core_shape_2d_to_stride(const ai_shape_2d* in); - -/*! - * @brief Convert a shape struct into a ND stride struct (multi dimensional) - * @ingroup core_convert - * @param[in] in a pointer to a shape to convert - * @return a condverted ND stride datastruct - */ -AI_INTERNAL_API -ai_stride_nd core_shape_to_stride_nd(const ai_shape* in); - -/*! - * @brief Convert a shape 2D struct into a ND stride struct (multi dimensional) - * @ingroup core_convert - * @param[in] in a pointer to a shape 2D to convert - * @return a condverted ND stride datastruct - */ -AI_INTERNAL_API -ai_stride_nd core_shape_2d_to_stride_nd(const ai_shape_2d* in); #endif /*__CORE_CONVERT_H_*/ diff --git a/src/stm32cubeai/AI/Inc/core_datatypes.h b/src/stm32cubeai/AI/Inc/core_datatypes.h index 53088a4d5..e90d57460 100755 --- a/src/stm32cubeai/AI/Inc/core_datatypes.h +++ b/src/stm32cubeai/AI/Inc/core_datatypes.h @@ -33,7 +33,7 @@ * @brief platform runtime core library version */ #define AI_PLATFORM_RUNTIME_MAJOR 4 -#define AI_PLATFORM_RUNTIME_MINOR 0 +#define AI_PLATFORM_RUNTIME_MINOR 1 #define AI_PLATFORM_RUNTIME_MICRO 0 #define AI_MAGIC_CONTEXT_TOKEN (0xA1C00100) /*!< AI Cool! Magic Token */ diff --git a/src/stm32cubeai/AI/Inc/layers_common.h b/src/stm32cubeai/AI/Inc/layers_common.h index b0e04ba52..4d66cd296 100755 --- a/src/stm32cubeai/AI/Inc/layers_common.h +++ b/src/stm32cubeai/AI/Inc/layers_common.h @@ -29,7 +29,6 @@ #endif #include "ai_platform.h" #include "ai_common_config.h" -#include "ai_datatypes_internal.h" #include "core_common.h" #include "core_convert.h" @@ -40,19 +39,6 @@ #define AI_OPTIM_FUNC_MP_ARRAY_F32 (0) -/* Basic sanity checks for generic layer datastructs */ -#define ASSERT_LAYER_SANITY(l) \ - do { \ - AI_ASSERT((l)->tensors && (l)->tensors->chain) \ - ASSERT_TENSOR_DATA_SANITY(GET_TENSOR_IN((l)->tensors, 0)) \ - ASSERT_TENSOR_DATA_SANITY(GET_TENSOR_OUT((l)->tensors, 0)) \ - AI_ASSERT(ai_shape_get_size(&GET_TENSOR_IN((l)->tensors, 0)->shape) <= \ - GET_TENSOR_IN((l)->tensors, 0)->data->size) \ - AI_ASSERT(ai_shape_get_size(&GET_TENSOR_OUT((l)->tensors, 0)->shape) <= \ - GET_TENSOR_OUT((l)->tensors, 0)->data->size) \ - } while (0); - - #define AI_LAYER_OBJ(obj_) \ ((ai_layer*)(obj_)) diff --git a/src/stm32cubeai/AI/Inc/layers_conv2d.h b/src/stm32cubeai/AI/Inc/layers_conv2d.h index c1d89af66..4b75a7c5f 100755 --- a/src/stm32cubeai/AI/Inc/layers_conv2d.h +++ b/src/stm32cubeai/AI/Inc/layers_conv2d.h @@ -31,7 +31,7 @@ func_nl nl_func; /*!< function pointer to non linear transform */ \ ai_shape_2d filter_stride; /*!< filter stride, how much the filter moves */ \ ai_shape_2d dilation; /*!< dilation value along axis of the filter */ \ - ai_shape_nd filter_pad; /*!< filter pad 4d */ + ai_shape filter_pad; /*!< filter pad 4d */ /*! * @defgroup layers_conv2d Convolutive Layers Definitions @@ -87,7 +87,7 @@ typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_conv2d_nl_pool_ { ai_shape_2d pool_size; /*!< pooling size */ ai_shape_2d pool_stride; /*!< pooling stride */ - ai_shape_nd pool_pad; /*!< pooling pad */ + ai_shape pool_pad; /*!< pooling pad */ func_pool pool_func; /*!< function pointer to pooling transform */ } ai_layer_conv2d_nl_pool; @@ -165,6 +165,32 @@ void forward_conv2d_fixed(ai_layer *pLayer); AI_INTERNAL_API void forward_conv2d_nl_pool_fixed(ai_layer *pLayer); +/*! + * @brief Computes the activations of a integer quantized 2D convolutional layer. + * @ingroup layers_conv2d + * @param layer the convolutional (conv) layer + */ +AI_INTERNAL_API +void forward_conv2d_integer(ai_layer *pLayer); + +/*! + * @brief Computes the activations of a integer @ref ai_layer_conv2d_nl_pool layer. + * The @ref ai_layer_conv2d_nl_pool is a fused conv2D + optional nonlinear + * layer + optional pooling / nonlinearity (average, max) + * @ingroup layers_conv2d + * @param layer see @ai_layer_conv2d_nl_pool + */ +AI_INTERNAL_API +void forward_conv2d_nl_pool_integer(ai_layer *pLayer); + +/*! + * @brief Computes the activations of a integer dense (fully connected) layer. + * @ingroup layers_dense + * @param layer the dense layer + */ +AI_INTERNAL_API +void forward_dense_integer(ai_layer *pLayer); + AI_API_DECLARE_END #endif /*__LAYERS_CONV2D_H_*/ diff --git a/src/stm32cubeai/AI/Inc/layers_generic.h b/src/stm32cubeai/AI/Inc/layers_generic.h index e76980076..76cce1c58 100755 --- a/src/stm32cubeai/AI/Inc/layers_generic.h +++ b/src/stm32cubeai/AI/Inc/layers_generic.h @@ -30,14 +30,6 @@ * */ -#define AI_ASSERT_SHAPE_MATCH(x,y) \ - do{\ - AI_ASSERT(AI_SHAPE_H(y) == 1 || AI_SHAPE_H(x)==1 || AI_SHAPE_H(y)==AI_SHAPE_H(x))\ - AI_ASSERT(AI_SHAPE_W(y) == 1 || AI_SHAPE_W(x)==1 || AI_SHAPE_W(y)==AI_SHAPE_W(x))\ - AI_ASSERT(AI_SHAPE_CH(y) == 1 || AI_SHAPE_CH(x)==1|| AI_SHAPE_CH(y)==AI_SHAPE_CH(x))\ - AI_ASSERT(AI_SHAPE_IN_CH(y) == 1 || AI_SHAPE_IN_CH(x)==1|| AI_SHAPE_IN_CH(y)==AI_SHAPE_IN_CH(x))\ - }while(0) - AI_API_DECLARE_BEGIN /*! @@ -96,18 +88,6 @@ typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_slice_ { AI_CONST ai_array* ends; /*!< Ending indices (exclusive) of corrisponding axis in axes*/ } ai_layer_slice; -/*! - * @struct ai_layer_transpose - * @ingroup layers_generic - * @brief Transpose layer definition - * - * This layer defines the params of a transpose layer. It is intended to be used - * by his associated forward function @ref forward_transpose - */ -typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_transpose_ { - AI_LAYER_COMMON_FIELDS_DECLARE - ai_array* perm; /*!< Axes permutation order */ -} ai_layer_transpose; /*! * @struct ai_layer_tile @@ -164,7 +144,7 @@ typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_instanceNormaization_{ typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_pad_{ AI_LAYER_COMMON_FIELDS_DECLARE ai_pad_mode mode; /*!< pad mode */ - ai_shape_nd pads; /*!< Number of padding to add or remove at the beginning and end of each axis */ + ai_shape pads; /*!< Number of padding to add or remove at the beginning and end of each axis */ ai_float value; /*!< Indicates the value to be filled */ } ai_layer_pad; /*! @@ -187,17 +167,17 @@ typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_add_ { } ai_layer_add; /*! - * @struct ai_layer_permute + * @struct ai_layer_transpose * @ingroup layers_generic - * @brief Permute layer datastruct declaration. This defines the params of a - * permute layer. It is intended to be used by his associated forward function - * @ref forward_permute + * @brief Transpose layer datastruct declaration. This defines the params of a + * transpose layer. It is intended to be used by his associated forward function + * @ref forward_transpose */ -typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_permute_ { +typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_transpose_ { AI_LAYER_COMMON_FIELDS_DECLARE - ai_shape out_mapping; /*!< permute output mapping order, i.e. it is a + ai_shape out_mapping; /*!< transpose output mapping order. I.e. tt is a permutation of the input tensor shape */ -} ai_layer_permute; +} ai_layer_transpose; #define AI_TIME_DISTRIBUTED_AXIS (AI_SHAPE_HEIGHT) @@ -286,13 +266,13 @@ AI_INTERNAL_API void forward_add(ai_layer* layer); /*! - * @brief Permute a tensor along a pivot and save permuted values into an output + * @brief Transpose a tensor along a pivot and save transposed values into an output * tensor * @ingroup layers_generic - * @param layer the permute layer + * @param layer the transpose layer */ AI_INTERNAL_API -void forward_permute(ai_layer* layer); +void forward_transpose(ai_layer* layer); /*! * @brief TimeDistrubuted forward layer function. This forward function @@ -320,14 +300,6 @@ void forward_concat(ai_layer* layer); AI_INTERNAL_API void forward_slice(ai_layer* layer); -/*! - * @brief Transpose an input tensor - * @ingroup layers_generic - * @param layer the transposed layer - */ -AI_INTERNAL_API -void forward_transpose(ai_layer* layer); - /*! * @brief Tile an input tensors * @ingroup layers_generic @@ -368,14 +340,6 @@ void forward_upsample(ai_layer* layer); AI_INTERNAL_API void forward_instanceNormalization(ai_layer* layer); -/*! - * @brief Hardmax on an input tensors - * @ingroup layers_generic - * @param layer the hardmax layer - */ -AI_INTERNAL_API -void forward_hardmax(ai_layer* layer); - /*! * @brief Apply an elementwise transformation to the input tensors * @ingroup layers_generic @@ -392,6 +356,16 @@ void forward_eltwise(ai_layer* layer); AI_INTERNAL_API void forward_reduce(ai_layer* layer); + +/*! + * @brief Apply an elementwise addition to the input tensors + * @ingroup layers_generic + * @param layer the elementwise layer + */ +AI_INTERNAL_API +void forward_add_integer(ai_layer* layer); + + AI_API_DECLARE_END #endif /*__LAYERS_GENERIC_H_*/ diff --git a/src/stm32cubeai/AI/Inc/layers_list.h b/src/stm32cubeai/AI/Inc/layers_list.h index b0e0a5762..3eece46d3 100755 --- a/src/stm32cubeai/AI/Inc/layers_list.h +++ b/src/stm32cubeai/AI/Inc/layers_list.h @@ -51,8 +51,8 @@ LAYER_ENTRY(NL, 10009, ai_layer_nl, NULL) LAYER_ENTRY(NORM, 10010, ai_layer_norm, forward_norm) /*!< Merged Conv2d / Pool layer */ LAYER_ENTRY(OPTIMIZED_CONV2D, 10011, ai_layer_conv2d_nl_pool, forward_conv2d_nl_pool) -/*!< Permute Tensor layer */ -LAYER_ENTRY(PERMUTE, 10012, ai_layer_permute, forward_permute) +/*!< Transpose Tensor layer */ +LAYER_ENTRY(TRANSPOSE, 10012, ai_layer_transpose, forward_transpose) /*!< Pooling layer */ LAYER_ENTRY(POOL, 10013, ai_layer_pool, forward_pool) /*!< Softmax layer */ diff --git a/src/stm32cubeai/AI/Inc/layers_nl.h b/src/stm32cubeai/AI/Inc/layers_nl.h index 2f857b8db..f63442404 100755 --- a/src/stm32cubeai/AI/Inc/layers_nl.h +++ b/src/stm32cubeai/AI/Inc/layers_nl.h @@ -51,7 +51,7 @@ typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_nl_ { * this function pointer abstracts a generic non linear layer. * see @ref nl_func_tanh_array_f32 and similar as examples. */ -typedef void (*func_nl)(ai_handle out, const ai_handle in, +typedef void (*func_nl)(ai_array *out, const ai_array *in, const ai_size size, const ai_handle params); /*! @@ -63,7 +63,7 @@ typedef void (*func_nl)(ai_handle out, const ai_handle in, * @param params opaque handler to optional nl parameters */ AI_INTERNAL_API -void nl_func_sm_channel_f32(ai_handle out, const ai_handle in, +void nl_func_sm_channel_f32(ai_array *out, const ai_array *in, const ai_size channel_size, const ai_handle params); /*! @@ -77,7 +77,7 @@ void nl_func_sm_channel_f32(ai_handle out, const ai_handle in, * @param out_channel_step number of elements to move to next output element */ AI_INTERNAL_API -void nl_func_sm_array_f32(ai_handle out, const ai_handle in, +void nl_func_sm_array_f32(ai_array *out, ai_array *in, const ai_size in_size, const ai_size channel_size, const ai_size in_channel_step, @@ -92,7 +92,7 @@ void nl_func_sm_array_f32(ai_handle out, const ai_handle in, * @param params opaque handler to optional nl parameters */ AI_INTERNAL_API -void nl_func_tanh_array_f32(ai_handle out, const ai_handle in, +void nl_func_tanh_array_f32(ai_array *out, const ai_array *in, const ai_size size, const ai_handle params); /*! @@ -104,7 +104,7 @@ void nl_func_tanh_array_f32(ai_handle out, const ai_handle in, * @param params opaque handler to optional nl parameters */ AI_INTERNAL_API -void nl_func_tanh_array_fixed(ai_handle out, const ai_handle in, +void nl_func_tanh_array_fixed(ai_array *out, const ai_array *in, const ai_size size, const ai_handle params); @@ -117,7 +117,7 @@ void nl_func_tanh_array_fixed(ai_handle out, const ai_handle in, * @param params opaque handler to optional nl parameters */ AI_INTERNAL_API -void nl_func_sigmoid_array_f32(ai_handle out, const ai_handle in, +void nl_func_sigmoid_array_f32(ai_array *out, const ai_array *in, const ai_size size, const ai_handle params); /*! @@ -129,7 +129,7 @@ void nl_func_sigmoid_array_f32(ai_handle out, const ai_handle in, * @param params opaque handler to optional nl parameters */ AI_INTERNAL_API -void nl_func_sigmoid_array_fixed(ai_handle out, const ai_handle in, +void nl_func_sigmoid_array_fixed(ai_array *out, const ai_array *in, const ai_size size, const ai_handle params); @@ -142,9 +142,225 @@ void nl_func_sigmoid_array_fixed(ai_handle out, const ai_handle in, * @param params opaque handler to optional nl parameters */ AI_INTERNAL_API -void nl_func_hard_sigmoid_array_f32(ai_handle out, const ai_handle in, +void nl_func_hard_sigmoid_array_f32(ai_array *out, const ai_array *in, const ai_size size, const ai_handle params); +/*! + * @brief Computes the absolute value function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_abs_array_f32(ai_array *out, const ai_array *in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the cosine function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_cos_array_f32(ai_array *out, const ai_array *in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the inverse cosine function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_acos_array_f32(ai_array *out, const ai_array *in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the hyperbolic cosine function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_cosh_array_f32(ai_array *out, const ai_array *in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the inverse hyperbolic cosine function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_acosh_array_f32(ai_array *out, const ai_array *in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the sine function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_sin_array_f32(ai_array *out, const ai_array *in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the inverse sine function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_asin_array_f32(ai_array *out, const ai_array *in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the hyperbolic sine function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_sinh_array_f32(ai_array *out, const ai_array *in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the inverse hyperbolic sine function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_asinh_array_f32(ai_array *out, const ai_array *in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the tangent function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_tan_array_f32(ai_array *out, const ai_array *in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the inverse tangent function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_atan_array_f32(ai_array *out, const ai_array *in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the inverse hyperbolic tangent function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_atanh_array_f32(ai_array *out, const ai_array *in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the error function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_erf_array_f32(ai_array *out, const ai_array *in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the natural logarithm function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_log_array_f32(ai_array *out, const ai_array *in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the reciprocal square root function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_rsqrt_array_f32(ai_array *out, const ai_array *in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the floor function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_floor_array_f32(ai_array *out, const ai_array *in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the ceil function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_ceil_array_f32(ai_array *out, const ai_array *in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the rounding function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_round_array_f32(ai_array *out, const ai_array *in, + const ai_size size, const ai_handle params); + /*! * @brief Computes the exponential function on a float data array * @ingroup layers_nl @@ -154,9 +370,33 @@ void nl_func_hard_sigmoid_array_f32(ai_handle out, const ai_handle in, * @param params opaque handler to optional nl parameters */ AI_INTERNAL_API -void nl_func_exp_array_f32(ai_handle out, const ai_handle in, +void nl_func_exp_array_f32(ai_array *out, const ai_array *in, const ai_size size, const ai_handle params); +/*! + * @brief Computes the sign negation function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_neg_array_f32(ai_array *out, const ai_array *in, + const ai_size size, const ai_handle params); + +/*! + * @brief Computes the reciprocal function on a float data array + * @ingroup layers_nl + * @param in opaque handler to float, size should be 1 + * @param out opaque handler to float output elem + * @param size number of elements in the input buffer + * @param params opaque handler to optional nl parameters + */ +AI_INTERNAL_API +void nl_func_reciprocal_array_f32(ai_array *out, const ai_array *in, + const ai_size size, const ai_handle params); + /*! * @brief Computes the square root function on a float data array * @ingroup layers_nl @@ -166,7 +406,7 @@ void nl_func_exp_array_f32(ai_handle out, const ai_handle in, * @param params opaque handler to optional nl parameters */ AI_INTERNAL_API -void nl_func_sqrt_array_f32(ai_handle out, const ai_handle in, +void nl_func_sqrt_array_f32(ai_array *out, const ai_array *in, const ai_size size, const ai_handle params); /*! @@ -177,7 +417,7 @@ void nl_func_sqrt_array_f32(ai_handle out, const ai_handle in, * @param size number of elements in the input buffer */ AI_INTERNAL_API -void nl_func_soft_plus_array_f32(ai_handle out, const ai_handle in, +void nl_func_soft_plus_array_f32(ai_array *out, const ai_array *in, const ai_size size, const ai_handle params); /*! @@ -189,7 +429,7 @@ void nl_func_soft_plus_array_f32(ai_handle out, const ai_handle in, * @param params opaque handler to optional nl parameters */ AI_INTERNAL_API -void nl_func_soft_sign_array_f32(ai_handle out, const ai_handle in, +void nl_func_soft_sign_array_f32(ai_array *out, const ai_array *in, const ai_size size, const ai_handle params); /*! @@ -200,7 +440,7 @@ void nl_func_soft_sign_array_f32(ai_handle out, const ai_handle in, * @param size number of elements in the input buffer */ AI_INTERNAL_API -void nl_func_sign_array_f32(ai_handle out, const ai_handle in, +void nl_func_sign_array_f32(ai_array *out, const ai_array *in, const ai_size size, const ai_handle params); /*! @@ -212,7 +452,7 @@ void nl_func_sign_array_f32(ai_handle out, const ai_handle in, * @param params opaque handler to optional nl parameters */ AI_INTERNAL_API -void nl_func_clip_array_f32(ai_handle out, const ai_handle in, +void nl_func_clip_array_f32(ai_array *out, const ai_array *in, const ai_size size, const ai_handle params); /*! @@ -223,7 +463,7 @@ void nl_func_clip_array_f32(ai_handle out, const ai_handle in, * @param axis direction of the max index to be searched */ AI_INTERNAL_API -void nl_func_hardmax_array_f32(ai_handle out, const ai_handle in, +void nl_func_hardmax_array_f32(ai_array *out, const ai_array *in, const ai_shape *shape, const ai_handle params); /*! @@ -235,7 +475,7 @@ void nl_func_hardmax_array_f32(ai_handle out, const ai_handle in, * @param params opaque handler to optional nl parameters */ AI_INTERNAL_API -void nl_func_relu_generic_array_f32(ai_handle out, const ai_handle in, +void nl_func_relu_generic_array_f32(ai_array *out, const ai_array *in, const ai_size size, const ai_handle params); /*! @@ -247,7 +487,7 @@ void nl_func_relu_generic_array_f32(ai_handle out, const ai_handle in, * @param params opaque handler to optional nl parameters */ AI_INTERNAL_API -void nl_func_relu_thresholded_array_f32(ai_handle out, const ai_handle in, +void nl_func_relu_thresholded_array_f32(ai_array *out, const ai_array *in, const ai_size size, const ai_handle params); /*! @@ -259,7 +499,7 @@ void nl_func_relu_thresholded_array_f32(ai_handle out, const ai_handle in, * @param params opaque handler to optional nl parameters */ AI_INTERNAL_API -void nl_func_relu_array_f32(ai_handle out, const ai_handle in, +void nl_func_relu_array_f32(ai_array *out, const ai_array *in, const ai_size size, const ai_handle params); /*! @@ -271,9 +511,19 @@ void nl_func_relu_array_f32(ai_handle out, const ai_handle in, * @param params opaque handler to optional nl parameters */ AI_INTERNAL_API -void nl_func_relu_array_fixed(ai_handle out, const ai_handle in, +void nl_func_relu_array_fixed(ai_array *out, const ai_array *in, const ai_size size, const ai_handle params); +/*! + * @brief Computes the activation function on an integer-quantized data array + * @ingroup layers_nl + * @param in opaque handler to input elements to process + * @param out opaque handler to output elements + * @param size total size (number of elements) to process on the input + * @param params opaque handler to generated and used LUT + */ +void nl_func_array_integer(ai_array *out, const ai_array *in, + const ai_size size, const ai_handle params); /*! * @brief Computes the elu function on a float data array @@ -284,7 +534,7 @@ void nl_func_relu_array_fixed(ai_handle out, const ai_handle in, * @param params opaque handler to optional nl parameters */ AI_INTERNAL_API -void nl_func_elu_array_f32(ai_handle out, const ai_handle in, +void nl_func_elu_array_f32(ai_array *out, const ai_array *in, const ai_size size, const ai_handle params); /*! @@ -296,7 +546,7 @@ void nl_func_elu_array_f32(ai_handle out, const ai_handle in, * @param params opaque handler to optional nl parameters */ AI_INTERNAL_API -void nl_func_relu_max_array_fixed(ai_handle out, const ai_handle in, +void nl_func_relu_max_array_fixed(ai_array *out, const ai_array *in, const ai_size size, const ai_handle params); /*! @@ -308,7 +558,7 @@ void nl_func_relu_max_array_fixed(ai_handle out, const ai_handle in, * @param params opaque handler to optional nl parameters */ AI_INTERNAL_API -void nl_func_selu_array_f32(ai_handle out, const ai_handle in, +void nl_func_selu_array_f32(ai_array *out, const ai_array *in, const ai_size size, const ai_handle params); /*! @@ -321,7 +571,7 @@ void nl_func_selu_array_f32(ai_handle out, const ai_handle in, * @param params opaque handler to optional nl parameters */ AI_INTERNAL_API -void nl_func_prelu_array_f32(ai_handle out, const ai_handle in, +void nl_func_prelu_array_f32(ai_array *out, const ai_array *in, const ai_size size, const ai_handle params); @@ -345,6 +595,15 @@ void forward_relu(ai_layer* layer); AI_INTERNAL_API void forward_relu_fixed(ai_layer *pLayer); +#if 0 +/*! + * @brief Computes the activations of a integer-quantized ReLU nonlinear layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_relu_integer(ai_layer *pLayer); +#endif /*! * @brief Computes the activations of a ReLU6 nonlinear layer. @@ -419,7 +678,6 @@ void forward_sigmoid(ai_layer* layer); AI_INTERNAL_API void forward_sigmoid_fixed(ai_layer *pLayer); - /*! * @brief Computes the activations of a hard sigmoid nonlinear layer. * @ingroup layers_nl @@ -460,6 +718,86 @@ void forward_soft_plus(ai_layer* layer); AI_INTERNAL_API void forward_soft_sign(ai_layer* layer); +/*! + * @brief Computes the activations of a cosine (cos) layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_cos(ai_layer* layer); + +/*! + * @brief Computes the activations of a inverse cosine (acos) layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_acos(ai_layer* layer); + +/*! + * @brief Computes the activations of a hyperbolic cosine (cosh) layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_cosh(ai_layer* layer); + +/*! + * @brief Computes the activations of a inverse hyperbolic cosine (acosh) layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_acosh(ai_layer* layer); + +/*! + * @brief Computes the activations of a sine (sin) layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_sin(ai_layer* layer); + +/*! + * @brief Computes the activations of a inverse sine (asin) layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_asin(ai_layer* layer); + +/*! + * @brief Computes the activations of a hyperbolic sine (sinh) layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_sinh(ai_layer* layer); + +/*! + * @brief Computes the activations of a inverse hyperbolic sine (asinh) layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_asinh(ai_layer* layer); + +/*! + * @brief Computes the activations of a tangent (tan) layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_tan(ai_layer* layer); + +/*! + * @brief Computes the activations of a inverse tangent (atan) layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_atan(ai_layer* layer); + /*! * @brief Computes the activations of a hyperbolic tangent (tanh) layer. * @ingroup layers_nl @@ -468,6 +806,14 @@ void forward_soft_sign(ai_layer* layer); AI_INTERNAL_API void forward_tanh(ai_layer* layer); +/*! + * @brief Computes the activations of a inverse hyperbolic tangent (atanh) layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_atanh(ai_layer* layer); + /*! * @brief Computes the activations of a fixed point tanh nonlinear layer. * @ingroup layers_nl @@ -476,6 +822,85 @@ void forward_tanh(ai_layer* layer); AI_INTERNAL_API void forward_tanh_fixed(ai_layer *pLayer); +/*! + * @brief Computes the activations of a error function (erf) layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_erf(ai_layer* layer); + +/*! + * @brief Computes the activations of a natural logarithm (log) layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_log(ai_layer* layer); + +/*! + * @brief Computes the activations of a reciprocal square root (rsqrt) layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_rsqrt(ai_layer* layer); + +/*! + * @brief Computes the activations of an absolute value (abs) layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_abs(ai_layer* layer); + +/*! + * @brief Computes the activations of a ceil layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_ceil(ai_layer* layer); + +/*! + * @brief Computes the activations of a floor layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_floor(ai_layer* layer); + +/*! + * @brief Computes the activations of a rounding layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_round(ai_layer* layer); + +/*! + * @brief Computes the activations of a sign negation (neg) layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_neg(ai_layer* layer); + +/*! + * @brief Computes the activations of a reciprocal layer. + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_reciprocal(ai_layer* layer); + +/*! + * @brief Hardmax on an input tensors + * @ingroup layers_generic + * @param layer the hardmax layer + */ +AI_INTERNAL_API +void forward_hardmax(ai_layer* layer); /*! * @brief Computes the activations of a softmax nonlinear layer. @@ -485,6 +910,15 @@ void forward_tanh_fixed(ai_layer *pLayer); AI_INTERNAL_API void forward_sm(ai_layer* layer); +/*! + * @brief Computes the activations of an integer quantized nonlinear layer. + * Non linear operation is function of used LUT defined through + * (pLayer->nl_params->data) + * @ingroup layers_nl + * @param layer the nonlinear (nl) layer + */ +AI_INTERNAL_API +void forward_nl_integer(ai_layer *pLayer); AI_API_DECLARE_END diff --git a/src/stm32cubeai/AI/Inc/layers_pool.h b/src/stm32cubeai/AI/Inc/layers_pool.h index 53ca02add..4f2a8b09d 100755 --- a/src/stm32cubeai/AI/Inc/layers_pool.h +++ b/src/stm32cubeai/AI/Inc/layers_pool.h @@ -43,7 +43,7 @@ typedef AI_ALIGNED_TYPE(struct, 4) ai_layer_pool_ { AI_LAYER_COMMON_FIELDS_DECLARE ai_shape_2d pool_size; /*!< pooling size */ ai_shape_2d pool_stride; /*!< pooling stride */ - ai_shape_nd pool_pad; /*!< pooling pad, y,x border sizes */ + ai_shape pool_pad; /*!< pooling pad, y,x border sizes */ ai_u8 count_include_pad; /*!< include pad flag */ } ai_layer_pool; @@ -119,6 +119,33 @@ void pool_func_mp_array_fixed(ai_handle in, const ai_u16 dim_im_out_x, const ai_u16 dim_im_out_y, ai_handle out); +/*! + * @brief Max Pooling on a 8-bits integer quantized data array + * @ingroup layers_pool + * @param in opaque handler to input data to process + * @param dim_im_in_x input feature map width + * @param dim_im_in_y input feature map height + * @param ch_im_in number of input channels + * @param dim_kernel_x kernel width + * @param dim_kernel_y kernel height + * @param padding_x right padding value + * @param padding_y top padding value + * @param stride_x stride value on x dimension + * @param stride_y stride value on y dimension + * @param dim_im_out_x output feature map width + * @param dim_im_out_y output feature map height + * @param out opaque handler to output data + */ +AI_INTERNAL_API +void pool_func_mp_array_integer(ai_handle in, + const ai_u16 dim_im_in_x, const ai_u16 dim_im_in_y, + const ai_u16 ch_im_in, + const ai_u16 dim_kernel_x, const ai_u16 dim_kernel_y, + const ai_u16 padding_x, const ai_u16 padding_y, + const ai_u16 stride_x, const ai_u16 stride_y, + const ai_u16 dim_im_out_x, const ai_u16 dim_im_out_y, + ai_handle out); + /*! * @brief Average Pooling on a float data array * @ingroup layers_pool @@ -146,7 +173,6 @@ void pool_func_ap_array_f32(ai_handle in, const ai_u16 dim_im_out_x, const ai_u16 dim_im_out_y, ai_handle out); - /*! * @brief Average Pooling on a 8/16 bits fixed point data array * @ingroup layers_pool @@ -174,7 +200,34 @@ void pool_func_ap_array_fixed(ai_handle in, const ai_u16 dim_im_out_x, const ai_u16 dim_im_out_y, ai_handle out); - + /*! + * @brief Average Pooling on a 8-bits integer quantized data array + * @ingroup layers_pool + * @param in opaque handler to input data to process + * @param dim_im_in_x input feature map width + * @param dim_im_in_y input feature map height + * @param ch_im_in number of input channels + * @param dim_kernel_x kernel width + * @param dim_kernel_y kernel height + * @param padding_x right padding value + * @param padding_y top padding value + * @param stride_x stride value on x dimension + * @param stride_y stride value on y dimension + * @param dim_im_out_x output feature map width + * @param dim_im_out_y output feature map height + * @param out opaque handler to scratch memory + */ +AI_INTERNAL_API +void pool_func_ap_array_integer(ai_handle in, + const ai_u16 dim_im_in_x, const ai_u16 dim_im_in_y, + const ai_u16 ch_im_in, + const ai_u16 dim_kernel_x, const ai_u16 dim_kernel_y, + const ai_u16 padding_x, const ai_u16 padding_y, + const ai_u16 stride_x, const ai_u16 stride_y, + const ai_u16 dim_im_out_x, const ai_u16 dim_im_out_y, + ai_handle out); + + /******************************************************************************/ /* Forward Functions Section */ /******************************************************************************/ @@ -195,6 +248,13 @@ void forward_mp(ai_layer* layer); AI_INTERNAL_API void forward_mp_fixed(ai_layer *pLayer); +/*! + * @brief Computes the activations of an integer-quantized max pooling layer. + * @ingroup layers_pool + * @param layer the pooling (pool) layer + */ +AI_INTERNAL_API +void forward_mp_integer(ai_layer *pLayer); /*! * @brief Computes the activations of an average pooling layer. @@ -212,6 +272,14 @@ void forward_ap(ai_layer* layer); AI_INTERNAL_API void forward_ap_fixed(ai_layer *pLayer); +/*! + * @brief Computes the activations of an integer-quantized average pooling layer. + * @ingroup layers_pool + * @param layer the pooling (pool) layer + */ +AI_INTERNAL_API +void forward_ap_integer(ai_layer *pLayer); + AI_API_DECLARE_END #endif /*__LAYERS_POOL_H_*/ diff --git a/src/stm32cubeai/AI/Lib/NetworkRuntime400_CM7_GCC.a b/src/stm32cubeai/AI/Lib/NetworkRuntime400_CM7_GCC.a deleted file mode 100755 index 3a3a70b0f5d5bdafa8b2235c969b485b0d61c245..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 412942 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

t6IxID2yj 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 diff --git a/src/stm32cubeai/AI/Lib/NetworkRuntime410_CM7_GCC.a b/src/stm32cubeai/AI/Lib/NetworkRuntime410_CM7_GCC.a new file mode 100755 index 0000000000000000000000000000000000000000..6e59de6a4a23c9946aa9d78d6a5d7879102fcba3 GIT binary patch literal 926524 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
<3-#+lk`ig6+M{!MJ9s{39i*Rv` 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%0AJH@UIGl)M{I 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л8P1Bz zXbo)Y{kt*Vo6=`m)h%rL?Z??P)_b30HqNtf#ZTwH2ruW%k)K}yL|c~4Cb20SJ6<8p zox^Ay<(EpE1NClgh`;?rz~WYf_yF^dc0jk%uEdFg(NGq>EmLcw&~lQ{BGpry>ET)pYE`2G8c$L{<=$?1!ly+Ej}nzL+=d2iNYvqH&Bo}b zk9TVJrQpqFz@saQOAPA`ucjP@b^oTrF01+g#^TVr6ph;riws)mo+|X(W>rWsTLEoR zWp*>@ZUn|%(M~6hMz(OSLdGWZUGTClkv7PixaMV{Hr3*^+vk zJaK~CkgL{{u2jFDbKz{AUd@zU35}9TkD8T1Nw3tmOv=28(3Cs$iUu}8vxiMi#2)yy zLy5U^>gD_OE!YX!hlG({@3=cpT}NktUP}X)>oGnR?STE*0lP4t*E{4mwHoX+p}6m_NZG^C?wHE#aM@P_0cd1{5|$Wr^WXI%&*R89kjv z-HkZ6<95#O_^(t$Kx$h98fme#@}GSwd5Pg{+Nh8`MUr9=?%u zOf-|&>2CRf6$Uy-gUAK$@VsO?G$Hjpa`2i1^KkC$Qt&;|(g{4yNt}=M%Vtw_UD8J4 ze@(;KvSp#shpRBRSfIhQj`<2bokop5nNP3I1PJ3XxQM-TpnRmeP4(!}&J@~<- zKR~Nb`vcO{N$+`+Wdyj+Q|!Tr4};cYL#^X9xO%&Rr`_d~W8IH}$LBi=K(hzCBsp^G zhW5!r)*pI!>p0ixK(#a3I=(?yCg1m5A9K>_OX$y?N{Zm2<$|jBwL#U#oNp!97HEQ$ zm(~*J&8ULcIcHik>5IAgG*|_2<_S%Ut>)Zxmv-;zKrwiaem7KN%=NUNw6uQ|Ra$sb zn`&;5?v$$jbRfl9VlW$2 zPI`aU0WQQS9tv{hPU3(H@O7CD^Wg*!wR820um*e=BsP<}AkkZFp=5nFN%VSY)3T7> z4~ed?Hd8EXQ;N(b#MH1Wn`8$jj^Ue>`_O9ffJD!9Z^+|93PGOpkms3@=Nae^s|Yz( zkJT!%YnrsZ5^Y!hB#UPMxwHQRo~^eNCup0t8g9t*LZUaBwa%YHqW=}VIx>n^Ydp1( zRtHT2A7wHBZS;0&$zA?sMzIB2!q zc08*_{26~%m9_;uSd6jRDL+b(>EJ>S{f#odg@ez(YTT!Iu5OXiTiWnf2uTk}^BoMk zsa;*iH66wIHVNaqMjnuif7mR84T92VQ>yk$yn2_4ew#8y6Y=ag@T}XR#P75nHu+wf zi*0Dj?gXd0x8(8rr-E1Q5nkQWK@tdS0yKPtjJt0)fh>{&$cP7f&(dcm>T9jK4xSB1!XkisIr77y_2s91hg zkhB(`5&89O+IAyOjVJsr!mW0JTS@W~zwSH5gI|*ce&wAs2YiHIlaZ?s_;nNb$44yxyp;+kQra5mcD5 zW_qk2Nu74$dQCIE#Z##oaEIG-5Pjf zl)E@B-_YFWEXIjka6___VkogJt~UG^`9Azb&V8)#tyGZImF^4wb)8+++;_gzO?R1d z7lZ4w&0l-D+jkMU+jjxE+xMw*SCHg_+(rAbeEen0UG@PYb9_m1*D1(dcZ}R^hGh%M zU2w160LfeKoG3`%(}5Dm-1(5X-+*rj{6=Ts-67;|*${H~YC-Pq5ae!#Aa~0kckPgs zm5{p*$ldD)$z9!fa#ttFUHf@**8#aZ5^}c^ZIus_yX8@GciVY#x8hRC-M&weyMy_4 zK<@T^s@xU%RbfQivHThA$Q9L$=#-Yx!VM}TV{`zyY48ts~6<%M?Lu6KkjHxv6{R#vuCP2^IwO*=Cq?d zIYNoKcclZKoYNK=Og-b&@Yt*tX$#0>vrsOfay+q0cp{HHHmix=q>gTB9+eN#&hNXj zynlLcpxvua(Nl|zrXERuU#X|42PzxaU-qNpM6t*yjz@WlY6tSCPX6h=b83l$#-Z=g z3qG5V_`KUC9>ejCewKTG_n+;o4S(Msk=p&4@+rg{71e9V_>(0rvFe+V-*ZOm~)iE$z9 zzqg;c_i)=kWRD`=VHN$Q=U4!P2hoGEq+9~81(FKkyIA-xi@Gln?s<-k{3MwiyB&{y z5l#)rX66EJj!UImE*4_W6tV4t{f1ybHZEe@2g47+0?bIp9Z2f1|6ewiu@uU~`Yx5O z2F5_bV1GkZupnW;5|Ci-HG!`1ACg5^5Ko~i8k0{zV zVHU`Ijl+a|Q3E53n;{35n^Yz(5C;Z>I$>Z~nJ;Q!WcoAYz;cq-N>_;kgH4ezFtErM zHL&5$7#LU>7f&bu?XT4MS_?V#41)ARf1R)3}ewQwhLouTQEsPU$JRUY(XTC2|Uk;`IRAP zsa;`=k-7k`CKS+k=~XCU;m>pHo&til=m!N#L1GK`e~~PE9WVM5;U&b9@O3;cG)6I1 zqLYbYCh9s9_e3Ym6Rs_wySd-~alkk^)`uk6dH>U54L}!|C@V=)`^@ z$%I7h##G@==OO0{boZMwTHj< zghcJZhJM~qQ3Wn!Lx0WO*;pr5<$wvOQ zL3tH>J1S4B`JYjFvI&1LDo=mF`=j!-ceLn?`nwUb`m1E4U3f$8^fj!gh{CLH{{H5Q z()F9ik6*vBWJ`Hz*d%(e{q(hLe8rGP&i$cQKP@=GAhTige5pMDUpveCm2%l5OuA{B z#dOQ^{Gx?9ONuOoi*C&?q>|+~-!yyH!g+IMS5{Isr|_ntn{sYm7=2%qchfw|7Zq7; zw-nh5^Oxr@z4@Cnsc2!&@*<%H$_Qi|zxWW0I5i-=!^(oy-!n~{R=S~N-Kq`WEMHeq zQC^Dt8vB-S=EZ&V4CTW>w9AZ4Abf8K%&}?R*3wPn_xuVn8pR5hUQw>t!x12a z6t4o_|C3l^4cj-;s&Qp^Gz;FmtG$xFYyzxZ%?>R*aX8NR_ForV@nK!?J0JFTW@-)a z1)>i=cqZjI?il$4f!F>OB{6bzDEGk?c<4ivikNiS7Y2`TUUj?vSeY zjB7SEC1a!p=VTX~YWCk)#Y{!r5*72m=-@+qpWa!}&C6i9<52k)!5_^Io5J@PyzrB^ z`0Je`dd=|RUuk;2k9pVx*myXyU~gveFj!J%w2y$Mc)kr*A5PR1kEl;*P=#3W{kh9d z!hem9VqU(~$K1*LVJYW^y>#93Jfg*nK<90MMw09YnU{k_t?sEU`I#r>u=6^NsH+;^ zVvW|Pk+s6h%rm*NQ@mrLquQ}^Op>=Nz})au6oSVScs{>wDr~%v-}Ujh0Qbacl>N3_ zqs`@$5YY+g@zAOp3nXDDQOdHrg_-m+>QP*AH^f#**>*XRj+o*F{Tug ztVZjiu}NzsHEn^6Y{8Nc{?5~!SuPDMR+*FHwyKaLI~QHUdV|B_NYUZl4>Ixx4qX_m zfMJylA2!g+nzC9LwbO1$&9mtDfGXQ;s0ZCGhw;`9Pd@XPRyZ5bt3|5RhPxl{m@)5qMg1>x`FXjv0=NBQG1KxmP^xmAj!~^6nAN=TNxaz?_ zGpoQEW_XH`qlYC~`wF_7mN>~8u^paeoUimsu>LZ5P-o__zkIF+-trfRz2#@QDlA7u zZ}}?wFOEq_A9TfU6VKLWoni{Te$g&9__vM3MvZ#hH{`Kj=b|CX0s z&9en(HXkm|B~CmPn9oeGl5Fdn?=f3o*A9YP z(v}6AG&7#9G#v_&)f8|EbwCEEHvDh z-+n3?u^{j!Uc5*4$OdOFc|}S=Tv@qO?SjAkzBF(w@vGLwYKd1fvWaiOci`3tr-Ba; z;*Ak8qi;tx-bugJ(2%kIWiascCR9){-PdMFS9f}fXSH5aQv zM@uFqOpB1_;X8UbPXdw?>xe+SzafUs13D!U#H3in|6f42Glqt;CHO=mxMrZKG+%h_ z{>aV>K7#eS#2ZqN93BbfrEp_jbxtDg)hckm#49`i(}SXUv|PeT``#&Aet__S|dd z&ze7LXzwf6%)d6`tmWd!@gKqv|JM#VCRBcamwM0ryRZ`BFG7xgHz=yFMv_aS@_!Ypa3y5L*q%q!hXe&Wx*HuX9Slc4mAjm-nzE5 zsH}8VN$I9}@Ut-xWA=QA`NGaA0JUC1w-dQ@W`EUyW?>Bo4vu5Z)20E5zO!ia7Q1~@ z>E_KQTj@-QyJ-YUuLUT5tJSvknxc}KbCEA8U$>f^udH2nrzr#Oc5ItA-U%l(ChI!* zP&Q>&&YwGZ<)WNI)AF#&B?(v6$euPUEjmSLK<=!=KvBL{@zSo4NESB4c`!*hxa@IsukIM)2Xox3>J9LJjD zSaTd}j$_T!rfn@>H5q>-hyRqop9z~*ZTdc=zZXy_{2c=A@8)$IH?X-Zj5ViNYdzKd zXmi^AV;VJ1L&Kyd$=(UgNg=79uhY1IbFo9f_1f@}`5ZDm)9wAKb#@2k@iChYTxD$z zR2MU##5ilj4)Qp^sj4_)vYwAG4@8s22}oAZoqA&$V#Q`2VaI_jKVdd@0z(Aqr&(`Q zgi=*Y;WzrNPI$*|NkGr{%N4#~O4N0#nxc+zE>)Ad8L>BkG&^t}qD1iFj()YPdK_sl z_qfw=W+UrNPi`8WA~E;Qp)(^{blz`O&yT6@x-&g_Lfu3

@0KMf}m@YHIdCY5Tg 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 Note: It is recommended to use Linux to build the firmware. Even if it is still possible to do it with Windows, you may run into some issues, for example because of symbolic links in the project. If you're on Windows, you can use [Windows Subsystem for Linux (WSL)](https://docs.microsoft.com/en-us/windows/wsl/install-win10), it will provide a full Linux environnement and the compilation will be painless. -- stm32ai command line to generate the optimized code. [Download from ST website]( https://www.st.com/en/embedded-software/x-cube-ai.html) +- stm32ai command line to generate the optimized code. **Version 4.1.0** [Download from ST website]( https://www.st.com/en/embedded-software/x-cube-ai.html) If you have the extension already enabled in Cube.MX, just add `/STM32Cube/Repository/Packs/STMicroelectronics/X-CUBE-AI//Utilities//` diff --git a/src/stm32cubeai/cube.mk b/src/stm32cubeai/cube.mk index dea0e57a8..5c7dc13a3 100755 --- a/src/stm32cubeai/cube.mk +++ b/src/stm32cubeai/cube.mk @@ -25,4 +25,4 @@ FIRM_OBJ += $(addprefix $(BUILD)/stm32cubeai/,\ py_st_nn.o \ ) -FIRM_OBJ += -l:NetworkRuntime400_CM7_GCC.a -Lstm32cubeai/AI/Lib -lc -lm +FIRM_OBJ += -l:NetworkRuntime410_CM7_GCC.a -Lstm32cubeai/AI/Lib -lc -lm From 98bb29b80a8e34ef7bedca7092e7e0c5373a0630 Mon Sep 17 00:00:00 2001 From: Thibaut Vercueil Date: Fri, 18 Oct 2019 17:02:21 +0200 Subject: [PATCH 03/11] Updated script for MNIST --- src/stm32cubeai/Readme.md | 4 ++-- src/stm32cubeai/sample_script.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/stm32cubeai/Readme.md b/src/stm32cubeai/Readme.md index d1d3bf332..6245054f5 100755 --- a/src/stm32cubeai/Readme.md +++ b/src/stm32cubeai/Readme.md @@ -152,8 +152,8 @@ while(True): nn_input_sz, nn_input_sz)) - # Cleanup image and binarize it (you may uptade the theshold) - img.histeq(adaptive=True, clip_limit=2).binary([(0,180)]) + # Binarize the image + img.midpoint(2, bias=0.5, threshold=True, offset=5, invert=True) # [CUBE.AI] Run the inference out = net.predict(img) diff --git a/src/stm32cubeai/sample_script.py b/src/stm32cubeai/sample_script.py index f07a1fd06..f2aaf27ec 100644 --- a/src/stm32cubeai/sample_script.py +++ b/src/stm32cubeai/sample_script.py @@ -27,8 +27,8 @@ while(True): nn_input_sz, nn_input_sz)) - # Cleanup image and binarize it (you may uptade the theshold) - img.histeq(adaptive=True, clip_limit=2).binary([(0,180)]) + # Binarize the image + img.midpoint(2, bias=0.5, threshold=True, offset=5, invert=True) # [CUBE.AI] Run the inference out = net.predict(img) From 5ed04c4cbbe6e75b4aeed3f3fb2f3f0b198d3ed0 Mon Sep 17 00:00:00 2001 From: Thibaut Vercueil Date: Fri, 18 Oct 2019 17:13:27 +0200 Subject: [PATCH 04/11] Updated & renamed example script --- src/stm32cubeai/Readme.md | 9 ++++----- src/stm32cubeai/{sample_script.py => example_scirpt.py} | 4 ++-- 2 files changed, 6 insertions(+), 7 deletions(-) rename src/stm32cubeai/{sample_script.py => example_scirpt.py} (91%) diff --git a/src/stm32cubeai/Readme.md b/src/stm32cubeai/Readme.md index 6245054f5..2206e9e13 100755 --- a/src/stm32cubeai/Readme.md +++ b/src/stm32cubeai/Readme.md @@ -120,7 +120,7 @@ Open OpenMV IDE. From the toolbar select `Tools > Run Bootloader`. Select the fi Open OpenMV IDE, and click the *Connect* button on the bottom-right side. -You can start from this sample code, running the MNIST example we used bellow (The code is provided as `sample_script.py` in this directory) +You can start from this example code, running the MNIST example we used bellow (The code is provided as `example_script.py` in this directory) ```python # STM32 CUBE.AI on OpenMV MNIST Example @@ -131,9 +131,9 @@ sensor.reset() # Reset and initialize the sensor. sensor.set_contrast(3) sensor.set_brightness(0) sensor.set_auto_gain(True) -sensor.set_auto_exposure(False, exposure_us=700) +sensor.set_auto_exposure(True) sensor.set_pixformat(sensor.GRAYSCALE) # Set pixel format to Grayscale -sensor.set_framesize(sensor.QQVGA) # Set frame size to 160x120 +sensor.set_framesize(sensor.QQQVGA) # Set frame size to 80x60 sensor.skip_frames(time = 2000) # Wait for settings take effect. clock = time.clock() # Create a clock object to track the FPS. @@ -152,7 +152,7 @@ while(True): nn_input_sz, nn_input_sz)) - # Binarize the image + # Binarize the image img.midpoint(2, bias=0.5, threshold=True, offset=5, invert=True) # [CUBE.AI] Run the inference @@ -160,7 +160,6 @@ while(True): print('Network argmax output: {}'.format( out.index(max(out)) )) img.draw_string(0, 0, str(out.index(max(out)))) print('FPS {}'.format(clock.fps())) # Note: OpenMV Cam runs about half as fast when connected - ``` The code should yield the following output: diff --git a/src/stm32cubeai/sample_script.py b/src/stm32cubeai/example_scirpt.py similarity index 91% rename from src/stm32cubeai/sample_script.py rename to src/stm32cubeai/example_scirpt.py index f2aaf27ec..a0767adf1 100644 --- a/src/stm32cubeai/sample_script.py +++ b/src/stm32cubeai/example_scirpt.py @@ -6,9 +6,9 @@ sensor.reset() # Reset and initialize the sensor. sensor.set_contrast(3) sensor.set_brightness(0) sensor.set_auto_gain(True) -sensor.set_auto_exposure(False, exposure_us=700) +sensor.set_auto_exposure(True) sensor.set_pixformat(sensor.GRAYSCALE) # Set pixel format to Grayscale -sensor.set_framesize(sensor.QQVGA) # Set frame size to 160x120 +sensor.set_framesize(sensor.QQQVGA) # Set frame size to 80x60 sensor.skip_frames(time = 2000) # Wait for settings take effect. clock = time.clock() # Create a clock object to track the FPS. From 6516fc1b5d453f1d58969fc4ff2ab76504ce2847 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Fri, 18 Oct 2019 19:07:56 +0200 Subject: [PATCH 05/11] Append stm32cubeai qstrs to OMV_QSTR_DEFS instead of overriding. --- src/Makefile | 6 +- src/stm32cubeai/cube.mk | 4 +- src/stm32cubeai/qstrdefscubeai.h | 1168 +----------------------------- 3 files changed, 6 insertions(+), 1172 deletions(-) diff --git a/src/Makefile b/src/Makefile index 018d20944..a305469d7 100755 --- a/src/Makefile +++ b/src/Makefile @@ -530,14 +530,14 @@ endif FIRMWARE_OBJS: $(MAKE) -C $(CMSIS_DIR) BUILD=$(BUILD)/$(CMSIS_DIR) CFLAGS="$(CFLAGS) -fno-strict-aliasing -MMD" $(MAKE) -C $(STHAL_DIR) BUILD=$(BUILD)/$(STHAL_DIR) CFLAGS="$(CFLAGS) -MMD" - $(MAKE) -C $(MICROPY_DIR)/ports/stm32 BUILD=$(BUILD)/$(MICROPY_DIR) BOARD=$(TARGET) QSTR_DEFS=$(OMV_QSTR_DEFS) + $(MAKE) -C $(MICROPY_DIR)/ports/stm32 BUILD=$(BUILD)/$(MICROPY_DIR) BOARD=$(TARGET) QSTR_DEFS="$(OMV_QSTR_DEFS)" $(MAKE) -C $(LEPTON_DIR) BUILD=$(BUILD)/$(LEPTON_DIR) CFLAGS="$(CFLAGS) -MMD" $(MAKE) -C $(MLX_DIR) BUILD=$(BUILD)/$(MLX_DIR) CFLAGS="$(CFLAGS) -MMD" + $(MAKE) -C $(WINC1500_DIR) BUILD=$(BUILD)/$(WINC1500_DIR) CFLAGS="$(CFLAGS) -MMD" + $(MAKE) -C $(OMV_DIR) BUILD=$(BUILD)/$(OMV_DIR) CFLAGS="$(CFLAGS) -MMD" ifneq ($(CUBEAI),) $(MAKE) -C $(TOP_DIR)/stm32cubeai BUILD=$(BUILD)/stm32cubeai CFLAGS="$(CFLAGS) -fno-strict-aliasing -MMD" endif - $(MAKE) -C $(WINC1500_DIR) BUILD=$(BUILD)/$(WINC1500_DIR) CFLAGS="$(CFLAGS) -MMD" - $(MAKE) -C $(OMV_DIR) BUILD=$(BUILD)/$(OMV_DIR) CFLAGS="$(CFLAGS) -MMD" # This target generates the main/app firmware image located at 0x08010000 $(FIRMWARE): FIRMWARE_OBJS diff --git a/src/stm32cubeai/cube.mk b/src/stm32cubeai/cube.mk index 5c7dc13a3..80b9fe8ac 100755 --- a/src/stm32cubeai/cube.mk +++ b/src/stm32cubeai/cube.mk @@ -4,8 +4,8 @@ # # This work is licensed under the MIT license, see the file LICENSE for details. -# Overwrite OMV_QSTR_DEFS -OMV_QSTR_DEFS = $(TOP_DIR)/stm32cubeai/qstrdefscubeai.h +# Append to OMV_QSTR_DEFS +OMV_QSTR_DEFS += $(TOP_DIR)/stm32cubeai/qstrdefscubeai.h #CFLAGS += '-DMP_CONFIGFILE=<$(TOP_DIR)/stm32cubeai/mpconfigportcubeai.h>' diff --git a/src/stm32cubeai/qstrdefscubeai.h b/src/stm32cubeai/qstrdefscubeai.h index 8ae8a8d31..612fcfad9 100755 --- a/src/stm32cubeai/qstrdefscubeai.h +++ b/src/stm32cubeai/qstrdefscubeai.h @@ -6,1175 +6,9 @@ * * This work is licensed under the MIT license, see the file LICENSE for details. * - * qstrs specific to openmv + stm32cubeai + * qstrs specific to stm32cubeai */ -// OMV Module -Q(omv) -Q(version_major) -Q(version_minor) -Q(version_patch) -Q(version_string) -Q(arch) -Q(board_type) -Q(board_id) - -// Image module -Q(image) -Q(binary_to_grayscale) -Q(binary_to_rgb) -Q(binary_to_lab) -Q(binary_to_yuv) -Q(grayscale_to_binary) -Q(grayscale_to_rgb) -Q(grayscale_to_lab) -Q(grayscale_to_yuv) -Q(rgb_to_binary) -Q(rgb_to_grayscale) -Q(rgb_to_lab) -Q(rgb_to_yuv) -Q(lab_to_binary) -Q(lab_to_grayscale) -Q(lab_to_rgb) -Q(lab_to_yuv) -Q(yuv_to_binary) -Q(yuv_to_grayscale) -Q(yuv_to_rgb) -Q(yuv_to_lab) -Q(HaarCascade) -Q(search) -Q(SEARCH_EX) -Q(SEARCH_DS) -Q(EDGE_CANNY) -Q(EDGE_SIMPLE) -Q(CORNER_FAST) -Q(CORNER_AGAST) -Q(load_descriptor) -Q(save_descriptor) -Q(match_descriptor) - -// Image class -Q(find_template) -Q(kp_desc) -Q(lbp_desc) -Q(Cascade) -Q(cmp_lbp) -Q(find_features) -Q(find_keypoints) -Q(find_lbp) -Q(find_eye) -Q(find_edges) -Q(find_hog) -Q(normalized) -Q(filter_outliers) -Q(scale_factor) -Q(max_keypoints) -Q(corner_detector) -Q(kptmatch) -Q(selective_search) -Q(a1) -Q(a2) -Q(a3) - -// Lcd Module -Q(lcd) -Q(type) -Q(set_backlight) -Q(get_backlight) -Q(display) -Q(clear) - -// tv Module -Q(tv) -Q(channel) -Q(type) -Q(display) -Q(palettes) - -// Gif module -Q(gif) -Q(Gif) -Q(open) -Q(add_frame) -Q(loop) - -// Mjpeg module -Q(mjpeg) -Q(Mjpeg) - -// Led Module -Q(led) -Q(RED) -Q(GREEN) -Q(BLUE) -Q(IR) -Q(on) -Q(off) -Q(toggle) - -// Time Module -Q(time) -Q(ticks) -Q(sleep) -Q(clock) -Q(Clock) - -// Clock -Q(tick) -Q(fps) -Q(avg) - -//Sensor Module -Q(sensor) -Q(BINARY) -Q(GRAYSCALE) -Q(RGB565) -Q(YUV422) -Q(BAYER) -Q(JPEG) -Q(OV9650) -Q(OV2640) -Q(OV7725) -Q(MT9V034) -Q(LEPTON) -Q(value) -Q(shutdown) - -// NN Module -Q(load) - -// Net -Q(Net) - -// Forward -Q(forward) -Q(dry_run) -Q(softmax) - -// Search -// duplicate Q(search) -// duplicate Q(roi) -// duplicate Q(threshold) -Q(min_scale) -Q(scale_mul) -Q(x_overlap) -Q(y_overlap) -Q(contrast_threshold) -// duplicate Q(softmax) -// NN Class -Q(nn_class) -// duplicate Q(x) -// duplicate Q(y) -// duplicate Q(w) -// duplicate Q(h) -// duplicate Q(index) -// duplicate Q(value) - -// C/SIF Resolutions -Q(QQCIF) -Q(QCIF) -Q(CIF) -Q(QQSIF) -Q(QSIF) -Q(SIF) -// VGA Resolutions -Q(QQQQVGA) -Q(QQQVGA) -Q(QQVGA) -Q(QVGA) -Q(VGA) -Q(HQQQVGA) -Q(HQQVGA) -Q(HQVGA) -// FFT Resolutions -Q(B64X32) -Q(B64X64) -Q(B128X64) -Q(B128X128) -// Other -Q(LCD) -Q(QQVGA2) -Q(WVGA) -Q(WVGA2) -Q(SVGA) -Q(XGA) -Q(SXGA) -Q(UXGA) - -//SDE -Q(NORMAL) -Q(NEGATIVE) - -//IOCTLs -Q(IOCTL_SET_TRIGGERED_MODE) -Q(IOCTL_GET_TRIGGERED_MODE) -Q(IOCTL_LEPTON_GET_WIDTH) -Q(IOCTL_LEPTON_GET_HEIGHT) -Q(IOCTL_LEPTON_GET_RADIOMETRY) -Q(IOCTL_LEPTON_GET_REFRESH) -Q(IOCTL_LEPTON_GET_RESOLUTION) -Q(IOCTL_LEPTON_RUN_COMMAND) -Q(IOCTL_LEPTON_SET_ATTRIBUTE) -Q(IOCTL_LEPTON_GET_ATTRIBUTE) -Q(IOCTL_LEPTON_GET_FPA_TEMPERATURE) -Q(IOCTL_LEPTON_GET_AUX_TEMPERATURE) -Q(IOCTL_LEPTON_SET_MEASUREMENT_MODE) -Q(IOCTL_LEPTON_GET_MEASUREMENT_MODE) -Q(IOCTL_LEPTON_SET_MEASUREMENT_RANGE) -Q(IOCTL_LEPTON_GET_MEASUREMENT_RANGE) - -// Color Palettes -Q(PALETTE_RAINBOW) -Q(PALETTE_IRONBOW) - -Q(reset) -Q(flush) -Q(snapshot) -Q(skip_frames) -Q(get_fb) -Q(get_id) -Q(alloc_extra_fb) -Q(dealloc_extra_fb) -Q(set_pixformat) -Q(set_framerate) -Q(set_framesize) -Q(set_vsync_output) -Q(set_binning) -Q(set_windowing) -Q(set_gainceiling) -Q(set_contrast) -Q(set_brightness) -Q(set_saturation) -Q(set_quality) -Q(set_colorbar) -Q(set_auto_gain) -Q(gain_db) -Q(gain_db_ceiling) -Q(get_gain_db) -Q(set_auto_exposure) -Q(exposure_us) -Q(get_exposure_us) -Q(set_auto_whitebal) -Q(rgb_gain_db) -Q(get_rgb_gain_db) -Q(set_hmirror) -Q(set_vflip) -Q(set_special_effect) -Q(set_lens_correction) -Q(ioctl) -Q(set_color_palette) -Q(get_color_palette) -Q(__write_reg) -Q(__read_reg) - -// GPIOS -Q(P1) -Q(P2) -Q(P3) -Q(P4) -Q(P5) -Q(P6) -Q(PA1) -Q(PA2) -Q(PA3) -Q(PA4) -Q(PA5) -Q(PA6) -Q(PA7) -Q(PA8) -Q(PB1) -Q(PB2) -Q(PB3) -Q(PB4) -Q(IN) -Q(OUT) -Q(gpio) -Q(GPIO) -Q(low) -Q(high) - -// SPI -Q(spi) -Q(read) -Q(write) -Q(write_image) - -// UART -Q(uart) - -// File -Q(file) -Q(close) - -//Wlan -Q(wlan) -Q(WEP) -Q(WPA) -Q(WPA2) -Q(init) -Q(connect) -Q(connected) -Q(ifconfig) -Q(patch_version) -Q(patch_program) -Q(socket) -Q(send) -Q(recv) -Q(bind) -Q(listen) -Q(accept) -Q(settimeout) -Q(setblocking) -Q(select) -Q(AF_INET) -Q(AF_INET6) -Q(SOCK_STREAM) -Q(SOCK_DGRAM) -Q(SOCK_RAW) -Q(IPPROTO_IP) -Q(IPPROTO_ICMP) -Q(IPPROTO_IPV4) -Q(IPPROTO_TCP) -Q(IPPROTO_UDP) -Q(IPPROTO_IPV6) -Q(IPPROTO_RAW) - -// for WINC1500 module -Q(WINC) -Q(connect) -Q(start_ap) -Q(disconnect) -Q(isconnected) -Q(connected_sta) -Q(wait_for_sta) -Q(ifconfig) -Q(netinfo) -Q(fw_version) -Q(fw_dump) -Q(fw_update) -Q(scan) -Q(rssi) -Q(OPEN) -Q(WEP) -Q(WPA_PSK) -Q(802_1X) -Q(MODE_STA) -Q(MODE_AP) -Q(MODE_P2P) -Q(MODE_BSP) -Q(MODE_FIRMWARE) -Q(ssid) -Q(key) -Q(security) -Q(bssid) - -// cpufreq Module -Q(cpufreq) -Q(set_frequency) -Q(get_current_frequencies) -Q(get_supported_frequencies) - -// Image Class -Q(Image) -Q(copy_to_fb) - -// Width -Q(width) - -// Height -Q(height) - -// Format -Q(format) - -// Size -Q(size) - -// Get Pixel -Q(get_pixel) -Q(rgbtuple) - -// Set Pixel -Q(set_pixel) -Q(color) - -// Mean Pool -Q(mean_pool) - -// Mean Pooled -Q(mean_pooled) - -// Midpoint Pool -Q(midpoint_pool) -Q(bias) - -// Midpoint Pooled -Q(midpoint_pooled) -// duplicate Q(bias) - -// To Bitmap -Q(to_bitmap) -Q(copy) -Q(rgb_channel) - -// To Grayscale -Q(to_grayscale) -// duplicate Q(copy) -// duplicate Q(rgb_channel) - -// To RGB565 -Q(to_rgb565) -// duplicate Q(copy) -// duplicate Q(rgb_channel) - -// To Rainbow -Q(to_rainbow) -// duplicate Q(copy) -// duplicate Q(rgb_channel) -Q(color_palette) - -// Compress (in place) -Q(compress) -Q(quality) - -// Compress for IDE (in place) -Q(compress_for_ide) -// duplicate Q(quality) - -// Compressed (out of place) -Q(compressed) -// duplicate Q(quality) - -// Compressed for IDE (out of place) -Q(compressed_for_ide) -// duplicate Q(quality) - -// Encode for IDE (in place) -Q(jpeg_encode_for_ide) - -// Encoded for IDE (out of place) -Q(jpeg_encoded_for_ide) - -// Copy -// duplicate Q(copy) -Q(crop) -Q(scale) -Q(roi) -Q(x_scale) -Q(y_scale) -// duplicate Q(copy_to_fb) - -// Save -Q(save) - -// Clear -Q(clear) -Q(mask) - -// Draw Line -Q(draw_line) -// duplicate Q(color) -Q(thickness) - -// Draw Rectangle -Q(draw_rectangle) -// duplicate Q(color) -// duplicate Q(thickness) -Q(fill) - -// Draw Circle -Q(draw_circle) -// duplicate Q(color) -// duplicate Q(thickness) -// duplicate Q(fill) - -// Draw Ellipse -Q(draw_ellipse) -// duplicate Q(color) -// duplicate Q(thickness) -// duplicate Q(fill) - -// Draw String -Q(draw_string) -// duplicate Q(color) -// duplicate Q(scale) -Q(x_spacing) -Q(y_spacing) -Q(mono_space) -Q(char_rotation) -Q(char_hmirror) -Q(char_vflip) -Q(string_rotation) -Q(string_hmirror) -Q(string_vflip) - -// Draw Cross -Q(draw_cross) -// duplicate Q(color) -// duplicate Q(size) -// duplicate Q(thickness) - -// Draw Arrow -Q(draw_arrow) -// duplicate Q(color) -// duplicate Q(size) -// duplicate Q(thickness) - -// Draw Edges -Q(draw_edges) -// duplicate Q(color) -// duplicate Q(size) -// duplicate Q(thickness) -// duplicate Q(fill) - -// Draw Image -Q(draw_image) -// duplicate Q(x_scale) -// duplicate Q(y_scale) -Q(alpha) -// duplicate Q(mask) - -// Draw Keypoints -Q(draw_keypoints) -// duplicate Q(color) -// duplicate Q(size) -// duplicate Q(thickness) -// duplicate Q(fill) - -// Flood Fill -Q(flood_fill) -Q(seed_threshold) -Q(floating_threshold) -// duplicate Q(color) -Q(invert) -Q(clear_background) -// duplicate Q(mask) - -// Mask Rectangle -Q(mask_rectangle) - -// Mask Circle -Q(mask_circle) - -// Mask Ellipse -Q(mask_ellipse) - -// Binary -Q(binary) -// duplicate Q(invert) -Q(zero) -// duplicate Q(mask) -// duplciate Q(to_bitmap) -// duplicate Q(copy) - -// Invert -// duplicate Q(invert) - -// And -Q(and) -Q(b_and) -// duplicate Q(mask) - -// Nand -Q(nand) -Q(b_nand) -// duplicate Q(mask) - -// Or -Q(or) -Q(b_or) -// duplicate Q(mask) - -// Nor -Q(nor) -Q(b_nor) -// duplicate Q(mask) - -// Xor -Q(xor) -Q(b_xor) -// duplicate Q(mask) - -// Xnor -Q(xnor) -Q(b_xnor) -// duplicate Q(mask) - -// Erode -Q(erode) -// duplicate Q(threshold) -// duplicate Q(mask) - -// Dilate -Q(dilate) -Q(threshold) -// duplicate Q(mask) - -// Open -// duplicate Q(open) -// duplicate Q(threshold) -// duplicate Q(mask) - -// Close -// duplicate Q(close) -// duplicate Q(threshold) -// duplicate Q(mask) - -// Top Hat -Q(top_hat) -// duplicate Q(threshold) -// duplicate Q(mask) - -// Black Hat -Q(black_hat) -// duplicate Q(threshold) -// duplicate Q(mask) - -// Gamma Correct -Q(gamma_corr) -Q(gamma) -Q(contrast) -Q(brightness) - -// Negate -Q(negate) - -// Assign/Replace/Set -Q(assign) -Q(replace) -Q(set) -Q(hmirror) -Q(vflip) -Q(transpose) -// duplicate Q(mask) - -// Add Op -Q(add) -// duplicate Q(mask) - -// Sub Op -Q(sub) -Q(reverse) -// duplicate Q(mask) - -// Mul Op -Q(mul) -// duplicate Q(invert) -// duplicate Q(mask) - -// Div Op -Q(div) -// duplicate Q(invert) -Q(mod) -// duplicate Q(mask) - -// Min -// duplicate Q(min) -// duplicate Q(mask) - -// Max -// duplicate Q(max) -// duplicate Q(mask) - -// Difference -Q(difference) -// duplicate Q(mask) - -// Blend -Q(blend) -// duplicate Q(alpha) -// duplicate Q(mask) - -// Histogram Equalization -Q(histeq) -Q(adaptive) -Q(clip_limit) -// duplicate Q(mask) - -// Mean -Q(mean) -// duplicate Q(threshold) -Q(offset) -// duplicate Q(invert) -// duplicate Q(mask) - -// Median -Q(median) -Q(percentile) -// duplicate Q(threshold) -// duplicate Q(offset) -// duplicate Q(invert) -// duplicate Q(mask) - -// Mode -Q(mode) -// duplicate Q(threshold) -// duplicate Q(offset) -// duplicate Q(invert) -// duplicate Q(mask) - -// Midpoint -Q(midpoint) -// duplicate Q(bias) -// duplicate Q(threshold) -// duplicate Q(offset) -// duplicate Q(invert) -// duplicate Q(mask) - -// Moprh -Q(morph) -// duplicate Q(mul) -// duplicate Q(add) -// duplicate Q(threshold) -// duplicate Q(offset) -// duplicate Q(invert) -// duplicate Q(mask) - -// Gaussian Blur -Q(blur) -Q(gaussian) -Q(gaussian_blur) -Q(unsharp) -// duplicate Q(mul) -// duplicate Q(add) -// duplicate Q(threshold) -// duplicate Q(offset) -// duplicate Q(invert) -// duplicate Q(mask) - -// Laplacian -Q(laplacian) -Q(sharpen) -// duplicate Q(mul) -// duplicate Q(add) -// duplicate Q(threshold) -// duplicate Q(offset) -// duplicate Q(invert) -// duplicate Q(mask) - -// Bilateral -Q(bilateral) -Q(color_sigma) -Q(space_sigma) -// duplicate Q(threshold) -// duplicate Q(offset) -// duplicate Q(invert) -// duplicate Q(mask) - -// Cartoon -Q(cartoon) -// duplicate Q(seed_threshold) -// duplicate Q(floating_threshold) -Q(mask) - -// Shadow Removal -Q(remove_shadows) - -// Chromination Invariant -Q(chrominvar) - -// Illumination Invariant -Q(illuminvar) - -// Linear Polar -Q(linpolar) -// duplicate Q(reverse) - -// Log Polar -Q(logpolar) -// duplicate Q(reverse) - -// Lens Correction -Q(lens_corr) -Q(strength) -Q(zoom) - -// Rotation Correction -Q(rotation_corr) -Q(x_rotation) -Q(y_rotation) -Q(z_rotation) -Q(x_translation) -Q(y_translation) -// duplicate Q(zoom) - -// Structural Similarity -Q(get_similarity) -// Similarity Object -Q(similarity) -// duplicate Q(mean) -Q(stdev) -// duplicate Q(min) -// duplicate Q(max) - -// Get Histogram -Q(get_hist) -Q(get_histogram) -// duplicate Q(roi) -Q(bins) -Q(l_bins) -Q(a_bins) -Q(b_bins) -Q(thresholds) -// duplicate Q(invert) -// Histogram Object -Q(histogram) -// duplicate Q(bins) -// duplicate Q(l_bins) -// duplicate Q(a_bins) -// duplicate Q(b_bins) -Q(get_percentile) -Q(get_threshold) -Q(get_stats) -Q(get_statistics) -Q(statistics) -// Percentile Object -// duplicate Q(percentile) -Q(value) -Q(l_value) -Q(a_value) -Q(b_value) -// Threshold Object -// duplicate Q(threshold) -// duplicate Q(value) -// duplicate Q(l_value) -// duplicate Q(a_value) -// duplicate Q(b_value) - -// Get Statistics -// duplicate Q(get_stats) -// duplicate Q(get_statistics) -// duplicate Q(roi) -// duplicate Q(bins) -// duplicate Q(l_bins) -// duplicate Q(a_bins) -// duplicate Q(b_bins) -// duplicate Q(thresholds) -// duplicate Q(invert) -// Statistics Object -// duplicate Q(statistics) -// duplicate Q(mean) -// duplicate Q(median) -// duplicate Q(mode) -// duplicate Q(stdev) -// duplicate Q(min) -// duplicate Q(max) -Q(lq) -Q(uq) -Q(l_mean) -Q(l_median) -Q(l_mode) -Q(l_stdev) -Q(l_min) -Q(l_max) -Q(l_lq) -Q(l_uq) -Q(a_mean) -Q(a_median) -Q(a_mode) -Q(a_stdev) -Q(a_min) -Q(a_max) -Q(a_lq) -Q(a_uq) -Q(b_mean) -Q(b_median) -Q(b_mode) -Q(b_stdev) -Q(b_min) -Q(b_max) -Q(b_lq) -Q(b_uq) - -// Get Regression -Q(get_regression) -// duplicate Q(roi) -Q(x_stride) -Q(y_stride) -// duplicate Q(invert) -Q(area_threshold) -Q(pixels_threshold) -Q(robust) -// Line Object -Q(line) -// duplicate Q(line) -Q(x1) -Q(y1) -Q(x2) -Q(y2) -Q(length) -Q(magnitude) -Q(theta) -Q(rho) - -// Find Blobs -Q(find_blobs) -// duplicate Q(roi) -// duplicate Q(x_stride) -// duplicate Q(y_stride) -// duplicate Q(invert) -// duplicate Q(area_threshold) -// duplicate Q(pixels_threshold) -Q(merge) -Q(margin) -Q(threshold_cb) -Q(merge_cb) -Q(x_hist_bins_max) -Q(y_hist_bins_max) -// Blob Object -Q(blob) -Q(corners) -Q(min_corners) -Q(rect) -Q(x) -Q(y) -Q(w) -Q(h) -Q(pixels) -Q(cx) -Q(cxf) -Q(cy) -Q(cyf) -Q(rotation) -Q(rotation_deg) -Q(rotation_rad) -Q(code) -Q(count) -Q(perimeter) -Q(roundness) -Q(elongation) -Q(area) -Q(density) -Q(extent) -Q(compactness) -Q(solidity) -Q(convexity) -Q(x_hist_bins) -Q(y_hist_bins) -Q(major_axis_line) -Q(minor_axis_line) -Q(enclosing_circle) -Q(enclosed_ellipse) - -// Find Lines -Q(find_lines) -// duplicate Q(roi) -// duplicate Q(x_stride) -// duplicate Q(y_stride) -// duplicate Q(threshold) -Q(theta_margin) -Q(rho_margin) - -// Find Line Segments -Q(find_line_segments) -// duplicate Q(roi) -Q(merge_distance) -Q(max_theta_diff) - -// Find Circles -Q(find_circles) -// duplicate Q(roi) -// duplicate Q(x_stride) -// duplicate Q(y_stride) -// duplicate Q(threshold) -Q(x_margin) -Q(y_margin) -Q(r_margin) -Q(r_min) -Q(r_max) -Q(r_step) -// Circle Object -Q(circle) -// duplicate Q(circle) -// duplicate Q(x) -// duplicate Q(y) -Q(r) -// duplicate Q(magnitude) - -// Find Rects -Q(find_rects) -// duplicate Q(roi) -// duplicate Q(threshold) -// Rect Object -// duplicate Q(rect) -// duplicate Q(corners) -// duplicate Q(rect) -// duplicate Q(x) -// duplicate Q(y) -// duplicate Q(w) -// duplicate Q(h) -// duplicate Q(magnitude) - -// Find QRCodes -Q(find_qrcodes) -// duplicate Q(roi) -// QRCode Object -Q(qrcode) -// duplicate Q(corners) -// duplicate Q(rect) -// duplicate Q(x) -// duplicate Q(y) -// duplicate Q(w) -// duplicate Q(h) -Q(payload) -Q(version) -Q(ecc_level) -Q(mask) -Q(data_type) -Q(eci) -Q(is_numeric) -Q(is_alphanumeric) -Q(is_binary) -Q(is_kanji) - -// Find AprilTags -Q(find_apriltags) -// duplicate Q(roi) -Q(families) -Q(fx) -Q(fy) -// duplicate Q(cx) -// duplicate Q(cy) -// AprilTag Object -Q(apriltag) -// duplicate Q(corners) -// duplicate Q(rect) -// duplicate Q(x) -// duplicate Q(y) -// duplicate Q(w) -// duplicate Q(h) -Q(id) -Q(family) -Q(hamming) -// duplicate Q(cx) -// duplicate Q(cy) -// duplicate Q(rotation) -Q(goodness) -Q(decision_margin) -// duplicate Q(x_translation) -// duplicate Q(y_translation) -Q(z_translation) -// duplicate Q(x_rotation) -// duplicate Q(y_rotation) -// duplicate Q(z_rotation) -Q(TAG16H5) -Q(TAG25H7) -Q(TAG25H9) -Q(TAG36H10) -Q(TAG36H11) -Q(ARTOOLKIT) - -// Find DataMatrices -Q(find_datamatrices) -// duplicate Q(roi) -Q(effort) -// DataMatrix Object -Q(datamatrix) -// duplicate Q(corners) -// duplicate Q(rect) -// duplicate Q(x) -// duplicate Q(y) -// duplicate Q(w) -// duplicate Q(h) -// duplicate Q(payload) -// duplicate Q(rotation) -Q(rows) -Q(columns) -Q(capacity) -Q(padding) - -// Find BarCodes -Q(find_barcodes) -// duplicate Q(roi) -// BarCode Object -Q(barcode) -// duplicate Q(corners) -// duplicate Q(rect) -// duplicate Q(x) -// duplicate Q(y) -// duplicate Q(w) -// duplicate Q(h) -// duplicate Q(payload) -// duplicate Q(type) -// duplicate Q(rotation) -// duplicate Q(quality) -Q(EAN2) -Q(EAN5) -Q(EAN8) -Q(UPCE) -Q(ISBN10) -Q(UPCA) -Q(EAN13) -Q(ISBN13) -Q(I25) -Q(DATABAR) -Q(DATABAR_EXP) -Q(CODABAR) -Q(CODE39) -Q(PDF417) -Q(CODE93) -Q(CODE128) - -// Find Displacement -Q(find_displacement) -// duplicate Q(roi) -Q(template_roi) -// duplicate Q(logpolar) -Q(fix_rotation_scale) -Q(displacement) -// duplicate Q(x_translation) -// duplicate Q(y_translation) -// duplicate Q(rotation) -// duplicate Q(scale) -Q(response) - -// Image Writer -Q(ImageWriter) -// Image Writer Object -Q(imagewriter) -// duplicate Q(size) -// duplicate Q(add_frame) -// duplicate Q(close) - -// Image Reader -Q(ImageReader) -// Image Reader Object -Q(imagereader) -// duplicate Q(size) -Q(next_frame) -// duplicate Q(copy_to_fb) -// duplicate Q(loop) -// duplicate Q(close) - -// FIR Module -Q(fir) -// duplicate Q(init) -Q(FIR_NONE) -Q(FIR_SHIELD) -Q(FIR_MLX90620) -Q(FIR_MLX90621) -Q(FIR_MLX90640) -Q(FIR_AMG8833) -Q(refresh) -Q(resolution) -// duplicate Q(deinit) -// duplicate Q(width) -// duplicate Q(height) -// duplicate Q(type) -Q(read_ta) -Q(read_ir) -Q(draw_ta) -// duplicate Q(alpha) -// duplicate Q(scale) -Q(draw_ir) -// duplicate Q(alpha) -// duplicate Q(scale) -// duplicate Q(snapshot) -// duplicate Q(alpha) -// duplicate Q(scale) -Q(pixformat) -// duplciate Q(copy_to_fb) - // ST neural network Q(loadnnst) Q(predict) From 11699c860ab7999cead9e6001a76e346f3e96aa4 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Fri, 18 Oct 2019 21:23:18 +0200 Subject: [PATCH 06/11] Move CUBE-AI example to IDE examples. --- .../examples/25-Machine-Learning/nn_stm32cubeai.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/stm32cubeai/example_scirpt.py => scripts/examples/25-Machine-Learning/nn_stm32cubeai.py (100%) diff --git a/src/stm32cubeai/example_scirpt.py b/scripts/examples/25-Machine-Learning/nn_stm32cubeai.py similarity index 100% rename from src/stm32cubeai/example_scirpt.py rename to scripts/examples/25-Machine-Learning/nn_stm32cubeai.py From 132f158402798fb70a6a3168c3cf752da5ec339b Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Fri, 18 Oct 2019 21:23:51 +0200 Subject: [PATCH 07/11] Rename readme. --- src/stm32cubeai/{Readme.md => README.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/stm32cubeai/{Readme.md => README.md} (100%) diff --git a/src/stm32cubeai/Readme.md b/src/stm32cubeai/README.md similarity index 100% rename from src/stm32cubeai/Readme.md rename to src/stm32cubeai/README.md From 4ef6d3871184b0e3eddfa8fb759ecf8ef1502d54 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Sat, 19 Oct 2019 16:43:53 +0200 Subject: [PATCH 08/11] Add CUBE-AI builtin module. * Add CUBE-AI builtin module to the default mpconfigport. --- src/Makefile | 16 +- src/stm32cubeai/cube.mk | 4 - src/stm32cubeai/mpconfigportcubeai.h | 395 --------------------------- src/stm32cubeai/qstrdefscubeai.h | 1 + 4 files changed, 10 insertions(+), 406 deletions(-) delete mode 100755 src/stm32cubeai/mpconfigportcubeai.h diff --git a/src/Makefile b/src/Makefile index a305469d7..d4df178f8 100755 --- a/src/Makefile +++ b/src/Makefile @@ -488,6 +488,14 @@ UVC_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/img/,\ UVC_OBJ += $(wildcard $(BUILD)/$(LEPTON_DIR)/src/*.o) UVC_OBJ += $(wildcard $(BUILD)/$(MLX_DIR)/src/*.o) + +ifeq ($(CUBEAI), 1) +CFLAGS += -DCUBEAI +include $(TOP_DIR)/stm32cubeai/cube.mk +else +FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/nn/ConvolutionFunctions/*.o) +endif + ################################################### #Export Variables export Q @@ -521,12 +529,6 @@ BOOTLOADER_OBJS: FIRMWARE_OBJS UVC_OBJS: FIRMWARE_OBJS $(MAKE) -C $(UVC_DIR) BUILD=$(BUILD)/$(UVC_DIR) CFLAGS="$(UVC_CFLAGS) -MMD" -ifeq ($(CUBEAI),) -FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/nn/ConvolutionFunctions/*.o) -else -include $(TOP_DIR)/stm32cubeai/cube.mk -endif - FIRMWARE_OBJS: $(MAKE) -C $(CMSIS_DIR) BUILD=$(BUILD)/$(CMSIS_DIR) CFLAGS="$(CFLAGS) -fno-strict-aliasing -MMD" $(MAKE) -C $(STHAL_DIR) BUILD=$(BUILD)/$(STHAL_DIR) CFLAGS="$(CFLAGS) -MMD" @@ -535,7 +537,7 @@ FIRMWARE_OBJS: $(MAKE) -C $(MLX_DIR) BUILD=$(BUILD)/$(MLX_DIR) CFLAGS="$(CFLAGS) -MMD" $(MAKE) -C $(WINC1500_DIR) BUILD=$(BUILD)/$(WINC1500_DIR) CFLAGS="$(CFLAGS) -MMD" $(MAKE) -C $(OMV_DIR) BUILD=$(BUILD)/$(OMV_DIR) CFLAGS="$(CFLAGS) -MMD" -ifneq ($(CUBEAI),) +ifeq ($(CUBEAI), 1) $(MAKE) -C $(TOP_DIR)/stm32cubeai BUILD=$(BUILD)/stm32cubeai CFLAGS="$(CFLAGS) -fno-strict-aliasing -MMD" endif diff --git a/src/stm32cubeai/cube.mk b/src/stm32cubeai/cube.mk index 80b9fe8ac..15fd418f4 100755 --- a/src/stm32cubeai/cube.mk +++ b/src/stm32cubeai/cube.mk @@ -8,10 +8,6 @@ OMV_QSTR_DEFS += $(TOP_DIR)/stm32cubeai/qstrdefscubeai.h -#CFLAGS += '-DMP_CONFIGFILE=<$(TOP_DIR)/stm32cubeai/mpconfigportcubeai.h>' -# Ugly way to make it work on Windows -CFLAGS += '-DMP_CONFIGFILE=<../../../stm32cubeai/mpconfigportcubeai.h>' - FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/BasicMathFunctions/*.o) FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/SupportFunctions/*.o) diff --git a/src/stm32cubeai/mpconfigportcubeai.h b/src/stm32cubeai/mpconfigportcubeai.h deleted file mode 100755 index c8c86a454..000000000 --- a/src/stm32cubeai/mpconfigportcubeai.h +++ /dev/null @@ -1,395 +0,0 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2013-2017 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -// Options to control how MicroPython is built for this port, -// overriding defaults in py/mpconfig.h. - -// board specific definitions -#include "mpconfigboard.h" -#include "mpconfigboard_common.h" - -// memory allocation policies -#ifndef MICROPY_GC_STACK_ENTRY_TYPE -#if MICROPY_HW_SDRAM_SIZE -#define MICROPY_GC_STACK_ENTRY_TYPE uint32_t -#else -#define MICROPY_GC_STACK_ENTRY_TYPE uint16_t -#endif -#endif -#define MICROPY_ALLOC_PATH_MAX (128) - -// emitters -#define MICROPY_PERSISTENT_CODE_LOAD (1) -#ifndef MICROPY_EMIT_THUMB -#define MICROPY_EMIT_THUMB (1) -#endif -#ifndef MICROPY_EMIT_INLINE_THUMB -#define MICROPY_EMIT_INLINE_THUMB (1) -#endif - -// compiler configuration -#define MICROPY_COMP_MODULE_CONST (1) -#define MICROPY_COMP_TRIPLE_TUPLE_ASSIGN (1) -#define MICROPY_COMP_RETURN_IF_EXPR (1) - -// optimisations -#define MICROPY_OPT_COMPUTED_GOTO (1) -#define MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE (0) -#define MICROPY_OPT_MPZ_BITWISE (1) -#define MICROPY_OPT_MATH_FACTORIAL (1) - -// Python internal features -#define MICROPY_READER_VFS (1) -#define MICROPY_ENABLE_GC (1) -#define MICROPY_ENABLE_FINALISER (1) -#define MICROPY_STACK_CHECK (1) -#define MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF (1) -#define MICROPY_EMERGENCY_EXCEPTION_BUF_SIZE (0) -#define MICROPY_KBD_EXCEPTION (1) -#define MICROPY_HELPER_REPL (1) -#define MICROPY_REPL_EMACS_KEYS (1) -#define MICROPY_REPL_AUTO_INDENT (1) -#define MICROPY_LONGINT_IMPL (MICROPY_LONGINT_IMPL_MPZ) -#define MICROPY_ENABLE_SOURCE_LINE (1) -#ifndef MICROPY_FLOAT_IMPL // can be configured by each board via mpconfigboard.mk -#define MICROPY_FLOAT_IMPL (MICROPY_FLOAT_IMPL_FLOAT) -#endif -#define MICROPY_STREAMS_NON_BLOCK (1) -#define MICROPY_STREAMS_POSIX_API (1) -#define MICROPY_MODULE_WEAK_LINKS (1) -#define MICROPY_CAN_OVERRIDE_BUILTINS (1) -#define MICROPY_USE_INTERNAL_ERRNO (1) -#define MICROPY_ENABLE_SCHEDULER (1) -#define MICROPY_SCHEDULER_DEPTH (8) -#define MICROPY_VFS (1) -#ifndef MICROPY_VFS_FAT -#define MICROPY_VFS_FAT (1) -#endif - -// control over Python builtins -#define MICROPY_PY_FUNCTION_ATTRS (1) -#define MICROPY_PY_DESCRIPTORS (1) -#define MICROPY_PY_DELATTR_SETATTR (1) -#define MICROPY_PY_BUILTINS_STR_UNICODE (1) -#define MICROPY_PY_BUILTINS_STR_CENTER (1) -#define MICROPY_PY_BUILTINS_STR_PARTITION (1) -#define MICROPY_PY_BUILTINS_STR_SPLITLINES (1) -#define MICROPY_PY_BUILTINS_MEMORYVIEW (1) -#define MICROPY_PY_BUILTINS_FROZENSET (1) -#define MICROPY_PY_BUILTINS_SLICE_ATTRS (1) -#define MICROPY_PY_BUILTINS_ROUND_INT (1) -#define MICROPY_PY_ALL_SPECIAL_METHODS (1) -#define MICROPY_PY_BUILTINS_COMPILE (1) -#define MICROPY_PY_BUILTINS_EXECFILE (1) -#define MICROPY_PY_BUILTINS_NOTIMPLEMENTED (1) -#define MICROPY_PY_BUILTINS_INPUT (1) -#define MICROPY_PY_BUILTINS_POW3 (1) -#define MICROPY_PY_BUILTINS_HELP (1) -#define MICROPY_PY_BUILTINS_HELP_TEXT stm32_help_text -#define MICROPY_PY_BUILTINS_HELP_MODULES (1) -#define MICROPY_PY_MICROPYTHON_MEM_INFO (1) -#define MICROPY_PY_ARRAY_SLICE_ASSIGN (1) -#define MICROPY_PY_COLLECTIONS_DEQUE (0) -#define MICROPY_PY_COLLECTIONS_ORDEREDDICT (1) -#define MICROPY_PY_MATH_SPECIAL_FUNCTIONS (1) -#define MICROPY_PY_MATH_FACTORIAL (1) -#define MICROPY_PY_CMATH (1) -#define MICROPY_PY_IO (1) -#define MICROPY_PY_IO_IOBASE (1) -#define MICROPY_PY_IO_FILEIO (MICROPY_VFS_FAT) // because mp_type_fileio/textio point to fatfs impl -#define MICROPY_PY_SYS_MAXSIZE (1) -#define MICROPY_PY_SYS_EXIT (1) -#define MICROPY_PY_SYS_STDFILES (1) -#define MICROPY_PY_SYS_STDIO_BUFFER (0) -#ifndef MICROPY_PY_SYS_PLATFORM // let boards override it if they want -#define MICROPY_PY_SYS_PLATFORM "pyboard" -#endif -#define MICROPY_PY_UERRNO (1) -#ifndef MICROPY_PY_THREAD -#define MICROPY_PY_THREAD (1) -#endif - -// extended modules -#define MICROPY_PY_UCTYPES (1) -#define MICROPY_PY_UZLIB (1) -#define MICROPY_PY_UJSON (1) -#define MICROPY_PY_URE (1) -#define MICROPY_PY_URE_SUB (1) -#define MICROPY_PY_UHEAPQ (1) -#define MICROPY_PY_UHASHLIB (1) -#define MICROPY_PY_UBINASCII (1) -#define MICROPY_PY_URANDOM (1) -#define MICROPY_PY_URANDOM_EXTRA_FUNCS (1) -#define MICROPY_PY_USELECT (1) -#define MICROPY_PY_UTIMEQ (1) -#define MICROPY_PY_UTIME_MP_HAL (1) -#define MICROPY_PY_OS_DUPTERM (3) -#define MICROPY_PY_UOS_DUPTERM_BUILTIN_STREAM (1) -#define MICROPY_PY_MACHINE (1) -#define MICROPY_PY_MACHINE_PULSE (1) -#define MICROPY_PY_MACHINE_PIN_MAKE_NEW mp_pin_make_new -#define MICROPY_PY_MACHINE_I2C (1) -#if MICROPY_HW_ENABLE_HW_I2C -#define MICROPY_PY_MACHINE_I2C_MAKE_NEW machine_hard_i2c_make_new -#endif -#define MICROPY_PY_MACHINE_SPI (1) -#define MICROPY_PY_MACHINE_SPI_MSB (SPI_FIRSTBIT_MSB) -#define MICROPY_PY_MACHINE_SPI_LSB (SPI_FIRSTBIT_LSB) -#define MICROPY_PY_MACHINE_SPI_MAKE_NEW machine_hard_spi_make_new -#define MICROPY_HW_SOFTSPI_MIN_DELAY (0) -#define MICROPY_HW_SOFTSPI_MAX_BAUDRATE (HAL_RCC_GetSysClockFreq() / 48) -#define MICROPY_PY_FRAMEBUF (1) -#ifndef MICROPY_PY_USOCKET -#define MICROPY_PY_USOCKET (1) -#endif -#ifndef MICROPY_PY_NETWORK -#define MICROPY_PY_NETWORK (1) -#endif - -// fatfs configuration used in ffconf.h -#define MICROPY_FATFS_ENABLE_LFN (2) -#define MICROPY_FATFS_LFN_CODE_PAGE (437) /* 1=SFN/ANSI 437=LFN/U.S.(OEM) */ -#define MICROPY_FATFS_USE_LABEL (1) -#define MICROPY_FATFS_RPATH (2) -#define MICROPY_FATFS_MULTI_PARTITION (1) - -// TODO these should be generic, not bound to fatfs -#define mp_type_fileio mp_type_vfs_fat_fileio -#define mp_type_textio mp_type_vfs_fat_textio - -// use vfs's functions for import stat and builtin open -#define mp_import_stat mp_vfs_import_stat -#define mp_builtin_open mp_vfs_open -#define mp_builtin_open_obj mp_vfs_open_obj - -// extra built in names to add to the global namespace -#define MICROPY_PORT_BUILTINS \ - { MP_ROM_QSTR(MP_QSTR_open), MP_ROM_PTR(&mp_builtin_open_obj) }, - -// extra built in modules to add to the list of known ones -extern const struct _mp_obj_module_t pyb_module; -extern const struct _mp_obj_module_t stm_module; -extern const struct _mp_obj_module_t machine_module; -extern const struct _mp_obj_module_t mp_module_ubinascii; -extern const struct _mp_obj_module_t mp_module_ure; -extern const struct _mp_obj_module_t mp_module_uzlib; -extern const struct _mp_obj_module_t mp_module_ujson; -extern const struct _mp_obj_module_t mp_module_uheapq; -extern const struct _mp_obj_module_t mp_module_uhashlib; -extern const struct _mp_obj_module_t mp_module_uos; -extern const struct _mp_obj_module_t mp_module_utime; -extern const struct _mp_obj_module_t mp_module_usocket; -extern const struct _mp_obj_module_t mp_module_network; -extern const struct _mp_obj_module_t mp_module_onewire; -extern const struct _mp_obj_module_t omv_module; -extern const struct _mp_obj_module_t time_module; -extern const struct _mp_obj_module_t sensor_module; -extern const struct _mp_obj_module_t image_module; -extern const struct _mp_obj_module_t lcd_module; -extern const struct _mp_obj_module_t fir_module; -extern const struct _mp_obj_module_t gif_module; -extern const struct _mp_obj_module_t mjpeg_module; -extern const struct _mp_obj_module_t cpufreq_module; -extern const struct _mp_obj_module_t nn_module; -extern const struct _mp_obj_module_t tv_module; -extern const struct _mp_obj_module_t nn_st_module; - -#if MICROPY_PY_STM -#define STM_BUILTIN_MODULE { MP_ROM_QSTR(MP_QSTR_stm), MP_ROM_PTR(&stm_module) }, -#else -#define STM_BUILTIN_MODULE -#endif - -#if MICROPY_PY_USOCKET && MICROPY_PY_LWIP -// usocket implementation provided by lwIP -#define SOCKET_BUILTIN_MODULE { MP_ROM_QSTR(MP_QSTR_usocket), MP_ROM_PTR(&mp_module_lwip) }, -#define SOCKET_BUILTIN_MODULE_WEAK_LINKS { MP_ROM_QSTR(MP_QSTR_socket), MP_ROM_PTR(&mp_module_lwip) }, -#elif MICROPY_PY_USOCKET -// usocket implementation provided by skeleton wrapper -#define SOCKET_BUILTIN_MODULE { MP_ROM_QSTR(MP_QSTR_usocket), MP_ROM_PTR(&mp_module_usocket) }, -#define SOCKET_BUILTIN_MODULE_WEAK_LINKS { MP_ROM_QSTR(MP_QSTR_socket), MP_ROM_PTR(&mp_module_usocket) }, -#else -// no usocket module -#define SOCKET_BUILTIN_MODULE -#define SOCKET_BUILTIN_MODULE_WEAK_LINKS -#endif - -#if MICROPY_PY_NETWORK -#define NETWORK_BUILTIN_MODULE { MP_ROM_QSTR(MP_QSTR_network), MP_ROM_PTR(&mp_module_network) }, -#else -#define NETWORK_BUILTIN_MODULE -#endif - -#define MICROPY_PORT_BUILTIN_MODULES \ - { MP_OBJ_NEW_QSTR(MP_QSTR_umachine), (mp_obj_t)&machine_module }, \ - { MP_OBJ_NEW_QSTR(MP_QSTR_pyb), (mp_obj_t)&pyb_module }, \ - STM_BUILTIN_MODULE \ - { MP_OBJ_NEW_QSTR(MP_QSTR_uos), (mp_obj_t)&mp_module_uos }, \ - { MP_OBJ_NEW_QSTR(MP_QSTR_utime), (mp_obj_t)&mp_module_utime }, \ - { MP_OBJ_NEW_QSTR(MP_QSTR_omv), (mp_obj_t)&omv_module }, \ - { MP_OBJ_NEW_QSTR(MP_QSTR_time), (mp_obj_t)&time_module }, \ - { MP_OBJ_NEW_QSTR(MP_QSTR_sensor), (mp_obj_t)&sensor_module }, \ - { MP_OBJ_NEW_QSTR(MP_QSTR_image), (mp_obj_t)&image_module }, \ - { MP_OBJ_NEW_QSTR(MP_QSTR_lcd), (mp_obj_t)&lcd_module }, \ - { MP_OBJ_NEW_QSTR(MP_QSTR_fir), (mp_obj_t)&fir_module }, \ - { MP_OBJ_NEW_QSTR(MP_QSTR_gif), (mp_obj_t)&gif_module }, \ - { MP_OBJ_NEW_QSTR(MP_QSTR_mjpeg), (mp_obj_t)&mjpeg_module }, \ - { MP_OBJ_NEW_QSTR(MP_QSTR_cpufreq), (mp_obj_t)&cpufreq_module }, \ - { MP_OBJ_NEW_QSTR(MP_QSTR_nn), (mp_obj_t)&nn_module }, \ - { MP_OBJ_NEW_QSTR(MP_QSTR_nn_st), (mp_obj_t)&nn_st_module }, \ - { MP_OBJ_NEW_QSTR(MP_QSTR_tv), (mp_obj_t)&tv_module }, \ - SOCKET_BUILTIN_MODULE \ - NETWORK_BUILTIN_MODULE \ - { MP_ROM_QSTR(MP_QSTR__onewire), MP_ROM_PTR(&mp_module_onewire) }, \ - -#define MICROPY_PORT_BUILTIN_MODULE_WEAK_LINKS \ - { MP_OBJ_NEW_QSTR(MP_QSTR_binascii), (mp_obj_t)&mp_module_ubinascii }, \ - { MP_OBJ_NEW_QSTR(MP_QSTR_collections), (mp_obj_t)&mp_module_collections }, \ - { MP_OBJ_NEW_QSTR(MP_QSTR_re), (mp_obj_t)&mp_module_ure }, \ - { MP_OBJ_NEW_QSTR(MP_QSTR_zlib), (mp_obj_t)&mp_module_uzlib }, \ - { MP_OBJ_NEW_QSTR(MP_QSTR_json), (mp_obj_t)&mp_module_ujson }, \ - { MP_OBJ_NEW_QSTR(MP_QSTR_heapq), (mp_obj_t)&mp_module_uheapq }, \ - { MP_OBJ_NEW_QSTR(MP_QSTR_hashlib), (mp_obj_t)&mp_module_uhashlib }, \ - { MP_OBJ_NEW_QSTR(MP_QSTR_io), (mp_obj_t)&mp_module_io }, \ - { MP_OBJ_NEW_QSTR(MP_QSTR_os), (mp_obj_t)&mp_module_uos }, \ - { MP_OBJ_NEW_QSTR(MP_QSTR_random), (mp_obj_t)&mp_module_urandom }, \ - { MP_OBJ_NEW_QSTR(MP_QSTR_select), (mp_obj_t)&mp_module_uselect }, \ - SOCKET_BUILTIN_MODULE_WEAK_LINKS \ - { MP_ROM_QSTR(MP_QSTR_struct), MP_ROM_PTR(&mp_module_ustruct) }, \ - { MP_ROM_QSTR(MP_QSTR_machine), MP_ROM_PTR(&machine_module) }, \ - { MP_ROM_QSTR(MP_QSTR_errno), MP_ROM_PTR(&mp_module_uerrno) }, \ - -// extra constants -#define MICROPY_PORT_CONSTANTS \ - { MP_ROM_QSTR(MP_QSTR_umachine), MP_ROM_PTR(&machine_module) }, \ - { MP_ROM_QSTR(MP_QSTR_machine), MP_ROM_PTR(&machine_module) }, \ - { MP_ROM_QSTR(MP_QSTR_pyb), MP_ROM_PTR(&pyb_module) }, \ - STM_BUILTIN_MODULE \ - -#define MP_STATE_PORT MP_STATE_VM - -#define MICROPY_PORT_ROOT_POINTERS \ - const char *readline_hist[8]; \ - \ - mp_obj_t pyb_hid_report_desc; \ - \ - mp_obj_t pyb_config_main; \ - \ - mp_obj_t pyb_switch_callback; \ - \ - mp_obj_t pin_class_mapper; \ - mp_obj_t pin_class_map_dict; \ - \ - mp_obj_t pyb_extint_callback[PYB_EXTI_NUM_VECTORS]; \ - \ - /* pointers to all Timer objects (if they have been created) */ \ - struct _pyb_timer_obj_t *pyb_timer_obj_all[MICROPY_HW_MAX_TIMER]; \ - \ - /* stdio is repeated on this UART object if it's not null */ \ - struct _pyb_uart_obj_t *pyb_stdio_uart; \ - \ - /* pointers to all UART objects (if they have been created) */ \ - struct _pyb_uart_obj_t *pyb_uart_obj_all[MICROPY_HW_MAX_UART]; \ - \ - /* pointers to all CAN objects (if they have been created) */ \ - struct _pyb_can_obj_t *pyb_can_obj_all[MICROPY_HW_MAX_CAN]; \ - \ - /* list of registered NICs */ \ - mp_obj_list_t mod_network_nic_list; \ - -// type definitions for the specific machine - -#define MICROPY_MAKE_POINTER_CALLABLE(p) ((void*)((mp_uint_t)(p) | 1)) - -#define MP_SSIZE_MAX (0x7fffffff) - -#define UINT_FMT "%u" -#define INT_FMT "%d" - -typedef int mp_int_t; // must be pointer size -typedef unsigned int mp_uint_t; // must be pointer size -typedef long mp_off_t; - -#define MP_PLAT_PRINT_STRN(str, len) mp_hal_stdout_tx_strn_cooked(str, len) - -// We have inlined IRQ functions for efficiency (they are generally -// 1 machine instruction). -// -// Note on IRQ state: you should not need to know the specific -// value of the state variable, but rather just pass the return -// value from disable_irq back to enable_irq. If you really need -// to know the machine-specific values, see irq.h. - -static inline void enable_irq(mp_uint_t state) { - __set_PRIMASK(state); -} - -static inline mp_uint_t disable_irq(void) { - mp_uint_t state = __get_PRIMASK(); - __disable_irq(); - return state; -} - -#define MICROPY_BEGIN_ATOMIC_SECTION() disable_irq() -#define MICROPY_END_ATOMIC_SECTION(state) enable_irq(state) - -#if MICROPY_PY_THREAD -#define MICROPY_EVENT_POLL_HOOK \ - do { \ - extern void mp_handle_pending(void); \ - mp_handle_pending(); \ - if (pyb_thread_enabled) { \ - MP_THREAD_GIL_EXIT(); \ - pyb_thread_yield(); \ - MP_THREAD_GIL_ENTER(); \ - } else { \ - __WFI(); \ - } \ - } while (0); - -#define MICROPY_THREAD_YIELD() pyb_thread_yield() -#else -#define MICROPY_EVENT_POLL_HOOK \ - do { \ - extern void mp_handle_pending(void); \ - mp_handle_pending(); \ - __WFI(); \ - } while (0); - -#define MICROPY_THREAD_YIELD() -#endif - -// The LwIP interface must run at a raised IRQ priority -#define MICROPY_PY_LWIP_ENTER uint32_t irq_state = raise_irq_pri(IRQ_PRI_PENDSV); -#define MICROPY_PY_LWIP_REENTER irq_state = raise_irq_pri(IRQ_PRI_PENDSV); -#define MICROPY_PY_LWIP_EXIT restore_irq_pri(irq_state); - -// We need an implementation of the log2 function which is not a macro -#define MP_NEED_LOG2 (1) - -// We need to provide a declaration/definition of alloca() -#include -#include diff --git a/src/stm32cubeai/qstrdefscubeai.h b/src/stm32cubeai/qstrdefscubeai.h index 612fcfad9..e07d97200 100755 --- a/src/stm32cubeai/qstrdefscubeai.h +++ b/src/stm32cubeai/qstrdefscubeai.h @@ -10,5 +10,6 @@ */ // ST neural network +Q(nn_st) Q(loadnnst) Q(predict) From d6420769c9d35e2af9cdeb6ec31e8574422eae44 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Sat, 19 Oct 2019 19:09:41 +0200 Subject: [PATCH 09/11] Update Makefile. * Add LIBS and CUBEAI_DIR and cleanup. --- src/Makefile | 28 ++++++++++++---------------- src/stm32cubeai/cube.mk | 5 ++++- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/Makefile b/src/Makefile index d4df178f8..3f051f859 100755 --- a/src/Makefile +++ b/src/Makefile @@ -53,6 +53,7 @@ MLX_DIR=mlx WINC1500_DIR=winc1500 BOOTLDR_DIR=bootloader UVC_DIR=uvc +CUBEAI_DIR=stm32cubeai OMV_BOARD_CONFIG_DIR=$(TOP_DIR)/$(OMV_DIR)/boards/$(TARGET)/ MP_BOARD_CONFIG_DIR=$(TOP_DIR)/$(MICROPY_DIR)/ports/stm32/boards/$(TARGET)/ @@ -143,22 +144,20 @@ UVC_LDFLAGS = -mcpu=$(CPU) -mabi=aapcs-linux -mthumb -mfpu=$(FPU) -mfloat-abi=ha -nostdlib -Wl,--gc-sections -Wl,-T$(BUILD)/$(UVC_DIR)/stm32fxxx.lds #------------- Libraries ----------------# +LIBS = -lgcc FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/CommonTables/*.o) FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/FastMathFunctions/*.o) FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/MatrixFunctions/*.o) FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/nn/ActivationFunctions/*.o) -# FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/nn/ConvolutionFunctions/*.o) FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/nn/FullyConnectedFunctions/*.o) FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/nn/NNSupportFunctions/*.o) FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/nn/PoolingFunctions/*.o) FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/nn/SoftmaxFunctions/*.o) +ifeq ($(CUBEAI),) +# Conflicts with NetworkRuntime library. +FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/nn/ConvolutionFunctions/*.o) +endif -#FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/ComplexMathFunctions/*.o) -#FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/ControllerFunctions/*.o) -#FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/FilteringFunctions/*.o) -#FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/StatisticsFunctions/*.o) -#FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/SupportFunctions/*.o) -#FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/TransformFunctions/*.o) FIRM_OBJ += $(wildcard $(BUILD)/$(STHAL_DIR)/src/*.o) FIRM_OBJ += $(wildcard $(BUILD)/$(LEPTON_DIR)/src/*.o) FIRM_OBJ += $(wildcard $(BUILD)/$(MLX_DIR)/src/*.o) @@ -440,6 +439,10 @@ FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/drivers/,\ memory/spiflash.o \ ) +ifeq ($(CUBEAI), 1) +include $(TOP_DIR)/stm32cubeai/cube.mk +endif + # Bootloader object files BOOT_OBJ += $(wildcard $(BUILD)/$(BOOTLDR_DIR)/src/*.o) BOOT_OBJ += $(wildcard $(BUILD)/$(STHAL_DIR)/src/*.o) @@ -489,13 +492,6 @@ UVC_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/img/,\ UVC_OBJ += $(wildcard $(BUILD)/$(LEPTON_DIR)/src/*.o) UVC_OBJ += $(wildcard $(BUILD)/$(MLX_DIR)/src/*.o) -ifeq ($(CUBEAI), 1) -CFLAGS += -DCUBEAI -include $(TOP_DIR)/stm32cubeai/cube.mk -else -FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/nn/ConvolutionFunctions/*.o) -endif - ################################################### #Export Variables export Q @@ -538,13 +534,13 @@ FIRMWARE_OBJS: $(MAKE) -C $(WINC1500_DIR) BUILD=$(BUILD)/$(WINC1500_DIR) CFLAGS="$(CFLAGS) -MMD" $(MAKE) -C $(OMV_DIR) BUILD=$(BUILD)/$(OMV_DIR) CFLAGS="$(CFLAGS) -MMD" ifeq ($(CUBEAI), 1) - $(MAKE) -C $(TOP_DIR)/stm32cubeai BUILD=$(BUILD)/stm32cubeai CFLAGS="$(CFLAGS) -fno-strict-aliasing -MMD" + $(MAKE) -C $(CUBEAI_DIR) BUILD=$(BUILD)/$(CUBEAI_DIR) CFLAGS="$(CFLAGS) -fno-strict-aliasing -MMD" endif # This target generates the main/app firmware image located at 0x08010000 $(FIRMWARE): FIRMWARE_OBJS $(CPP) -P -E -I$(OMV_BOARD_CONFIG_DIR) $(OMV_DIR)/stm32fxxx.ld.S > $(BUILD)/stm32fxxx.lds - $(CC) $(LDFLAGS) $(FIRM_OBJ) -o $(FW_DIR)/$(FIRMWARE).elf -lgcc + $(CC) $(LDFLAGS) $(FIRM_OBJ) -o $(FW_DIR)/$(FIRMWARE).elf $(LIBS) $(OBJCOPY) -Obinary $(FW_DIR)/$(FIRMWARE).elf $(FW_DIR)/$(FIRMWARE).bin $(PYTHON) $(MKDFU) -b $(MAIN_APP_ADDR):$(FW_DIR)/$(FIRMWARE).bin $(FW_DIR)/$(FIRMWARE).dfu diff --git a/src/stm32cubeai/cube.mk b/src/stm32cubeai/cube.mk index 15fd418f4..905d521fa 100755 --- a/src/stm32cubeai/cube.mk +++ b/src/stm32cubeai/cube.mk @@ -4,6 +4,9 @@ # # This work is licensed under the MIT license, see the file LICENSE for details. +# Enable CUBE-AI builtin module +CFLAGS += -DCUBEAI + # Append to OMV_QSTR_DEFS OMV_QSTR_DEFS += $(TOP_DIR)/stm32cubeai/qstrdefscubeai.h @@ -21,4 +24,4 @@ FIRM_OBJ += $(addprefix $(BUILD)/stm32cubeai/,\ py_st_nn.o \ ) -FIRM_OBJ += -l:NetworkRuntime410_CM7_GCC.a -Lstm32cubeai/AI/Lib -lc -lm +LIBS += -l:NetworkRuntime410_CM7_GCC.a -Lstm32cubeai/AI/Lib -lc -lm From 6ebeba5ebc7c76f9f0803a1cdbc2babd2ac57d63 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Sat, 19 Oct 2019 19:10:47 +0200 Subject: [PATCH 10/11] Update CUBE-AI example. * Add link to README. --- scripts/examples/25-Machine-Learning/nn_stm32cubeai.py | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/examples/25-Machine-Learning/nn_stm32cubeai.py b/scripts/examples/25-Machine-Learning/nn_stm32cubeai.py index a0767adf1..542aaf458 100644 --- a/scripts/examples/25-Machine-Learning/nn_stm32cubeai.py +++ b/scripts/examples/25-Machine-Learning/nn_stm32cubeai.py @@ -1,4 +1,5 @@ # STM32 CUBE.AI on OpenMV MNIST Example +# See https://github.com/openmv/openmv/blob/master/src/stm32cubeai/README.MD import sensor, image, time, nn_st From 44a91c1296c03d1274fc7f0a918196311f6e1e3f Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Sat, 19 Oct 2019 19:20:21 +0200 Subject: [PATCH 11/11] Update MP. --- src/micropython | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/micropython b/src/micropython index 3305b980b..69d7bf923 160000 --- a/src/micropython +++ b/src/micropython @@ -1 +1 @@ -Subproject commit 3305b980b35a85e82d2507c7682b2adb54f20b46 +Subproject commit 69d7bf9230088804271c447a6248455260d8c1d6

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 z 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 literal 0 HcmV?d00001 diff --git a/src/stm32cubeai/example/mnist_cnn.py b/src/stm32cubeai/example/mnist_cnn.py new file mode 100755 index 000000000..0d3901ddf --- /dev/null +++ b/src/stm32cubeai/example/mnist_cnn.py @@ -0,0 +1,75 @@ +'''Trains a simple convnet on the MNIST dataset. + +Gets to 99.25% test accuracy after 12 epochs +(there is still a lot of margin for parameter tuning). +16 seconds per epoch on a GRID K520 GPU. +''' + +from __future__ import print_function +import keras +from keras.datasets import mnist +from keras.models import Sequential +from keras.layers import Dense, Dropout, Flatten +from keras.layers import Conv2D, MaxPooling2D +from keras import backend as K + +batch_size = 512 +num_classes = 10 +epochs = 12 + +# input image dimensions +img_rows, img_cols = 28, 28 + +# the data, split between train and test sets +(x_train, y_train), (x_test, y_test) = mnist.load_data() + +if K.image_data_format() == 'channels_first': + x_train = x_train.reshape(x_train.shape[0], 1, img_rows, img_cols) + x_test = x_test.reshape(x_test.shape[0], 1, img_rows, img_cols) + input_shape = (1, img_rows, img_cols) +else: + x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 1) + x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 1) + input_shape = (img_rows, img_cols, 1) + +x_train = x_train.astype('float32') +x_test = x_test.astype('float32') +x_train /= 255 +x_test /= 255 +print('x_train shape:', x_train.shape) +print(x_train.shape[0], 'train samples') +print(x_test.shape[0], 'test samples') + +# convert class vectors to binary class matrices +y_train = keras.utils.to_categorical(y_train, num_classes) +y_test = keras.utils.to_categorical(y_test, num_classes) + +model = Sequential() +model.add(Conv2D(16, kernel_size=(3, 3), + activation='relu', + input_shape=input_shape)) +model.add(Conv2D(24, (3, 3), activation='relu')) +model.add(MaxPooling2D(pool_size=(2, 2))) +model.add(Dropout(0.25)) +model.add(Conv2D(32, (3, 3), activation='relu')) +model.add(MaxPooling2D(pool_size=(2, 2))) +model.add(Dropout(0.25)) +model.add(Flatten()) +model.add(Dense(30, activation='relu')) +model.add(Dropout(0.5)) +model.add(Dense(num_classes, activation='softmax')) + +model.compile(loss=keras.losses.categorical_crossentropy, + optimizer=keras.optimizers.Adadelta(), + metrics=['accuracy']) + +model.fit(x_train, y_train, + batch_size=batch_size, + epochs=epochs, + verbose=1, + validation_data=(x_test, y_test)) +score = model.evaluate(x_test, y_test, verbose=0) +print('Test loss:', score[0]) +print('Test accuracy:', score[1]) +print('Save model as mnist_cnn.h5') +model.save('mnist_cnn.h5') diff --git a/src/stm32cubeai/imgs/mnist_output.gif b/src/stm32cubeai/imgs/mnist_output.gif new file mode 100755 index 0000000000000000000000000000000000000000..4d3400bfc0f1134b085f1d821c3241c5ab938fe6 GIT binary patch literal 304055 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 z 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