Submitted by Messatsu92 t3_y3vpc0 in MachineLearning

Hi guys!

I'm currenlty working on a computer vision project with ~10k products to annotate.

We have a lot of pictures to annotate. For each picture that we have to annotate, we have to match it with 1 product name.

To do this, I've created ~10k labels (which corresponds to the ~10k products).

Unfortunately, when trying to open a picture in order to annotate it, all the platforms that I've tried lag : CVAT, Label Studio etc.

Do you have any idea / workaround to make this possible?

Thanks a lot for your help!

11

Comments

You must log in or register to comment.

Left_Boat_3632 t1_isaqxzg wrote

Your photos are likely too big/high resolution. I would try downscaling the images before loading them in the interface.

5

Messatsu92 OP t1_isat4q8 wrote

>labelimg

Thanks for your suggestion. Unfortunately I have to keep them with the best quality possible, but I don't think that it's related to the pictures.
I've tried with Label Studio & CVAT to create a new project from scratch with 1 low quality picture and 10k labels and it doesn't work (or lags a lot).

3

Messatsu92 OP t1_isatha6 wrote

Thank you u/echo666k! I've already tried with Label Studio and it lags a lot. AFAIK labelimg is used into Label Studio, so I'm not sure if labelimg could manage something that Label Studio isn't capable of?

1

Left_Boat_3632 t1_isatuv2 wrote

It could be something with your system then.

You don't have to degrade the quality of the original images. If you create a copy of the images and downsoze the copy, you can label the copied files while maintaining a link between the name of the original file and a name of the copy.

What size are the files?

4

Messatsu92 OP t1_isauci0 wrote

I've tried with just 1 little picture (400kb, 512*512), it's working, but when I add the 10k labels into the JSON, unfortunately CVAT, Label Studio etc. lag a lot or don't work at all (freeze).

3

echo666k t1_isaufuc wrote

i’ve tried label studio and labelimg and labelimg was quite easier. but it also does labeling depending on the try of algorithm you will use. its very useful for YOLO for example. another technique u could try is pseudo labelling. but if u have a different label for each image this might not work

1

Messatsu92 OP t1_isaw7mw wrote

Exactly, it's definitely an issue with the amount of labels.

About my use case, I've to list 100k pictures with 10k labels. For each picture, the user have to use the object detection to detect the item, then he has to annotate (by chosing one of the 10k labels of items)

Trying to figure out if there's a workaround or software that maybe could fit with my needs...

3

Messatsu92 OP t1_isawbhe wrote

Thanks for this information!

About my use case, I've to list 100k pictures with 10k labels. For each picture, the user have to use the object detection to detect the item, then he has to annotate (by chosing one of the 10k labels of items)

Trying to figure out if there's a workaround or software that maybe could fit with my needs...

2

FirstBabyChancellor t1_isdrhk8 wrote

How would the annotator even know how to label out of 10K different labels? Having that many possible labels feels like a recipe for inaccurate labels because the annotator will simply get confused or zone out.

I obviously don't know the specifics of your data, but that's my first impression from reading your post.

Anyways, one solution that addresses both this and your issues with the labelling tools would be to break the task into multiple rounds. If the items are products, then start off by grouping the individual products into categories, such as foods, furniture, etc.

Then, in subsequent rounds, drill down into the specifics. This is obviously more time consuming and expensive, though, because you're labelling each item at least twice.

One refinement you could make here is to use preliminary models for the assignment of the labels into the broader categories. The is, hand label a relatively small subset of the data with examples of each category (foods, furniture, etc.). Train a model on this small amount of data and generate classification probabilities to associate each image with one of these categories. Define some threshold (e.g., 25%) for inclusion in a given category. Note that this means that if p(food) =30% and p(furniture)=28%, then this image will be labelled as part of both the food and furniture rounds. Depending on how good this initial model is (you'll be training on a small amount of data so it's likely not going to have great performance but on the other hand maybe models already exist that can identify the broader categories with ease or transfer learning might help despite the small amount of training data), you'll have to think of a 'sane' threshold. The worse the model is, the lower you should set your threshold, with the trade-off being you will likely include the same image in multiple sub-rounds.

You've now broken to the data into categories and can now have multiple labelling tasks, one for each category, with say a few hundred labels per task instead of 10K. If your labelling tool allows freeform text, add that to the task so that if an annotator sees some food in the furniture task, none of the labels in that task will match, of course, so allow them to tag that image as being food and out of bounds for the given task. Then address these edge cases with a little more labelling at the end.

Also, because some images may belong to multiple rounds if your intial model is bad or your threshold is low, you'll also need to do some post -processing to ensure your labels aren't conflicting (i.e., the same image isn't marked as a food product and a furniture product by different annotators in different rounds). Again, identify such conflicts at the end and do some more labelling, as needed.

3