Почему YoloV3 имеет очень низкий уровень обнаружения в тестировании? - PullRequest
0 голосов
/ 12 июня 2018

Я обучил YoloV3 для обнаружения объектов.Я тренировался, чтобы достичь Avg Recall: почти 1,0 для всех изображений в пакете, а Avg IOU выше 0,9.Но когда я иду на тестирование с изображениями (но они очень похожи на те обученные изображения), которые не включены в обучение, порог обнаружения должен быть установлен на 0,1.Но при тестировании с этими изображениями, используемыми в обучении, их порог обнаружения может быть установлен на уровне 0,7.Что может быть не так или что мне нужно изменить в тренировках?Мой CFG для обучения

[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

Ответы [ 2 ]

0 голосов
/ 10 августа 2018

uncomment batch = 1 и subdivisions = 1 и комментарий в двух последних строках:

# Testing
#batch=1
#subdivisions=1
# Training  
batch=16  
subdivisions=8
0 голосов
/ 21 июня 2018

Я столкнулся с такой проблемой, когда использовал Yolo для неквадратных изображений.Это у тебя так?В фазе поезда Yolo изменяет размеры изображения до требуемого размера (а именно 416x416 в вашей сети): https://github.com/pjreddie/darknet/blob/master/src/data.c#L971 Но на этапе тестирования он изменяет пропорции изображения, сохраняя его, и добавляет к изображению необходимые рамки: https://github.com/pjreddie/darknet/blob/master/examples/detector.c#L587 (альтернативный кодстроки с немым изменением размера прокомментированы ниже).Естественно, если входные изображения не квадратные, они выглядят совершенно иначе, чем в обучении :) Я использую https://github.com/AlexeyAB/darknet fork, и эта проблема была устранена совсем недавно (https://github.com/AlexeyAB/darknet/commit/efaf684cb20b996db0cd6d99d20fabb4bc26859a). Но, похоже, оригинальный Yoloвсе еще есть. PS. Хотя Yolo - отличный инструмент, в его коде есть много подобных вещей, и это хорошая идея, чтобы посмотреть на исходный код и отладчик при его использовании:)

...