Bounding boxes are broken after applying Tile as a preprocessing step

#Object detection #2-category #YOLOv5 #Tile

Hello everyone,
I have a big image and need to tile it for small patches. After applying the tile preprocessing introduced by the amazing roboflow, I found some bounding boxes in the image patches were divided into two parts. That means, in these bounding boxes, the object I labeled are not complete. I don’t know how much these would affect the model accuracy. Do you think it is a issue? If yes, some suggestions on fixing this? thanks

have a good day.

Hi @Newgate, the images would be tiled at inference regardless, as a note (if you’re using tiling in preprocessing of the images for training, you’ll want to use tiling during inference:

So long as you’re fully labeling each and every object of interest, consistently, you should be fine.

What tile setting are you using? 2x2? And what is the median image size in the dataset?

  • you can view Median image size with Health Check

Hi, thanks for the information. I have images cover 3 types of resolution:
I am still trying to figure out the optimal patch size for the training. Some suggestions?

By the way, I would like to know some details about the tile operation: if the images are not evenly divisible, what the logic behind the tile processing then? It automatically resized the patches? I did not see any padding pixels added. thank you so much!

Just do 640x640 for resize and Tile 4x3

You can also try 1280x1280 for resize with Tile at 4x3, just note it will take longer to train and infer this way since the images are larger

The images are split evenly by the tiles you designate, and then, if you choose Resize, they are resized accordingly

Clear, thank you so much.

About the Tile function from roboflow, I am still curious. Let us say, for example, my image size is 40003000, If I set 99 for the tile operation, it is not evenly divisible. In this case, I get 81 patches, however, the total length size of the patches (9) in a row is smaller than 4000, and total height size is smaller than 3000 as well. That means the Tile function deletes the last pixels?

I did not find the documentation of Tile function.

Thanks again

as mentioned, the operation is the same - it will just divide the image into an even 9x9, split from the original image dimensions, and then resize each tile accordingly.

it shows an image preview example here

Hey Mohamed, I’m having a similar problem and looking at the Edge Tiling During Inference post doesn’t help much, they don’t give any specific direction or code as to how to apply the tiling for inference. I annotated and trained my data on 832*832p images but need to inference on large drone images, how do I split these large images up?

Cheers, Olivier