Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

yolox person detection result can not reproduce #387

Open
alexsun009 opened this issue Feb 28, 2024 · 1 comment
Open

yolox person detection result can not reproduce #387

alexsun009 opened this issue Feb 28, 2024 · 1 comment

Comments

@alexsun009
Copy link

Hi, thanks for the work:
for MOT20 detection model, I try same dataset (train: crowdhuman+MOT20 train, test: MOT20 test), but the yolox detection model person detection result on MOT is much lower than your model: my one only around 60%mAP compare to you release yolox model 82% mAP in person detection,
could help take a look the parameter that I use which might go wrong, thanks

parameters that I use:

class Exp(BaseExp):
def init(self):
super().init()

    # ---------------- model config ---------------- #
    # detect classes number of model
    self.num_classes = 1
    # factor of model depth
    self.depth = 1.00
    # factor of model width
    self.width = 1.00
    # activation name. For example, if using "relu", then "silu" will be replaced to "relu".
    self.act = "silu"

    # ---------------- dataloader config ---------------- #
    # set worker to 4 for shorter dataloader init time
    # If your training process cost many memory, reduce this value.
    self.data_num_workers = 4
    self.input_size = (800, 1440)  # (height, width)
    # Actual multiscale ranges: [640 - 5 * 32, 640 + 5 * 32].
    # To disable multiscale training, set the value to 0.
    self.multiscale_range = 7
    # You can uncomment this line to specify a multiscale range
    # self.random_size = (14, 26)
    # dir of dataset images, if data_dir is None, this project will use `datasets` dir
    self.data_dir = None
    # name of annotation file for training
    self.train_ann = "mot20train_CHtrain_1classonlyv2.json"

    #self.train_ann = "mot20_test_1classonly.json"
    #self.train_ann = "mot20_test.json"
    # name of annotation file for evaluation
    self.val_ann = "mot20_test_1classonly.json"
    # name of annotation file for testing
    self.test_ann = "mot20_test_1classonly.json"

    # --------------- transform config ----------------- #
    # prob of applying mosaic aug
    self.mosaic_prob = 1.0
    # prob of applying mixup aug
    self.mixup_prob = 1.0
    # prob of applying hsv aug
    self.hsv_prob = 1.0
    # prob of applying flip aug
    self.flip_prob = 0.5
    # rotation angle range, for example, if set to 2, the true range is (-2, 2)
    self.degrees = 10.0
    # translate range, for example, if set to 0.1, the true range is (-0.1, 0.1)
    self.translate = 0.1
    self.mosaic_scale = (0.1, 2)
    # apply mixup aug or not
    self.enable_mixup = True
    self.mixup_scale = (0.5, 1.5)
    # shear angle range, for example, if set to 2, the true range is (-2, 2)
    self.shear = 2.0

    # --------------  training config --------------------- #
    # epoch number used for warmup
    self.warmup_epochs = 1
    # max training epoch
    self.max_epoch = 300
    # minimum learning rate during warmup
    self.warmup_lr = 0
    self.min_lr_ratio = 0.05
    # learning rate for one image. During training, lr will multiply batchsize.
    self.basic_lr_per_img = 0.000001 / 64.0
    # name of LRScheduler
    self.scheduler = "yoloxwarmcos"
    # last #epoch to close augmention like mosaic
    self.no_aug_epochs = 1
    # apply EMA during training
    self.ema = True

    # weight decay of optimizer
    self.weight_decay = 5e-4
    # momentum of optimizer
    self.momentum = 0.9
    # log period in iter, for example,
    # if set to 1, user could see log every iteration.
    self.print_interval = 10
    # eval period in epoch, for example,
    # if set to 1, model will be evaluate after every epoch.
    self.eval_interval = 1
    # save history checkpoint or not.
    # If set to False, yolox will only save latest and best ckpt.
    self.save_history_ckpt = False
    # name of experiment
    self.exp_name = os.path.split(os.path.realpath(__file__))[1].split(".")[0]

    # -----------------  testing config ------------------ #
    # output image size during evaluation/test
    self.test_size = (800, 1440)
    # confidence threshold during evaluation/test,
    # boxes whose scores are less than test_conf will be filtered
    self.test_conf = 0.01
    # nms threshold
    self.nmsthre = 0.65
@alexsun009
Copy link
Author

know the learning rate I use is very low, but use same learning rate e-3 suggested in paper for yolox detection, model will overfit in first epoch.
this is another thing that I am confused, thanks
thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant