admin管理员组

文章数量:1794759

YoloV8改进策略:EfficientViT提升YoloV8的速度和精度,打造高效的YoloV8

摘要

EfficientViT是一种高效的视觉Transformer模型,旨在解决传统Vision Transformer模型在计算成本方面的问题,使其实时应用更高效。

传统Transformer模型的速度通常受限于内存效率低下的操作,尤其是在多头自注意力机制(MHSA)中的张量重塑和逐元素函数。为了提高内存效率并增强通道间的通信,EfficientViT设计了一种新的构建块,采用了“夹层布局(sandwich layout)”策略,即在高效的前馈神经网络FFN层之间使用了一个受内存限制的MHSA。

EfficientViT以EfficientViT block作为基础模块,每个模块由夹层结构(Sandwich Layout)和级联组注意力(Cascaded Group Attention, CGA)组成,进一步进行了参数重分配以实现更高效的Channel,Block,和Stage数量权衡。这一基础模块减少了注意力的使用,缓解了注意力计算导致的访存时间消耗问题。同时,每个FFN之前加入了一层DWConv作为局部token之间信息交互并帮助引入归纳偏置。

通过全面的实验证明了EfficientViT在速度和准确性之间取得了良好的平衡,并超越了现有的高效模型。

将EfficientViT引入到YoloV8中,打造实时高效的YoloV8,效果如何呢?这篇文章将告诉你答案!

Yolov8官方结果

代码语言:javascript代码运行次数:0运行复制
YOLOv8l summary (fused): 268 layers, 43631280 parameters, 0 gradients, 165.0 GFLOPs
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 29/29 [
                   all        230       1412      0.922      0.957      0.986      0.737
                   c17        230        131      0.973      0.992      0.995      0.825
                    c5        230         68      0.945          1      0.995      0.836
            helicopter        230         43       0.96      0.907      0.951      0.607
                  c130        230         85      0.984          1      0.995      0.655
                   f16        230         57      0.955      0.965      0.985      0.669
                    b2        230          2      0.704          1      0.995      0.722
                 other        230         86      0.903      0.942      0.963      0.534
                   b52        230         70       0.96      0.971      0.978      0.831
                  kc10        230         62      0.999      0.984       0.99      0.847
               command        230         40       0.97          1      0.995      0.811
                   f15        230        123      0.891          1      0.992      0.701
                 kc135        230         91      0.971      0.989      0.986      0.712
                   a10        230         27          1      0.555      0.899      0.456
                    b1        230         20      0.972          1      0.995      0.793
                   aew        230         25      0.945          1       0.99      0.784
                   f22        230         17      0.913          1      0.995      0.725
                    p3        230        105       0.99          1      0.995      0.801
                    p8        230          1      0.637          1      0.995      0.597
                   f35        230         32      0.939      0.938      0.978      0.574
                   f18        230        125      0.985      0.992      0.987      0.817
                   v22        230         41      0.983          1      0.995       0.69
                 su-27        230         31      0.925          1      0.995      0.859
                 il-38        230         27      0.972          1      0.995      0.811
                tu-134        230          1      0.663          1      0.995      0.895
                 su-33        230          2          1      0.611      0.995      0.796
                 an-70        230          2      0.766          1      0.995       0.73
                 tu-22        230         98      0.984          1      0.995      0.831
Speed: 0.2ms preprocess, 3.8ms inference, 0.0ms loss, 0.8ms postprocess per image

改进一

测试结果

代码语言:javascript代码运行次数:0运行复制
YOLOv8l summary (fused): 301 layers, 43979572 parameters, 0 gradients
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 15/15 [00:02<00:00,  5.73it/s]
                   all        230       1412      0.966       0.96      0.989      0.741
                   c17        230        131      0.976      0.992      0.994      0.827
                    c5        230         68      0.987      0.971      0.994      0.842
            helicopter        230         43      0.962       0.93      0.976      0.601
                  c130        230         85      0.999      0.988      0.995       0.65
                   f16        230         57      0.997      0.965      0.987      0.672
                    b2        230          2       0.91          1      0.995      0.697
                 other        230         86      0.984      0.942      0.981      0.557
                   b52        230         70      0.968      0.971      0.977       0.81
                  kc10        230         62      0.999      0.984      0.989      0.845
               command        230         40          1          1      0.995      0.827
                   f15        230        123       0.98          1      0.995      0.694
                 kc135        230         91      0.989      0.987      0.982      0.695
                   a10        230         27          1      0.652      0.949      0.465
                    b1        230         20      0.987          1      0.995      0.767
                   aew        230         25      0.949          1      0.995      0.791
                   f22        230         17      0.928          1      0.972      0.753
                    p3        230        105       0.99      0.973      0.995      0.807
                    p8        230          1      0.832          1      0.995      0.697
                   f35        230         32          1      0.879       0.99      0.582
                   f18        230        125       0.98      0.992      0.989      0.813
                   v22        230         41      0.995          1      0.995      0.709
                 su-27        230         31       0.99          1      0.995      0.856
                 il-38        230         27      0.978          1      0.995       0.84
                tu-134        230          1      0.804          1      0.995      0.895
                 su-33        230          2          1      0.697      0.995      0.697
                 an-70        230          2      0.894          1      0.995      0.796
                 tu-22        230         98      0.997          1      0.995      0.823
Speed: 0.2ms preprocess, 4.4ms inference, 0.0ms loss, 0.7ms postprocess per image

改进二

测试结果

代码语言:javascript代码运行次数:0运行复制
YOLOv8l summary: 620 layers, 25959856 parameters, 0 gradients
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 15/15 [00:02<00:00,  5.94it/s]
                   all        230       1412      0.967      0.969      0.992      0.772
                   c17        230        131      0.984      0.992      0.995      0.855
                    c5        230         68      0.929      0.957      0.992      0.842
            helicopter        230         43      0.955          1      0.981      0.633
                  c130        230         85      0.986      0.988      0.995      0.682
                   f16        230         57      0.997      0.965      0.993      0.669
                    b2        230          2       0.88          1      0.995      0.823
                 other        230         86      0.941      0.965      0.977      0.549
                   b52        230         70       0.98      0.986      0.988      0.869
                  kc10        230         62      0.995      0.984      0.989      0.862
               command        230         40      0.993          1      0.995      0.875
                   f15        230        123          1          1      0.995      0.698
                 kc135        230         91      0.997      0.989      0.992      0.708
                   a10        230         27          1      0.801      0.971      0.506
                    b1        230         20          1      0.968      0.995      0.735
                   aew        230         25      0.953          1      0.995      0.805
                   f22        230         17      0.986          1      0.995      0.757
                    p3        230        105          1      0.981      0.995      0.807
                    p8        230          1       0.86          1      0.995      0.796
                   f35        230         32      0.967          1      0.995      0.571
                   f18        230        125      0.991      0.992      0.994      0.835
                   v22        230         41      0.987      0.976      0.995      0.725
                 su-27        230         31      0.963          1      0.995      0.873
                 il-38        230         27       0.99          1      0.995      0.889
                tu-134        230          1      0.882          1      0.995      0.995
                 su-33        230          2          1      0.627      0.995      0.697
                 an-70        230          2      0.906          1      0.995      0.895
                 tu-22        230         98      0.996          1      0.995      0.888
Speed: 0.2ms preprocess, 3.9ms inference, 0.0ms loss, 0.7ms postprocess per image

借助预训练权重, mAP50和mAP50-95得到了大幅度的提高!

总结

本文尝试了两种改进方法,其中,直接替换主干网络,并使用预训练权重的效果最好。欢迎大家在自己的数据集上做尝试。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2023-11-05,如有侵权请联系 cloudcommunity@tencent 删除测试基础模型内存效率

本文标签: YoloV8改进策略EfficientViT提升YoloV8的速度和精度,打造高效的YoloV8