mirror of https://github.com/AlexeyAB/darknet.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1028 lines
22 KiB
1028 lines
22 KiB
#ifndef DARKNET_API |
|
#define DARKNET_API |
|
|
|
#if defined(_MSC_VER) && _MSC_VER < 1900 |
|
#define inline __inline |
|
#endif |
|
|
|
#if defined(DEBUG) && !defined(_CRTDBG_MAP_ALLOC) |
|
#define _CRTDBG_MAP_ALLOC |
|
#endif |
|
|
|
#include <stdlib.h> |
|
#include <stdio.h> |
|
#include <string.h> |
|
#include <stdint.h> |
|
#include <assert.h> |
|
#include <pthread.h> |
|
|
|
#ifndef LIB_API |
|
#ifdef LIB_EXPORTS |
|
#if defined(_MSC_VER) |
|
#define LIB_API __declspec(dllexport) |
|
#else |
|
#define LIB_API __attribute__((visibility("default"))) |
|
#endif |
|
#else |
|
#if defined(_MSC_VER) |
|
#define LIB_API |
|
#else |
|
#define LIB_API |
|
#endif |
|
#endif |
|
#endif |
|
|
|
#define SECRET_NUM -1234 |
|
|
|
typedef enum { UNUSED_DEF_VAL } UNUSED_ENUM_TYPE; |
|
|
|
#ifdef GPU |
|
|
|
#include <cuda_runtime.h> |
|
#include <curand.h> |
|
#include <cublas_v2.h> |
|
|
|
#ifdef CUDNN |
|
#include <cudnn.h> |
|
#endif // CUDNN |
|
#endif // GPU |
|
|
|
#ifdef __cplusplus |
|
extern "C" { |
|
#endif |
|
|
|
struct network; |
|
typedef struct network network; |
|
|
|
struct network_state; |
|
typedef struct network_state network_state; |
|
|
|
struct layer; |
|
typedef struct layer layer; |
|
|
|
struct image; |
|
typedef struct image image; |
|
|
|
struct detection; |
|
typedef struct detection detection; |
|
|
|
struct load_args; |
|
typedef struct load_args load_args; |
|
|
|
struct data; |
|
typedef struct data data; |
|
|
|
struct metadata; |
|
typedef struct metadata metadata; |
|
|
|
struct tree; |
|
typedef struct tree tree; |
|
|
|
extern int gpu_index; |
|
|
|
// option_list.h |
|
typedef struct metadata { |
|
int classes; |
|
char **names; |
|
} metadata; |
|
|
|
|
|
// tree.h |
|
typedef struct tree { |
|
int *leaf; |
|
int n; |
|
int *parent; |
|
int *child; |
|
int *group; |
|
char **name; |
|
|
|
int groups; |
|
int *group_size; |
|
int *group_offset; |
|
} tree; |
|
|
|
|
|
// activations.h |
|
typedef enum { |
|
LOGISTIC, RELU, RELU6, RELIE, LINEAR, RAMP, TANH, PLSE, LEAKY, ELU, LOGGY, STAIR, HARDTAN, LHTAN, SELU, SWISH, MISH, NORM_CHAN, NORM_CHAN_SOFTMAX, NORM_CHAN_SOFTMAX_MAXVAL |
|
}ACTIVATION; |
|
|
|
// parser.h |
|
typedef enum { |
|
IOU, GIOU, MSE, DIOU, CIOU |
|
} IOU_LOSS; |
|
|
|
// parser.h |
|
typedef enum { |
|
DEFAULT_NMS, GREEDY_NMS, DIOU_NMS, CORNERS_NMS |
|
} NMS_KIND; |
|
|
|
// parser.h |
|
typedef enum { |
|
YOLO_CENTER = 1 << 0, YOLO_LEFT_TOP = 1 << 1, YOLO_RIGHT_BOTTOM = 1 << 2 |
|
} YOLO_POINT; |
|
|
|
// parser.h |
|
typedef enum { |
|
NO_WEIGHTS, PER_FEATURE, PER_CHANNEL |
|
} WEIGHTS_TYPE_T; |
|
|
|
// parser.h |
|
typedef enum { |
|
NO_NORMALIZATION, RELU_NORMALIZATION, SOFTMAX_NORMALIZATION |
|
} WEIGHTS_NORMALIZATION_T; |
|
|
|
// image.h |
|
typedef enum{ |
|
PNG, BMP, TGA, JPG |
|
} IMTYPE; |
|
|
|
// activations.h |
|
typedef enum{ |
|
MULT, ADD, SUB, DIV |
|
} BINARY_ACTIVATION; |
|
|
|
// layer.h |
|
typedef enum { |
|
CONVOLUTIONAL, |
|
DECONVOLUTIONAL, |
|
CONNECTED, |
|
MAXPOOL, |
|
LOCAL_AVGPOOL, |
|
SOFTMAX, |
|
DETECTION, |
|
DROPOUT, |
|
CROP, |
|
ROUTE, |
|
COST, |
|
NORMALIZATION, |
|
AVGPOOL, |
|
LOCAL, |
|
SHORTCUT, |
|
SCALE_CHANNELS, |
|
SAM, |
|
ACTIVE, |
|
RNN, |
|
GRU, |
|
LSTM, |
|
CONV_LSTM, |
|
CRNN, |
|
BATCHNORM, |
|
NETWORK, |
|
XNOR, |
|
REGION, |
|
YOLO, |
|
GAUSSIAN_YOLO, |
|
ISEG, |
|
REORG, |
|
REORG_OLD, |
|
UPSAMPLE, |
|
LOGXENT, |
|
L2NORM, |
|
EMPTY, |
|
BLANK |
|
} LAYER_TYPE; |
|
|
|
// layer.h |
|
typedef enum{ |
|
SSE, MASKED, L1, SEG, SMOOTH,WGAN |
|
} COST_TYPE; |
|
|
|
// layer.h |
|
typedef struct update_args { |
|
int batch; |
|
float learning_rate; |
|
float momentum; |
|
float decay; |
|
int adam; |
|
float B1; |
|
float B2; |
|
float eps; |
|
int t; |
|
} update_args; |
|
|
|
// layer.h |
|
struct layer { |
|
LAYER_TYPE type; |
|
ACTIVATION activation; |
|
COST_TYPE cost_type; |
|
void(*forward) (struct layer, struct network_state); |
|
void(*backward) (struct layer, struct network_state); |
|
void(*update) (struct layer, int, float, float, float); |
|
void(*forward_gpu) (struct layer, struct network_state); |
|
void(*backward_gpu) (struct layer, struct network_state); |
|
void(*update_gpu) (struct layer, int, float, float, float, float); |
|
layer *share_layer; |
|
int train; |
|
int avgpool; |
|
int batch_normalize; |
|
int shortcut; |
|
int batch; |
|
int dynamic_minibatch; |
|
int forced; |
|
int flipped; |
|
int inputs; |
|
int outputs; |
|
int nweights; |
|
int nbiases; |
|
int extra; |
|
int truths; |
|
int h, w, c; |
|
int out_h, out_w, out_c; |
|
int n; |
|
int max_boxes; |
|
int groups; |
|
int group_id; |
|
int size; |
|
int side; |
|
int stride; |
|
int stride_x; |
|
int stride_y; |
|
int dilation; |
|
int antialiasing; |
|
int maxpool_depth; |
|
int out_channels; |
|
int reverse; |
|
int flatten; |
|
int spatial; |
|
int pad; |
|
int sqrt; |
|
int flip; |
|
int index; |
|
int scale_wh; |
|
int binary; |
|
int xnor; |
|
int peephole; |
|
int use_bin_output; |
|
int keep_delta_gpu; |
|
int optimized_memory; |
|
int steps; |
|
int state_constrain; |
|
int hidden; |
|
int truth; |
|
float smooth; |
|
float dot; |
|
int deform; |
|
int sway; |
|
int rotate; |
|
int stretch; |
|
int stretch_sway; |
|
float angle; |
|
float jitter; |
|
float saturation; |
|
float exposure; |
|
float shift; |
|
float ratio; |
|
float learning_rate_scale; |
|
float clip; |
|
int focal_loss; |
|
float *classes_multipliers; |
|
float label_smooth_eps; |
|
int noloss; |
|
int softmax; |
|
int classes; |
|
int coords; |
|
int background; |
|
int rescore; |
|
int objectness; |
|
int does_cost; |
|
int joint; |
|
int noadjust; |
|
int reorg; |
|
int log; |
|
int tanh; |
|
int *mask; |
|
int total; |
|
float bflops; |
|
|
|
int adam; |
|
float B1; |
|
float B2; |
|
float eps; |
|
|
|
int t; |
|
|
|
float alpha; |
|
float beta; |
|
float kappa; |
|
|
|
float coord_scale; |
|
float object_scale; |
|
float noobject_scale; |
|
float mask_scale; |
|
float class_scale; |
|
int bias_match; |
|
float random; |
|
float ignore_thresh; |
|
float truth_thresh; |
|
float iou_thresh; |
|
float thresh; |
|
float focus; |
|
int classfix; |
|
int absolute; |
|
int assisted_excitation; |
|
|
|
int onlyforward; |
|
int stopbackward; |
|
int train_only_bn; |
|
int dont_update; |
|
int burnin_update; |
|
int dontload; |
|
int dontsave; |
|
int dontloadscales; |
|
int numload; |
|
|
|
float temperature; |
|
float probability; |
|
float dropblock_size_rel; |
|
int dropblock_size_abs; |
|
int dropblock; |
|
float scale; |
|
|
|
int receptive_w; |
|
int receptive_h; |
|
int receptive_w_scale; |
|
int receptive_h_scale; |
|
|
|
char * cweights; |
|
int * indexes; |
|
int * input_layers; |
|
int * input_sizes; |
|
float **layers_output; |
|
float **layers_delta; |
|
WEIGHTS_TYPE_T weights_type; |
|
WEIGHTS_NORMALIZATION_T weights_normalizion; |
|
int * map; |
|
int * counts; |
|
float ** sums; |
|
float * rand; |
|
float * cost; |
|
float * state; |
|
float * prev_state; |
|
float * forgot_state; |
|
float * forgot_delta; |
|
float * state_delta; |
|
float * combine_cpu; |
|
float * combine_delta_cpu; |
|
|
|
float *concat; |
|
float *concat_delta; |
|
|
|
float *binary_weights; |
|
|
|
float *biases; |
|
float *bias_updates; |
|
|
|
float *scales; |
|
float *scale_updates; |
|
|
|
float *weights; |
|
float *weight_updates; |
|
|
|
float scale_x_y; |
|
float max_delta; |
|
float uc_normalizer; |
|
float iou_normalizer; |
|
float cls_normalizer; |
|
IOU_LOSS iou_loss; |
|
IOU_LOSS iou_thresh_kind; |
|
NMS_KIND nms_kind; |
|
float beta_nms; |
|
YOLO_POINT yolo_point; |
|
|
|
char *align_bit_weights_gpu; |
|
float *mean_arr_gpu; |
|
float *align_workspace_gpu; |
|
float *transposed_align_workspace_gpu; |
|
int align_workspace_size; |
|
|
|
char *align_bit_weights; |
|
float *mean_arr; |
|
int align_bit_weights_size; |
|
int lda_align; |
|
int new_lda; |
|
int bit_align; |
|
|
|
float *col_image; |
|
float * delta; |
|
float * output; |
|
float * activation_input; |
|
int delta_pinned; |
|
int output_pinned; |
|
float * loss; |
|
float * squared; |
|
float * norms; |
|
|
|
float * spatial_mean; |
|
float * mean; |
|
float * variance; |
|
|
|
float * mean_delta; |
|
float * variance_delta; |
|
|
|
float * rolling_mean; |
|
float * rolling_variance; |
|
|
|
float * x; |
|
float * x_norm; |
|
|
|
float * m; |
|
float * v; |
|
|
|
float * bias_m; |
|
float * bias_v; |
|
float * scale_m; |
|
float * scale_v; |
|
|
|
|
|
float *z_cpu; |
|
float *r_cpu; |
|
float *h_cpu; |
|
float *stored_h_cpu; |
|
float * prev_state_cpu; |
|
|
|
float *temp_cpu; |
|
float *temp2_cpu; |
|
float *temp3_cpu; |
|
|
|
float *dh_cpu; |
|
float *hh_cpu; |
|
float *prev_cell_cpu; |
|
float *cell_cpu; |
|
float *f_cpu; |
|
float *i_cpu; |
|
float *g_cpu; |
|
float *o_cpu; |
|
float *c_cpu; |
|
float *stored_c_cpu; |
|
float *dc_cpu; |
|
|
|
float *binary_input; |
|
uint32_t *bin_re_packed_input; |
|
char *t_bit_input; |
|
|
|
struct layer *input_layer; |
|
struct layer *self_layer; |
|
struct layer *output_layer; |
|
|
|
struct layer *reset_layer; |
|
struct layer *update_layer; |
|
struct layer *state_layer; |
|
|
|
struct layer *input_gate_layer; |
|
struct layer *state_gate_layer; |
|
struct layer *input_save_layer; |
|
struct layer *state_save_layer; |
|
struct layer *input_state_layer; |
|
struct layer *state_state_layer; |
|
|
|
struct layer *input_z_layer; |
|
struct layer *state_z_layer; |
|
|
|
struct layer *input_r_layer; |
|
struct layer *state_r_layer; |
|
|
|
struct layer *input_h_layer; |
|
struct layer *state_h_layer; |
|
|
|
struct layer *wz; |
|
struct layer *uz; |
|
struct layer *wr; |
|
struct layer *ur; |
|
struct layer *wh; |
|
struct layer *uh; |
|
struct layer *uo; |
|
struct layer *wo; |
|
struct layer *vo; |
|
struct layer *uf; |
|
struct layer *wf; |
|
struct layer *vf; |
|
struct layer *ui; |
|
struct layer *wi; |
|
struct layer *vi; |
|
struct layer *ug; |
|
struct layer *wg; |
|
|
|
tree *softmax_tree; |
|
|
|
size_t workspace_size; |
|
|
|
//#ifdef GPU |
|
int *indexes_gpu; |
|
|
|
float *z_gpu; |
|
float *r_gpu; |
|
float *h_gpu; |
|
float *stored_h_gpu; |
|
|
|
float *temp_gpu; |
|
float *temp2_gpu; |
|
float *temp3_gpu; |
|
|
|
float *dh_gpu; |
|
float *hh_gpu; |
|
float *prev_cell_gpu; |
|
float *prev_state_gpu; |
|
float *last_prev_state_gpu; |
|
float *last_prev_cell_gpu; |
|
float *cell_gpu; |
|
float *f_gpu; |
|
float *i_gpu; |
|
float *g_gpu; |
|
float *o_gpu; |
|
float *c_gpu; |
|
float *stored_c_gpu; |
|
float *dc_gpu; |
|
|
|
// adam |
|
float *m_gpu; |
|
float *v_gpu; |
|
float *bias_m_gpu; |
|
float *scale_m_gpu; |
|
float *bias_v_gpu; |
|
float *scale_v_gpu; |
|
|
|
float * combine_gpu; |
|
float * combine_delta_gpu; |
|
|
|
float * forgot_state_gpu; |
|
float * forgot_delta_gpu; |
|
float * state_gpu; |
|
float * state_delta_gpu; |
|
float * gate_gpu; |
|
float * gate_delta_gpu; |
|
float * save_gpu; |
|
float * save_delta_gpu; |
|
float * concat_gpu; |
|
float * concat_delta_gpu; |
|
|
|
float *binary_input_gpu; |
|
float *binary_weights_gpu; |
|
float *bin_conv_shortcut_in_gpu; |
|
float *bin_conv_shortcut_out_gpu; |
|
|
|
float * mean_gpu; |
|
float * variance_gpu; |
|
float * m_cbn_avg_gpu; |
|
float * v_cbn_avg_gpu; |
|
|
|
float * rolling_mean_gpu; |
|
float * rolling_variance_gpu; |
|
|
|
float * variance_delta_gpu; |
|
float * mean_delta_gpu; |
|
|
|
float * col_image_gpu; |
|
|
|
float * x_gpu; |
|
float * x_norm_gpu; |
|
float * weights_gpu; |
|
float * weight_updates_gpu; |
|
float * weight_deform_gpu; |
|
float * weight_change_gpu; |
|
|
|
float * weights_gpu16; |
|
float * weight_updates_gpu16; |
|
|
|
float * biases_gpu; |
|
float * bias_updates_gpu; |
|
float * bias_change_gpu; |
|
|
|
float * scales_gpu; |
|
float * scale_updates_gpu; |
|
float * scale_change_gpu; |
|
|
|
float * input_antialiasing_gpu; |
|
float * output_gpu; |
|
float * activation_input_gpu; |
|
float * loss_gpu; |
|
float * delta_gpu; |
|
float * rand_gpu; |
|
float * drop_blocks_scale; |
|
float * drop_blocks_scale_gpu; |
|
float * squared_gpu; |
|
float * norms_gpu; |
|
|
|
float *gt_gpu; |
|
float *a_avg_gpu; |
|
|
|
int *input_sizes_gpu; |
|
float **layers_output_gpu; |
|
float **layers_delta_gpu; |
|
#ifdef CUDNN |
|
cudnnTensorDescriptor_t srcTensorDesc, dstTensorDesc; |
|
cudnnTensorDescriptor_t srcTensorDesc16, dstTensorDesc16; |
|
cudnnTensorDescriptor_t dsrcTensorDesc, ddstTensorDesc; |
|
cudnnTensorDescriptor_t dsrcTensorDesc16, ddstTensorDesc16; |
|
cudnnTensorDescriptor_t normTensorDesc, normDstTensorDesc, normDstTensorDescF16; |
|
cudnnFilterDescriptor_t weightDesc, weightDesc16; |
|
cudnnFilterDescriptor_t dweightDesc, dweightDesc16; |
|
cudnnConvolutionDescriptor_t convDesc; |
|
cudnnConvolutionFwdAlgo_t fw_algo, fw_algo16; |
|
cudnnConvolutionBwdDataAlgo_t bd_algo, bd_algo16; |
|
cudnnConvolutionBwdFilterAlgo_t bf_algo, bf_algo16; |
|
cudnnPoolingDescriptor_t poolingDesc; |
|
#else // CUDNN |
|
void* srcTensorDesc, *dstTensorDesc; |
|
void* srcTensorDesc16, *dstTensorDesc16; |
|
void* dsrcTensorDesc, *ddstTensorDesc; |
|
void* dsrcTensorDesc16, *ddstTensorDesc16; |
|
void* normTensorDesc, *normDstTensorDesc, *normDstTensorDescF16; |
|
void* weightDesc, *weightDesc16; |
|
void* dweightDesc, *dweightDesc16; |
|
void* convDesc; |
|
UNUSED_ENUM_TYPE fw_algo, fw_algo16; |
|
UNUSED_ENUM_TYPE bd_algo, bd_algo16; |
|
UNUSED_ENUM_TYPE bf_algo, bf_algo16; |
|
void* poolingDesc; |
|
#endif // CUDNN |
|
//#endif // GPU |
|
}; |
|
|
|
|
|
// network.h |
|
typedef enum { |
|
CONSTANT, STEP, EXP, POLY, STEPS, SIG, RANDOM, SGDR |
|
} learning_rate_policy; |
|
|
|
// network.h |
|
typedef struct network { |
|
int n; |
|
int batch; |
|
uint64_t *seen; |
|
int *cur_iteration; |
|
float loss_scale; |
|
int *t; |
|
float epoch; |
|
int subdivisions; |
|
layer *layers; |
|
float *output; |
|
learning_rate_policy policy; |
|
int benchmark_layers; |
|
|
|
float learning_rate; |
|
float learning_rate_min; |
|
float learning_rate_max; |
|
int batches_per_cycle; |
|
int batches_cycle_mult; |
|
float momentum; |
|
float decay; |
|
float gamma; |
|
float scale; |
|
float power; |
|
int time_steps; |
|
int step; |
|
int max_batches; |
|
int num_boxes; |
|
int train_images_num; |
|
float *seq_scales; |
|
float *scales; |
|
int *steps; |
|
int num_steps; |
|
int burn_in; |
|
int cudnn_half; |
|
|
|
int adam; |
|
float B1; |
|
float B2; |
|
float eps; |
|
|
|
int inputs; |
|
int outputs; |
|
int truths; |
|
int notruth; |
|
int h, w, c; |
|
int max_crop; |
|
int min_crop; |
|
float max_ratio; |
|
float min_ratio; |
|
int center; |
|
int flip; // horizontal flip 50% probability augmentaiont for classifier training (default = 1) |
|
int gaussian_noise; |
|
int blur; |
|
int mixup; |
|
float label_smooth_eps; |
|
int resize_step; |
|
int attention; |
|
int adversarial; |
|
float adversarial_lr; |
|
int letter_box; |
|
float angle; |
|
float aspect; |
|
float exposure; |
|
float saturation; |
|
float hue; |
|
int random; |
|
int track; |
|
int augment_speed; |
|
int sequential_subdivisions; |
|
int init_sequential_subdivisions; |
|
int current_subdivision; |
|
int try_fix_nan; |
|
|
|
int gpu_index; |
|
tree *hierarchy; |
|
|
|
float *input; |
|
float *truth; |
|
float *delta; |
|
float *workspace; |
|
int train; |
|
int index; |
|
float *cost; |
|
float clip; |
|
|
|
//#ifdef GPU |
|
//float *input_gpu; |
|
//float *truth_gpu; |
|
float *delta_gpu; |
|
float *output_gpu; |
|
|
|
float *input_state_gpu; |
|
float *input_pinned_cpu; |
|
int input_pinned_cpu_flag; |
|
|
|
float **input_gpu; |
|
float **truth_gpu; |
|
float **input16_gpu; |
|
float **output16_gpu; |
|
size_t *max_input16_size; |
|
size_t *max_output16_size; |
|
int wait_stream; |
|
|
|
float *global_delta_gpu; |
|
float *state_delta_gpu; |
|
size_t max_delta_gpu_size; |
|
//#endif // GPU |
|
int optimized_memory; |
|
int dynamic_minibatch; |
|
size_t workspace_size_limit; |
|
} network; |
|
|
|
// network.h |
|
typedef struct network_state { |
|
float *truth; |
|
float *input; |
|
float *delta; |
|
float *workspace; |
|
int train; |
|
int index; |
|
network net; |
|
} network_state; |
|
|
|
//typedef struct { |
|
// int w; |
|
// int h; |
|
// float scale; |
|
// float rad; |
|
// float dx; |
|
// float dy; |
|
// float aspect; |
|
//} augment_args; |
|
|
|
// image.h |
|
typedef struct image { |
|
int w; |
|
int h; |
|
int c; |
|
float *data; |
|
} image; |
|
|
|
//typedef struct { |
|
// int w; |
|
// int h; |
|
// int c; |
|
// float *data; |
|
//} image; |
|
|
|
// box.h |
|
typedef struct box { |
|
float x, y, w, h; |
|
} box; |
|
|
|
// box.h |
|
typedef struct boxabs { |
|
float left, right, top, bot; |
|
} boxabs; |
|
|
|
// box.h |
|
typedef struct dxrep { |
|
float dt, db, dl, dr; |
|
} dxrep; |
|
|
|
// box.h |
|
typedef struct ious { |
|
float iou, giou, diou, ciou; |
|
dxrep dx_iou; |
|
dxrep dx_giou; |
|
} ious; |
|
|
|
|
|
// box.h |
|
typedef struct detection{ |
|
box bbox; |
|
int classes; |
|
float *prob; |
|
float *mask; |
|
float objectness; |
|
int sort_class; |
|
float *uc; // Gaussian_YOLOv3 - tx,ty,tw,th uncertainty |
|
int points; // bit-0 - center, bit-1 - top-left-corner, bit-2 - bottom-right-corner |
|
} detection; |
|
|
|
// network.c -batch inference |
|
typedef struct det_num_pair { |
|
int num; |
|
detection *dets; |
|
} det_num_pair, *pdet_num_pair; |
|
|
|
// matrix.h |
|
typedef struct matrix { |
|
int rows, cols; |
|
float **vals; |
|
} matrix; |
|
|
|
// data.h |
|
typedef struct data { |
|
int w, h; |
|
matrix X; |
|
matrix y; |
|
int shallow; |
|
int *num_boxes; |
|
box **boxes; |
|
} data; |
|
|
|
// data.h |
|
typedef enum { |
|
CLASSIFICATION_DATA, DETECTION_DATA, CAPTCHA_DATA, REGION_DATA, IMAGE_DATA, COMPARE_DATA, WRITING_DATA, SWAG_DATA, TAG_DATA, OLD_CLASSIFICATION_DATA, STUDY_DATA, DET_DATA, SUPER_DATA, LETTERBOX_DATA, REGRESSION_DATA, SEGMENTATION_DATA, INSTANCE_DATA, ISEG_DATA |
|
} data_type; |
|
|
|
// data.h |
|
typedef struct load_args { |
|
int threads; |
|
char **paths; |
|
char *path; |
|
int n; |
|
int m; |
|
char **labels; |
|
int h; |
|
int w; |
|
int c; // color depth |
|
int out_w; |
|
int out_h; |
|
int nh; |
|
int nw; |
|
int num_boxes; |
|
int min, max, size; |
|
int classes; |
|
int background; |
|
int scale; |
|
int center; |
|
int coords; |
|
int mini_batch; |
|
int track; |
|
int augment_speed; |
|
int letter_box; |
|
int show_imgs; |
|
int dontuse_opencv; |
|
float jitter; |
|
int flip; |
|
int gaussian_noise; |
|
int blur; |
|
int mixup; |
|
float label_smooth_eps; |
|
float angle; |
|
float aspect; |
|
float saturation; |
|
float exposure; |
|
float hue; |
|
data *d; |
|
image *im; |
|
image *resized; |
|
data_type type; |
|
tree *hierarchy; |
|
} load_args; |
|
|
|
// data.h |
|
typedef struct box_label { |
|
int id; |
|
float x, y, w, h; |
|
float left, right, top, bottom; |
|
} box_label; |
|
|
|
// list.h |
|
//typedef struct node { |
|
// void *val; |
|
// struct node *next; |
|
// struct node *prev; |
|
//} node; |
|
|
|
// list.h |
|
//typedef struct list { |
|
// int size; |
|
// node *front; |
|
// node *back; |
|
//} list; |
|
|
|
// ----------------------------------------------------- |
|
|
|
|
|
// parser.c |
|
LIB_API network *load_network(char *cfg, char *weights, int clear); |
|
LIB_API network *load_network_custom(char *cfg, char *weights, int clear, int batch); |
|
LIB_API network *load_network(char *cfg, char *weights, int clear); |
|
LIB_API void free_network(network net); |
|
|
|
// network.c |
|
LIB_API load_args get_base_args(network *net); |
|
|
|
// box.h |
|
LIB_API void do_nms_sort(detection *dets, int total, int classes, float thresh); |
|
LIB_API void do_nms_obj(detection *dets, int total, int classes, float thresh); |
|
LIB_API void diounms_sort(detection *dets, int total, int classes, float thresh, NMS_KIND nms_kind, float beta1); |
|
|
|
// network.h |
|
LIB_API float *network_predict(network net, float *input); |
|
LIB_API float *network_predict_ptr(network *net, float *input); |
|
LIB_API detection *get_network_boxes(network *net, int w, int h, float thresh, float hier, int *map, int relative, int *num, int letter); |
|
LIB_API det_num_pair* network_predict_batch(network *net, image im, int batch_size, int w, int h, float thresh, float hier, int *map, int relative, int letter); |
|
LIB_API void free_detections(detection *dets, int n); |
|
LIB_API void free_batch_detections(det_num_pair *det_num_pairs, int n); |
|
LIB_API void fuse_conv_batchnorm(network net); |
|
LIB_API void calculate_binary_weights(network net); |
|
LIB_API char *detection_to_json(detection *dets, int nboxes, int classes, char **names, long long int frame_id, char *filename); |
|
|
|
LIB_API layer* get_network_layer(network* net, int i); |
|
//LIB_API detection *get_network_boxes(network *net, int w, int h, float thresh, float hier, int *map, int relative, int *num, int letter); |
|
LIB_API detection *make_network_boxes(network *net, float thresh, int *num); |
|
LIB_API void reset_rnn(network *net); |
|
LIB_API float *network_predict_image(network *net, image im); |
|
LIB_API float *network_predict_image_letterbox(network *net, image im); |
|
LIB_API float validate_detector_map(char *datacfg, char *cfgfile, char *weightfile, float thresh_calc_avg_iou, const float iou_thresh, const int map_points, int letter_box, network *existing_net); |
|
LIB_API void train_detector(char *datacfg, char *cfgfile, char *weightfile, int *gpus, int ngpus, int clear, int dont_show, int calc_map, int mjpeg_port, int show_imgs, int benchmark_layers, char* chart_path); |
|
LIB_API void test_detector(char *datacfg, char *cfgfile, char *weightfile, char *filename, float thresh, |
|
float hier_thresh, int dont_show, int ext_output, int save_labels, char *outfile, int letter_box, int benchmark_layers); |
|
LIB_API int network_width(network *net); |
|
LIB_API int network_height(network *net); |
|
LIB_API void optimize_picture(network *net, image orig, int max_layer, float scale, float rate, float thresh, int norm); |
|
|
|
// image.h |
|
LIB_API void make_image_red(image im); |
|
LIB_API image make_attention_image(int img_size, float *original_delta_cpu, float *original_input_cpu, int w, int h, int c); |
|
LIB_API image resize_image(image im, int w, int h); |
|
LIB_API void quantize_image(image im); |
|
LIB_API void copy_image_from_bytes(image im, char *pdata); |
|
LIB_API image letterbox_image(image im, int w, int h); |
|
LIB_API void rgbgr_image(image im); |
|
LIB_API image make_image(int w, int h, int c); |
|
LIB_API image load_image_color(char *filename, int w, int h); |
|
LIB_API void free_image(image m); |
|
LIB_API image crop_image(image im, int dx, int dy, int w, int h); |
|
LIB_API image resize_min(image im, int min); |
|
|
|
// layer.h |
|
LIB_API void free_layer_custom(layer l, int keep_cudnn_desc); |
|
LIB_API void free_layer(layer l); |
|
|
|
// data.c |
|
LIB_API void free_data(data d); |
|
LIB_API pthread_t load_data(load_args args); |
|
LIB_API void free_load_threads(void *ptr); |
|
LIB_API pthread_t load_data_in_thread(load_args args); |
|
LIB_API void *load_thread(void *ptr); |
|
|
|
// dark_cuda.h |
|
LIB_API void cuda_pull_array(float *x_gpu, float *x, size_t n); |
|
LIB_API void cuda_pull_array_async(float *x_gpu, float *x, size_t n); |
|
LIB_API void cuda_set_device(int n); |
|
LIB_API void *cuda_get_context(); |
|
|
|
// utils.h |
|
LIB_API void free_ptrs(void **ptrs, int n); |
|
LIB_API void top_k(float *a, int n, int k, int *index); |
|
|
|
// tree.h |
|
LIB_API tree *read_tree(char *filename); |
|
|
|
// option_list.h |
|
LIB_API metadata get_metadata(char *file); |
|
|
|
|
|
// http_stream.h |
|
LIB_API void delete_json_sender(); |
|
LIB_API void send_json_custom(char const* send_buf, int port, int timeout); |
|
LIB_API double get_time_point(); |
|
void start_timer(); |
|
void stop_timer(); |
|
double get_time(); |
|
void stop_timer_and_show(); |
|
void stop_timer_and_show_name(char *name); |
|
void show_total_time(); |
|
|
|
// gemm.h |
|
LIB_API void init_cpu(); |
|
|
|
#ifdef __cplusplus |
|
} |
|
#endif // __cplusplus |
|
#endif // DARKNET_API
|
|
|