目錄
一、超參數(shù)設(shè)置
1. 定義自適應(yīng)函數(shù)
2. 定義模型深度和寬度
二、遷移訓(xùn)練設(shè)置
1. 為遷移訓(xùn)練設(shè)置凍結(jié)層
一、超參數(shù)設(shè)置
1. 定義自適應(yīng)函數(shù)
遺傳算法中適應(yīng)度(fitness)是描述個(gè)體性能的主要指標(biāo),直接影響到算法的收斂速度以及能否找到最優(yōu)解。適應(yīng)度是訓(xùn)練中尋求最大化的一個(gè)值。YOLOv5默認(rèn)的適應(yīng)度函數(shù)為各指標(biāo)的加權(quán)組合:mAP_0.5占10%權(quán)重;mAP_0.5:0.95占90%權(quán)重,不存在Precision和Recall。
定義的位置在./utils/metric.py:
def fitness(x):
# Model fitness as a weighted combination of metrics
w = [0.0, 0.0, 0.1, 0.9] # weights for [P, R, mAP@0.5, mAP@0.5:0.95]
return (x[:, :4] * w).sum(1)
2. 定義模型深度和寬度
YOLOv5引入了depth_multiple和width_multiple系數(shù)來得到不同大小模型:
nc: 1 # number of classes
depth_multiple: 0.33 # model depth multiple
width_multiple: 0.50 # layer channel multiple
depth_multiple表示channel的縮放系數(shù),就是將配置里面的backbone和head部分有關(guān)通道的設(shè)置,全部乘以該系數(shù)即可。而width_multiple表示BottleneckCSP模塊的層縮放系數(shù),將所有的BottleneckCSP模塊的number系數(shù)乘上該參數(shù)就可以最終的層個(gè)數(shù)??梢园l(fā)現(xiàn)通過這兩個(gè)參數(shù)就可以實(shí)現(xiàn)不同大小不同復(fù)雜度的模型設(shè)計(jì)。
同一文件下的backbone和head記錄了網(wǎng)絡(luò)結(jié)構(gòu):
# 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)
]
from:第一列;代表輸入來自哪一層,-1代表上一層,4代表第4層
number:第二列;卷積核的數(shù)量,最終數(shù)量需要乘上width
module:第三列;模塊名稱,包括:Conv Focus BottleneckCSP SPP?#
args:第四列;模塊的參數(shù)
二、遷移訓(xùn)練設(shè)置
1. 為遷移訓(xùn)練設(shè)置凍結(jié)層
通過凍結(jié)某些層進(jìn)行遷移訓(xùn)練可以實(shí)現(xiàn)在新模型上快速進(jìn)行重新訓(xùn)練,以節(jié)省訓(xùn)練資源。YOLOv5所有層的凍結(jié)通過設(shè)置其梯度為零來實(shí)現(xiàn),執(zhí)行的位置在train.py:
# Freeze
freeze = [f'model.{x}.' for x in (freeze if len(freeze) > 1 else range(freeze[0]))] # layers to freeze
for k, v in model.named_parameters():
v.requires_grad = True # train all layers
if any(x in k for x in freeze):
LOGGER.info(f'freezing {k}')
v.requires_grad = False
在./model/yolov5x.yaml可以查看網(wǎng)絡(luò)層:
backbone為0-9層
head為13-23層
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)
]
通過:文章來源:http://www.zghlxwxcb.cn/news/detail-479651.html
python train.py --freeze 10
凍結(jié)頭部進(jìn)行訓(xùn)練。
通過:
python train.py --freeze 24
凍結(jié)除了輸出層以外的所有層進(jìn)行訓(xùn)練。文章來源地址http://www.zghlxwxcb.cn/news/detail-479651.html
到了這里,關(guān)于YOLOv5超參數(shù)、遷移訓(xùn)練設(shè)置的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!