I’m training an object detection model on yolov8 but my training data is a little biased because it doesn’t represent the real life distribution.
(I want to count objects of one class but different shape in a video and need them to be detected with near equal probability. ) How can I make sure to generalise the model enough so that the bias doesn’t have too much of an effect? I know it will come with more false positives, but that’s not a problem.

  • BanntuOPB
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    Yeah I thought that might be the case.
    The projects goal is the following:

    1. 3D-Camera capturing live images of fish
    2. yolov8 pose model detecting fish that are completely visible and not facing the camera, also detecting nose and tail of the fish
    3. using the distance values of 3D-camera to calculate length of fish in mm
    4. running the model on a live video stream to estimate the distribution of fish-lengths in a fish-tank

    The problem is the following:
    I have annotated images of multiple growth stages of fish, but the average growth stage of the fish in the training data will almost always be either smaller or bigger than the ones im measuring.
    So when I’m training a model on all data I have and then running the model in a tank of fish that are at the upper end of growth, than the model will detect the smaller fish inside that tank more often, because most fish in the training data are smaller then the fish in the tank.
    Does that make sense?

    These values are just to show what I mean (Expecting that the model is always trained on all 5k samples)

    growth stage 1 month 2 months 3 months 4 months 5 months
    training samples 1000 1000 1000 1000 1000
    length error on real live data + 10% + 5 % 0 % - 5% -10%