[轉(zhuǎn)]Yolo訓(xùn)練自己的數(shù)據(jù)集教程 Newest(2016-12-23)

refer

Yolo darknet訓(xùn)練自己的數(shù)據(jù)集教程(Newest 2016.12.23)

經(jīng)過兩天的折騰終于搞定了Yolo訓(xùn)練自己的數(shù)據(jù)集的過程溶弟,整個過程其實并不繁瑣喜滨,只是網(wǎng)上一些過時的教程已經(jīng)不適用了炕泳,依照那個反而讓大家各種出出錯,加之Yolo中文教程過少,因此本大神再次放一個过椎,如果大家有任何問題直接在文章后面評論即可,筆者看到之后給予第一時間回復(fù)戏仓。

先插一句疚宇,Atom中文不能跟隨窗口wrap文字的同學(xué),打開settingview赏殃,設(shè)置soft wrap即可敷待,百度上的答案真的是渣

Yolo簡介

在訓(xùn)練數(shù)據(jù)集之前,相信大家對yolo應(yīng)該有一些了解仁热,本文所采用的測試環(huán)境為:Ubuntu 16.04 + opencv2.4 + cuda8 + cudnn5.1 PLUS GTX1080榜揖,當(dāng)然這個硬件不是必須,在下只是偶爾裝一下逼抗蠢。Yolo基于darknet編寫举哟,而編譯draknet的時候最好安裝一下opencv,因為沒有opencv圖不會自動彈出迅矛,沒有那種快感妨猩,你懂得,不知道如何安裝opencv的同學(xué)去我之前寫的幾個博客中搜尋秽褒。均能夠找到最新的答案壶硅。

yolo之所以快威兜,是因為它的方法和fastrcnn以及其他detect算法不同,而采用了很多ssd的思想庐椒,在最新的更新中牡属,yolo也改進(jìn)了他們的算法,在pascal voc數(shù)據(jù)集上取得了不錯的結(jié)果扼睬。本文將主要利用yolo來做realtime detect逮栅,對自己的數(shù)據(jù)進(jìn)行訓(xùn)練和預(yù)測。

開始開車

OK窗宇,閑話不多說措伐,讓我們直接上車,這次是無人駕駛军俊,速度比較快侥加,大家系好安全帶。

Step 1 編譯darknet粪躬,并熟悉目錄結(jié)構(gòu)

第一部分沒有什么說的担败,很簡單其實,首先clone代碼到本地~目錄:

cd ~
git clone https://github.com/pjreddie/darknet
cd darknet
make
這個時候我們在home根目錄就有了darknet了镰官。直接編譯提前,不需要修改任何參數(shù),當(dāng)然如何你是土豪泳唠,你有GTX1080,像我一樣(手動裝比)狈网。可以編譯一下Makefile里面的參數(shù)笨腥。為了防止大家出錯我還是說一下拓哺,直接改標(biāo)志為:

GPU=1
CUDNN=1
OPENCV=0
DEBUG=0
如果你的cuda沒有設(shè)置環(huán)境變量,nvcc的路徑也設(shè)置一下:

NVCC=/usr/local/cuda/bin/nvcc
不要想的很復(fù)雜其實很簡單脖母。ok士鸥,現(xiàn)在直接make,編譯就可以了谆级。

**Step 2 準(zhǔn)備自己的數(shù)據(jù)集 **

好了我們現(xiàn)在有了darktnet烤礁,但是我要那個匡出物體的掉炸天的圖怎么搞?莫慌哨苛,我們先用darknet自帶的測試數(shù)據(jù)來測試一下鸽凶。 首先呢币砂,yolo這個網(wǎng)絡(luò)是訓(xùn)練VOC數(shù)據(jù)集得來的建峭,20中物體都能識別出來,我們直接下載已經(jīng)訓(xùn)練好的權(quán)重然后來預(yù)測一張圖片看看:

wget http://pjreddie.com/media/files/yolo.weights
這時候我們就下載好了yolo.weights决摧,在darknet目錄下亿蒸。然后我們就可以用這個權(quán)重來預(yù)測啦凑兰!

./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg
detect命令意思是,檢測边锁,后面還有i一個命令是detector train姑食,后者是訓(xùn)練的命令,預(yù)測用detect茅坛,cfg/yolo.cfg就是yolo這個網(wǎng)絡(luò)的結(jié)構(gòu)文件音半,后面是權(quán)重,最后后面是圖片贡蓖。 ok曹鸠,enter你就可以看到狗和自行車了!~ 這就搞定了darknet斥铺,那么問題來了彻桃。自己的數(shù)據(jù)集怎么準(zhǔn)備呢? 重點來了重點來了: * images 準(zhǔn)備

