在 OpenCV DNN 中解析来自 YOLO-Darknet 的 cfg 文件
Parsing the cfg file froom YOLO-Darknet in OpenCV DNN
我已经按照这个 link 使用我自己的数据集训练 yolo。我没有使用 CIAFR10 数据。
https://pjreddie.com/darknet/train-cifar/
这是名为 cifar.cfg
的 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 上的测试图像。
我在 OpenCV3.4 DNN 模块中使用了这个 cgf 文件和相应的 wights。我正在使用 Visual studio 2017.
String modelFile = "cifar_small.cfg";
String modelBinary = "cifar_small.weights";
执行以下行时,我收到错误消息:
dnn::Net net = readNetFromDarknet(modelFile,modelBinary);
错误信息:
OpenCV 错误:`cv::dnn::darknet::ReadDarknetFromCfgFile 中的解析错误(未知层类型:avgpool),文件 C:\build\master_winpack-build-win64-vc14\opencv\modules\dnn\src\darknet\darknet_io.cpp,第 503 行
另外,换了sooftmax再看看。看起来 DNN 无法理解这些术语。
有人可以告诉我如何解决这些问题吗?
你们用的是同一个cfg文件吗?尝试将行尾转换为您的 OS 特定行尾。
avgpool 部分似乎是空的。如果你简单地删除它会发生什么?
如果我删除 avgpool,则 net.forward() 的 class 化结果不可读。它是 1 个通道的形式,行和列等于 0。当我从 tensorflow(.pb) 传递另一个模型时,我得到每个 class 的 4 个概率。
谢谢
我已经按照这个 link 使用我自己的数据集训练 yolo。我没有使用 CIAFR10 数据。 https://pjreddie.com/darknet/train-cifar/
这是名为 cifar.cfg
的 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 上的测试图像。 我在 OpenCV3.4 DNN 模块中使用了这个 cgf 文件和相应的 wights。我正在使用 Visual studio 2017.
String modelFile = "cifar_small.cfg";
String modelBinary = "cifar_small.weights";
执行以下行时,我收到错误消息:
dnn::Net net = readNetFromDarknet(modelFile,modelBinary);
错误信息: OpenCV 错误:`cv::dnn::darknet::ReadDarknetFromCfgFile 中的解析错误(未知层类型:avgpool),文件 C:\build\master_winpack-build-win64-vc14\opencv\modules\dnn\src\darknet\darknet_io.cpp,第 503 行
另外,换了sooftmax再看看。看起来 DNN 无法理解这些术语。 有人可以告诉我如何解决这些问题吗?
你们用的是同一个cfg文件吗?尝试将行尾转换为您的 OS 特定行尾。
avgpool 部分似乎是空的。如果你简单地删除它会发生什么?
如果我删除 avgpool,则 net.forward() 的 class 化结果不可读。它是 1 个通道的形式,行和列等于 0。当我从 tensorflow(.pb) 传递另一个模型时,我得到每个 class 的 4 个概率。 谢谢