在用YOLOv7训练自己的数据过程中,遇到了一点问题,错误如下:
Traceback (most recent call last):
File "train.py", line 615, in <module>
train(hyp, opt, device, tb_writer)
File "train.py", line 250, in train
mlc = np.concatenate(dataset.labels, 0)[:, 0].max() # max label class
File "D:\ProgramFile\anaconda\envs\yoloV7Env\lib\site-packages\numpy\core\_method
s.py", line 40, in _amax
return umr_maximum(a, axis, None, out, keepdims, initial, where)
ValueError: zero-size array to reduction operation maximum which has no identity
在网上找了许多方法,都是标签归一化,或者标签类别错了。没有解决我的问题。
我的数据组织如下所示:
data.yaml的配置如下,其中只有一个类别。没错。
我的标签数据如下:
到这里都没错。
不知道问题出现在哪了。
最后发现我的训练数据中只有空标签数据,没有带标签的数据。出现类别不匹配的问题。改完之后就好了。
重要的事说三遍:注意
标签、标签、标签
。
检查训练数据和验证数据是否包含所有标签。
检查标签的个数和标签名是否相同。
如果用了模型结构的配置文件,检查里面标签个数改没改。
ValueError
: zero-size array to reduction operation
max
imum
which has no identity
解决方案: label问题,检查一下label生成的对不对
OMP: Error #15:
Init
ial
izing libiomp5md.dll, but found libiomp5md.dll already
init
ial
ized.
解决方案:报错代码里加上
import os
os.environ["KMP_DUPLICATE_LIB_O
在写作目标检测的代码时,
遇到
了这样的一个
错误
,
File “/home/songyuc/software/
python
/anaconda/anaconda3/envs/conda-general/lib/
python
3.7/site-packages/numpy/core/_methods.py”, line 30, in _a
max
return
umr
_
max
imum
(a,
axis
, None, out,
keepdims
,
init
ial
, where)
ValueError
: ze
一. 泰迪杯害虫检测训练的时候,碰到如下问题:
Label class 485 exceeds nc=28 in data/pest.yaml. Possible class labels are 0-27
翻译:在文件pest.yaml中,标签类485超过nc=28。可能的类标签是0-27
自定义的标签数值:labels = ['6', '7', '8', '9', '10', '25', '41', '105', ...
#Config
plots = not evolve # create plots(创建图) evolve-----evolve hyperparameters for x generations
#为x个generations进化超参数
cuda = device.type != 'cpu'
init
_seeds(1 + RANK
在元素(数组)累加的时候,可以使用此函数进行累加,非常方便我们先来看一下全部的参数sum(a,
axis
, dtype, out,
keepdims
,
init
ial
, where)第一个参数是是传入/输入的数组元素沿轴使用(可选填,默认为数组的展平成一维形式,即0,1,2,3,4…等)aixs为0与1时的方向如图所示上个代码小例子
3)dtype(可选)
默认为:numpy.float64我们也可以进行修改比如我们常用的dtype = numpy.int32具体使用整数类型或者精度要根据情况来选择比如有关
# 基于单层决策树的AdaBoost训练过程
def adaBoostTrainDS(dataArr, classLabels, numIt=40):
weakClassArr = []
m = shape(dataArr)[0]
D = mat(ones((m, 1)) / m)
aggClassEst = mat(zeros((m, 1)))
1. 实时性高:
Yolo
算法
采用单阶段检测器的思想,将目标检测问题看作一个回归问题,一次前向计算即可完成检测,因此能够在实时性要求较高的场景中得到广泛应用。
2. 检测精度高:
Yolo
算法
采用Anchor机制,同时对多个尺度的特征图进行检测,使得
算法
对于不同大小的目标具有较好的适应性,检测精度高于传统的基于区域的目标检测
算法
。
3.
算法
结构简单:
Yolo
算法
采用卷积神经网络实现目标检测,结构简单,易于训练和优化。
1. 相对于基于区域的目标检测
算法
,
Yolo
算法
对于小目标的检测效果不如理想,因为小目标在图像中只占据了很少的像素,难以被准确地检测到。
2. 由于采用了单阶段检测器的思想,
Yolo
算法
对于目标的定位精度较低,误检和漏检现象较为常见。
3.
Yolo
算法
对于目标形状的适应性相对较差,对于不规则形状的目标的检测效果不如基于区域的目标检测
算法
。