首先晾蜘,把你的圖片放到一個/images 文件夾下面邻眷,文件名的名字要有規(guī)律,比如0001.jpg,0002.jpg….0100.jpg;

xml 準(zhǔn)備
我相信很多人都需要用圖片標(biāo)注工具來對圖片生成標(biāo)注信息來訓(xùn)練剔交,但是圖片標(biāo)注工具生成的多半是xml的標(biāo)簽信息肆饶。darknet需要的label并不是xml格式,而是一張圖片一個txt的形式岖常,txt中是你標(biāo)注的物體方框坐標(biāo)抖拴。后面我會放出幾個腳本來處理。

xml 轉(zhuǎn) darknet label
xml轉(zhuǎn)為darknet需要的label形式腥椒,一張圖片一個標(biāo)注信息阿宅。

生成圖片路徑 最后一部我們要生成兩個txt文件,一個是train.txt,一個是valid.txt笼蛛,train.txt包含了你訓(xùn)練圖片需要的圖片路徑洒放,沒一行都是一張圖片的路徑,為了防止出錯滨砍,后面我放出一個統(tǒng)一的腳本生成這個train.txt往湿。
Step 3 訓(xùn)練之前修改darknet參數(shù)

接下來就要修改darknet的參數(shù)了,只要修改/cfg/voc.data 文件惋戏,因為yolo是為了voc而存在的领追,為了不修改源代碼的情況下來訓(xùn)練我們的數(shù)據(jù),建議直接修改voc.data而不是修改voc.data文件名响逢。修改內(nèi)容如下:

classes= 20
train = /home/pjreddie/data/voc/train.txt
valid = /home/pjreddie/data/voc/2007_test.txt
names = data/voc.names
backup = /home/pjreddie/backup/

這里绒窑,classes就是你數(shù)據(jù)集的類別,names你的新建一個舔亭,在data下面些膨,然后在這里指向它蟀俊,仿照voc.names 新建即可。 修改train.txt valid.txt的路徑订雾,用絕對路徑哦肢预,防止出錯,因為你darknet和數(shù)據(jù)可能不再一個目錄洼哎。 ok烫映,這就setup完了,接著直接訓(xùn)練噩峦。 不過訓(xùn)練之前獲取一個預(yù)處理的權(quán)重:

curl -O http://pjreddie.com/media/files/darknet19_448.conv.23
然后窑邦,train:

./darknet detector train cfg/voc.data cfg/yolo-voc.cfg darknet19_448.conv.23
對了,如果你上面改了voc.data的文件名壕探,這里也要改冈钦,所以說其實改也是可以的。然后yolo-voc.cfg就可以不改了李请。

Step 4 yolo訓(xùn)練出的模型預(yù)測

./darknet detect cfg/yolo-voc.cfg /backup/voc.weights data/sample.jpg
這里不要和直接copy我的代碼瞧筛,cfg/yolo-voc.cfg就是我們訓(xùn)練的網(wǎng)絡(luò)。后面是訓(xùn)練保存的權(quán)重导盅,最后是你要預(yù)測的圖片较幌。 OK,看看結(jié)果咋么樣~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末白翻,一起剝皮案震驚了整個濱河市乍炉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌滤馍,老刑警劉巖岛琼,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異巢株,居然都是意外死亡槐瑞,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門阁苞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來困檩,“玉大人,你說我怎么就攤上這事那槽〉垦兀” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵骚灸,是天一觀的道長糟趾。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么拉讯? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任涤浇,我火速辦了婚禮鳖藕,結(jié)果婚禮上魔慷,老公的妹妹穿的比我還像新娘。我一直安慰自己著恩,他們只是感情好院尔,可當(dāng)我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著喉誊,像睡著了一般邀摆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上伍茄,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天栋盹,我揣著相機與錄音,去河邊找鬼敷矫。 笑死例获,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的曹仗。 我是一名探鬼主播榨汤,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼怎茫!你這毒婦竟也來了收壕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤轨蛤,失蹤者是張志新(化名)和其女友劉穎蜜宪,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體祥山,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡端壳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了枪蘑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片损谦。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖岳颇,靈堂內(nèi)的尸體忽然破棺而出照捡,到底是詐尸還是另有隱情,我是刑警寧澤话侧,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布栗精,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏悲立。R本人自食惡果不足惜鹿寨,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望薪夕。 院中可真熱鬧脚草,春花似錦、人聲如沸原献。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽姑隅。三九已至写隶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間讲仰,已是汗流浹背慕趴。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鄙陡,地道東北人冕房。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像柔吼,于是被迫代替她去往敵國和親毒费。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容