Training a detector on images with no target bounding boxes seems a common and necessary task, but doesn't seem currently possible with Matlab. Any workarounds?

20 visualizaciones (últimos 30 días)
As others have run into this issue repeatedly and Mathworks tech support told me they're working on it, but has anyone devised any workarounds in the meantime? I haven't thought of any way to get around this problem. Tech support suggested pasting a dummy target in each image but with blockedImages that's simply not possible. You'd have to paste tons of fake targets all over the image just to work around this issue. I suppose another way is to create a dummy "stuff" category, but that will increase the network size and complexity with no benefit other than Matlab won't crash when you try to train it. I simply cannot imagine it's that hard to just tell the classifier "there's no target in this image", it does that for most of the image anyway, why not the whole image?
  2 comentarios
Image Analyst
Image Analyst el 30 de Nov. de 2022
Not sure what you're asking. Are you asking to train a network but without having ground truth?
David
David el 30 de Nov. de 2022
Editada: David el 30 de Nov. de 2022
I'm saying ground truth is, there is no target in this image.
In the standard example for training a detector, every training pair has at least one target object with a bounding box and class name. If you pass in an image with no target bounding box and class name the training algorithm crashes. But an image with no target is a perfectly valid training example. In the real world, there are many images with no target.
The target's surrounding imagery is typically different than most real world imagery, so I've noticed there are a lot of false positives in image areas NOT around targets.
I want to be able to pass in any image and tell the network there is no target in this image, but I can't.
To use the satellite image plane detector using blockedImages example from Mathworks, they're trying to find planes on runways so all the examples are patches of cement with planes on them. But in the real world there is a lot of different background than cement. So the network has never seen anything but cement and it gives a lot of false positives when it sees things like woods, water, etc. One needs to train the network on these examples (woods, water) but there is never a plane target with bounding box in those cases. But there is currently no way to train the detector unless there is a target with associated bounding box in the training pair. This makes their whole detector scheme pretty weak.

Iniciar sesión para comentar.

Respuestas (1)

David
David el 4 de Dic. de 2022
Editada: David el 6 de Dic. de 2022
In case anyone cares, the only solution I could figure out was to add a dummy class that's always on. This allowed me to train on both images with targets and no targets. It works pretty well.
I had thought to paste in a fake target but there's nowhere in the code to do that unless you want to sprinkle them all over the source (a copy) image.

Productos


Versión

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by