在自己的數(shù)據(jù)集上訓(xùn)練YOLOv3模型

前面依次介紹了:

1理卑,《從零開始在Windows10中編譯安裝YOLOv3

2,《在Pascal VOC 數(shù)據(jù)集上訓(xùn)練YOLOv3模型

3普气,《在COCO 數(shù)據(jù)集上訓(xùn)練YOLOv3模型

本節(jié)介紹在自己的數(shù)據(jù)集上訓(xùn)練YOLOv3卖漫。具體步驟如下。本文推薦的YOLOv3項(xiàng)目文件夾結(jié)構(gòu)

文件夾結(jié)構(gòu)

yolov3:表示這是YOLOv3模型下的工程項(xiàng)目

ebike: 工程項(xiàng)目名

backup:模型備份路徑

cfg:存放模型配置文件“yolov3-項(xiàng)目名.cfg”

data:存放類別名文件“項(xiàng)目名.names”和數(shù)據(jù)集配置文件“項(xiàng)目名.data”

images:存放圖片至会、標(biāo)注文件、訓(xùn)練數(shù)據(jù)集文件“train.txt”和測試數(shù)據(jù)集文件“test.txt”

第一步谱俭,準(zhǔn)備圖片奉件。以電動車和自行車檢測為例,先從百度查找并下載電動車和自行車的圖片昆著,每個種類100~150張即可县貌。把圖片下載到D:\yolov3\ebike\cfg文件夾中

下載圖片

第二步用LabelImg標(biāo)注圖片凑懂。LabelImg下載地址:https://github.com/tzutalin/labelImg煤痕。

標(biāo)注圖片

YOLO標(biāo)注格式:<object-class> <x_center> <y_center> <width> <height>

<object-class>?- 類別ID, 整型數(shù)值,從0到(classes-1)。

<x> <y>?- 物體邊界框中心點(diǎn)坐標(biāo)(x,y), 相對于圖片寬(width)和 高(height)的比值摆碉,浮點(diǎn)數(shù)類型祟敛,取值范圍[0.0 - 1.0] 。??

<x> = <absolute_x> / <image_width>?

<y> = <absolute_y> / <image_height>.

<width> <height>?- 物體邊界框?qū)挾群透叨认鄬τ?relative?to)圖片寬度和高度的比值.

YOLO標(biāo)注文件內(nèi)容

標(biāo)注文件為.txt格式兆解,與圖片同名。例如跑揉,對于圖片“1.jpg” 锅睛,標(biāo)注文件為“1.txt”。

圖片與標(biāo)注文件

第三步历谍,制作訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)集文件现拒。用下面的Python腳本文件制作訓(xùn)練數(shù)據(jù)集文件“train.txt”和測試數(shù)據(jù)集文件“test.txt”。把Python文件generate_train_test_datafile.py保存在D:\yolov3\ebike\images文件夾

generate_train_test_datafile.py

然后運(yùn)行:

python?generate_train_test_datafile.py

結(jié)果如下:

train.txt 和 test.txt

第四步望侈,創(chuàng)建類別名文件印蔬。在D:\yolov3\ebike\data文件夾下,創(chuàng)建一個“obj.names”文件脱衙。文件的每一行是一個對象的名稱侥猬。

本文檢測對象是電動車和自行車,所以創(chuàng)建一個名字為“ebike.names"文件捐韩。第一行是ebike退唠,第二行是bike。

ebike.names

第五步荤胁,數(shù)據(jù)集配置文件?瞧预。在D:\yolov3\ebike\data文件夾下,創(chuàng)建一個“obj.data”文件仅政。文件格式為:

classes= 2? #標(biāo)簽(類別)數(shù)量

train? = data/train.txt? #訓(xùn)練數(shù)據(jù)集文件

valid? = data/test.txt? ?#測試數(shù)據(jù)集文件

names = data/obj.names #類別名文件

backup = backup/? #模型備份路徑

本文檢測對象是電動車和自行車垢油,所以創(chuàng)建一個名字為“ebike.data"文件。根據(jù)上述步驟圆丹,配置結(jié)果如下

ebike.data

第六步滩愁,模型配置文件?。從D:\darknet\build\darknet\x64\cfg文件夾下辫封,將yolov3.cfg拷貝到D:\yolov3\ebike\cfg文件夾惊楼,然后重命名為:“yolov3-ebike.cfg”

修改batch=64,subdivisions=16秸讹,max_batches=6000檀咙,steps=4800,5400

yolov3-ebike.cfg

