Neural network 深色-未检测到自定义训练数据的任何内容

Neural network 深色-未检测到自定义训练数据的任何内容,neural-network,deep-learning,conv-neural-network,yolo,darknet,Neural Network,Deep Learning,Conv Neural Network,Yolo,Darknet,我创建了自己的数据集,这是一组足球图像。由于我只有一个类,我修改了ball-yolov3-tiny.cfg,将过滤器设置为18,将类设置为1 然后我对图像进行了注释,并将创建的.txt文件放入图像的同一目录中。最后,我使用darknet53.conv.74模型,通过执行命令darknet检测器train custom/ball-obj.data custom/ball-yolov3-tiny.cfg darknet53.conv.74,开始了培训 我有134张图片用于训练,15张图片用于测试。以

我创建了自己的数据集,这是一组足球图像。由于我只有一个类,我修改了
ball-yolov3-tiny.cfg
,将
过滤器设置为
18
,将
类设置为
1

然后我对图像进行了注释,并将创建的
.txt
文件放入图像的同一目录中。最后,我使用
darknet53.conv.74
模型,通过执行命令
darknet检测器train custom/ball-obj.data custom/ball-yolov3-tiny.cfg darknet53.conv.74
,开始了培训

我有134张图片用于训练,15张图片用于测试。以下是培训过程的示例输出:

95: 670.797241, 597.741333 avg, 0.000000 rate, 313.254830 seconds, 6080 images
Loaded: 0.000302 seconds
Region 16 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.499381, .5R: -nan, .75R: -nan,  count: 0
Region 23 Avg IOU: 0.344946, Class: 0.498204, Obj: 0.496005, No Obj: 0.496541, .5R: 0.000000, .75R: 0.000000,  count: 32
Region 16 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.499381, .5R: -nan, .75R: -nan,  count: 0
Region 23 Avg IOU: 0.344946, Class: 0.498204, Obj: 0.496005, No Obj: 0.496541, .5R: 0.000000, .75R: 0.000000,  count: 32
96: 670.557190, 605.022949 avg, 0.000000 rate, 312.962750 seconds, 6144 images
Loaded: 0.000272 seconds
Region 16 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.499360, .5R: -nan, .75R: -nan,  count: 0
Region 23 Avg IOU: 0.344946, Class: 0.498204, Obj: 0.495868, No Obj: 0.496454, .5R: 0.000000, .75R: 0.000000,  count: 32
Region 16 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.499360, .5R: -nan, .75R: -nan,  count: 0
Region 23 Avg IOU: 0.344946, Class: 0.498204, Obj: 0.495868, No Obj: 0.496454, .5R: 0.000000, .75R: 0.000000,  count: 32
97: 670.165161, 611.537170 avg, 0.000000 rate, 312.681998 seconds, 6208 images
Loaded: 0.000282 seconds
Region 16 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.499331, .5R: -nan, .75R: -nan,  count: 0
Region 23 Avg IOU: 0.344946, Class: 0.498204, Obj: 0.495722, No Obj: 0.496397, .5R: 0.000000, .75R: 0.000000,  count: 32
Region 16 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.499331, .5R: -nan, .75R: -nan,  count: 0
Region 23 Avg IOU: 0.344946, Class: 0.498204, Obj: 0.495722, No Obj: 0.496397, .5R: 0.000000, .75R: 0.000000,  count: 32
98: 669.815918, 617.365051 avg, 0.000000 rate, 319.203044 seconds, 6272 images
Loaded: 0.000244 seconds
Region 16 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.499294, .5R: -nan, .75R: -nan,  count: 0
Region 23 Avg IOU: 0.344947, Class: 0.498204, Obj: 0.495569, No Obj: 0.496253, .5R: 0.000000, .75R: 0.000000,  count: 32
Region 16 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.499294, .5R: -nan, .75R: -nan,  count: 0
Region 23 Avg IOU: 0.344947, Class: 0.498204, Obj: 0.495569, No Obj: 0.496253, .5R: 0.000000, .75R: 0.000000,  count: 32
99: 669.555664, 622.584106 avg, 0.000000 rate, 320.330266 seconds, 6336 images
Loaded: 0.000244 seconds
Region 16 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.499246, .5R: -nan, .75R: -nan,  count: 0
Region 23 Avg IOU: 0.344948, Class: 0.498204, Obj: 0.495409, No Obj: 0.496197, .5R: 0.000000, .75R: 0.000000,  count: 32
Region 16 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.499246, .5R: -nan, .75R: -nan,  count: 0
Region 23 Avg IOU: 0.344948, Class: 0.498204, Obj: 0.495409, No Obj: 0.496197, .5R: 0.000000, .75R: 0.000000,  count: 32
100: 669.132629, 627.238953 avg, 0.000000 rate, 329.954091 seconds, 6400 images
Saving weights to backup//ball-yolov3-tiny.backup
Saving weights to backup//ball-yolov3-tiny_100.weights
Resizing
576
Loaded: 1.764142 seconds
Region 16 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.499216, .5R: -nan, .75R: -nan,  count: 0
Region 23 Avg IOU: 0.430712, Class: 0.498203, Obj: 0.495251, No Obj: 0.496154, .5R: 0.000000, .75R: 0.000000,  count: 32
以下是其他配置文件:

