Is there a binary classifier?

Hello. I’ve used OTB quite a few times using LargeScaleMeanShift along with TrainVectorClassifier and Vector Classifier Tools.

When I have done this previously I have created outputs with multiple different land cover types.

However now I am looking into carrying out a classification whereby I only need to output one class.

I was wondering in order to save time with creating training data whether there is an option where I only need the input of the class I am interested in and then only that class will be identified (without requiring training for the other landcover classes).

Is there some kind of binary classifier or other option where I can do this?

Hi,

If I understand well, you want to create a mask (one versus all) to identify one specific land cover. But you would like to use a pre-trained multi-class classifier and filter the right class, is that right ?

Depending on the data you use (optical images ? which bands ?) and the class you want to detect, you would better train a new model to obtain that mask.

Otherwise, you could also filter the output of your multi-class mask, but I think working on a simpler and more robuste “one-versus-all” classifier would give better results.

OTB provides very classic supervised learning algorithms and they can perform either multi-class or single-class classification tasks.

Do not hesitate to give more context !

Best regards,

Yannick

Hello Yannick. I’m basically trying to map areas of a specific type of vegetation using Sentinel 2 imagery. Previously I have carried out land cover classifications whereby I have identified all the different land cover types in my area of interest and classified all of them.

I now have a requirement whereby I only need to map one land cover type. My idea to save time was to see if there is an algorithm that will accept only one training class as input and then will separate that class out from the rest of the image. The reason for this is I thought I could save time with creating training samples for one class only rather than include the other classes.

Is there an algorithm that does this?

Hello,
Sorry for the delay…
Basically most machine learning classification algorithms can discriminate one or several classes, so you could adapt your pipeline by only learning your specific class and the background (all the other former classes).
But I’m not sure it’s the best solution, because sometimes it can be very tricky for a classifier to distinguish a very specific class (let’s say, evergreen forest) from all the other classes (let’s say shrublands+wet lands+grass+water+urban areas…). If you do so, I bet there will be many confusions between evergreen forest class and the other vegetation classes.
So if your first classification performs well, maybe you would better filter and extract the specific class from your land-cover map, instead of learning a new model.
If your specific class has a very distinctive spectral response (for instance, water versus main land has a very specific reflectance in Near Infrared bands), then you can try to train a single class classifier.

Hope that helps ! Best regards,

Yannick

Thanks for the clarification. I think I will stick to the usual way of doing it.