关于yolov7的遗传算法进化训练

最近yolov7刚出来,打算试一波,测测速度以及精度,经过对部分代码的研读,发现大部分还是延续了yolov5的风格,加之yolov6的部分内容以及一些才开源的sota的算法。
关于yolov7的遗传算法进化训练_第1张图片
论文链接:

https://arxiv.org/pdf/2207.02696.pdf

代码链接:

https://github.com/WongKinYiu/yolov7

据网上消息:YOLOv7相同体量下比YOLOv5精度更高,速度快120%(FPS),比YOLOX快180%(FPS),比Dual-Swin-T快1200%(FPS),比ConvNext快550%(FPS),比SWIN-L快500%(FPS)。
所有的训练方式以及测试方式和配置文件大体都跟yolov5类似。
下面是遗传算法的超参数训练,在准备好数据集后,进行遗传训练发现有报错,找不到’anchors’,这个只需要把你加载的hyp中添加一个’anchors’以及对应加上值就行了。
但是改完后出现找不到’copy_past’以及’paste_in’,需要对主训练函数的meta做如下修改:

# Hyperparameter evolution metadata (mutation scale 0-1, lower_limit, upper_limit)
    meta = {'lr0': (1, 1e-5, 1e-1),  # initial learning rate (SGD=1E-2, Adam=1E-3)
            'lrf': (1, 0.01, 1.0),  # final OneCycleLR learning rate (lr0 * lrf)
            'momentum': (0.3, 0.6, 0.98),  # SGD momentum/Adam beta1
            'weight_decay': (1, 0.0, 0.001),  # optimizer weight decay
            'warmup_epochs': (1, 0.0, 5.0),  # warmup epochs (fractions ok)
            'warmup_momentum': (1, 0.0, 0.95),  # warmup initial momentum
            'warmup_bias_lr': (1, 0.0, 0.2),  # warmup initial bias lr
            'box': (1, 0.02, 0.2),  # box loss gain
            'cls': (1, 0.2, 4.0),  # cls loss gain
            'cls_pw': (1, 0.5, 2.0),  # cls BCELoss positive_weight
            'obj': (1, 0.2, 4.0),  # obj loss gain (scale with pixels)
            'obj_pw': (1, 0.5, 2.0),  # obj BCELoss positive_weight
            'iou_t': (0, 0.1, 0.7),  # IoU training threshold
            'anchor_t': (1, 2.0, 8.0),  # anchor-multiple threshold
            'anchors': (2, 2.0, 10.0),  # anchors per output grid (0 to ignore)
            'fl_gamma': (0, 0.0, 2.0),  # focal loss gamma (efficientDet default gamma=1.5)
            'hsv_h': (1, 0.0, 0.1),  # image HSV-Hue augmentation (fraction)
            'hsv_s': (1, 0.0, 0.9),  # image HSV-Saturation augmentation (fraction)
            'hsv_v': (1, 0.0, 0.9),  # image HSV-Value augmentation (fraction)
            'degrees': (1, 0.0, 45.0),  # image rotation (+/- deg)
            'translate': (1, 0.0, 0.9),  # image translation (+/- fraction)
            'scale': (1, 0.0, 0.9),  # image scale (+/- gain)
            'shear': (1, 0.0, 10.0),  # image shear (+/- deg)
            'perspective': (0, 0.0, 0.001),  # image perspective (+/- fraction), range 0-0.001
            'flipud': (1, 0.0, 1.0),  # image flip up-down (probability)
            'fliplr': (0, 0.0, 1.0),  # image flip left-right (probability)
            'mosaic': (1, 0.0, 1.0),  # image mixup (probability)
            'mixup': (1, 0.0, 1.0),
            'copy_paste': (1, 0.0, 1.0),
            'paste_in': (1, 0.15, 1.0)


            }  # image mixup (probability)

修改完之后就可以进行遗传进化了。
以下是一百多轮的一百多个样本的进化结果:
关于yolov7的遗传算法进化训练_第2张图片

你可能感兴趣的:(yolov7,人工智能,深度学习,机器学习)