Note that there are some explanatory texts on larger screens.

plurals
  1. POIndex exceeds matrix dimensions encountered when training a model
    primarykey
    data
    text
    <p>I have a problem with training a model using the PASCAL dev kit with the Discriminatively trained deformable part model system developed by Felzenszwalb, D. McAllester, D. Ramaman and his team which is implemented in Matlab.</p> <p>Currently I have this output error when I tried to train a 1-component model for 'cat' using 10 positive and 10 negative images.</p> <pre><code>Error: ??? Index exceeds matrix dimensions. Error in ==&gt; pascal_train at 48 models{i} = train(cls, models{i}, spos{i}, neg(1:maxneg), 0, 0, 4, 3, ... Error in ==&gt; pascal at 28 model = pascal_train(cls, n, note); </code></pre> <p>And this is the pascal_train file</p> <pre><code>function model = pascal_train(cls, n, note) % model = pascal_train(cls, n, note) % Train a model with 2*n components using the PASCAL dataset. % note allows you to save a note with the trained model % example: note = 'testing FRHOG (FRobnicated HOG) % At every "checkpoint" in the training process we reset the % RNG's seed to a fixed value so that experimental results are % reproducible. initrand(); if nargin &lt; 3 note = ''; end globals; [pos, neg] = pascal_data(cls, true, VOCyear); % split data by aspect ratio into n groups spos = split(cls, pos, n); cachesize = 24000; maxneg = 200; % train root filters using warped positives &amp; random negatives try load([cachedir cls '_lrsplit1']); catch initrand(); for i = 1:n % split data into two groups: left vs. right facing instances models{i} = initmodel(cls, spos{i}, note, 'N'); inds = lrsplit(models{i}, spos{i}, i); models{i} = train(cls, models{i}, spos{i}(inds), neg, i, 1, 1, 1, ... cachesize, true, 0.7, false, ['lrsplit1_' num2str(i)]); end save([cachedir cls '_lrsplit1'], 'models'); end % train root left vs. right facing root filters using latent detections % and hard negatives try load([cachedir cls '_lrsplit2']); catch initrand(); for i = 1:n models{i} = lrmodel(models{i}); models{i} = train(cls, models{i}, spos{i}, neg(1:maxneg), 0, 0, 4, 3, ... cachesize, true, 0.7, false, ['lrsplit2_' num2str(i)]); end save([cachedir cls '_lrsplit2'], 'models'); end % merge models and train using latent detections &amp; hard negatives try load([cachedir cls '_mix']); catch initrand(); model = mergemodels(models); 48: model = train(cls, model, pos, neg(1:maxneg), 0, 0, 1, 5, ... cachesize, true, 0.7, false, 'mix'); save([cachedir cls '_mix'], 'model'); end % add parts and update models using latent detections &amp; hard negatives. try load([cachedir cls '_parts']); catch initrand(); for i = 1:2:2*n model = model_addparts(model, model.start, i, i, 8, [6 6]); end model = train(cls, model, pos, neg(1:maxneg), 0, 0, 8, 10, ... cachesize, true, 0.7, false, 'parts_1'); model = train(cls, model, pos, neg, 0, 0, 1, 5, ... cachesize, true, 0.7, true, 'parts_2'); save([cachedir cls '_parts'], 'model'); end save([cachedir cls '_final'], 'model'); </code></pre> <p>I have highlighted the line of code where the error occurs at line 48.</p> <p>I am pretty sure that the system is reading in both the positive and negative images for training correctly. I have no idea where this error is occurring since matlab does not indicate precisely which index is exceeding the matrix dimensions.</p> <p>I have tried to tidy up the code as much as possible do guide me if I have done wrong somewhere.</p> <p>Any suggestions where I should start looking at? </p> <p>Ok, I tried with the use of display to check the variables in use for pascal_train; disp(i); disp(size(models)); disp(size(spos)); disp(length(neg)); disp(maxneg);</p> <p>So the results returned were;</p> <pre><code> 1 1 1 1 1 10 </code></pre> <p>200</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload