文章目录
- 文章说明
- 代码说明
文章说明
本系列文章旨在对 Github 上 malin9402 提供的代码进行说明,在这篇文章中,我们会对 YOLOv3 项目中的 config.py 文件进行说明,这个文件中包含着所有的参数和需要加载的文件地址。
如果只是想运行 Github 上的代码,可以参考对 YOLOv3 代码的说明一文。
代码说明
对代码中各个参数进行说明。
from easydict import EasyDict as edict__C = edict()
# Consumers can get config by: from config import cfgcfg = __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 开始算起的)。