Manual submission combined with Encounter cloning causes only one algorithm to be referenced in match results when >1 are configured in IA.json
Expected Behavior When multiple annotations are detected on an image that has been manually submitted (submit.jsp route), each annotation should have all configured default=true algorithms run for matching.
Current Behavior Only one is currently displayed per annotation when clicking "match results", yet the correct number and combination are actually run in WBIA.
This is easily reproducible (see below).
Related community issues:
- https://community.wildme.org/t/pie-v2-only-match-results-without-miewid-results-for-crocuta-crocuta/3155
- https://community.wildme.org/t/new-entries-sometimes-miewid-sometimes-hotspotter/2940/15
Testing Notes
These images can help reproduce the issue.
Progress/investigation:
- Proper number and type of algorithms are being run by WBIA
- Task tree hierarchy appears different here for this cloning situation. Rather than subtasks being grouped by annotation and including multiple algorithms (as happens by manual submission without cloning and via bulk import), subtasks are grouped by algorithm. This appears to be triggered by alternative logic being called from IA.java.
if (opts.size() == 1 && annotsByIaClass.size() == 1) { newTaskParams.put("ibeis.identification", ((opts.get(0) == null) ? "DEFAULT" : opts.get(0))); topTask.setParameters(newTaskParams); tasks.add(topTask); // topTask will be used as *the*(only) task -- no children } else { **for (int i = 0; i < opts.size(); i++) {** //clustering by algorithm Task t = new Task(); t.setObjectAnnotations(annsOneIAClass); newTaskParams.put("ibeis.identification", ((opts.get(i) == null) ? "DEFAULT" : opts.get(i))); // overwrites each time t.setParameters(newTaskParams); topTask.addChild(t); tasks.add(t); } }
Clistering by algorithm causes the "match results" reference to point too low in the hierarchy tree and appear like only one algorithm was run.
Can reproduce via manual submission with >=2 images as well. Seems to hit the same logical block, which is unused by bulk import.