darknet  v3
darknet.c
Go to the documentation of this file.
1 #include "darknet.h"
2 
3 #include <time.h>
4 #include <stdlib.h>
5 #include <stdio.h>
6 
7 extern void predict_classifier(char *datacfg, char *cfgfile, char *weightfile, char *filename, int top);
8 extern void test_detector(char *datacfg, char *cfgfile, char *weightfile, char *filename, float thresh, float hier_thresh, char *outfile, int fullscreen);
9 extern void run_yolo(int argc, char **argv);
10 extern void run_detector(int argc, char **argv);
11 extern void run_coco(int argc, char **argv);
12 extern void run_captcha(int argc, char **argv);
13 extern void run_nightmare(int argc, char **argv);
14 extern void run_classifier(int argc, char **argv);
15 extern void run_regressor(int argc, char **argv);
16 extern void run_segmenter(int argc, char **argv);
17 extern void run_isegmenter(int argc, char **argv);
18 extern void run_char_rnn(int argc, char **argv);
19 extern void run_tag(int argc, char **argv);
20 extern void run_cifar(int argc, char **argv);
21 extern void run_go(int argc, char **argv);
22 extern void run_art(int argc, char **argv);
23 extern void run_super(int argc, char **argv);
24 extern void run_lsd(int argc, char **argv);
25 
26 void average(int argc, char *argv[])
27 {
28  char *cfgfile = argv[2];
29  char *outfile = argv[3];
30  gpu_index = -1;
31  network *net = parse_network_cfg(cfgfile);
32  network *sum = parse_network_cfg(cfgfile);
33 
34  char *weightfile = argv[4];
35  load_weights(sum, weightfile);
36 
37  int i, j;
38  int n = argc - 5;
39  for(i = 0; i < n; ++i){
40  weightfile = argv[i+5];
41  load_weights(net, weightfile);
42  for(j = 0; j < net->n; ++j){
43  layer l = net->layers[j];
44  layer out = sum->layers[j];
45  if(l.type == CONVOLUTIONAL){
46  int num = l.n*l.c*l.size*l.size;
47  axpy_cpu(l.n, 1, l.biases, 1, out.biases, 1);
48  axpy_cpu(num, 1, l.weights, 1, out.weights, 1);
49  if(l.batch_normalize){
50  axpy_cpu(l.n, 1, l.scales, 1, out.scales, 1);
51  axpy_cpu(l.n, 1, l.rolling_mean, 1, out.rolling_mean, 1);
52  axpy_cpu(l.n, 1, l.rolling_variance, 1, out.rolling_variance, 1);
53  }
54  }
55  if(l.type == CONNECTED){
56  axpy_cpu(l.outputs, 1, l.biases, 1, out.biases, 1);
57  axpy_cpu(l.outputs*l.inputs, 1, l.weights, 1, out.weights, 1);
58  }
59  }
60  }
61  n = n+1;
62  for(j = 0; j < net->n; ++j){
63  layer l = sum->layers[j];
64  if(l.type == CONVOLUTIONAL){
65  int num = l.n*l.c*l.size*l.size;
66  scal_cpu(l.n, 1./n, l.biases, 1);
67  scal_cpu(num, 1./n, l.weights, 1);
68  if(l.batch_normalize){
69  scal_cpu(l.n, 1./n, l.scales, 1);
70  scal_cpu(l.n, 1./n, l.rolling_mean, 1);
71  scal_cpu(l.n, 1./n, l.rolling_variance, 1);
72  }
73  }
74  if(l.type == CONNECTED){
75  scal_cpu(l.outputs, 1./n, l.biases, 1);
76  scal_cpu(l.outputs*l.inputs, 1./n, l.weights, 1);
77  }
78  }
79  save_weights(sum, outfile);
80 }
81 
83 {
84  int i;
85  long ops = 0;
86  for(i = 0; i < net->n; ++i){
87  layer l = net->layers[i];
88  if(l.type == CONVOLUTIONAL){
89  ops += 2l * l.n * l.size*l.size*l.c/l.groups * l.out_h*l.out_w;
90  } else if(l.type == CONNECTED){
91  ops += 2l * l.inputs * l.outputs;
92  } else if (l.type == RNN){
93  ops += 2l * l.input_layer->inputs * l.input_layer->outputs;
94  ops += 2l * l.self_layer->inputs * l.self_layer->outputs;
95  ops += 2l * l.output_layer->inputs * l.output_layer->outputs;
96  } else if (l.type == GRU){
97  ops += 2l * l.uz->inputs * l.uz->outputs;
98  ops += 2l * l.uh->inputs * l.uh->outputs;
99  ops += 2l * l.ur->inputs * l.ur->outputs;
100  ops += 2l * l.wz->inputs * l.wz->outputs;
101  ops += 2l * l.wh->inputs * l.wh->outputs;
102  ops += 2l * l.wr->inputs * l.wr->outputs;
103  } else if (l.type == LSTM){
104  ops += 2l * l.uf->inputs * l.uf->outputs;
105  ops += 2l * l.ui->inputs * l.ui->outputs;
106  ops += 2l * l.ug->inputs * l.ug->outputs;
107  ops += 2l * l.uo->inputs * l.uo->outputs;
108  ops += 2l * l.wf->inputs * l.wf->outputs;
109  ops += 2l * l.wi->inputs * l.wi->outputs;
110  ops += 2l * l.wg->inputs * l.wg->outputs;
111  ops += 2l * l.wo->inputs * l.wo->outputs;
112  }
113  }
114  return ops;
115 }
116 
117 void speed(char *cfgfile, int tics)
118 {
119  if (tics == 0) tics = 1000;
120  network *net = parse_network_cfg(cfgfile);
121  set_batch_network(net, 1);
122  int i;
123  double time=what_time_is_it_now();
124  image im = make_image(net->w, net->h, net->c*net->batch);
125  for(i = 0; i < tics; ++i){
126  network_predict(net, im.data);
127  }
128  double t = what_time_is_it_now() - time;
129  long ops = numops(net);
130  printf("\n%d evals, %f Seconds\n", tics, t);
131  printf("Floating Point Operations: %.2f Bn\n", (float)ops/1000000000.);
132  printf("FLOPS: %.2f Bn\n", (float)ops/1000000000.*tics/t);
133  printf("Speed: %f sec/eval\n", t/tics);
134  printf("Speed: %f Hz\n", tics/t);
135 }
136 
137 void operations(char *cfgfile)
138 {
139  gpu_index = -1;
140  network *net = parse_network_cfg(cfgfile);
141  long ops = numops(net);
142  printf("Floating Point Operations: %ld\n", ops);
143  printf("Floating Point Operations: %.2f Bn\n", (float)ops/1000000000.);
144 }
145 
146 void oneoff(char *cfgfile, char *weightfile, char *outfile)
147 {
148  gpu_index = -1;
149  network *net = parse_network_cfg(cfgfile);
150  int oldn = net->layers[net->n - 2].n;
151  int c = net->layers[net->n - 2].c;
152  scal_cpu(oldn*c, .1, net->layers[net->n - 2].weights, 1);
153  scal_cpu(oldn, 0, net->layers[net->n - 2].biases, 1);
154  net->layers[net->n - 2].n = 11921;
155  net->layers[net->n - 2].biases += 5;
156  net->layers[net->n - 2].weights += 5*c;
157  if(weightfile){
158  load_weights(net, weightfile);
159  }
160  net->layers[net->n - 2].biases -= 5;
161  net->layers[net->n - 2].weights -= 5*c;
162  net->layers[net->n - 2].n = oldn;
163  printf("%d\n", oldn);
164  layer l = net->layers[net->n - 2];
165  copy_cpu(l.n/3, l.biases, 1, l.biases + l.n/3, 1);
166  copy_cpu(l.n/3, l.biases, 1, l.biases + 2*l.n/3, 1);
167  copy_cpu(l.n/3*l.c, l.weights, 1, l.weights + l.n/3*l.c, 1);
168  copy_cpu(l.n/3*l.c, l.weights, 1, l.weights + 2*l.n/3*l.c, 1);
169  *net->seen = 0;
170  save_weights(net, outfile);
171 }
172 
173 void oneoff2(char *cfgfile, char *weightfile, char *outfile, int l)
174 {
175  gpu_index = -1;
176  network *net = parse_network_cfg(cfgfile);
177  if(weightfile){
178  load_weights_upto(net, weightfile, 0, net->n);
179  load_weights_upto(net, weightfile, l, net->n);
180  }
181  *net->seen = 0;
182  save_weights_upto(net, outfile, net->n);
183 }
184 
185 void partial(char *cfgfile, char *weightfile, char *outfile, int max)
186 {
187  gpu_index = -1;
188  network *net = load_network(cfgfile, weightfile, 1);
189  save_weights_upto(net, outfile, max);
190 }
191 
192 void print_weights(char *cfgfile, char *weightfile, int n)
193 {
194  gpu_index = -1;
195  network *net = load_network(cfgfile, weightfile, 1);
196  layer l = net->layers[n];
197  int i, j;
198  //printf("[");
199  for(i = 0; i < l.n; ++i){
200  //printf("[");
201  for(j = 0; j < l.size*l.size*l.c; ++j){
202  //if(j > 0) printf(",");
203  printf("%g ", l.weights[i*l.size*l.size*l.c + j]);
204  }
205  printf("\n");
206  //printf("]%s\n", (i == l.n-1)?"":",");
207  }
208  //printf("]");
209 }
210 
211 void rescale_net(char *cfgfile, char *weightfile, char *outfile)
212 {
213  gpu_index = -1;
214  network *net = load_network(cfgfile, weightfile, 0);
215  int i;
216  for(i = 0; i < net->n; ++i){
217  layer l = net->layers[i];
218  if(l.type == CONVOLUTIONAL){
219  rescale_weights(l, 2, -.5);
220  break;
221  }
222  }
223  save_weights(net, outfile);
224 }
225 
226 void rgbgr_net(char *cfgfile, char *weightfile, char *outfile)
227 {
228  gpu_index = -1;
229  network *net = load_network(cfgfile, weightfile, 0);
230  int i;
231  for(i = 0; i < net->n; ++i){
232  layer l = net->layers[i];
233  if(l.type == CONVOLUTIONAL){
234  rgbgr_weights(l);
235  break;
236  }
237  }
238  save_weights(net, outfile);
239 }
240 
241 void reset_normalize_net(char *cfgfile, char *weightfile, char *outfile)
242 {
243  gpu_index = -1;
244  network *net = load_network(cfgfile, weightfile, 0);
245  int i;
246  for (i = 0; i < net->n; ++i) {
247  layer l = net->layers[i];
248  if (l.type == CONVOLUTIONAL && l.batch_normalize) {
250  }
251  if (l.type == CONNECTED && l.batch_normalize) {
253  }
254  if (l.type == GRU && l.batch_normalize) {
261  }
262  }
263  save_weights(net, outfile);
264 }
265 
267 {
268  int j;
269  l.batch_normalize=1;
270  l.scales = calloc(n, sizeof(float));
271  for(j = 0; j < n; ++j){
272  l.scales[j] = 1;
273  }
274  l.rolling_mean = calloc(n, sizeof(float));
275  l.rolling_variance = calloc(n, sizeof(float));
276  return l;
277 }
278 
279 void normalize_net(char *cfgfile, char *weightfile, char *outfile)
280 {
281  gpu_index = -1;
282  network *net = load_network(cfgfile, weightfile, 0);
283  int i;
284  for(i = 0; i < net->n; ++i){
285  layer l = net->layers[i];
286  if(l.type == CONVOLUTIONAL && !l.batch_normalize){
287  net->layers[i] = normalize_layer(l, l.n);
288  }
289  if (l.type == CONNECTED && !l.batch_normalize) {
290  net->layers[i] = normalize_layer(l, l.outputs);
291  }
292  if (l.type == GRU && l.batch_normalize) {
299  net->layers[i].batch_normalize=1;
300  }
301  }
302  save_weights(net, outfile);
303 }
304 
305 void statistics_net(char *cfgfile, char *weightfile)
306 {
307  gpu_index = -1;
308  network *net = load_network(cfgfile, weightfile, 0);
309  int i;
310  for (i = 0; i < net->n; ++i) {
311  layer l = net->layers[i];
312  if (l.type == CONNECTED && l.batch_normalize) {
313  printf("Connected Layer %d\n", i);
315  }
316  if (l.type == GRU && l.batch_normalize) {
317  printf("GRU Layer %d\n", i);
318  printf("Input Z\n");
320  printf("Input R\n");
322  printf("Input H\n");
324  printf("State Z\n");
326  printf("State R\n");
328  printf("State H\n");
330  }
331  printf("\n");
332  }
333 }
334 
335 void denormalize_net(char *cfgfile, char *weightfile, char *outfile)
336 {
337  gpu_index = -1;
338  network *net = load_network(cfgfile, weightfile, 0);
339  int i;
340  for (i = 0; i < net->n; ++i) {
341  layer l = net->layers[i];
342  if ((l.type == DECONVOLUTIONAL || l.type == CONVOLUTIONAL) && l.batch_normalize) {
344  net->layers[i].batch_normalize=0;
345  }
346  if (l.type == CONNECTED && l.batch_normalize) {
348  net->layers[i].batch_normalize=0;
349  }
350  if (l.type == GRU && l.batch_normalize) {
363  net->layers[i].batch_normalize=0;
364  }
365  }
366  save_weights(net, outfile);
367 }
368 
369 void mkimg(char *cfgfile, char *weightfile, int h, int w, int num, char *prefix)
370 {
371  network *net = load_network(cfgfile, weightfile, 0);
372  image *ims = get_weights(net->layers[0]);
373  int n = net->layers[0].n;
374  int z;
375  for(z = 0; z < num; ++z){
376  image im = make_image(h, w, 3);
377  fill_image(im, .5);
378  int i;
379  for(i = 0; i < 100; ++i){
380  image r = copy_image(ims[rand()%n]);
381  rotate_image_cw(r, rand()%4);
382  random_distort_image(r, 1, 1.5, 1.5);
383  int dx = rand()%(w-r.w);
384  int dy = rand()%(h-r.h);
385  ghost_image(r, im, dx, dy);
386  free_image(r);
387  }
388  char buff[256];
389  sprintf(buff, "%s/gen_%d", prefix, z);
390  save_image(im, buff);
391  free_image(im);
392  }
393 }
394 
395 void visualize(char *cfgfile, char *weightfile)
396 {
397  network *net = load_network(cfgfile, weightfile, 0);
398  visualize_network(net);
399 #ifdef OPENCV
400  cvWaitKey(0);
401 #endif
402 }
403 
404 int main(int argc, char **argv)
405 {
406  //test_resize("data/bad.jpg");
407  //test_box();
408  //test_convolutional_layer();
409  if(argc < 2){
410  fprintf(stderr, "usage: %s <function>\n", argv[0]);
411  return 0;
412  }
413  gpu_index = find_int_arg(argc, argv, "-i", 0);
414  if(find_arg(argc, argv, "-nogpu")) {
415  gpu_index = -1;
416  }
417 
418 #ifndef GPU
419  gpu_index = -1;
420 #else
421  if(gpu_index >= 0){
423  }
424 #endif
425 
426  if (0 == strcmp(argv[1], "average")){
427  average(argc, argv);
428  } else if (0 == strcmp(argv[1], "yolo")){
429  run_yolo(argc, argv);
430  } else if (0 == strcmp(argv[1], "super")){
431  run_super(argc, argv);
432  } else if (0 == strcmp(argv[1], "lsd")){
433  run_lsd(argc, argv);
434  } else if (0 == strcmp(argv[1], "detector")){
435  run_detector(argc, argv);
436  } else if (0 == strcmp(argv[1], "detect")){
437  float thresh = find_float_arg(argc, argv, "-thresh", .5);
438  char *filename = (argc > 4) ? argv[4]: 0;
439  char *outfile = find_char_arg(argc, argv, "-out", 0);
440  int fullscreen = find_arg(argc, argv, "-fullscreen");
441  test_detector("cfg/coco.data", argv[2], argv[3], filename, thresh, .5, outfile, fullscreen);
442  } else if (0 == strcmp(argv[1], "cifar")){
443  run_cifar(argc, argv);
444  } else if (0 == strcmp(argv[1], "go")){
445  run_go(argc, argv);
446  } else if (0 == strcmp(argv[1], "rnn")){
447  run_char_rnn(argc, argv);
448  } else if (0 == strcmp(argv[1], "coco")){
449  run_coco(argc, argv);
450  } else if (0 == strcmp(argv[1], "classify")){
451  predict_classifier("cfg/imagenet1k.data", argv[2], argv[3], argv[4], 5);
452  } else if (0 == strcmp(argv[1], "classifier")){
453  run_classifier(argc, argv);
454  } else if (0 == strcmp(argv[1], "regressor")){
455  run_regressor(argc, argv);
456  } else if (0 == strcmp(argv[1], "isegmenter")){
457  run_isegmenter(argc, argv);
458  } else if (0 == strcmp(argv[1], "segmenter")){
459  run_segmenter(argc, argv);
460  } else if (0 == strcmp(argv[1], "art")){
461  run_art(argc, argv);
462  } else if (0 == strcmp(argv[1], "tag")){
463  run_tag(argc, argv);
464  } else if (0 == strcmp(argv[1], "3d")){
465  composite_3d(argv[2], argv[3], argv[4], (argc > 5) ? atof(argv[5]) : 0);
466  } else if (0 == strcmp(argv[1], "test")){
467  test_resize(argv[2]);
468  } else if (0 == strcmp(argv[1], "captcha")){
469  run_captcha(argc, argv);
470  } else if (0 == strcmp(argv[1], "nightmare")){
471  run_nightmare(argc, argv);
472  } else if (0 == strcmp(argv[1], "rgbgr")){
473  rgbgr_net(argv[2], argv[3], argv[4]);
474  } else if (0 == strcmp(argv[1], "reset")){
475  reset_normalize_net(argv[2], argv[3], argv[4]);
476  } else if (0 == strcmp(argv[1], "denormalize")){
477  denormalize_net(argv[2], argv[3], argv[4]);
478  } else if (0 == strcmp(argv[1], "statistics")){
479  statistics_net(argv[2], argv[3]);
480  } else if (0 == strcmp(argv[1], "normalize")){
481  normalize_net(argv[2], argv[3], argv[4]);
482  } else if (0 == strcmp(argv[1], "rescale")){
483  rescale_net(argv[2], argv[3], argv[4]);
484  } else if (0 == strcmp(argv[1], "ops")){
485  operations(argv[2]);
486  } else if (0 == strcmp(argv[1], "speed")){
487  speed(argv[2], (argc > 3 && argv[3]) ? atoi(argv[3]) : 0);
488  } else if (0 == strcmp(argv[1], "oneoff")){
489  oneoff(argv[2], argv[3], argv[4]);
490  } else if (0 == strcmp(argv[1], "oneoff2")){
491  oneoff2(argv[2], argv[3], argv[4], atoi(argv[5]));
492  } else if (0 == strcmp(argv[1], "print")){
493  print_weights(argv[2], argv[3], atoi(argv[4]));
494  } else if (0 == strcmp(argv[1], "partial")){
495  partial(argv[2], argv[3], argv[4], atoi(argv[5]));
496  } else if (0 == strcmp(argv[1], "average")){
497  average(argc, argv);
498  } else if (0 == strcmp(argv[1], "visualize")){
499  visualize(argv[2], (argc > 3) ? argv[3] : 0);
500  } else if (0 == strcmp(argv[1], "mkimg")){
501  mkimg(argv[2], argv[3], atoi(argv[4]), atoi(argv[5]), atoi(argv[6]), argv[7]);
502  } else if (0 == strcmp(argv[1], "imtest")){
503  test_resize(argv[2]);
504  } else {
505  fprintf(stderr, "Not an option: %s\n", argv[1]);
506  }
507  return 0;
508 }
509 
Definition: darknet.h:82
void composite_3d(char *f1, char *f2, char *out, int delta)
Definition: image.c:913
void oneoff(char *cfgfile, char *weightfile, char *outfile)
Definition: darknet.c:146
void run_lsd(int argc, char **argv)
Definition: lsd.c:1347
float * scales
Definition: darknet.h:239
image copy_image(image p)
Definition: image.c:519
float * biases
Definition: darknet.h:236
int batch
Definition: darknet.h:436
make_image
Definition: darknet.py:61
struct layer * input_h_layer
Definition: darknet.h:316
int find_arg(int argc, char *argv[], char *arg)
Definition: utils.c:120
struct layer * output_layer
Definition: darknet.h:297
void set_batch_network(network *net, int b)
Definition: network.c:339
int n
Definition: darknet.h:142
struct layer * wg
Definition: darknet.h:332
void print_weights(char *cfgfile, char *weightfile, int n)
Definition: darknet.c:192
void test_detector(char *datacfg, char *cfgfile, char *weightfile, char *filename, float thresh, float hier_thresh, char *outfile, int fullscreen)
Definition: detector.c:562
struct layer * state_z_layer
Definition: darknet.h:311
void run_char_rnn(int argc, char **argv)
Definition: rnn.c:519
void visualize_network(network *net)
Definition: network.c:477
void average(int argc, char *argv[])
Definition: darknet.c:26
float * rolling_variance
Definition: darknet.h:259
void run_classifier(int argc, char **argv)
Definition: classifier.c:1089
char * find_char_arg(int argc, char **argv, char *arg, char *def)
Definition: utils.c:163
void normalize_net(char *cfgfile, char *weightfile, char *outfile)
Definition: darknet.c:279
size_t * seen
Definition: darknet.h:437
Definition: darknet.h:512
struct layer * uz
Definition: darknet.h:320
void save_image(image p, const char *name)
Definition: image.c:717
void denormalize_convolutional_layer(layer l)
int out_w
Definition: darknet.h:141
struct layer * uh
Definition: darknet.h:324
void save_weights(network *net, char *filename)
Definition: parser.c:1080
network * parse_network_cfg(char *filename)
Definition: parser.c:742
void reset_normalize_net(char *cfgfile, char *weightfile, char *outfile)
Definition: darknet.c:241
void fill_image(image m, float s)
Definition: image.c:843
void test_resize(char *filename)
Definition: image.c:1396
void save_weights_upto(network *net, char *filename, int cutoff)
Definition: parser.c:1007
long numops(network *net)
Definition: darknet.c:82
network_predict
Definition: darknet.py:79
struct layer * input_r_layer
Definition: darknet.h:313
struct layer * wh
Definition: darknet.h:323
int h
Definition: darknet.h:514
void load_weights_upto(network *net, char *filename, int start, int cutoff)
Definition: parser.c:1218
void run_tag(int argc, char **argv)
Definition: tag.c:126
void run_captcha(int argc, char **argv)
Definition: captcha.c:335
struct layer * ui
Definition: darknet.h:329
void run_art(int argc, char **argv)
Definition: art.c:55
void rescale_net(char *cfgfile, char *weightfile, char *outfile)
Definition: darknet.c:211
void run_segmenter(int argc, char **argv)
Definition: segmenter.c:221
layer normalize_layer(layer l, int n)
Definition: darknet.c:266
void run_go(int argc, char **argv)
Definition: go.c:1320
struct layer * wf
Definition: darknet.h:328
int batch_normalize
Definition: darknet.h:129
int size
Definition: darknet.h:145
struct layer * input_z_layer
Definition: darknet.h:310
layer * layers
Definition: darknet.h:441
free_image
Definition: darknet.py:95
int out_h
Definition: darknet.h:141
Definition: darknet.h:80
void oneoff2(char *cfgfile, char *weightfile, char *outfile, int l)
Definition: darknet.c:173
void rescale_weights(layer l, float scale, float trans)
int inputs
Definition: darknet.h:134
struct layer * wi
Definition: darknet.h:330
void axpy_cpu(int N, float ALPHA, float *X, int INCX, float *Y, int INCY)
Definition: blas.c:178
void statistics_net(char *cfgfile, char *weightfile)
Definition: darknet.c:305
float find_float_arg(int argc, char **argv, char *arg, float def)
Definition: utils.c:148
struct layer * wz
Definition: darknet.h:319
void operations(char *cfgfile)
Definition: darknet.c:137
void run_super(int argc, char **argv)
Definition: super.c:104
struct layer * ur
Definition: darknet.h:322
void mkimg(char *cfgfile, char *weightfile, int h, int w, int num, char *prefix)
Definition: darknet.c:369
void scal_cpu(int N, float ALPHA, float *X, int INCX)
Definition: blas.c:184
struct layer * input_layer
Definition: darknet.h:295
float * rolling_mean
Definition: darknet.h:258
void predict_classifier(char *datacfg, char *cfgfile, char *weightfile, char *filename, int top)
Definition: classifier.c:560
void run_yolo(int argc, char **argv)
Definition: yolo.c:307
struct layer * state_r_layer
Definition: darknet.h:314
int find_int_arg(int argc, char **argv, char *arg, int def)
Definition: utils.c:133
network * load_network(char *cfg, char *weights, int clear)
Definition: network.c:53
int groups
Definition: darknet.h:144
void speed(char *cfgfile, int tics)
Definition: darknet.c:117
struct layer * ug
Definition: darknet.h:331
struct layer * wr
Definition: darknet.h:321
void statistics_connected_layer(layer l)
void run_nightmare(int argc, char **argv)
Definition: nightmare.c:288
int w
Definition: darknet.h:513
void run_regressor(int argc, char **argv)
Definition: regressor.c:207
void denormalize_connected_layer(layer l)
void rgbgr_net(char *cfgfile, char *weightfile, char *outfile)
Definition: darknet.c:226
void cuda_set_device(int n)
Definition: cuda.c:176
void run_isegmenter(int argc, char **argv)
void random_distort_image(image im, float hue, float saturation, float exposure)
Definition: image.c:1334
void rgbgr_weights(layer l)
int c
Definition: darknet.h:140
void copy_cpu(int N, float *X, int INCX, float *Y, int INCY)
Definition: blas.c:226
image * get_weights(layer l)
struct layer * uf
Definition: darknet.h:327
struct layer * state_h_layer
Definition: darknet.h:317
void partial(char *cfgfile, char *weightfile, char *outfile, int max)
Definition: darknet.c:185
int c
Definition: darknet.h:468
int gpu_index
Definition: cuda.c:1
LAYER_TYPE type
Definition: darknet.h:120
void rotate_image_cw(image im, int times)
Definition: image.c:328
int h
Definition: darknet.h:468
int n
Definition: darknet.h:435
Definition: darknet.h:81
int outputs
Definition: darknet.h:135
void run_cifar(int argc, char **argv)
Definition: cifar.c:232
struct layer * uo
Definition: darknet.h:325
struct layer * wo
Definition: darknet.h:326
void load_weights(network *net, char *filename)
Definition: parser.c:1308
int w
Definition: darknet.h:468
void denormalize_net(char *cfgfile, char *weightfile, char *outfile)
Definition: darknet.c:335
void run_detector(int argc, char **argv)
Definition: detector.c:792
double what_time_is_it_now()
Definition: utils.c:27
void ghost_image(image source, image dest, int dx, int dy)
Definition: image.c:380
struct layer * self_layer
Definition: darknet.h:296
void visualize(char *cfgfile, char *weightfile)
Definition: darknet.c:395
Definition: darknet.h:119
float * data
Definition: darknet.h:516
float * weights
Definition: darknet.h:242
void run_coco(int argc, char **argv)
Definition: coco.c:336
int main(int argc, char **argv)
Definition: darknet.c:404