Skip to content

Bugs in the evaluation code #4

@sashamaru

Description

@sashamaru

For the baseline methods, the results are stored using a dictionary with the key (method, iters). However, the if condition that updates these results is based solely on the iteration count (iters). As a result, for each batch, the results are reassigned as an empty list, causing only the results from the last batch to be retained. This is the primary reason why all the baseline methods perform poorly.

for iters in [10, 25, 50, 100, 250, 500, 750, 1000, 1500, 2500, 5000, 7500, 10000]:
key = (method, iters)
if iters not in pose_errors:
pose_errors[key] = []
runtimes[key] = []
inlier_numbers[key] = []

In superansac, it's correct.
for iters in [10, 25, 50, 100, 250, 500, 750, 1000, 1500, 2500, 5000, 7500, 10000]:
key = iters
if iters not in pose_errors:
pose_errors[key] = []
runtimes[key] = []
inlier_numbers[key] = []

In my experiment, I avoided this issue because my implementation uses only the iteration count (iters) as the key.
Image
You should address this bug, otherwise, others running the evaluation may obtain results similar to those in your paper, where the code is incorrect. Consequently, all the reported results in the paper need to be corrected.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions