0
$\begingroup$

I have two images, let's say old and new. In the old one there are 1:M objects, in the new one 1:N. I need to label the objects in the new one based on some metric (yes, I realize object tracking is a whole complicated area, but I need some entry point right now). So I've obtained a metric based on the distance to the objects in the previous image, sort of 1-NN. I've also obtained a different metric, also sort of 1-NN, based on pixel intensity (color). Of course, I want to use both of these features somehow. For example, based on the distance metric object 3 in the new is closest to object 5 in the old, and based on the pixel intensity metric - closer to object 9 in the old image.

Any suggestions on how to combine these two? Perhaps some kernel, but I'm not sure.

$\endgroup$

1 Answer 1

1
$\begingroup$

There are multiple solutions:

  1. Do linear scalarizing. E.g. If you have $d_0$ and $d_1$ then you could do:

$$D = w_1 d_1 + w_2 d_2$$

  1. You could use the Pareto optimal front. The Pareto optimal front is the set of all distance pairs where one of the distances cannot be dominated without deteriorating the other one. This solution is probably not that well suited for your problem.

  2. If you have a training set of linked object you could learn a model that predicts whether or not the objects are the same based on the distances. E.g. A logistic regression with the two distances as input. You could use a kernel or other non-linear tools to increase performance.

More ideas on this wiki about multi-objective optimization.

$\endgroup$
4
  • $\begingroup$ By kernel, do you mean svm? $\endgroup$
    – Alex
    Commented Aug 13, 2016 at 4:53
  • $\begingroup$ That is also certainly an option but I was referring to the more general [kernel trick][en.m.wikipedia.org/wiki/Kernel_method]. $\endgroup$
    – Pieter
    Commented Aug 13, 2016 at 7:53
  • $\begingroup$ Do you know of any Python implementations? $\endgroup$
    – Alex
    Commented Aug 18, 2016 at 14:58
  • $\begingroup$ If you do not have to many datapoints you could compute the kernel beforehand with a pairwise metric (scikit-learn.org/stable/modules/metrics.html#metrics). Otherwise use the svm implementation in sklearn. That's the easy route. $\endgroup$
    – Pieter
    Commented Aug 18, 2016 at 15:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.