U版YOLOv5學習筆記之訓練初始化

2021-10-07 09:28:08 字數 2824 閱讀 4837

在train(hyp)函式中,進行訓練前的準備

def

train

(hyp)

: epochs = opt.epochs # 300 最大迭代次數

batch_size = opt.batch_size # 64 乙個batch的大小

weights = opt.weights # initial training weights 初始化權重檔案路徑

# configure

init_seeds(1)

# 設定random、np.random、torch隨機種子

with

open

(opt.data)

as f:

data_dict = yaml.load(f, loader=yaml.fullloader)

# model dict 載入yaml資料檔案

train_path = data_dict[

'train'

]# 儲存訓練資料的txt檔案路徑

test_path = data_dict[

'val'

]# 儲存驗證資料的txt檔案路徑

nc =

1if opt.single_cls else

int(data_dict[

'nc'])

# number of classes 獲取類別數

# remove previous results 清空以前的結果

# glob.glob(pathname)返回匹配pathname的可能為空的路徑名列表

# create model 初始化網路結構

model = model(opt.cfg)

.to(device)

# assert(斷言)用於判斷乙個表示式,在表示式條件為 false 的時候觸發異常

# 判斷cfg檔案中類別數和data檔案中的類別數是否相等

assert model.md[

'nc'

]== nc,

'%s nc=%g classes but %s nc=%g classes'

%(opt.data, nc, opt.cfg, model.md[

'nc'])

# image sizes

gs =

int(

max(model.stride)

)# grid size (max stride)

ifany

(x % gs !=

0for x in opt.img_size)

:# img size 必須整除 max stride

print

('warning: --img-size %g,%g must be multiple of %s max stride %g'%(

*opt.img_size, opt.cfg, gs)

) imgsz, imgsz_test =

[make_divisible(x, gs)

for x in opt.img_size]

# image sizes (train, test)

# optimizer

nbs =

64# nominal batch size

accumulate =

max(

round

(nbs / batch_size),1

)# accumulate loss before optimizing

hyp[

'weight_decay'

]*= batch_size * accumulate / nbs # scale weight_decay

pg0, pg1, pg2 =,,

# optimizer parameter groups 優化引數

for k, v in model.named_parameters():

if v.requires_grad:

if'.bias'

in k:

# biases

elif

'.weight'

in k and

'.bn'

notin k:

else

:# all else

# 選取優化函式

optimizer = optim.adam(pg0, lr=hyp[

'lr0'])

if opt.adam else \

optim.sgd(pg0, lr=hyp[

'lr0'

], momentum=hyp[

'momentum'

], nesterov=

true

) optimizer.add_param_group(

)# add pg1 with weight_decay

optimizer.add_param_group(

)# add pg2 (biases)

print

('optimizer groups: %g .bias, %g conv.weight, %g other'%(

len(pg2)

,len

(pg1)

,len

(pg0)))

del pg0, pg1, pg2

.......

..

yolov5訓練自己的資料集

然後進入拉取的yolov5的docker容器中 參考教程 sudo nvidia docker run ipc host it v data coco128 usr src coco128 yolo bin bash 注意一定要用nvidia docker這樣才可以執行gpu環境 預設路徑在 usr...

yolov5訓練自己的資料集

1.資料準備 label 格式如下 資料集格式如下,確保label和mages這兩個資料夾在同一目錄裡 image train 存放訓練 val 存放驗證 label train 存放訓練label x.txt val 存放驗證label 2.配置自己的.yaml檔案,放在data資料夾下,3.選擇...

PyTorch學習筆記5 批訓練

1 torch.utils.data.tensordataset 和torch.utils.data.dataloader pytorch提供了乙個資料讀取的方法,其由兩個類構成 torch.utils.data.dataset和dataloader,我們要自定義自己資料讀取的方法,就需要繼承tor...