使用darknet(windows GPU 版本) yolov3 訓練自己的第一個檢測模型(皮卡丘檢測)

一舔涎。 windows GPU 版本的 darknet 環(huán)境

環(huán)境:(基本都是按照github上的要求的來的,之前試過沒按照上面的版本來逗爹,失敗了亡嫌,不掙扎了~ )

1. VS2015 ?? community 免費的社區(qū)版本,這個裝在哪個位置隨意掘而。

2.? CUDA9.1 cudnn7.1 ?? 使用默認安裝位置(CUDA安裝在 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1挟冠,cudnn解壓出來直接覆蓋該目錄)。CUDA安裝過程中黑屏沒關(guān)系袍睡,只是小小的黑一下而已知染。

3. opencv3.4.0 ? 將opencv-3.4.0-vc14_vc15.exe解壓出來,C盤建個名為“opencv_3.0”的目錄斑胜,然后把解壓出來的東西扔進去控淡,目錄結(jié)構(gòu)如下(C:\opencv_3.0\opencv\build)

4. darknet windows版本:github路徑:https://github.com/AlexeyAB/darknet(下載的時候是2018.10.7)


二。 在VS2015上編譯DEMO

1.? 打開 darknet-master\build\darknet\darknet.sln? 這個是GPU版本的(darknet_no_gpu.sln 這個是CPU版本的止潘,如果只跑前向掺炭,用這個完全沒問題,如果要訓練凭戴,還是GPU版本的吧涧狮,CPU版本的實在是太慢了!)

2. 如下圖么夫,打開后者冤,右擊選中部分,點重新生成档痪,如果是按照我上面的流程安裝的環(huán)境涉枫,應該不要修改配置就能直接使用。darknet-master\build\darknet\x64? 中會生成 darknet.exe


VS2015 darknet GPU工程


三钞它。 訓練自己的數(shù)據(jù)集

1.? 搜集訓練樣本(不使用開源數(shù)據(jù)集)

使用網(wǎng)絡(luò)爬蟲拜银,爬取樣本圖片殊鞭。網(wǎng)絡(luò)爬蟲我?guī)缀跏切“祝蔷W(wǎng)上隨便找的一個比較快且穩(wěn)定的爬蟲腳本(原版在哪里暫時找不到了尼桶,找到了再加上去)操灿,總共爬了7W多張,可怕泵督。返十。没陡。


網(wǎng)絡(luò)爬蟲結(jié)果


2. 訓練的 yolo label 標注

