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?

18 views (last 30 days)
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 Comments
David
David on 30 Nov 2022
Edited: David on 30 Nov 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.

Sign in to comment.

Answers (1)

David
David on 4 Dec 2022
Edited: David on 6 Dec 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.

Products


Release

R2022b

Community Treasure Hunt

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

Start Hunting!