Closed lgarithm closed 6 years ago
// parser.c
void save_convolutional_weights_binary(layer l, FILE *fp);
void save_convolutional_weights(layer l, FILE *fp);
void load_weights_upto(network *net, char *filename, int start, int cutoff);
// ...
MODEL_DIR=$HOME/var/models/yolo
run_yolo(){
./darknet detect cfg/$1 $MODEL_DIR/$2 data/dog.jpg
}
# run_yolo yolov1.cfg yolov1.weights # no binding box
# run_yolo yolov2.cfg yolov2.weights
# run_yolo yolov3.cfg yolov3.weights
// darknet.c
test_detector("cfg/coco.data", argv[2], argv[3], filename, thresh, .5, outfile, fullscreen); // L440
// detector.c
void test_detector(char *datacfg, char *cfgfile, char *weightfile, char *filename, float thresh, float hier_thresh, char *outfile, int fullscreen); // 562
network *net = load_network(cfgfile, weightfile, 0); // 569
TODO:
make_region_layer: batch: 1, w: 13, h: 13, n: 5, classes: 80, coords: 4
In darknet, image is stored in NCHW order.
// layer 0: [32, 416, 416]
// layer 1: [32, 208, 208]
// layer 2: [64, 208, 208]
// layer 3: [64, 104, 104]
// layer 4: [128, 104, 104]
// layer 5: [64, 104, 104]
// layer 6: [128, 104, 104]
// layer 7: [128, 52, 52]
// layer 8: [256, 52, 52]
// layer 9: [128, 52, 52]
// layer 10: [256, 52, 52]
// layer 11: [256, 26, 26]
// layer 12: [512, 26, 26]
// layer 13: [256, 26, 26]
// layer 14: [512, 26, 26]
// layer 15: [256, 26, 26]
// layer 16: [512, 26, 26]
// layer 17: [512, 13, 13]
// layer 18: [1024, 13, 13]
// layer 19: [512, 13, 13]
// layer 20: [1024, 13, 13]
// layer 21: [512, 13, 13]
// layer 22: [1024, 13, 13]
// layer 23: [1024, 13, 13]
// layer 24: [1024, 13, 13]
// layer 25: [512, 26, 26]
// layer 26: [64, 26, 26]
// layer 27: [256, 13, 13]
// layer 28: [1280, 13, 13]
// layer 29: [1024, 13, 13]
// layer 30: [425, 13, 13]
// layer 31: [425, 13, 13]
Almost finished forward of all layers, (except for the last one). But still need a hard work on numeric debug.
TODO:
Now we have yolov2 forward fully implemented in crystalnet: #80 except one function copied from darknet (reorg_cpu). The original implementation of reorg_cpu is very likely wrong.