实战Yolov4的Q&A记录

Q1 : 在yolov4中,使用k-means对先验框进行聚类报了以下错误

E:\Program Files\Python\Python37\lib\site-packages\numpy\core_methods.py:163: RuntimeWarning: invalid value encountered in true_divide ret, rcount, out=ret, casting=‘unsafe’, subok=False)

A1: 在传入值到np.median的时候, 注意先对值进行长度判断, tmp_box的长度很有可能是0, 这时候就会导致np.median异常, 示例代码如下:

 			tmp_box=box[near == j]
            print("box:", tmp_box)
            if len(tmp_box) != 0:
            	cluster[j] = np.median(tmp_box,axis=0)

Q2 : 在使用yolov4 的预训练权重文件进行预测的时候, 出现了以下错误, 这个问题在网络上看到蛮多出现的,可以试试以下解析。

ValueError: Dimension 0 in both shapes must be equal, but are 1 and 255. Shapes are [1,1,1024,75] and [255,1024,1,1]. for ‘Assign_535’ (op: ‘Assign’) with input shapes: [1,1,1024,75], [255,1024,1,1].

A2: 这个原因是由于我修改了voc数据集的classes文件,由于其中的一些类别被我做了增添, 所以当载入预训练权重文件的时候得到的filter和类别计算得到的filter层数不一样, 要知道 各种数据集构建得到的filters层数不一样。

卷积层计算公式: filter=(classes + 5) * 3,
其中, 5 表示 width,height, x,y, confidence
在yolo中使用了 9个先验框, 且具有3个不同的特征尺寸层, 每层则有3个 先验框用于计算,
在识别 1 个类的时候, 则某一个尺寸特征层的filter层数 有 (1+5)*3 = 18 个维度要计算。
迁移学习使导入预训练权重,减少计算力浪费和时间浪费成为可能。

Q3: 在实际的实战过程中, train.txt和 val.txt 的作用是什么呢? 要多少的数据集合适呢?
A3: train.txt 可以理解为 考试中的练习题, val.txt可以理解为考试中的模拟考试, 一般9:1就够了。 数据集的话一个类, 比如 识别科比头像, 至少要制作300的样本,loss能收敛到20左右,如下是训练之后的识别效果图。实战Yolov4的Q&A记录_第1张图片
Q4:召回率与精确率?
A4:
召回率, 指正样本有多少被召回了,(召回可以理解为找回比较不容易被误导), 所有正样本被找的全不全。
精确率, 指预测的正样本有多少被猜对了(正样本中的样本有可能被正确预测,也有可能被错误预测。)
Q5: TP TN FP FN的解释
A5: 这个问题,直接参考以下图片。
实战Yolov4的Q&A记录_第2张图片

你可能感兴趣的:(Python,YOLOv#,python,numpy,yolov4)