目錄
- 1 準備bdd100k.names文件
- 2 準備bdd100k.names文件準備bdd100k.data
- 3 準備yolov3-bdd100k.cfg
- 4 下載ImageNet預訓練的網絡參數
- 5 訓練模型
- 6 測試一張圖片
- 7 測試一個視頻
- 8 測試網絡攝像頭輸入
- 9 中斷後繼續訓練模型
經過前面兩篇博客((一)使用YOLOv3訓練BDD100K數據集之數據集下載
和(二)使用YOLOv3訓練BDD100K數據集之標籤格式轉換),我們已經準備了BDD100K數據集
,並且已經生成了darknet格式的標籤,需要的訓練集和驗證集train.txt和val.txt
,現在我們只需要簡單地修改幾個配置文件就可以開始訓練了。
1 準備bdd100k.names文件
在darknet/data/目錄下創建文件bdd100k.names,裏面存放了每一類的類名,這個將在測試一張圖片時在右上角顯示一個物體的標籤名。文件內容如下(注意順序要與xml_to_yolo_txt.py文件裏面的順序一致。):
car
bus
person
bike
truck
motor
train
rider
traffic sign
traffic light
2 準備bdd100k.names文件準備bdd100k.data
在darknet/data/目錄下創建文件bdd100k.data,其內容如下,其中classes表示類的數目,train和val表示前一篇文章中生成的train.txt和val.txt的存放路徑(相對於darknet安裝路徑),backup表示訓練的yolo權重存放的位置。
classes = 10
train = bdd100k_data/train.txt
valid = bdd100k_data/val.txt
names = bdd100k_data/bdd100k.names
backup = backup/
3 準備yolov3-bdd100k.cfg
在darknet/cfg目錄下,創建一個文件yolov3-bdd100k.cfg,裏面的內容可以先拷貝yolov3.cfg,在修改以下幾個部分:
- 三處classes=80修改爲classes=10
- 三處filters=255(注意只需要修改[yolo]上面的[convolutional]的filters)修改爲filters=45( filters=3*(classes+5) ),如下:
也可以模仿此處,
修改yolov3-tiny.cfg或yolov2.cfg來使用YOLOv3-tiny或YOLOv2模型
訓練BDD00K
[convolutional]
size=1
stride=1
pad=1
filters=255 # 此處需要修改爲filters=45,注意一定要修改[yolo]層前面的第一個[convolutional]
activation=linear
[yolo]
mask = 3,4,5
anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326
classes=80
num=9
- 還可以修改batch,subdivisions和max_batches等參數。其中
batch表示一個批次訓練的圖片數目,一個epoch=total_train_images/batch
,而subdivisions表示將一個batch分爲subdivisions個組進行分別訓練,每個組有batch/subdivisions個圖片
。max_batches表示最大的批次數,而iterations=max_batches/batch。
4 下載ImageNet預訓練的網絡參數
yolov3默認的訓練權重爲darknet53,我們可以在darknet路徑下打開終端,輸入命令下載權重:
wget https://pjreddie.com/media/files/darknet53.conv.74
5 訓練模型
輸入以下命令,即可開始訓練
sudo ./darknet detector train bdd100k_data/bdd100k.data cfg/yolov3-bdd100k.cfg darknet53.conv.74
6 測試一張圖片
輸入以下命令,即可開始測試模型:
sudo ./darknet detector test bdd100k_data/bdd100k.data cfg/yolov3-bdd100k.cfg backup/yolov3-bdd100k.backup data/000005.png
7 測試一個視頻
sudo ./darknet detector demo bdd100k_data/bdd100k.data cfg/yolov3-bdd100k.cfg backup/yolov3-bdd100k.backup driving.mp4
8 測試網絡攝像頭輸入
sudo ./darknet detector demo bdd100k_data/bdd100k.data cfg/yolov3-bdd100k.cfg backup/yolov3-bdd100k.backup -c 1
9 中斷後繼續訓練模型
輸入以下命令,即可開始測試模型:
sudo ./darknet detector train bdd100k_data/bdd100k.data cfg/yolov3-bdd100k.cfg backup/yolov3-bdd100k.backup