文章說明
本系列文章旨在對 Github 上 malin9402 提供的代碼進行說明,在這篇文章中,我們會對 YOLOv3 項目中的 config.py 文件進行說明,這個文件中包含着所有的參數和需要加載的文件地址。
如果只是想運行 Github 上的代碼,可以參考對 YOLOv3 代碼的說明一文。
代碼說明
對代碼中各個參數進行說明。
from easydict import EasyDict as edict
__C = edict()
# Consumers can get config by: from config import cfg
cfg = __C
# YOLO options
__C.YOLO = edict()
# Set the class name
__C.YOLO.CLASSES = "./data/classes/yymnist.names" # 類別的索引,假如一共有10個類別,這個文件就是[0, 1,……, 9]
__C.YOLO.ANCHORS = "./data/anchors/basline_anchors.txt" # 先驗框的寬度和高度,三個 feature map 上各有三個先驗框,所以一共有九個先驗框的寬度和高度
__C.YOLO.STRIDES = [8, 16, 32] # 每個 feature map 中的一個格子代表原始圖像中的幾個格子,即 STRIDES * feature map 尺寸 = 原始圖像尺寸
__C.YOLO.ANCHOR_PER_SCALE = 3 # 一個尺度(feature map)上有三個先驗框
__C.YOLO.IOU_LOSS_THRESH = 0.5 # IOU 閾值
# Train options
__C.TRAIN = edict()
__C.TRAIN.ANNOT_PATH = "./data/dataset/yymnist_train.txt" # 訓練集中標籤的加載地址
__C.TRAIN.BATCH_SIZE = 4 # 每次用 4 張圖片進行訓練
__C.TRAIN.INPUT_SIZE = [416] # 訓練集中每張輸入圖片的尺寸爲 416 * 416
__C.TRAIN.DATA_AUG = True # 是否對輸入的圖片進行數據加強操作,比如水平翻轉和隨機剪裁等
__C.TRAIN.LR_INIT = 1e-3 # 初始學習率
__C.TRAIN.LR_END = 1e-6 # 訓練結束時的學習率
__C.TRAIN.WARMUP_EPOCHS = 2 # 學習率變化趨勢改變時的訓練次數
__C.TRAIN.EPOCHS = 30 # 一共訓練多少個 epoch
# TEST options
__C.TEST = edict()
__C.TEST.ANNOT_PATH = "./data/dataset/yymnist_test.txt" # 測試集中標籤的加載地址
__C.TEST.BATCH_SIZE = 2 # 每次用 2 張圖片進行測試
__C.TEST.INPUT_SIZE = 544 # 測試集中每張輸入圖片的尺寸爲 416 * 416
__C.TEST.DATA_AUG = False # 是否對輸入的圖片進行數據加強操作,比如水平翻轉和隨機剪裁等
__C.TEST.DECTECTED_IMAGE_PATH = "./data/detection/" # 將測試好的圖片存在這個路徑下
__C.TEST.SCORE_THRESHOLD = 0.3 # 測試時的得分閾值
__C.TEST.IOU_THRESHOLD = 0.45 # 測試時的 IOU 閾值
在 ./data/dataset/yymnist_train.txt 和 ./data/dataset/yymnist_test.txt 中保存的是圖片地址、圖片上真實框的位置以及真實框中的類別,比如:
E:\Pycharm\code\Jupyter\tensorflow2.0\My_net\YOLO_v3\data\dataset\train\000029.jpg 124,89,236,201,7 255,127,367,239,8
表示 000029.jpg 這張圖片上一共有 2 個真實框,它們的座標信息分別爲 (xmin, ymin, xmax, ymax) = (124, 89, 236, 201) 和 (xmin, ymin, xmax, ymax) = (255, 127, 367, 239),它們所框住的類別分別是第 8 類和第 9 類(因爲是從 0 開始算起的)。