基于yolov5全系列模型【n/s/m/l/x】开发构建不同参数量级的斯坦福120种狗类目标细粒度检测识别系统

基于YOLOv5开发构建超过100种类别的目标检测系统还是比较少的实践了,虽然在之前的项目中也有鸟类的量级达到了100种以上,但是这种类型的任务相对来说更为小众化一点,这里本文的核心目的就是想要基于yolov5来开发细粒度的多目标类别的检测识别系统,这里为了全面直观地对模型性能进行评价分析,我们开发了yolov5全系列5款不同参数量级的模型,首先看下效果图:

 接下来看下数据集:

 共有20580张数据。

【yolov5n】

# YOLOv5 🚀 by Ultralytics, GPL-3.0 license

# Parameters
nc: 120 # number of classes
depth_multiple: 0.33  # model depth multiple
width_multiple: 0.25  # layer channel multiple
anchors:
  - [10,13, 16,30, 33,23]  # P3/8
  - [30,61, 62,45, 59,119]  # P4/16
  - [116,90, 156,198, 373,326]  # P5/32

# YOLOv5 v6.0 backbone
backbone:
  # [from, number, module, args]
  [[-1, 1, Conv, [64, 6, 2, 2]],  # 0-P1/2
   [-1, 1, Conv, [128, 3, 2]],  # 1-P2/4
   [-1, 3, C3, [128]],
   [-1, 1, Conv, [256, 3, 2]],  # 3-P3/8
   [-1, 6, C3, [256]],
   [-1, 1, Conv, [512, 3, 2]],  # 5-P4/16
   [-1, 9, C3, [512]],
   [-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32
   [-1, 3, C3, [1024]],
   [-1, 1, SPPF, [1024, 5]],  # 9
  ]

# YOLOv5 v6.0 head
head:
  [[-1, 1, Conv, [512, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 6], 1, Concat, [1]],  # cat backbone P4
   [-1, 3, C3, [512, False]],  # 13

   [-1, 1, Conv, [256, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 4], 1, Concat, [1]],  # cat backbone P3
   [-1, 3, C3, [256, False]],  # 17 (P3/8-small)

   [-1, 1, Conv, [256, 3, 2]],
   [[-1, 14], 1, Concat, [1]],  # cat head P4
   [-1, 3, C3, [512, False]],  # 20 (P4/16-medium)

   [-1, 1, Conv, [512, 3, 2]],
   [[-1, 10], 1, Concat, [1]],  # cat head P5
   [-1, 3, C3, [1024, False]],  # 23 (P5/32-large)

   [[17, 20, 23], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)
  ]

 【yolov5s】

# YOLOv5 🚀 by Ultralytics, GPL-3.0 license

# Parameters
nc: 120  # number of classes
depth_multiple: 0.33  # model depth multiple
width_multiple: 0.50  # layer channel multiple
anchors:
  - [10,13, 16,30, 33,23]  # P3/8
  - [30,61, 62,45, 59,119]  # P4/16
  - [116,90, 156,198, 373,326]  # P5/32

#Backbone
backbone:
  # [from, number, module, args]
  [[-1, 1, Conv, [64, 6, 2, 2]],  # 0-P1/2
   [-1, 1, Conv, [128, 3, 2]],  # 1-P2/4
   [-1, 3, C3, [128]],
   [-1, 1, Conv, [256, 3, 2]],  # 3-P3/8
   [-1, 6, C3, [256]],
   [-1, 1, Conv, [512, 3, 2]],  # 5-P4/16
   [-1, 9, C3, [512]],
   [-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32
   [-1, 3, C3, [1024]],
   [-1, 1, SPPF, [1024, 5]],  # 9
  ]

#Head
head:
  [[-1, 1, Conv, [512, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 6], 1, Concat, [1]],  # cat backbone P4
   [-1, 3, C3, [512, False]],  # 13

   [-1, 1, Conv, [256, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 4], 1, Concat, [1]],  # cat backbone P3
   [-1, 3, C3, [256, False]],  # 17 (P3/8-small)

   [-1, 1, Conv, [256, 3, 2]],
   [[-1, 14], 1, Concat, [1]],  # cat head P4
   [-1, 3, C3, [512, False]],  # 20 (P4/16-medium)

   [-1, 1, Conv, [512, 3, 2]],
   [[-1, 10], 1, Concat, [1]],  # cat head P5
   [-1, 3, C3, [1024, False]],  # 23 (P5/32-large)

   [[17, 20, 23], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)
  ]

【yolov5m】

# YOLOv5 🚀 by Ultralytics, GPL-3.0 license

# Parameters
nc: 120  # number of classes
depth_multiple: 0.67  # model depth multiple
width_multiple: 0.75  # layer channel multiple
anchors:
  - [10,13, 16,30, 33,23]  # P3/8
  - [30,61, 62,45, 59,119]  # P4/16
  - [116,90, 156,198, 373,326]  # P5/32

# YOLOv5 v6.0 backbone
backbone:
  # [from, number, module, args]
  [[-1, 1, Conv, [64, 6, 2, 2]],  # 0-P1/2
   [-1, 1, Conv, [128, 3, 2]],  # 1-P2/4
   [-1, 3, C3, [128]],
   [-1, 1, Conv, [256, 3, 2]],  # 3-P3/8
   [-1, 6, C3, [256]],
   [-1, 1, Conv, [512, 3, 2]],  # 5-P4/16
   [-1, 9, C3, [512]],
   [-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32
   [-1, 3, C3, [1024]],
   [-1, 1, SPPF, [1024, 5]],  # 9
  ]

# YOLOv5 v6.0 head
head:
  [[-1, 1, Conv, [512, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 6], 1, Concat, [1]],  # cat backbone P4
   [-1, 3, C3, [512, False]],  # 13

   [-1, 1, Conv, [256, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 4], 1, Concat, [1]],  # cat backbone P3
   [-1, 3, C3, [256, False]],  # 17 (P3/8-small)

   [-1, 1, Conv, [256, 3, 2]],
   [[-1, 14], 1, Concat, [1]],  # cat head P4
   [-1, 3, C3, [512, False]],  # 20 (P4/16-medium)

   [-1, 1, Conv, [512, 3, 2]],
   [[-1, 10], 1, Concat, [1]],  # cat head P5
   [-1, 3, C3, [1024, False]],  # 23 (P5/32-large)

   [[17, 20, 23], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)
  ]

【yolov5l】

# YOLOv5 🚀 by Ultralytics, GPL-3.0 license

# Parameters
nc: 120  # number of classes
depth_multiple: 1.0  # model depth multiple
width_multiple: 1.0  # layer channel multiple
anchors:
  - [10,13, 16,30, 33,23]  # P3/8
  - [30,61, 62,45, 59,119]  # P4/16
  - [116,90, 156,198, 373,326]  # P5/32

# YOLOv5 v6.0 backbone
backbone:
  # [from, number, module, args]
  [[-1, 1, Conv, [64, 6, 2, 2]],  # 0-P1/2
   [-1, 1, Conv, [128, 3, 2]],  # 1-P2/4
   [-1, 3, C3, [128]],
   [-1, 1, Conv, [256, 3, 2]],  # 3-P3/8
   [-1, 6, C3, [256]],
   [-1, 1, Conv, [512, 3, 2]],  # 5-P4/16
   [-1, 9, C3, [512]],
   [-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32
   [-1, 3, C3, [1024]],
   [-1, 1, SPPF, [1024, 5]],  # 9
  ]

# YOLOv5 v6.0 head
head:
  [[-1, 1, Conv, [512, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 6], 1, Concat, [1]],  # cat backbone P4
   [-1, 3, C3, [512, False]],  # 13

   [-1, 1, Conv, [256, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 4], 1, Concat, [1]],  # cat backbone P3
   [-1, 3, C3, [256, False]],  # 17 (P3/8-small)

   [-1, 1, Conv, [256, 3, 2]],
   [[-1, 14], 1, Concat, [1]],  # cat head P4
   [-1, 3, C3, [512, False]],  # 20 (P4/16-medium)

   [-1, 1, Conv, [512, 3, 2]],
   [[-1, 10], 1, Concat, [1]],  # cat head P5
   [-1, 3, C3, [1024, False]],  # 23 (P5/32-large)

   [[17, 20, 23], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)
  ]

【yolov5x】

# YOLOv5 🚀 by Ultralytics, GPL-3.0 license

# Parameters
nc: 120  # number of classes
depth_multiple: 1.33  # model depth multiple
width_multiple: 1.25  # layer channel multiple
anchors:
  - [10,13, 16,30, 33,23]  # P3/8
  - [30,61, 62,45, 59,119]  # P4/16
  - [116,90, 156,198, 373,326]  # P5/32

# YOLOv5 v6.0 backbone
backbone:
  # [from, number, module, args]
  [[-1, 1, Conv, [64, 6, 2, 2]],  # 0-P1/2
   [-1, 1, Conv, [128, 3, 2]],  # 1-P2/4
   [-1, 3, C3, [128]],
   [-1, 1, Conv, [256, 3, 2]],  # 3-P3/8
   [-1, 6, C3, [256]],
   [-1, 1, Conv, [512, 3, 2]],  # 5-P4/16
   [-1, 9, C3, [512]],
   [-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32
   [-1, 3, C3, [1024]],
   [-1, 1, SPPF, [1024, 5]],  # 9
  ]

# YOLOv5 v6.0 head
head:
  [[-1, 1, Conv, [512, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 6], 1, Concat, [1]],  # cat backbone P4
   [-1, 3, C3, [512, False]],  # 13

   [-1, 1, Conv, [256, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 4], 1, Concat, [1]],  # cat backbone P3
   [-1, 3, C3, [256, False]],  # 17 (P3/8-small)

   [-1, 1, Conv, [256, 3, 2]],
   [[-1, 14], 1, Concat, [1]],  # cat head P4
   [-1, 3, C3, [512, False]],  # 20 (P4/16-medium)

   [-1, 1, Conv, [512, 3, 2]],
   [[-1, 10], 1, Concat, [1]],  # cat head P5
   [-1, 3, C3, [1024, False]],  # 23 (P5/32-large)

   [[17, 20, 23], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)
  ]

接下来我们来整体对比下五款不同模型的性能差异:

首先是F1值曲线:

 接下来是loss对比曲线:

 之后是精确率曲线:

 最后是召回率对比曲线:

 可以看到:模型参数量级的提升对于模型检测识别性能的帮助是很明显的,但是模型参数量级的膨胀带来的是计算消耗的增大,在实际项目的开发过程中还是需要根据实际的需求来选择最合适自己的模型。

因为目标类别数量太多导致评估过程出现问题,这里没有输出绘制好的图表,我就直接给出最优模型的计算详情指标吧,如下所示:

Validating runs/train/yolov5x/weights/best.pt...
Fusing layers... 
YOLOv5x summary: 322 layers, 86974165 parameters, 0 gradients, 206.3 GFLOPs
                 Class     Images  Instances          P          R      mAP50   mAP50-95: 100%|??????????| 258/258 [02:42<00:00,  1.59it/s]
                   all       4115       4412      0.884      0.892      0.937      0.875
          Afghan_hound       4115         48      0.906          1       0.99      0.943
   African_hunting_dog       4115         50      0.938       0.96      0.971      0.876
              Airedale       4115         48      0.871      0.938      0.977      0.944
American_Staffordshire_terrier       4115         35      0.849      0.805      0.905      0.873
           Appenzeller       4115         32      0.905      0.891      0.939      0.868
    Australian_terrier       4115         42      0.676       0.81      0.827      0.747
    Bedlington_terrier       4115         38      0.986      0.947       0.99       0.91
  Bernese_mountain_dog       4115         47      0.947      0.979      0.981      0.946
      Blenheim_spaniel       4115         44      0.944      0.977      0.988      0.938
         Border_collie       4115         39      0.769      0.974      0.887      0.788
        Border_terrier       4115         33      0.923       0.97      0.988       0.94
           Boston_bull       4115         39      0.928      0.897      0.974      0.884
  Bouvier_des_Flandres       4115         35      0.907      0.914       0.95      0.907
     Brabancon_griffon       4115         42       0.96      0.976      0.988      0.924
      Brittany_spaniel       4115         26      0.983      0.923      0.976      0.914
              Cardigan       4115         41      0.881      0.854      0.934       0.85
Chesapeake_Bay_retriever       4115         33      0.824      0.848      0.901      0.881
             Chihuahua       4115         37      0.884      0.824      0.932       0.89
        Dandie_Dinmont       4115         45      0.955      0.946      0.985      0.926
              Doberman       4115         35          1        0.9      0.985      0.969
      English_foxhound       4115         38      0.835      0.816      0.864      0.797
        English_setter       4115         36      0.883      0.944      0.981      0.946
      English_springer       4115         43      0.938      0.953      0.987      0.941
           EntleBucher       4115         51      0.902      0.905      0.964      0.897
            Eskimo_dog       4115         36      0.604      0.297      0.614       0.58
        French_bulldog       4115         29       0.87      0.927      0.927      0.847
       German_shepherd       4115         35      0.845      0.971      0.983      0.943
German_short-haired_pointer       4115         32      0.885      0.962      0.987      0.965
         Gordon_setter       4115         31          1      0.981      0.995      0.926
            Great_Dane       4115         24      0.882      0.938      0.967       0.92
        Great_Pyrenees       4115         37       0.77      0.994      0.915      0.876
Greater_Swiss_Mountain_dog       4115         36       0.92      0.889      0.954      0.907
          Ibizan_hound       4115         35      0.909      0.971      0.992      0.974
          Irish_setter       4115         38      0.892      0.921      0.963      0.896
         Irish_terrier       4115         35      0.941      0.914      0.976      0.875
   Irish_water_spaniel       4115         27       0.93       0.99      0.971      0.922
       Irish_wolfhound       4115         34      0.767      0.882      0.854      0.761
     Italian_greyhound       4115         42      0.875      0.929      0.959      0.851
      Japanese_spaniel       4115         31          1      0.899      0.989      0.925
    Kerry_blue_terrier       4115         37       0.92      0.946      0.974      0.926
    Labrador_retriever       4115         38      0.784      0.895      0.948      0.882
      Lakeland_terrier       4115         50      0.817       0.82      0.915      0.857
              Leonberg       4115         57      0.937      0.982      0.993      0.923
                 Lhasa       4115         40      0.792       0.85      0.892      0.819
           Maltese_dog       4115         47      0.955      0.902      0.962      0.883
      Mexican_hairless       4115         33      0.909      0.848      0.959      0.867
          Newfoundland       4115         37      0.879      0.973      0.978      0.901
       Norfolk_terrier       4115         36       0.81      0.833      0.847      0.785
    Norwegian_elkhound       4115         41      0.917      0.927      0.986      0.958
       Norwich_terrier       4115         46      0.842      0.761      0.869      0.788
  Old_English_sheepdog       4115         27      0.911          1      0.991      0.942
              Pekinese       4115         21      0.869          1      0.995      0.938
              Pembroke       4115         48      0.828          1       0.97      0.911
            Pomeranian       4115         41      0.938      0.951      0.975      0.912
   Rhodesian_ridgeback       4115         39      0.822      0.718      0.865      0.782
            Rottweiler       4115         26      0.897          1      0.992      0.917
         Saint_Bernard       4115         27          1      0.983      0.995      0.958
                Saluki       4115         37          1      0.993      0.995      0.954
               Samoyed       4115         41      0.927      0.931      0.952      0.871
        Scotch_terrier       4115         27      0.894      0.926      0.954      0.834
    Scottish_deerhound       4115         52      0.933      0.885      0.959      0.906
      Sealyham_terrier       4115         53      0.959      0.943      0.965      0.872
     Shetland_sheepdog       4115         31      0.908      0.956      0.961      0.866
              Shih-Tzu       4115         36      0.871      0.917      0.969      0.939
        Siberian_husky       4115         47      0.705      0.723      0.771      0.738
Staffordshire_bullterrier       4115         29      0.733      0.758      0.853      0.768
        Sussex_spaniel       4115         33          1      0.872      0.956      0.929
       Tibetan_mastiff       4115         39       0.97      0.841      0.944      0.874
       Tibetan_terrier       4115         42       0.97      0.764      0.942      0.863
          Walker_hound       4115         33      0.759      0.762      0.814      0.755
            Weimaraner       4115         36      0.838      0.889      0.941      0.905
Welsh_springer_spaniel       4115         22      0.953      0.922      0.977      0.921
West_Highland_white_terrier       4115         35      0.891      0.914      0.943      0.866
     Yorkshire_terrier       4115         40      0.848      0.835      0.887      0.815
         affenpinscher       4115         36      0.953      0.944      0.987        0.9
               basenji       4115         49      0.924      0.898      0.943       0.86
                basset       4115         29      0.885      0.931      0.983      0.916
                beagle       4115         55      0.918      0.891      0.952      0.889
black-and-tan_coonhound       4115         37      0.939      0.892      0.964      0.892
            bloodhound       4115         41      0.953      0.995      0.994      0.944
              bluetick       4115         32       0.95          1      0.992      0.968
                borzoi       4115         38      0.964      0.974      0.993      0.922
                 boxer       4115         38      0.945      0.974       0.98      0.905
                briard       4115         27      0.767      0.852      0.868      0.819
          bull_mastiff       4115         38      0.968          1      0.995       0.94
                 cairn       4115         49      0.897      0.889      0.942      0.893
                  chow       4115         46      0.963      0.978      0.989      0.956
               clumber       4115         36      0.912          1      0.963      0.875
        cocker_spaniel       4115         37      0.894      0.784       0.91      0.865
                collie       4115         35       0.89      0.657      0.812      0.737
curly-coated_retriever       4115         26      0.943      0.923      0.957      0.939
                 dhole       4115         33      0.959      0.939      0.967      0.843
                 dingo       4115         33      0.827      0.867      0.857      0.808
 flat-coated_retriever       4115         26      0.959      0.896      0.988      0.909
       giant_schnauzer       4115         28      0.856       0.85      0.927      0.858
      golden_retriever       4115         40       0.82       0.85      0.908      0.823
           groenendael       4115         28      0.932      0.981      0.989      0.911
              keeshond       4115         37      0.972          1      0.994      0.921
                kelpie       4115         29      0.949      0.655      0.776      0.693
              komondor       4115         32      0.918      0.969      0.965      0.904
                kuvasz       4115         31      0.833      0.806        0.9      0.861
              malamute       4115         36      0.853      0.861      0.885      0.837
              malinois       4115         34      0.859      0.898      0.957      0.884
    miniature_pinscher       4115         34      0.827          1      0.983      0.926
      miniature_poodle       4115         41      0.741      0.558      0.729      0.672
   miniature_schnauzer       4115         23      0.861      0.783      0.916       0.87
            otterhound       4115         37      0.933      0.946      0.981      0.934
              papillon       4115         30      0.896      0.967      0.979      0.868
                   pug       4115         42      0.885      0.912      0.959      0.871
               redbone       4115         24      0.781      0.745      0.911      0.885
            schipperke       4115         38      0.924      0.868       0.96      0.907
         silky_terrier       4115         41      0.857      0.683      0.871      0.826
soft-coated_wheaten_terrier       4115         30      0.777      0.929      0.897      0.857
       standard_poodle       4115         31      0.728      0.779       0.83       0.77
    standard_schnauzer       4115         43      0.732      0.721      0.792       0.71
            toy_poodle       4115         29      0.531      0.862      0.703      0.666
           toy_terrier       4115         33      0.856      0.848      0.936      0.902
                vizsla       4115         35      0.898      0.943      0.954      0.855
               whippet       4115         45      0.951      0.861      0.955      0.865
wire-haired_fox_terrier       4115         37      0.861      0.839      0.913      0.867

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Together_CZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值