標注工具是基于網(wǎng)上的一個版本改的唯沮,基于opencv(http://www.cnblogs.com/louyihang-loves-baiyan/p/4457462.html)咆蒿。

標樣本的時候,取了前1W張圖片秩冈,然后當標了幾百張的時候發(fā)現(xiàn)越來越多重復的圖片了本缠,最終,我只標了接近1000張圖片入问,實在是懶得標了~丹锹!

標注的代碼里面會將圖片縮放成固定大小,方便我去標芬失。

yolo的label格式是這樣的:類別下標(第幾個類別楣黍,從0開始) ? ? 中心點x坐標 ? 中心點y坐標 ? 目標寬度 ? 目標高度 ?? (后面4個值都是實際像素點值除以實際寬高的,也就是占比)

yolo label

每張圖片都對應一個label文件棱烂,比如圖片名字是1.jpg租漂,那么它的標注文件就是1.txt。


3. 準備訓練前的東西

1. 標簽名字文件:pikaqiu.names 里面每行存放著標簽的名字(該文件一般放在data目錄颊糜,這里我訓練的是皮卡丘檢測哩治,所以就一個標簽)

標簽名字

2. data文件(一般放在cfg目錄):如圖,從上到下分別為類別數(shù)量芭析,訓練集位置锚扎,測試集位置吞瞪,標簽名字文件馁启,模型備份路徑

data文件

3. ?訓練集(pikaqiu_train.txt)和測試集(pikaqiu_test.txt )位置文件:存放圖片的位置,在當前目錄芍秆,每張圖片都會有對應的label文件:

訓練集

圖片和對應的label文件

4. 網(wǎng)絡(luò)配置文件(再cfg/yolov3-voc.cfg的基礎(chǔ)上改的):

訓練的超參數(shù)

batch:batchSize數(shù)惯疙,每batch個樣本更新一次參數(shù)。

subdivisions:如果內(nèi)存不夠大妖啥,將batch分割為subdivisions個子batch霉颠,每個子batch的大小為batch/subdivisions。在darknet代碼中荆虱,會將batch/subdivisions命名為batch蒿偎。

width:網(wǎng)絡(luò)輸入的寬度 ? height:網(wǎng)絡(luò)輸入的高度 ? channels:網(wǎng)絡(luò)輸入的通道數(shù)

momentum:動量

decay:權(quán)重衰減正則項朽们,防止過擬合

angle:通過旋轉(zhuǎn)角度來生成更多訓練樣本

saturation :通過調(diào)整飽和度來生成更多訓練樣本

exposure :通過調(diào)整曝光量來生成更多訓練樣本

hue:通過調(diào)整色調(diào)來生成更多訓練樣本

learning_rate:初始學習率

max_batches:訓練達到max_batches后停止學習

policy:調(diào)整學習率的policy,有如下policy:CONSTANT, STEP, EXP, POLY, STEPS, SIG, RANDOM

steps:根據(jù)batch_num調(diào)整學習率

scales:學習率變化的比例诉位,累計相乘


anchors:預選框骑脱,可以手工挑選,也可以通過k means 從訓練樣本中學出

num:預選框的個數(shù)苍糠,即anchors總數(shù)

mask:當前屬于第幾個預選框

classes:網(wǎng)絡(luò)需要識別的物體種類數(shù)(這里我要訓的模型只有一個類別叁丧,所以填1)

jitter: 通過抖動增加噪聲來抑制過擬合

ignore_thresh:過濾閾值和truth_thresh待研究

random:設(shè)置為0,表示關(guān)閉多尺度訓練(顯存小可以設(shè)置0)

yolo層前面的卷積層的filters數(shù)目是怎么計算的:3x(classes+5)岳瞭,和聚類數(shù)目分布有關(guān)拥娄。如果想修改默認anchors數(shù)值,使用k-means即可瞳筏。


4. 訓練及測試

直接從頭開始訓練(開始loss比較大稚瘾,慢慢來,會降下去的):build\darknet\x64\darknet.exe detector train .\cfg\pikaiqiu.data .\cfg\yolov3_pikaqiu.cfg

訓練的過程中backup目錄里面每到一定迭代次數(shù)姚炕,會有模型參數(shù)文件保存下來(比如yolov3_pikaqiu_1000.weights)孟抗。

基于前面訓練的模型繼續(xù)訓:build\darknet\x64\darknet.exe detector train .\cfg\pikaiqiu.data .\cfg\yolov3_pikaqiu.cfg backup\yolov3_pikaqiu_2500.weights

用生成的模型測試圖片:build\darknet\x64\darknet.exe detector test .\cfg\pikaiqiu.data .\cfg\yolov3_pikaqiu.cfg backup\yolov3_pikaqiu_19800.weights


測試模型

用生成的模型測試視頻:build\darknet\x64\darknet.exe detector demo .\cfg\pikaiqiu.data .\cfg\yolov3_pikaqiu.cfg backup\yolov3_pikaqiu_19800.weights -i 0 -thresh 0.25 pikaqiu2.mp4


5. anchors說明:

配置文件里面的9個anchor寬高,實際使用的時候是根據(jù)訓練的樣本钻心,通過k-means算法計算出來的點凄硼,上面圖片中用的默認的配置點,不是計算的捷沸,因為當時做這個的時候我還不懂a(chǎn)nchor摊沉,哈哈。k-mean的原理說明可以參考:https://blog.csdn.net/hrsstudy/article/details/71173305 痒给,生成anchor的腳本用的https://github.com/AlexeyAB/darknet/blob/master/scripts/gen_anchors.py 這個腳本说墨,這個腳本用在YOLOV3上有個BUG,write_anchors_to_file函數(shù)中anchors[i][0]*=width_in_cfg_file/32.

anchors[i][1]*=height_in_cfg_file/32. 這兩行“/32”是不對的苍柏,yolov2才這么用尼斧,yolov3的anchor值是基于網(wǎng)絡(luò)輸入分辨率的,而不是基于feature map试吁,所以要把 /32 去掉就OK了棺棵。


以上所有用到的東西(爬蟲腳本spider_baidu_pic.py,label標注代碼mark_tool.cpp熄捍,opencv, vs2015, cuda9.1 CUDNN7.1烛恤, darknet windows 2018.10.7版本,皮卡丘檢測所有用到的文件和樣本余耽,label缚柏, 訓練出來的模型)我全部存在了網(wǎng)盤里備份,需要的可以下載試試:

鏈接:https://pan.baidu.com/s/10h8j5OWbdle-Pm2sopLlKw 密碼:olxl

第一次寫博客碟贾,記錄自己的學習過程币喧,備份轨域,強化記憶,寫的不好大家見諒杀餐。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末疙挺,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子怜浅,更是在濱河造成了極大的恐慌铐然,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恶座,死亡現(xiàn)場離奇詭異搀暑,居然都是意外死亡,警方通過查閱死者的電腦和手機跨琳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門自点,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人脉让,你說我怎么就攤上這事桂敛。” “怎么了溅潜?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵术唬,是天一觀的道長。 經(jīng)常有香客問我滚澜,道長粗仓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任设捐,我火速辦了婚禮借浊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘萝招。我一直安慰自己蚂斤,他們只是感情好,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布槐沼。 她就那樣靜靜地躺著曙蒸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪母赵。 梳的紋絲不亂的頭發(fā)上逸爵,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天,我揣著相機與錄音凹嘲,去河邊找鬼。 笑死构韵,一個胖子當著我的面吹牛周蹭,可吹牛的內(nèi)容都是我干的趋艘。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼凶朗,長吁一口氣:“原來是場噩夢啊……” “哼瓷胧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起棚愤,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤搓萧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后宛畦,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瘸洛,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年次和,在試婚紗的時候發(fā)現(xiàn)自己被綠了反肋。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡踏施,死狀恐怖石蔗,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情畅形,我是刑警寧澤养距,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站日熬,受9級特大地震影響铃在,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜碍遍,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一定铜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧怕敬,春花似錦揣炕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至虽填,卻和暖如春丁恭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背斋日。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工牲览, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人恶守。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓第献,卻偏偏與公主長得像贡必,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子庸毫,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

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

  • 一瞥(You Only Look Once, YOLO)仔拟,是檢測Pascal VOC2012數(shù)據(jù)集內(nèi)對象/目標的系...
    Aspirinrin閱讀 52,363評論 28 64
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)飒赃,斷路器利花,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • “收拾好了沒有,準備走了载佳!”王德陽背起一個大行囊炒事,問還在臥室的妻子。 可是刚盈,妻子李素芬沒有聲音羡洛,王德陽感到奇怪,走...
    藍色牛仔閱讀 450評論 2 6
  • 導語:你說你疲憊不堪藕漱,感覺前路渺茫而艱難欲侮。我知道這就像跑一段馬拉松途中的感受,但肋联,如果我們能感受到那些生活中零散的...
    菜菜的流浪貓閱讀 1,160評論 1 21
  • 轉(zhuǎn)眼兒子開學一個多星期了虑粥,兒子也慢慢適應了小學生的生活,每天早起坐校車去學校宪哩,中午在學校吃飯娩贷,傍晚再坐校車回家∷希回...
    醉相思_3d2d閱讀 164評論 0 0