0

I'm a beginner. I have annotated dataset in YOLO format. I would like to know how to apply the same augmentation pipeline with the same parameters to a folder of images with their corresponding bounding box labels. I have 7 classes in a folder.

I want to increase data of all classes artificially using augmentation to a specific number because all classes are unbalanced right now. I tried training YOLOv5s over my dataset after splitting it into 80% train, 10% validation, 10% test, but training accuracy was only <20% and not increasing. I had it trained over 250 epochs. one way I found was to increase dataset by augmentation.

can anyone help with this issue?

1 Answers1

0

I think you can augment the images by adjusting the hyperparameters found in this file https://github.com/WongKinYiu/yolov7/blob/main/data/hyp.scratch.custom.yaml

lr0: 0.01  # initial learning rate (SGD=1E-2, Adam=1E-3)
lrf: 0.1  # final OneCycleLR learning rate (lr0 * lrf)
momentum: 0.937  # SGD momentum/Adam beta1
weight_decay: 0.0005  # optimizer weight decay 5e-4
warmup_epochs: 3.0  # warmup epochs (fractions ok)
warmup_momentum: 0.8  # warmup initial momentum
warmup_bias_lr: 0.1  # warmup initial bias lr
box: 0.05  # box loss gain
cls: 0.3  # cls loss gain
cls_pw: 1.0  # cls BCELoss positive_weight
obj: 0.7  # obj loss gain (scale with pixels)
obj_pw: 1.0  # obj BCELoss positive_weight
iou_t: 0.20  # IoU training threshold
anchor_t: 4.0  # anchor-multiple threshold
# anchors: 3  # anchors per output layer (0 to ignore)
fl_gamma: 0.0  # focal loss gamma (efficientDet default gamma=1.5)
hsv_h: 0.015  # image HSV-Hue augmentation (fraction)
hsv_s: 0.7  # image HSV-Saturation augmentation (fraction)
hsv_v: 0.4  # image HSV-Value augmentation (fraction)
degrees: 0.0  # image rotation (+/- deg)
translate: 0.2  # image translation (+/- fraction)
scale: 0.5  # image scale (+/- gain)
shear: 0.0  # image shear (+/- deg)
perspective: 0.0  # image perspective (+/- fraction), range 0-0.001
flipud: 0.0  # image flip up-down (probability)
fliplr: 0.5  # image flip left-right (probability)
mosaic: 1.0  # image mosaic (probability)
mixup: 0.0  # image mixup (probability)
copy_paste: 0.0  # image copy paste (probability)
paste_in: 0.0  # image copy paste (probability), use 0 for faster training
loss_ota: 1 # use ComputeLossOTA, use 0 for faster training

Edit: You can use the Albumentations library to Augment your images first before throwing them into the model.https://albumentations.ai/docs/examples/

Albumentations will take care of your bounding boxes as well.