mirror of
https://github.com/openmv/openmv.git
synced 2025-11-04 14:49:50 +08:00
NN: Move output buffer to network struct.
This commit is contained in:
parent
1c0c8d744b
commit
5fba4c3ad9
@ -263,6 +263,8 @@ int nn_load_network(nn_t *net, const char *path)
|
||||
layer = layer->next;
|
||||
}
|
||||
|
||||
// Alloc output buffer.
|
||||
net->output_data = xalloc(net->output_size);
|
||||
printf("Max layer: %lu Max col buf: %lu Max scratch buf: %lu Output size:%lu\n\n",
|
||||
net->max_layer_size, net->max_colbuf_size, net->max_scrbuf_size, net->output_size);
|
||||
error:
|
||||
@ -328,7 +330,7 @@ void nn_transform_input(data_layer_t *data_layer, image_t *img, q7_t *input_data
|
||||
}
|
||||
}
|
||||
|
||||
int nn_run_network(nn_t *net, image_t *img, int8_t *output_data)
|
||||
int nn_run_network(nn_t *net, image_t *img)
|
||||
{
|
||||
uint32_t layer_idx = 0;
|
||||
layer_t *layer = net->layers;
|
||||
@ -425,7 +427,7 @@ int nn_run_network(nn_t *net, image_t *img, int8_t *output_data)
|
||||
|
||||
// Last layer
|
||||
if (layer->next && layer->next->next == NULL) {
|
||||
output_buffer = output_data;
|
||||
output_buffer = net->output_data;
|
||||
}
|
||||
}
|
||||
|
||||
@ -440,7 +442,7 @@ int nn_run_network(nn_t *net, image_t *img, int8_t *output_data)
|
||||
(buffer == buffer1) ? "buffer1":\
|
||||
(buffer == buffer2) ? "buffer2":\
|
||||
(buffer == input_data) ? "input_data":\
|
||||
(buffer == output_data) ? "output_data": "???"
|
||||
(buffer == net->output_data) ? "output_data": "???"
|
||||
|
||||
#define CONV_FUNC_2STR(conv_func)\
|
||||
(conv_func == arm_convolve_HWC_q7_basic) ? "arm_convolve_HWC_q7_basic" :\
|
||||
@ -449,7 +451,7 @@ int nn_run_network(nn_t *net, image_t *img, int8_t *output_data)
|
||||
#define POOL_FUNC_2STR(pool_func)\
|
||||
(pool_func == arm_maxpool_q7_HWC) ? "arm_maxpool_q7_HWC" : "arm_avepool_q7_HWC"
|
||||
|
||||
int nn_dry_run_network(nn_t *net, image_t *img, int8_t *output_data)
|
||||
int nn_dry_run_network(nn_t *net, image_t *img)
|
||||
{
|
||||
uint32_t layer_idx = 0;
|
||||
layer_t *layer = net->layers;
|
||||
@ -549,7 +551,7 @@ int nn_dry_run_network(nn_t *net, image_t *img, int8_t *output_data)
|
||||
|
||||
// Last layer
|
||||
if (layer->next && layer->next->next == NULL) {
|
||||
output_buffer = output_data;
|
||||
output_buffer = net->output_data;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -80,6 +80,7 @@ typedef struct {
|
||||
typedef struct {
|
||||
uint8_t type[4];
|
||||
uint32_t n_layers;
|
||||
int8_t *output_data;
|
||||
uint32_t output_size;
|
||||
uint32_t max_layer_size;
|
||||
uint32_t max_colbuf_size;
|
||||
@ -99,6 +100,6 @@ typedef void (*pool_func_t)(q7_t * Im_in, const uint16_t dim_im_in, const uint16
|
||||
|
||||
int nn_dump_network(nn_t *net);
|
||||
int nn_load_network(nn_t *net, const char *path);
|
||||
int nn_run_network(nn_t *net, image_t *img, int8_t *output);
|
||||
int nn_dry_run_network(nn_t *net, image_t *img, int8_t *output);
|
||||
int nn_run_network(nn_t *net, image_t *img);
|
||||
int nn_dry_run_network(nn_t *net, image_t *img);
|
||||
#endif //#define __CNN_H__
|
||||
|
||||
@ -34,18 +34,17 @@ STATIC mp_obj_t py_net_forward(uint n_args, const mp_obj_t *args, mp_map_t *kw_a
|
||||
nn_t *net = py_net_cobj(args[0]);
|
||||
image_t *img = py_helper_arg_to_image_mutable(args[1]);
|
||||
|
||||
int8_t output_data[10]; //TODO alloc output buffer
|
||||
mp_obj_t output_list = mp_obj_new_list(0, NULL);
|
||||
bool dry_run = py_helper_keyword_int(n_args, args, 2, kw_args, MP_OBJ_NEW_QSTR(MP_QSTR_dry_run), false);
|
||||
|
||||
if (dry_run == false) {
|
||||
nn_run_network(net, img, output_data);
|
||||
nn_run_network(net, img);
|
||||
} else {
|
||||
nn_dry_run_network(net, img, output_data);
|
||||
nn_dry_run_network(net, img);
|
||||
}
|
||||
|
||||
for (int i=0; i<10; i++) {
|
||||
mp_obj_list_append(output_list, mp_obj_new_int(output_data[i]));
|
||||
for (int i=0; i<net->output_size; i++) {
|
||||
mp_obj_list_append(output_list, mp_obj_new_int(net->output_data[i]));
|
||||
}
|
||||
return output_list;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user