Я перешел по этой ссылке, чтобы обучить Йоло со своим собственным набором данных. Я не использую данные CIAFR10.
https://pjreddie.com/darknet/train-cifar/
Это файл cfg с именем cifar.cfg
[net]
batch=128
subdivisions=1
height=28
width=28
channels=3
max_crop=32
min_crop=32
hue=.1
saturation=.75
exposure=.75
learning_rate=0.001
policy=poly
power=4
max_batches =1000
momentum=0.9
decay=0.0005
[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]
filters=4
size=1
stride=1
pad=1
activation=leaky
[avgpool]
[softmax]
groups=1
[cost]
type=sse
Он правильно классифицирует тестовые изображения в Ubuntu 16.04.
Я использовал этот файл cgf и соответствующие значения в модуле DNC OpenCV3.4. Я использую Visual studio 2017.
String modelFile = "cifar_small.cfg";
String modelBinary = "cifar_small.weights";
Когда строка ниже выполняется, я получаю сообщение об ошибке:
dnn::Net net = readNetFromDarknet(modelFile,modelBinary);
Сообщение об ошибке:
Ошибка OpenCV: ошибка синтаксического анализа (неизвестный тип слоя: avgpool) в файле `cv :: dnn :: darknet :: ReadDarknetFromCfgFile, файл C: \ build \ master_winpack-build-win64-vc14 \ opencv \ modules \ dnn \ src \ darknet \ darknet_io .cpp, строка 503
Также за софтмакс и посмотрим. Похоже, DNN не в состоянии понять эти термины.
Может кто-нибудь сообщить мне, как исправить эти проблемы?
Вы используете тот же файл cfg? Попробуйте преобразовать окончания строк в специфичные для вашей ОС.
Секция avgpool кажется пустой. Что произойдет, если вы просто удалите его?
Если я удалю avgpool, то результат классификации с помощью net.forward () будет нечитаемым. Это форма 1 канала со строками и столбцами, равными 0. Когда я передал другую модель из тензорного потока (.pb), я получил 4 вероятности для каждого класса.
Спасибо