darknet detector train custom/ball-obj.data custom/ball-yolov3-tiny.cfg darknet53.conv.74
球形物体数据

classes= 1
train  = custom/ball-train.txt
valid  = custom/ball-test.txt
names = custom/ball-obj.names
backup = backup/
球对象名称

ball
当我使用创建的权重来测试单个图像时,它根本无法在图像中找到足球。我是否需要更多(例如10K)图像?还是我需要长时间训练模特?我只是想确保我的设置一切正常

请随时询问有关我的实验的任何问题。非常感谢你的帮助。提前谢谢

p、 这是我的
ball-yolov3-tiny.cnf的全部内容:

[net]
# Testing
batch=1
subdivisions=1
# Training
#batch=64
#subdivisions=2
width=416
height=416
channels=3
momentum=0.9
decay=0.0005
angle=0
saturation = 1.5
exposure = 1.5
hue=.1

learning_rate=0.001
burn_in=1000
max_batches = 500200
policy=steps
steps=400000,450000
scales=.1,.1

[convolutional]
batch_normalize=1
filters=16
size=3
stride=1
pad=1
activation=leaky

[maxpool]
size=2
stride=2

[convolutional]
batch_normalize=1
filters=32
size=3
stride=1
pad=1
activation=leaky

[maxpool]
size=2
stride=2

[convolutional]
batch_normalize=1
filters=64
size=3
stride=1
pad=1
activation=leaky

[maxpool]
size=2
stride=2

[convolutional]
batch_normalize=1
filters=128
size=3
stride=1
pad=1
activation=leaky

[maxpool]
size=2
stride=2

[convolutional]
batch_normalize=1
filters=256
size=3
stride=1
pad=1
activation=leaky

[maxpool]
size=2
stride=2

[convolutional]
batch_normalize=1
filters=512
size=3
stride=1
pad=1
activation=leaky

[maxpool]
size=2
stride=1

[convolutional]
batch_normalize=1
filters=1024
size=3
stride=1
pad=1
activation=leaky

###########

[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky

[convolutional]
batch_normalize=1
filters=512
size=3
stride=1
pad=1
activation=leaky

[convolutional]
size=1
stride=1
pad=1
filters=18
activation=linear



[yolo]
mask = 3,4,5
anchors = 10,14,  23,27,  37,58,  81,82,  135,169,  344,319
classes=1
num=6
jitter=.3
ignore_thresh = .7
truth_thresh = 1
random=1

[route]
layers = -4

[convolutional]
batch_normalize=1
filters=128
size=1
stride=1
pad=1
activation=leaky

[upsample]
stride=2

[route]
layers = -1, 8

[convolutional]
batch_normalize=1
filters=256
size=3
stride=1
pad=1
activation=leaky

[convolutional]
size=1
stride=1
pad=1
filters=18
activation=linear

[yolo]
mask = 0,1,2
anchors = 10,14,  23,27,  37,58,  81,82,  135,169,  344,319
classes=1
num=6
jitter=.3
ignore_thresh = .7
truth_thresh = 1
random=1
我执行的命令是:

darknet detector train custom/ball-obj.data custom/ball-yolov3-tiny.cfg darknet53.conv.74
  • 你有一个小的数据集和15个用于测试的图像,我认为太小了
  • batch=1 subdivisions=1
    意味着您每1次迭代只训练1个图像,如果您有足够的GPU,您可以尝试增加数量以使模型更好地收敛
  • 您的型号不好的最明显原因是
    100:669.132629627.238953 avg
    。你可以看到平均损失为627.238953,这太大了。好的YOLO模型的损失约为0.06~1 因此,根据我上面的观点,你可以做的事情是继续训练(100次迭代是不够的,尤其是对于Tiny YOLO),增加批处理和细分,以及增加你的数据集


    添加:使用您的数据集重新计算锚定框也是一个不错的选择,您可以在internet上找到许多优秀的示例和代码。

    将批处理大小增加到64,并使用GPU内存所能容纳的尽可能少的细分:从1、2、4、8、16、32开始,最后是64,如果您继续将CUDA从内存中取出的话

    你应该训练你的网络,直到你的平均损失率<1

    您是使用Joseph Redmons存储库中的darknet原始版本,还是使用fork?有一系列关于如何改进目标检测的建议,但是,我不确定它们是否适用于所有其他版本

    max_batches= (# of classes)* 2000
    
    max_batches = 6000
    
    如果你接受1、2、3节课的培训,那么你将获得6000英镑


    我使用的是原始版本。训练时,
    batch\u size
    已经设置为
    64
    。然后我仍然建议重新调整achors,特别是如果球在图片中的大小通常相同。为了补偿小数据集,最好在第13行将角度参数设置为[30-45],并在137和179处增加抖动。角度决定了yolo以一定间隔旋转图像的最大值,抖动表示更高程度的大小调整和纵横比修改。重新计算边界框是什么意思@gameon67@AnkitSachan对不起,我的意思是锚定框不是边界框。默认锚定框值未针对特定数据集进行优化,因此必须按照数据集模式重新计算。