YOLO v1 程式深度註解
YOLO v1 主要分為兩個資料夾,使用大陸 Ning 的 YOLO 程式碼。
第一個是 VOCdevkit,用來存放影像、Xml、Label。
第二個是 darknet,用來存放程式、訓練weights、cfg。
第一個訓練影像存放內容,請參考上一份文件「YOLO 藥品辨識訓練」。
第二個涵蓋資料夾有:
cfg/架構設置的檔案
scripts/官方提供的程式碼,包含產生下面data所需要的label,(voc_label.py)
data/labels/偵測目標的標籤名稱,須自行產生
src/存放程式碼位置
model/yolo_final.weights 存放權重位置,當訓練之後此資料夾才會產生
Command line 測試影像
先進入darknet,輸入指令
./darknet yolo test cfg/yolo.cfg model/yolo\_final.weights
指令介紹
./darnket 執行檔
yolo 在 src/yolo.c 的檔案名稱
test 在yolo.c最下面參數的名稱,可自行增修功能
cfg/yolo.cfg 設置檔案路徑
model/yolo_final.weights 權重檔案路徑
在 YOLO 中需要調整的部分
在 yolo.c 中第13行根據需要偵測的數目進行調整 #define CLASSNUM 2(原始是偵測兩種路標)
第16行根據需要偵測的名稱以雙括號及逗號區隔。
char \*voc\_names\[\] = {"stopsign", "yieldsign"};
- 在yolo_kernels.cu第17行,一樣依分類數量進行調整
\#define CLS\_NUM 2\(原始是偵測兩種路標\)
在src/中可根據程式碼部分進行呼叫
Activation Function可到 src/activation.c src/activation.h自行定義或查看
關於做NMS、BOX IOU定義部分可以查看 src/box.c
Dropout定義可查看 src/dropout_layer.c
關於影像處理部分,存取檔案、顯示影像、OpenCV相關可以到 src/image.c src/image.h自行定義
關於訓練架構中參數部分如有哪些activation function可用,架構相關可找 src/network.c
關於權重存取程式,可以參考 src/parser.c