Neural network 为什么YoloV3在检测中的检出率很低?

Neural network 为什么YoloV3在检测中的检出率很低?,neural-network,deep-learning,artificial-intelligence,convolutional-neural-network,yolo,Neural Network,Deep Learning,Artificial Intelligence,Convolutional Neural Network,Yolo,我接受过物体探测方面的训练。 我接受了达到平均召回率的培训:批次中所有图像的平均召回率几乎为1.0,平均IOU高于0.9。 但是,当我使用未包含在训练中的图像(但它们与那些训练过的图像非常相似)进行测试时,需要将检测阈值设置为0.1。 但是通过对训练中使用的图像进行测试,它们的检测率阈值可以设置得很高,比如0.7。 培训中可能出现什么问题或我需要改变什么? 我的训练目标是 [net] # Testing #batch=1 #subdivisions=1 # Training batch=16

我接受过物体探测方面的训练。 我接受了达到平均召回率的培训:批次中所有图像的平均召回率几乎为1.0,平均IOU高于0.9。 但是,当我使用未包含在训练中的图像(但它们与那些训练过的图像非常相似)进行测试时,需要将检测阈值设置为0.1。 但是通过对训练中使用的图像进行测试,它们的检测率阈值可以设置得很高,比如0.7。 培训中可能出现什么问题或我需要改变什么? 我的训练目标是

[net]
# Testing
#batch=1
#subdivisions=1
# Training
 batch=16
 subdivisions=8
height=416
width=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 = 20000
policy=steps
steps=5000,10000
scales=.1,.1

[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

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

[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

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

[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

[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]
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

[maxpool]
size=2
stride=2

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

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

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

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

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


#######

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

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

[route]
layers=-9

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

[reorg]
stride=2

[route]
layers=-1,-4

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

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


[region]
anchors =  2.00,1.24, 2.75,0.93, 2.84,1.75, 3.72,1.21, 4.63,1.59
bias_match=1
classes=1
coords=4
num=5
softmax=1
jitter=.3
rescore=1

object_scale=5
noobject_scale=1
class_scale=1
coord_scale=1

absolute=1
thresh = .6
random=1

我在使用Yolo处理非方形图像时遇到了这样的问题。是你的情况吗? 在训练阶段,Yolo将图像大小调整为所需大小(即网络中的416x416): 但在测试阶段,它调整了图像保持纵横比的大小,并将所需的边框添加到图像中:(下面对具有哑调整大小的可选代码行进行了注释)。当然,如果输入的图像不是方形的,则它们看起来与trainig中的完全不同:) 我使用fork,这个问题最近在那里得到了解决()。但看起来,原来的约洛仍然拥有它。
PS.虽然Yolo是一个很棒的工具,但它的代码有很多类似的东西,使用它时最好查看源代码和调试器:)

取消批处理=1和细分=1的注释,并注释最后两行:

# Testing
#batch=1
#subdivisions=1
# Training  
batch=16  
subdivisions=8