qxcv / joint-regressor

Regressing joints for fun and profit
Apache License 2.0
2 stars 3 forks source link

Skipping all scales not handled gracefully #24

Closed qxcv closed 5 years ago

qxcv commented 8 years ago

If, during training, detect.m decides that it's not worth doing detections at any scale, then I get a nasty stack trace like this one:

graphical_model: iter 1: latent positive: 5/3171

detect() skipping level 4/7
detect() skipping level 6/7
detect() skipping level 7/7
detect() skipping level 2/7
detect() skipping level 5/7
detect() skipping level 1/7
detect() skipping level 3/7
A dot name structure assignment is illegal when the structure is empty.  Use a subscript on the structure.

Error in detect>unscale_boxes (line 437)
[dets.boxes] = deal(scaled_boxes{:});

Error in detect (line 334)
    boxes = unscale_boxes(boxes, cs_xtrim, cs_ytrim, cs_scale);

Error in train>poslatent (line 184)
    box = detect(d1, d2, model, 'PairInfo', pair, 'Thresh', 0, ...

Error in train (line 79)
    numpositives = poslatent(name, iter_idx, model, pos, overlap, cache_dir);

Error in train_model (line 22)
    model = train(cachedir, cls, model, pos_val, neg_val, 1);

Error in main_generic (line 68)
ssvm_model = train_model(conf, val_dataset, neg_dataset, subpose_disps);

Error in main_h36m (line 13)
main_generic(conf, train_dataset, val_dataset, test_seqs);

437 [dets.boxes] = deal(scaled_boxes{:});

The immediate problem there is that boxes (in the detect.m frame) is an empty array.

In all likelihood that is not the only place where my pipeline can fail, and I probably need to fix things higher up as well (e.g. in the "best example" writing code).