Yolov3:訓(xùn)練自己的模型 Part2:訓(xùn)練

上一篇文章介紹了數(shù)據(jù)集的制作砚哗,本篇文章將介紹yolo訓(xùn)練的流程及參數(shù)設(shè)置缸濒。

劃分訓(xùn)練集

在ImageSets/Main下生成train.txt锅知、test.txt妇拯、trainval.txt幻馁、val.txt。本質(zhì)是根據(jù)xml的文件名劃分訓(xùn)練集越锈、驗(yàn)證集仗嗦、測試集,參考代碼如下甘凭。

import os

import random


trainval_percent = 0.2

train_percent = 0.8

xmlfilepath = 'Annotations'

txtsavepath = 'ImageSets\Main'

total_xml = os.listdir(xmlfilepath)


num = len(total_xml)

list = range(num)

tv = int(num * trainval_percent)

tr = int(tv * train_percent)

trainval = random.sample(list, tv)

train = random.sample(trainval, tr)


ftrainval = open('ImageSets/Main/trainval.txt', 'w')

ftest = open('ImageSets/Main/test.txt', 'w')

ftrain = open('ImageSets/Main/train.txt', 'w')

fval = open('ImageSets/Main/val.txt', 'w')


for i in list:

??? name = total_xml[i][:-4] +'\n'

??? if i in trainval:

??????? ftrainval.write(name)

??????? if i in train:

??????????? ftest.write(name)

??????? else:

??????????? fval.write(name)

??? else:

??????? ftrain.write(name)


ftrainval.close()

ftrain.close()

fval.close()

ftest.close()

若Annotations中的文件如下圖

則train.txt的內(nèi)容會(huì)是以下的形式

train.txt

轉(zhuǎn)換標(biāo)注文件

將標(biāo)注文件由xml格式轉(zhuǎn)化為訓(xùn)練所需的txt格式稀拐,txt格式的標(biāo)注文件如下

txt標(biāo)注文件示例

一幅圖中有多少個(gè)目標(biāo)就會(huì)有多少行,第一個(gè)數(shù)字代表類別丹弱,后四個(gè)數(shù)分別為歸一化后的中心點(diǎn)X坐標(biāo)德撬、Y坐標(biāo)铲咨、寬度、高度砰逻。

將scripts文件夾下的voc_label.py放在與VOCdevkit文件夾相同的位置鸣驱,根據(jù)實(shí)際情況修改py文件,主要修改以下幾處:

運(yùn)行voc_label.py蝠咆,會(huì)在與py文件同級的位置生成一個(gè)包含轉(zhuǎn)化成txt文件的標(biāo)注文件的名為label的文件夾。

(若對于python比較熟練文件夾可以用其他名稱)

修改訓(xùn)練參數(shù)

這一部分主要需要修改3個(gè)文件:cfg北滥、names刚操、data。cfg文件描述不同網(wǎng)絡(luò)的結(jié)構(gòu)與參數(shù)再芋,names文件記錄模型的標(biāo)簽菊霜,data文件保存訓(xùn)練的總體信息。(以下內(nèi)容以訓(xùn)練一個(gè)yolov3的模型為例)

cfg文件

1济赎、在cfg文件夾下新建yolo-obj.cfg鉴逞,內(nèi)容與yolov3.cfg(在cfg文件夾下)相同

2、將width司训、height設(shè)置為32的倍數(shù)构捡,且width==height,一般設(shè)置為608

3壳猜、max_batches設(shè)置為類別數(shù)*2000

4勾徽、steps設(shè)置為max_batches*0.8和max_batches*0.9

cfg文件及注釋 part1

5、yolo標(biāo)簽的前一個(gè)filters修改為(類別數(shù)+5)*3统扳,假設(shè)有6類則修改為33

6喘帚、重新計(jì)算yolo標(biāo)簽下的anchors(不重新計(jì)算則使用的是其他的數(shù)據(jù)集的anchor,可以訓(xùn)練咒钟,但會(huì)降低訓(xùn)練的模型的精度)吹由,原版需自己計(jì)算,alexey版提供了計(jì)算anchors的工具:

./darknet detector calc_anchors data/obj.data-num_of_clusters 9 -width 416 -height 416

7朱嘴、修改classes的值為實(shí)際的類別數(shù)

8倾鲫、若顯存不夠可將random置為0

9、共有3處yolo標(biāo)簽腕够,重復(fù)4-7

cfg文件及注釋part2

names文件

在data文件夾下新建obj.names文件级乍,保存類別名稱,格式可參考data文件夾下的voc.names

data文件

在data文件夾下新建obj.data文件帚湘,可參考cfg文件夾下的voc.data

voc.data

下載預(yù)訓(xùn)練權(quán)重

根據(jù)實(shí)際情況選擇預(yù)訓(xùn)練權(quán)重玫荣,具體版本對應(yīng)參考官網(wǎng)或readme文件,yolov3對應(yīng)的預(yù)訓(xùn)練權(quán)重為darknet53.conv.74大诸。

wget https://pjreddie.com/media/files/darknet53.conv.74

開始訓(xùn)練

在darknet下輸入命令:

./darknet detector train cfg/coco.data cfg/yolov3.cfg darknet53.conv.74

Alexey版使用-map指令可以實(shí)時(shí)顯示loss與accuracy曲線:

./darknet detector train cfg/coco.data cfg/yolov3.cfg darknet53.conv.74-map

當(dāng)發(fā)現(xiàn)loss不再下降時(shí)可提前停止訓(xùn)練捅厂,loss最終的取值范圍為0.05-3.0

最終生成的weights文件就是我們訓(xùn)練得到的模型贯卦。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市焙贷,隨后出現(xiàn)的幾起案子撵割,更是在濱河造成了極大的恐慌,老刑警劉巖辙芍,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件啡彬,死亡現(xiàn)場離奇詭異,居然都是意外死亡故硅,警方通過查閱死者的電腦和手機(jī)庶灿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吃衅,“玉大人往踢,你說我怎么就攤上這事∨遣悖” “怎么了峻呕?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長趣效。 經(jīng)常有香客問我瘦癌,道長,這世上最難降的妖魔是什么英支? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任佩憾,我火速辦了婚禮,結(jié)果婚禮上干花,老公的妹妹穿的比我還像新娘妄帘。我一直安慰自己,他們只是感情好池凄,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布抡驼。 她就那樣靜靜地躺著,像睡著了一般肿仑。 火紅的嫁衣襯著肌膚如雪致盟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天尤慰,我揣著相機(jī)與錄音馏锡,去河邊找鬼。 笑死伟端,一個(gè)胖子當(dāng)著我的面吹牛杯道,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播责蝠,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼党巾,長吁一口氣:“原來是場噩夢啊……” “哼萎庭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起齿拂,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤驳规,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后署海,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吗购,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年叹侄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了巩搏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,646評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡趾代,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出丰辣,到底是詐尸還是另有隱情撒强,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布笙什,位于F島的核電站飘哨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏琐凭。R本人自食惡果不足惜芽隆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望统屈。 院中可真熱鬧胚吁,春花似錦、人聲如沸愁憔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吨掌。三九已至半抱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間膜宋,已是汗流浹背窿侈。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留秋茫,地道東北人史简。 一個(gè)月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像学辱,于是被迫代替她去往敵國和親乘瓤。 傳聞我的和親對象是個(gè)殘疾皇子环形,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評論 2 348