修改[yolo]的classes=實(shí)際類別數(shù)量,本文classes=2璃诀。對應(yīng)yolov3.cfg的行數(shù):L610弧可,L696,L783

https://github.com/AlexeyAB/darknet/blob/0039fd26786ab5f71d5af725fc18b3f521e7acfd/cfg/yolov3.cfg#L610

https://github.com/AlexeyAB/darknet/blob/0039fd26786ab5f71d5af725fc18b3f521e7acfd/cfg/yolov3.cfg#L696

https://github.com/AlexeyAB/darknet/blob/0039fd26786ab5f71d5af725fc18b3f521e7acfd/cfg/yolov3.cfg#L783

修改[yolo]對應(yīng)上一層[convolutional]的filters=(classes + 5)x3劣欢,本文filters=(2+5)x3=21棕诵。對應(yīng)yolov3.cfg的行數(shù):L603裁良,L689,L776

https://github.com/AlexeyAB/darknet/blob/0039fd26786ab5f71d5af725fc18b3f521e7acfd/cfg/yolov3.cfg#L603

https://github.com/AlexeyAB/darknet/blob/0039fd26786ab5f71d5af725fc18b3f521e7acfd/cfg/yolov3.cfg#L689

https://github.com/AlexeyAB/darknet/blob/0039fd26786ab5f71d5af725fc18b3f521e7acfd/cfg/yolov3.cfg#L776

yolov3-ebike.cfg

第七步校套,下載https://pjreddie.com/media/files/darknet53.conv.74?到D:\darknet文件夾

第八步价脾,啟動YOLOv3模型訓(xùn)練。在D:\darknet文件夾的地址欄中鍵入“cmd”笛匙,啟動Windows命令行終端侨把,運(yùn)行命令:

YOLOv3模型訓(xùn)練命令格式:darknet.exe detector train data/obj.data yolo-obj.cfg darknet53.conv.74?

訓(xùn)練結(jié)果:

第九步,測試訓(xùn)練模型妹孙。

在D:\yolov3\ebike\cfg文件夾中把“yolov3-ebike.cfg”另存為“yolov3-ebike-test.cfg”,修改第1~7行如下:

從網(wǎng)上下載一張電動車圖片到D:\yolov3\ebike\test_images文件夾

在D:\darknet文件夾的地址欄中鍵入“cmd”秋柄,啟動Windows命令行終端,運(yùn)行命令:

darknet.exe detector test d:\yolov3\ebike\data\ebike.data d:\yolov3\ebike\cfg\yolov3-ebike-test.cfg d:\yolov3\ebike\backup\yolov3-ebike_1000.weights d:\yolov3\ebike\test_images\ebike1.jpg

參考文獻(xiàn):

How to train (to detect your custom objects

注意事項(xiàng):

YOLOv3是一行一行解析的蠢正,注釋語句要獨(dú)立成行骇笔!~ 不能和普通語句放在同一行

參考閱讀《深度學(xué)習(xí)圖像識別技術(shù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市嚣崭,隨后出現(xiàn)的幾起案子笨触,更是在濱河造成了極大的恐慌,老刑警劉巖雹舀,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旭旭,死亡現(xiàn)場離奇詭異,居然都是意外死亡葱跋,警方通過查閱死者的電腦和手機(jī)持寄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來娱俺,“玉大人稍味,你說我怎么就攤上這事≤恚” “怎么了模庐?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長油宜。 經(jīng)常有香客問我掂碱,道長,這世上最難降的妖魔是什么慎冤? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任疼燥,我火速辦了婚禮,結(jié)果婚禮上蚁堤,老公的妹妹穿的比我還像新娘醉者。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布撬即。 她就那樣靜靜地躺著立磁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪剥槐。 梳的紋絲不亂的頭發(fā)上唱歧,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天,我揣著相機(jī)與錄音粒竖,去河邊找鬼颅崩。 笑死,一個胖子當(dāng)著我的面吹牛温圆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播孩革,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼岁歉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了膝蜈?” 一聲冷哼從身側(cè)響起锅移,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎饱搏,沒想到半個月后非剃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡推沸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年备绽,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鬓催。...
    茶點(diǎn)故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡肺素,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出宇驾,到底是詐尸還是另有隱情倍靡,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布课舍,位于F島的核電站塌西,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏筝尾。R本人自食惡果不足惜捡需,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望筹淫。 院中可真熱鬧栖忠,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至历筝,卻和暖如春奋姿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背古沥。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工瘸右, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人岩齿。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓太颤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親盹沈。 傳聞我的和親對象是個殘疾皇子龄章,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評論 2 344