mirror of
https://github.com/openmv/openmv.git
synced 2025-11-04 14:49:50 +08:00
NN: Make base layer fields accessible from sub layers.
This commit is contained in:
parent
fce3b9476a
commit
d967ad62cd
@ -165,14 +165,14 @@ int nn_load_network(nn_t *net, const char *path)
|
|||||||
// Alloc and read weights array
|
// Alloc and read weights array
|
||||||
read_data(&fp, &conv_layer->w_size, 4);
|
read_data(&fp, &conv_layer->w_size, 4);
|
||||||
printf("weights: %lu ", conv_layer->w_size);
|
printf("weights: %lu ", conv_layer->w_size);
|
||||||
conv_layer->w = xalloc(conv_layer->w_size);
|
conv_layer->wt = xalloc(conv_layer->w_size);
|
||||||
read_data(&fp, conv_layer->w, conv_layer->w_size);
|
read_data(&fp, conv_layer->wt, conv_layer->w_size);
|
||||||
|
|
||||||
// Alloc and read bias array
|
// Alloc and read bias array
|
||||||
read_data(&fp, &conv_layer->b_size, 4);
|
read_data(&fp, &conv_layer->b_size, 4);
|
||||||
printf("bias: %lu\n", conv_layer->b_size);
|
printf("bias: %lu\n", conv_layer->b_size);
|
||||||
conv_layer->b = xalloc(conv_layer->b_size);
|
conv_layer->bias = xalloc(conv_layer->b_size);
|
||||||
read_data(&fp, conv_layer->b, conv_layer->b_size);
|
read_data(&fp, conv_layer->bias, conv_layer->b_size);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -185,7 +185,7 @@ int nn_load_network(nn_t *net, const char *path)
|
|||||||
case LAYER_TYPE_POOL: {
|
case LAYER_TYPE_POOL: {
|
||||||
pool_layer_t *pool_layer = (pool_layer_t *) layer;
|
pool_layer_t *pool_layer = (pool_layer_t *) layer;
|
||||||
// Read pooling layer type
|
// Read pooling layer type
|
||||||
read_data(&fp, &pool_layer->type, 4);
|
read_data(&fp, &pool_layer->ptype, 4);
|
||||||
// Read krnel dim, stride and padding
|
// Read krnel dim, stride and padding
|
||||||
read_data(&fp, &pool_layer->krn_dim, 4);
|
read_data(&fp, &pool_layer->krn_dim, 4);
|
||||||
read_data(&fp, &pool_layer->krn_str, 4);
|
read_data(&fp, &pool_layer->krn_str, 4);
|
||||||
@ -206,14 +206,14 @@ int nn_load_network(nn_t *net, const char *path)
|
|||||||
// Alloc and read weights array
|
// Alloc and read weights array
|
||||||
read_data(&fp, &ip_layer->w_size, 4);
|
read_data(&fp, &ip_layer->w_size, 4);
|
||||||
printf("weights: %lu ", ip_layer->w_size);
|
printf("weights: %lu ", ip_layer->w_size);
|
||||||
ip_layer->w = xalloc(ip_layer->w_size);
|
ip_layer->wt = xalloc(ip_layer->w_size);
|
||||||
read_data(&fp, ip_layer->w, ip_layer->w_size);
|
read_data(&fp, ip_layer->wt, ip_layer->w_size);
|
||||||
|
|
||||||
// Alloc and read bias array
|
// Alloc and read bias array
|
||||||
read_data(&fp, &ip_layer->b_size, 4);
|
read_data(&fp, &ip_layer->b_size, 4);
|
||||||
printf("bias %lu\n", ip_layer->b_size);
|
printf("bias %lu\n", ip_layer->b_size);
|
||||||
ip_layer->b = xalloc(ip_layer->b_size);
|
ip_layer->bias = xalloc(ip_layer->b_size);
|
||||||
read_data(&fp, ip_layer->b, ip_layer->b_size);
|
read_data(&fp, ip_layer->bias, ip_layer->b_size);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -234,7 +234,7 @@ int nn_load_network(nn_t *net, const char *path)
|
|||||||
|
|
||||||
if (layer->type == LAYER_TYPE_CONV) {
|
if (layer->type == LAYER_TYPE_CONV) {
|
||||||
conv_layer_t *conv_layer = (conv_layer_t *) layer;
|
conv_layer_t *conv_layer = (conv_layer_t *) layer;
|
||||||
uint32_t im2col_buffer_size = 2 * 2 * layer->c * conv_layer->krn_dim * conv_layer->krn_dim;
|
uint32_t im2col_buffer_size = 2 * 2 * conv_layer->c * conv_layer->krn_dim * conv_layer->krn_dim;
|
||||||
max_colbuf_size = IM_MAX(max_colbuf_size, im2col_buffer_size);
|
max_colbuf_size = IM_MAX(max_colbuf_size, im2col_buffer_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -269,7 +269,7 @@ error:
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
int nn_run_network(nn_t *net, image_t *image)
|
int nn_run_network(nn_t *net, image_t *img, int8_t *output)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,22 +26,25 @@ typedef enum {
|
|||||||
NETWORK_TYPE_CAFFE = 0,
|
NETWORK_TYPE_CAFFE = 0,
|
||||||
} network_type_t;
|
} network_type_t;
|
||||||
|
|
||||||
|
#define NN_LAYER_BASE \
|
||||||
|
layer_type_t type; \
|
||||||
|
uint32_t c, h, w; \
|
||||||
|
struct _layer *prev;\
|
||||||
|
struct _layer *next \
|
||||||
|
|
||||||
typedef struct _layer {
|
typedef struct _layer {
|
||||||
layer_type_t type;
|
NN_LAYER_BASE;
|
||||||
uint32_t c, h, w;
|
|
||||||
struct _layer *prev;
|
|
||||||
struct _layer *next;
|
|
||||||
} layer_t;
|
} layer_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
layer_t base;
|
NN_LAYER_BASE;
|
||||||
uint32_t r_mean;
|
uint32_t r_mean;
|
||||||
uint32_t g_mean;
|
uint32_t g_mean;
|
||||||
uint32_t b_mean;
|
uint32_t b_mean;
|
||||||
} data_layer_t;
|
} data_layer_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
layer_t base;
|
NN_LAYER_BASE;
|
||||||
uint32_t l_shift;
|
uint32_t l_shift;
|
||||||
uint32_t r_shift;
|
uint32_t r_shift;
|
||||||
uint32_t krn_dim;
|
uint32_t krn_dim;
|
||||||
@ -49,28 +52,28 @@ typedef struct {
|
|||||||
uint32_t krn_pad;
|
uint32_t krn_pad;
|
||||||
uint32_t w_size;
|
uint32_t w_size;
|
||||||
uint32_t b_size;
|
uint32_t b_size;
|
||||||
int8_t *w, *b;
|
int8_t *wt, *bias;
|
||||||
} conv_layer_t;
|
} conv_layer_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
layer_t base;
|
NN_LAYER_BASE;
|
||||||
} relu_layer_t;
|
} relu_layer_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
layer_t base;
|
NN_LAYER_BASE;
|
||||||
pool_type_t type;
|
pool_type_t ptype;
|
||||||
uint32_t krn_dim;
|
uint32_t krn_dim;
|
||||||
uint32_t krn_str;
|
uint32_t krn_str;
|
||||||
uint32_t krn_pad;
|
uint32_t krn_pad;
|
||||||
} pool_layer_t;
|
} pool_layer_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
layer_t base;
|
NN_LAYER_BASE;
|
||||||
uint32_t l_shift;
|
uint32_t l_shift;
|
||||||
uint32_t r_shift;
|
uint32_t r_shift;
|
||||||
uint32_t w_size;
|
uint32_t w_size;
|
||||||
uint32_t b_size;
|
uint32_t b_size;
|
||||||
int8_t *w, *b;
|
int8_t *wt, *bias;
|
||||||
} ip_layer_t;
|
} ip_layer_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -84,5 +87,5 @@ typedef struct {
|
|||||||
|
|
||||||
int nn_dump_network(nn_t *net);
|
int nn_dump_network(nn_t *net);
|
||||||
int nn_load_network(nn_t *net, const char *path);
|
int nn_load_network(nn_t *net, const char *path);
|
||||||
int nn_run_network(nn_t *net, image_t *image);
|
int nn_run_network(nn_t *net, image_t *img, int8_t *output);
|
||||||
#endif //#define __CNN_H__
|
#endif //#define __CNN_H__
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user