Viewing a single comment thread. View all comments

First_Bullfrog_4861 t1_ixhi8ki wrote

but finetuning requires the relabeling of the original dataset to include both old and the new label, which op specifically does not want to do.

i don’t think what op wants is doable. or is there some approach i’m missing? i think what op basically wants to do is retrain, but with only data from the new class, and still avoid catastrophic forgetting of the other labels.

is there a way to do this?

1

JH4mmer t1_ixhvl5k wrote

You may be making a different set of assumptions about the training data than I am, so let me clarify a bit. :-)

If you start with images that truly do contain just one class, the addition of a new class label wouldn't change anything. Your level vector for the exisiting images would migrate from [1, 0] to [1, 0, 0], something that can be done automatically without additional human intervention. Your new images (used for training the new class) would have a label of [0, 0, 1].

If, however, your images do already contain more than one possible class (which is far and away much more common in real-world data), the original labels would be already invalid, since the original labeling assumed that there was only one correct answer. Those images that do contain multiple classes would have to be relabeled, yes.

The process I'm describing is a mechanical one that doesn't involve a separate knowledge distillation step. It's a technique my team has used successfully in industrial retail applications, where the number of classes is truly an unknown, and we have to add or remove classes from our trained models frequently.

2

First_Bullfrog_4861 t1_ixjazoo wrote

ok, got it. however, in my experience the number of labels is far less obvious in real world datasets than one might expect. consider an example with images of bottles, cups and glasses, so three labels.

a model trained on these three labels will need revision if further down after the deployment process ‚bottles‘ need to be split in ‚plastic bottles‘ and ‚glass bottles‘. both label sets are perfectly valid, due to the hierarchical nature of things.

anyway, my point is actually another one: afaik this will require dataset relabeling and fully iterate the training process on the newly labeled dataset.

or is there a faster way to make the model aware of the more finegrained bottle labels?

i mean, without access to data of cups and glasses, basically inform it of more finegrained bottle types but let it still keep its knowledge of cups and glasses.

1