lgarithm / crystalnet

crystalnet -- a mini core AI library (being refactored, see https://github.com/lgarithm/stdnn-ops)
MIT License
16 stars 3 forks source link

Implement YOLOv2 forward #48

Closed lgarithm closed 6 years ago

lgarithm commented 6 years ago
lgarithm commented 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);
// ...
lgarithm commented 6 years ago
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
lgarithm commented 6 years ago
// 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
lgarithm commented 6 years ago

TODO:

lgarithm commented 6 years ago

In darknet, image is stored in NCHW order.

lgarithm commented 6 years ago
// 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]
lgarithm commented 6 years ago

Almost finished forward of all layers, (except for the last one). But still need a hard work on numeric debug.

lgarithm commented 6 years ago

TODO:

lgarithm commented 6 years ago

Got very closed. Will do final tuning on the yolo branch.

lgarithm commented 6 years ago

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.