mirror of
https://github.com/openmv/openmv.git
synced 2025-11-04 14:49:50 +08:00
499 lines
25 KiB
C
499 lines
25 KiB
C
/**
|
|
******************************************************************************
|
|
* @file lite_conv2d_sssa8_ch.h
|
|
* @author AIS
|
|
* @brief ST header for signed simmetric signed antisimmetric 8 bits
|
|
* layers with channel quantization
|
|
******************************************************************************
|
|
* @attention
|
|
*
|
|
* Copyright (c) 2021-2023 STMicroelectronics.
|
|
* All rights reserved.
|
|
*
|
|
* This software is licensed under terms that can be found in the LICENSE file
|
|
* in the root directory of this software component.
|
|
* If no LICENSE file comes with this software, it is provided AS-IS.
|
|
*
|
|
******************************************************************************
|
|
*/
|
|
#ifndef LITE_CONV2D_SSSA8_CH_H
|
|
#define LITE_CONV2D_SSSA8_CH_H
|
|
|
|
void
|
|
forward_lite_conv2d_rgb_sssa8_ch(const ai_i8 *pData_in,
|
|
const ai_u16 dim_im_in,
|
|
const ai_i8 *pWeights,
|
|
const ai_u16 n_channel_out,
|
|
const ai_u16 dim_kernel,
|
|
const ai_u16 padding,
|
|
const ai_u16 stride,
|
|
const ai_i32 *pBias,
|
|
const ai_i8 in_zeropoint,
|
|
const ai_i8 out_zeropoint,
|
|
const ai_float in_scale,
|
|
const ai_float out_scale,
|
|
const ai_float *pWt_scale,
|
|
const ai_layer_format_type out_ch_format,
|
|
ai_i8 *pData_out,
|
|
const ai_u16 dim_im_out,
|
|
ai_i32 scratch_size,
|
|
ai_i16 *pBuffer_a);
|
|
void
|
|
forward_lite_conv2d_sssa8_ch(const ai_i8 *pData_in,
|
|
const ai_u16 dim_im_in_x,
|
|
const ai_u16 dim_im_in_y,
|
|
const ai_u16 n_channel_in,
|
|
const ai_i8 *pWeights,
|
|
const ai_u16 n_channel_out,
|
|
const ai_u16 dim_kernel_x,
|
|
const ai_u16 dim_kernel_y,
|
|
const ai_u16 stride_x,
|
|
const ai_u16 stride_y,
|
|
const ai_u16 padding_x,
|
|
const ai_u16 padding_y,
|
|
const ai_i32 *pBias,
|
|
const ai_i8 in_zeropoint,
|
|
const ai_i8 out_zeropoint,
|
|
const ai_float in_scale,
|
|
const ai_float out_scale,
|
|
const ai_float *pWt_scale,
|
|
const ai_layer_format_type out_ch_format,
|
|
ai_i8 *pData_out,
|
|
const ai_u16 dim_im_out_x,
|
|
const ai_u16 dim_im_out_y,
|
|
const ai_u16 weights_prefetch_enabled,
|
|
ai_i32 scratch_size,
|
|
ai_i16 *pBuffer_a);
|
|
|
|
|
|
void forward_lite_conv2d_hsp_1step_sssa8_ch(const ai_i8 *pData_in,
|
|
const ai_u16 dim_im_in_x,
|
|
const ai_u16 dim_im_in_y,
|
|
const ai_u16 n_channel_in,
|
|
const ai_i8 *pWeights,
|
|
const ai_u16 n_channel_out,
|
|
const ai_u16 dim_kernel_x,
|
|
const ai_u16 dim_kernel_y,
|
|
const ai_u16 stride_x,
|
|
const ai_u16 stride_y,
|
|
const ai_u16 padding_x,
|
|
const ai_u16 padding_x_r,
|
|
const ai_u16 padding_y,
|
|
const ai_u16 padding_y_b,
|
|
const ai_i32 *pBias,
|
|
const ai_i8 in_zeropoint,
|
|
const ai_i8 out_zeropoint,
|
|
const ai_float in_scale,
|
|
const ai_float out_scale,
|
|
const ai_float *pWt_scale,
|
|
const ai_layer_format_type out_ch_format,
|
|
ai_i8 *pData_out,
|
|
const ai_u16 dim_im_out_x,
|
|
const ai_u16 dim_im_out_y,
|
|
ai_i32 scratch_size,
|
|
ai_i16 *pBuffer_a);
|
|
|
|
void forward_lite_conv2d_hsp_sssa8_ch(const ai_i8 *pData_in,
|
|
const ai_u16 dim_im_in_x,
|
|
const ai_u16 dim_im_in_y,
|
|
const ai_u16 n_channel_in,
|
|
const ai_i8 *pWeights,
|
|
const ai_u16 n_channel_out,
|
|
const ai_u16 dim_kernel_x,
|
|
const ai_u16 dim_kernel_y,
|
|
const ai_u16 stride_x,
|
|
const ai_u16 stride_y,
|
|
const ai_u16 padding_x,
|
|
const ai_u16 padding_x_r,
|
|
const ai_u16 padding_y,
|
|
const ai_u16 padding_y_b,
|
|
const ai_i32 *pBias,
|
|
const ai_i8 in_zeropoint,
|
|
const ai_i8 out_zeropoint,
|
|
const ai_float in_scale,
|
|
const ai_float out_scale,
|
|
const ai_float *pWt_scale,
|
|
const ai_layer_format_type out_ch_format,
|
|
ai_i8 *pData_out,
|
|
const ai_u16 dim_im_out_x,
|
|
const ai_u16 dim_im_out_y,
|
|
ai_i32 scratch_size,
|
|
ai_i16 *pBuffer_a);
|
|
|
|
void forward_lite_conv2d_hsp_3step_sssa8_ch(const ai_i8 *pData_in,
|
|
const ai_u16 dim_im_in_x,
|
|
const ai_u16 dim_im_in_y,
|
|
const ai_u16 n_channel_in,
|
|
const ai_i8 *pWeights,
|
|
const ai_u16 n_channel_out,
|
|
const ai_u16 dim_kernel_x,
|
|
const ai_u16 dim_kernel_y,
|
|
const ai_u16 stride_x,
|
|
const ai_u16 stride_y,
|
|
const ai_u16 padding_x,
|
|
const ai_u16 padding_x_r,
|
|
const ai_u16 padding_y,
|
|
const ai_u16 padding_y_b,
|
|
const ai_i32 *pBias,
|
|
const ai_i8 in_zeropoint,
|
|
const ai_i8 out_zeropoint,
|
|
const ai_float in_scale,
|
|
const ai_float out_scale,
|
|
const ai_float *pWt_scale,
|
|
const ai_layer_format_type out_ch_format,
|
|
ai_i8 *pData_out,
|
|
const ai_u16 dim_im_out_x,
|
|
const ai_u16 dim_im_out_y,
|
|
ai_i32 scratch_size,
|
|
ai_i16 *pBuffer_a);
|
|
|
|
void
|
|
forward_lite_conv2d_dilated_sssa8_ch(const ai_i8 *pData_in,
|
|
const ai_u16 dim_im_in_x,
|
|
const ai_u16 dim_im_in_y,
|
|
const ai_u16 n_channel_in,
|
|
const ai_i8 *pWeights,
|
|
const ai_u16 n_channel_out,
|
|
const ai_u16 dim_kernel_x,
|
|
const ai_u16 dim_kernel_y,
|
|
const ai_u16 stride_x,
|
|
const ai_u16 stride_y,
|
|
const ai_u16 dilation_x,
|
|
const ai_u16 dilation_y,
|
|
const ai_i32 *pBias,
|
|
const ai_i8 in_zeropoint,
|
|
const ai_i8 out_zeropoint,
|
|
const ai_float in_scale,
|
|
const ai_float out_scale,
|
|
const ai_float *pWt_scale,
|
|
const ai_layer_format_type out_ch_format,
|
|
ai_i8 *pData_out,
|
|
const ai_u16 dim_im_out_x,
|
|
const ai_u16 dim_im_out_y,
|
|
ai_u32 height_loop_cnt_0,
|
|
const ai_u16 weights_prefetch_enabled,
|
|
ai_i32 scratch_size,
|
|
ai_i16 *pBuffer_a);
|
|
|
|
void forward_lite_conv2d_deep_sssa8_ch(const ai_i8 *pData_in,
|
|
const ai_u16 dim_im_in_x,
|
|
const ai_u16 dim_im_in_y,
|
|
const ai_u16 n_channel_in,
|
|
const ai_i8 *pWeights,
|
|
const ai_u16 n_channel_out,
|
|
const ai_u16 dim_kernel_x,
|
|
const ai_u16 dim_kernel_y,
|
|
const ai_u16 stride_x,
|
|
const ai_u16 stride_y,
|
|
const ai_i32 *pBias,
|
|
const ai_i8 in_zeropoint,
|
|
const ai_i8 out_zeropoint,
|
|
const ai_float in_scale,
|
|
const ai_float out_scale,
|
|
const ai_float *pWt_scale,
|
|
const ai_layer_format_type out_ch_format,
|
|
ai_i8 *pData_out,
|
|
const ai_u16 dim_im_out_x,
|
|
const ai_u16 dim_im_out_y,
|
|
ai_u32 height_loop_cnt_0,
|
|
const ai_u16 weights_prefetch_enabled,
|
|
ai_i32 scratch_size,
|
|
ai_i16 *pBuffer_a);
|
|
|
|
void forward_lite_conv2d_deep_3x3_sssa8_ch(const ai_i8 *pData_in,
|
|
const ai_u16 dim_im_in_x,
|
|
const ai_u16 dim_im_in_y,
|
|
const ai_u16 n_channel_in,
|
|
const ai_i8 *pWeights,
|
|
const ai_u16 n_channel_out,
|
|
const ai_i32 *pBias,
|
|
const ai_i8 in_zeropoint,
|
|
const ai_i8 out_zeropoint,
|
|
const ai_float in_scale,
|
|
const ai_float out_scale,
|
|
const ai_float *pWt_scale,
|
|
const ai_layer_format_type out_ch_format,
|
|
ai_i8 *pData_out,
|
|
const ai_u16 dim_im_out_x,
|
|
const ai_u16 dim_im_out_y,
|
|
ai_u32 height_loop_cnt_0,
|
|
ai_i32 scratch_size,
|
|
ai_i16 *pBuffer_a);
|
|
|
|
|
|
void
|
|
forward_lite_pw_sssa8_ch(const ai_i8 *pData_in,
|
|
const ai_u16 width_in,
|
|
const ai_u16 height_in,
|
|
const ai_u16 filt_stride_x,
|
|
const ai_u16 filt_stride_y,
|
|
const ai_u16 n_channel_in,
|
|
const ai_i8 *pWeights,
|
|
const ai_u16 n_channel_out,
|
|
const ai_i32 *pBias,
|
|
const ai_i8 in_zeropoint,
|
|
const ai_i8 out_zeropoint,
|
|
const ai_float in_scale,
|
|
const ai_float out_scale,
|
|
const ai_float *pWt_scale,
|
|
const ai_layer_format_type out_ch_format,
|
|
ai_i8 *pData_out,
|
|
ai_u16 weights_prefetch_enabled,
|
|
ai_i32 scratch_size,
|
|
ai_i16 *pBuffer_a);
|
|
|
|
void
|
|
forward_lite_pw_hsp_sssa8_ch(const ai_i8 *pData_in,
|
|
const ai_u16 width_in,
|
|
const ai_u16 height_in,
|
|
const ai_u16 filt_stride_x,
|
|
const ai_u16 filt_stride_y,
|
|
const ai_u16 n_channel_in,
|
|
const ai_i8 *pWeights,
|
|
const ai_u16 n_channel_out,
|
|
const ai_i32 *pBias,
|
|
const ai_i8 in_zeropoint,
|
|
const ai_i8 out_zeropoint,
|
|
const ai_float in_scale,
|
|
const ai_float out_scale,
|
|
const ai_float *pWt_scale,
|
|
const ai_layer_format_type out_ch_format,
|
|
ai_i8 *pData_out,
|
|
ai_i32 scratch_size,
|
|
ai_i16 *pBuffer_a);
|
|
|
|
void
|
|
forward_lite_pw_hsp_1step_sssa8_ch(const ai_i8 *pData_in,
|
|
const ai_u16 width_in,
|
|
const ai_u16 height_in,
|
|
const ai_u16 filt_stride_x,
|
|
const ai_u16 filt_stride_y,
|
|
const ai_u16 n_channel_in,
|
|
const ai_i8 *pWeights,
|
|
const ai_u16 n_channel_out,
|
|
const ai_i32 *pBias,
|
|
const ai_i8 in_zeropoint,
|
|
const ai_i8 out_zeropoint,
|
|
const ai_float in_scale,
|
|
const ai_float out_scale,
|
|
const ai_float *pWt_scale,
|
|
const ai_layer_format_type out_ch_format,
|
|
ai_i8 *pData_out,
|
|
ai_i32 scratch_size,
|
|
ai_i16 *pBuffer_a);
|
|
|
|
void
|
|
forward_lite_pw_hsp_3step_sssa8_ch(const ai_i8 *pData_in,
|
|
const ai_u16 width_in,
|
|
const ai_u16 height_in,
|
|
const ai_u16 filt_stride_x,
|
|
const ai_u16 filt_stride_y,
|
|
const ai_u16 n_channel_in,
|
|
const ai_i8 *pWeights,
|
|
const ai_u16 n_channel_out,
|
|
const ai_i32 *pBias,
|
|
const ai_i8 in_zeropoint,
|
|
const ai_i8 out_zeropoint,
|
|
const ai_float in_scale,
|
|
const ai_float out_scale,
|
|
const ai_float *pWt_scale,
|
|
const ai_layer_format_type out_ch_format,
|
|
ai_i8 *pData_out,
|
|
ai_i32 scratch_size,
|
|
ai_i16 *pBuffer_a);
|
|
|
|
void
|
|
forward_lite_dw_dm_sssa8_ch(const ai_i8 *Im_in,
|
|
const ai_u16 dim_im_in_x,
|
|
const ai_u16 dim_im_in_y,
|
|
const ai_u16 ch_im_in,
|
|
const ai_i8 *wt,
|
|
const ai_u16 ch_im_out,
|
|
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_i32 *bias,
|
|
const ai_i8 In_ZeroPoint,
|
|
const ai_i8 Out_ZeroPoint,
|
|
const ai_float in_scale,
|
|
const ai_float out_scale,
|
|
const ai_float *pWt_scale,
|
|
ai_i8 *Im_out,
|
|
const ai_u16 dim_im_out_x,
|
|
const ai_u16 dim_im_out_y,
|
|
const ai_i32 nl_pool_fused,
|
|
const ai_u32 scratch_size,
|
|
ai_i16 *bufferA);
|
|
|
|
void
|
|
forward_lite_dw_sssa8_ch(const ai_i8 *Im_in,
|
|
const ai_u16 dim_im_in_x,
|
|
const ai_u16 dim_im_in_y,
|
|
const ai_u16 ch_im_in,
|
|
const ai_i8 *wt,
|
|
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_i32 *bias,
|
|
const ai_i8 In_ZeroPoint,
|
|
const ai_i8 Out_ZeroPoint,
|
|
const ai_float in_scale,
|
|
const ai_float out_scale,
|
|
const ai_float *pWt_scale,
|
|
ai_i8 *Im_out,
|
|
const ai_u16 dim_im_out_x,
|
|
const ai_u16 dim_im_out_y,
|
|
const ai_i32 nl_pool_fused,
|
|
const ai_u32 scratch_size,
|
|
ai_i16 *bufferA);
|
|
|
|
void
|
|
forward_lite_dw_hsp_sssa8_ch(const ai_i8 *Im_in,
|
|
const ai_u16 dim_im_in_x,
|
|
const ai_u16 dim_im_in_y,
|
|
const ai_u16 ch_im_in,
|
|
const ai_i8 *wt,
|
|
const ai_u16 dim_kernel_x,
|
|
const ai_u16 dim_kernel_y,
|
|
const ai_u16 padding_x,
|
|
const ai_u16 padding_x_r,
|
|
const ai_u16 padding_y,
|
|
const ai_u16 padding_y_b,
|
|
const ai_u16 stride_x,
|
|
const ai_u16 stride_y,
|
|
const ai_i32 *bias,
|
|
const ai_i8 In_ZeroPoint,
|
|
const ai_i8 Out_ZeroPoint,
|
|
const ai_float in_scale,
|
|
const ai_float out_scale,
|
|
const ai_float *pWt_scale,
|
|
ai_i8 *Im_out,
|
|
const ai_u16 dim_im_out_x,
|
|
const ai_u16 dim_im_out_y,
|
|
const ai_u32 scratch_size,
|
|
ai_i16 *bufferA);
|
|
|
|
void
|
|
forward_lite_dw_hsp_1step_sssa8_ch(const ai_i8 *Im_in,
|
|
const ai_u16 dim_im_in_x,
|
|
const ai_u16 dim_im_in_y,
|
|
const ai_u16 ch_im_in,
|
|
const ai_i8 *wt,
|
|
const ai_u16 dim_kernel_x,
|
|
const ai_u16 dim_kernel_y,
|
|
const ai_u16 padding_x,
|
|
const ai_u16 padding_x_r,
|
|
const ai_u16 padding_y,
|
|
const ai_u16 padding_y_b,
|
|
const ai_u16 stride_x,
|
|
const ai_u16 stride_y,
|
|
const ai_i32 *bias,
|
|
const ai_i8 In_ZeroPoint,
|
|
const ai_i8 Out_ZeroPoint,
|
|
const ai_float in_scale,
|
|
const ai_float out_scale,
|
|
const ai_float *pWt_scale,
|
|
ai_i8 *Im_out,
|
|
const ai_u16 dim_im_out_x,
|
|
const ai_u16 dim_im_out_y,
|
|
const ai_u32 scratch_size,
|
|
ai_i16 *bufferA);
|
|
|
|
void
|
|
forward_lite_dw_hsp_3Step_sssa8_ch(const ai_i8 *Im_in,
|
|
const ai_u16 dim_im_in_x,
|
|
const ai_u16 dim_im_in_y,
|
|
const ai_u16 ch_im_in,
|
|
const ai_i8 *wt,
|
|
const ai_u16 dim_kernel_x,
|
|
const ai_u16 dim_kernel_y,
|
|
const ai_u16 padding_x,
|
|
const ai_u16 padding_x_r,
|
|
const ai_u16 padding_y,
|
|
const ai_u16 padding_y_b,
|
|
const ai_u16 stride_x,
|
|
const ai_u16 stride_y,
|
|
const ai_i32 *bias,
|
|
const ai_i8 In_ZeroPoint,
|
|
const ai_i8 Out_ZeroPoint,
|
|
const ai_float in_scale,
|
|
const ai_float out_scale,
|
|
const ai_float *pWt_scale,
|
|
ai_i8 *Im_out,
|
|
const ai_u16 dim_im_out_x,
|
|
const ai_u16 dim_im_out_y,
|
|
const ai_u32 scratch_size,
|
|
ai_i16 *bufferA);
|
|
|
|
|
|
void
|
|
forward_lite_dw_3x3_sssa8_ch(const ai_i8 *Im_in,
|
|
const ai_u16 dim_im_in_x,
|
|
const ai_u16 dim_im_in_y,
|
|
const ai_u16 ch_im_in,
|
|
const ai_i8 *wt,
|
|
const ai_u16 stride_x,
|
|
const ai_u16 stride_y,
|
|
const ai_i32 *bias,
|
|
const ai_i8 In_ZeroPoint,
|
|
const ai_i8 Out_ZeroPoint,
|
|
const ai_float in_scale,
|
|
const ai_float out_scale,
|
|
const ai_float *pWt_scale,
|
|
ai_i8 *Im_out,
|
|
const ai_u16 dim_im_out_x,
|
|
const ai_u16 dim_im_out_y,
|
|
const ai_i32 nl_pool_fused,
|
|
const ai_u32 scratch_size,
|
|
ai_i16 *bufferA);
|
|
|
|
void
|
|
forward_lite_dw_3x3_ch1st_sssa8_ch(const ai_i8 *Im_in,
|
|
const ai_u16 dim_im_in_x,
|
|
const ai_u16 dim_im_in_y,
|
|
const ai_u16 ch_im_in,
|
|
const ai_i8 *wt,
|
|
const ai_u16 stride_x,
|
|
const ai_u16 stride_y,
|
|
const ai_i32 *bias,
|
|
const ai_i8 In_ZeroPoint,
|
|
const ai_i8 Out_ZeroPoint,
|
|
const ai_float in_scale,
|
|
const ai_float out_scale,
|
|
const ai_float *pWt_scale,
|
|
ai_i8 *Im_out,
|
|
const ai_u16 dim_im_out_x,
|
|
const ai_u16 dim_im_out_y,
|
|
const ai_i32 nl_pool_fused,
|
|
const ai_u32 scratch_size,
|
|
ai_i16 *bufferA);
|
|
|
|
|
|
void
|
|
forward_lite_dw_1xN_sssa8_ch(const ai_i8 *Im_in,
|
|
const ai_u16 dim_im_in_y,
|
|
const ai_u16 ch_im_in,
|
|
const ai_i8 *wt,
|
|
const ai_u16 dim_kernel_y,
|
|
const ai_i32 *bias,
|
|
const ai_i8 In_ZeroPoint,
|
|
const ai_i8 Out_ZeroPoint,
|
|
const ai_float in_scale,
|
|
const ai_float out_scale,
|
|
const ai_float *pWt_scale,
|
|
ai_i8 *Im_out,
|
|
const ai_u16 dim_im_out_y,
|
|
const ai_i32 nl_pool_fused,
|
|
const ai_u32 scratch_size,
|
|
ai_i16 *bufferA);
|
|
|
|
|
|
|
|
#endif /* LITE_CONV2D_SSSA8_CH_H */
|