歡迎來(lái)到“兩小時(shí)開(kāi)源框架系列”專欄,這是我們的第12篇文章。caffe,tensorflow,pytorch,mxnet,keras,paddlepaddle,cntk,chainer,deeplearning4j,matconvnet,lasagne前面都提到過(guò)。
今天,darknet也是最后一個(gè)框架。關(guān)于本文中使用的數(shù)據(jù)和代碼,請(qǐng)參考我們的官方git
https://github.com/longpeng2008/yousan.ai
作者&:編輯|有三個(gè)字
1 Darknet是什么首先,我得表?yè)P(yáng)一下Darknet的主頁(yè),風(fēng)格不錯(cuò)。
官網(wǎng)地址:https://pjreddie.com/darknet/
https://github.com/pjreddie/darknet
Darknet本身就是約瑟夫·雷德蒙為Yolo系列開(kāi)發(fā)的框架。
約瑟夫·雷德蒙(Joseph Redmon),一個(gè)從《看一次變得更好、更快、更強(qiáng)》到《增量改進(jìn)》,也就是從Yolo v1到Y(jié)olo v2和Yolo v3的男人,他的肖像很好。
Darknet幾乎不依賴于庫(kù)。是用C和CUDA編寫的深度學(xué)習(xí)開(kāi)源框架,支持CPU和GPU。
我們的第一個(gè)開(kāi)源框架是caffe,但是現(xiàn)在最后一個(gè)Darknet和Caffe很像,但是更輕量級(jí)。
2 Darknet結(jié)構(gòu)解讀首先,我們來(lái)看一下Darknet的代碼結(jié)構(gòu),如下所示:
cfg有幾個(gè)子目錄,數(shù)據(jù),例子,包括,python,src,S..
2.1數(shù)據(jù)目錄
Imagenet.labels.list為:
n02120505
n02104365
n02086079
n02101556
我看得出是imagenet的類代碼,對(duì)應(yīng)的imagenet.shortnames.list是:
小狐
英語(yǔ)二傳手
西伯利亞哈士奇
澳大利亞梗
可以看出,這兩個(gè)文件存儲(chǔ)了imagenet1000的類別信息。
再看9k.labels、9k . name、9k.trees,里面存儲(chǔ)了Yolo9000論文對(duì)應(yīng)的9418個(gè)類別。Coco.names,openimages.names和voc.names都差不多。
2.2 cfg目錄
Cfg,下面有兩種類型的文件,一種是。另一個(gè)是。cfg文件。當(dāng)我們打開(kāi)imagenet1k.data文件時(shí),可以看到它配置了訓(xùn)練數(shù)據(jù)集的信息:
類別=1000 ##類別數(shù)量
train =/data/imagenet/imagenet 1k . train . list # #訓(xùn)練文件
valid =/data/imagenet/imagenet 1k . valid . list # #測(cè)試文件
backup =/home/pjreddie/backup/# #培訓(xùn)結(jié)果保存文件夾
labels = data/imagenet . labels . list #標(biāo)簽
name = data/imagenet . short name . list
top=5
另一種是。cfg文件。讓我們打開(kāi)cifar.cfg文件進(jìn)行查看。
# #-1優(yōu)化參數(shù)配置# #
[凈]
批次=128
細(xì)分=1
高度=28
寬度=28
通道=3
max_crop=32
min_crop=32
# #數(shù)據(jù)增強(qiáng)參數(shù)
色調(diào)=.1
飽和度=.75
曝光=.75
# #學(xué)習(xí)速度策略
學(xué)習(xí)率=0.4
政策=poly
功率=4
Max _ beats = 5000 # #次迭代
動(dòng)量=0.9 ##動(dòng)量項(xiàng)
衰減=0.0005 ##常規(guī)項(xiàng)目
# #-2網(wǎng)絡(luò)參數(shù)配置# #
[卷積]
Batch_normalize=1 ##是否要使用Batch_normalize
過(guò)濾器=128
尺寸=3
stride=1
pad=1
激活=泄漏##激活功能
[卷積]
batch_normalize=1
過(guò)濾器=128
尺寸=3
stride=1
pad=1
激活=泄漏
[卷積]
batch_normalize=1
過(guò)濾器=128
尺寸=3
stride=1
pad=1
激活=泄漏
[maxpool]
尺寸=2
stride=2
[輟學(xué)]
概率=.5
[卷積]
batch_normalize=1
過(guò)濾器=256
尺寸=3
stride=1
pad=1
激活=泄漏
[卷積]
batch_normalize=1
過(guò)濾器=256
尺寸=3
stride=1
pad=1
激活=泄漏
[卷積]
batch_normalize=1
過(guò)濾器=256
尺寸=3
stride=1
pad=1
激活=泄漏
[maxpool]
尺寸=2
stride=2
[輟學(xué)]
概率=.5
[卷積]
batch_normalize=1
過(guò)濾器=512
尺寸=3
stride=1
pad=1
激活=泄漏
[卷積]
batch_normalize=1
過(guò)濾器=512
尺寸=3
stride=1
pad=1
激活=泄漏
[卷積]
batch_normalize=1
過(guò)濾器=512
尺寸=3
stride=1
pad=1
激活=泄漏
[輟學(xué)]
概率=.5
[卷積]
過(guò)濾器=10
size=1
stride=1
pad=1
激活=泄漏
[avgpool]
[softmax]
組=1
它由兩部分組成。第一部分是優(yōu)化參數(shù)的定義,類似caffe的solver.prototxt文件。第二部分是網(wǎng)絡(luò)定義,類似caffe的train.prototxt文件,只是網(wǎng)絡(luò)層是用[],批量歸一化和激活函數(shù)是用[卷積]配置的。
最終的avgpool不需要配置池半徑,softmax也不需要配置輸入輸出,所以組參數(shù)設(shè)置在最后。
你可能很好奇,殘網(wǎng)怎么弄?
[快捷方式]
激活=泄漏
from=-3
如上所述,用from=-3參數(shù)配置意味著返回3個(gè)塊。
2.3 python目錄
下面只有兩個(gè)文件,分別是darknet.py和proverbot.py..前者是python調(diào)用yolo模型的情況,后者沒(méi)有用。
2.4包含、src、示例目錄
Include和src是具體函數(shù),卷積等運(yùn)算在這里。例子是高級(jí)任務(wù)的定義,包括分類器和檢測(cè)器。代碼的解釋超出了本文的內(nèi)容,后面會(huì)詳細(xì)說(shuō)明。
3 數(shù)據(jù)準(zhǔn)備和模型定義3.1數(shù)據(jù)準(zhǔn)備
之前介紹的都介紹過(guò)了,就開(kāi)始準(zhǔn)備培訓(xùn)資料了。和caffe一樣,數(shù)據(jù)準(zhǔn)備的過(guò)程非常簡(jiǎn)單。
首先,在數(shù)據(jù)目錄中設(shè)置我們自己的任務(wù),按照下面的目錄準(zhǔn)備文件
├──基因數(shù)據(jù)
├──標(biāo)簽
├──試驗(yàn)
├──測(cè)試列表
├──火車
└──火車.列表
使用以下命令生成文件
查找“pwd ”/ train-name *。jpg >。train.list
查找` pwd`/test -name *。jpg >。test.list
每行存儲(chǔ)一個(gè)文件,標(biāo)簽通過(guò)后綴獲得。
/Users/long Peng/Desktop/darknet/data/mouth/train/60 _ smile . jpg
/Users/long Peng/Desktop/darknet/data/mouth/train/201 _ smile . jpg
/Users/long Peng/Desktop/darknet/data/mouth/train/35 _ neutral . jpg
/Users/long Peng/Desktop/darknet/data/mouth/train/492 _ smile . jpg
標(biāo)簽的內(nèi)容存儲(chǔ)在labels.txt中,如下所示
中立的
微笑
3.2配置培訓(xùn)文件路徑和網(wǎng)絡(luò)
轉(zhuǎn)到cfg目錄并創(chuàng)建文件mouth.data和mouth . CFG mouth . data的內(nèi)容如下:
classes = 2
train = data/mouth/train.list
valid = data/mouth/test.list
labels = data/mouth/labels.txt
backup = mouth/
top=5
mouth.cfg內(nèi)容如下:
[凈]
批次=16
細(xì)分=1
高度=48
寬度=48
通道=3
max_crop=48
min_crop=48
色調(diào)=.1
飽和度=.75
曝光=.75
學(xué)習(xí)率=0.01
政策=poly
功率=4
最大批次= 5000
動(dòng)量=0.9
衰變=0.0005
[卷積]
batch_normalize=1
過(guò)濾器=12
尺寸=3
stride=1
pad=1
激活=泄漏
[maxpool]
尺寸=2
stride=2
[卷積]
batch_normalize=1
過(guò)濾器=24
size=1
stride=1
pad=1
激活=泄漏
[maxpool]
尺寸=2
stride=2
[卷積]
batch_normalize=1
過(guò)濾器=48
尺寸=3
stride=1
pad=1
激活=泄漏
[maxpool]
尺寸=2
stride=2
[已連接]
輸出=128
激活=relu
[已連接]
輸出=2
激活=線性
[softmax]
這里我們用一點(diǎn)數(shù)據(jù)增強(qiáng)操作,后面會(huì)看到它的威力。
4 模型訓(xùn)練使用以下命令進(jìn)行訓(xùn)練:
。/darknet分類器train CFG/mouth . data CFG/mouth . CFG
培訓(xùn)結(jié)果如下:
上面每一行顯示:批號(hào)、紀(jì)元號(hào)、損耗、平均損耗、學(xué)習(xí)率、時(shí)間、看到的樣本數(shù)。
提取并顯示最終結(jié)果,損耗變化如下,說(shuō)明收斂完美。
培訓(xùn)結(jié)束后,使用以下腳本進(jìn)行測(cè)試。
。/darknet分類器有效CFG/mouth . data CFG/mouth . CFG mouth/mouth _ 50 . weights
樣本的結(jié)果如下:
darknet/data/mouth/test/27 _ smile . jpg,1,0.006881,0.993119,
99:前1: 0.960000,前5: 1.000000
樣本darknet/data/嘴部/test/27 _ smile.jpg被歸為1類,被歸為0和1的概率分別為0.006881和0.993119,這是第99個(gè)測(cè)試樣本,top1和top5的平均準(zhǔn)確率分別為0.96和1。
到目前為止,我們已經(jīng)在不到500個(gè)樣本中完成了精度良好的分類器的訓(xùn)練。有了這么輕便的暗網(wǎng),我決定粉一下。
總結(jié)本文闡述了如何使用darknet深度學(xué)習(xí)框架來(lái)完成一個(gè)分類任務(wù)。雖然框架小,但是真的很快,很輕。建議玩深度學(xué)習(xí)特別是計(jì)算機(jī)視覺(jué)的都要用。
1.《darknet 【darknet速成】Darknet圖像分類從模型自定義到測(cè)試》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無(wú)關(guān),侵刪請(qǐng)聯(lián)系頁(yè)腳下方聯(lián)系方式。
2.《darknet 【darknet速成】Darknet圖像分類從模型自定義到測(cè)試》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。
3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來(lái)源地址,http://f99ss.com/shehui/725801.html