使用darknet进行训练后获得预测

时间:2017-03-24 05:46:44

标签: opencv neural-network deep-learning conv-neural-network

我是CNN的新手,我正在尝试使用CIFAR-10数据集训练分类器。我按照Pjreddie's Tutorial来训练一个10类数据集的简单分类器。

我使用下面的代码训练了模型,我得到了cifar_small.weights,我后来用于检测

./darknet classifier train cfg/cifar.data cfg/cifar_small.cfg

在训练简单网络后,我尝试使用cifar_small.cfgcifar_small.weigths

进行检测
./darknet detect cfg/cifar_small.cfg cifar_small.weights data/dog.jpg
  

图层过滤器大小输入输出
      0 conv 32 3 x 3/1 28 x 28 x 3 - > 28 x 28 x 32
      1 max 2 x 2/2 28 x 28 x 32 - > 14 x 14 x 32
      2 conv 64 3 x 3/1 14 x 14 x 32 - > 14 x 14 x 64
      3 max 2 x 2/2 14 x 14 x 64 - > 7 x 7 x 64
      4 conv 128 3 x 3/1 7 x 7 x 64 - > 7 x 7 x 128
      5转10 1 x 1/1 7 x 7 x 128 - > 7 x 7 x 10
      6 avg 7 x 7 x 10 - > 10个
      7 softmax 10
      8成本10装载重量
来自cifar_small.weights ...完成!
data / dog.jpg:预测   0.007035秒。
未使用OpenCV编译,保存为predictions.png而不是

它不会预测终端中的值,也不会在输出图像上绘制边界框。图像输出与输入相同。

当我尝试使用yolo.cfg和预先训练的yolo.weights预测相同的图片时,它的工作方式如下所示。

  

图层过滤器大小输入输出
      0转32 3 x 3/1 416 x 416 x 3 - > 416 x 416 x 32
      1 max 2 x 2/2 416 x 416 x 32 - > 208 x 208 x 32
      2 conv 64 3 x 3/1 208 x 208 x 32 - > 208 x 208 x 64
      3 max 2 x 2/2 208 x 208 x 64 - > 104 x 104 x 64
      4转128 3 x 3/1 104 x 104 x 64 - > 104 x 104 x 128
      5 conv 64 1 x 1/1104×104×128 - > 104 x 104 x 64
      6转128 3 x 3/1 104 x 104 x 64 - > 104 x 104 x 128
      7 max 2 x 2/10 104 x 104 x 128 - > 52 x 52 x 128
      8转256 3 x 3/1 52 x 52 x 128 - > 52 x 52 x 256
      9 conv 128 1 x 1/1 52 x 52 x 256 - > 52 x 52 x 128
10转256 3 x 3/1 52 x 52 x 128 - > 52 x   52 x 256
11最大2 x 2/2 52 x 52 x 256 - > 26   x 26 x 256
12转512 3 x 3/1 26 x 26 x 256 - >
  26 x 26 x 512
13 conv 256 1 x 1/1 26 x 26 x 512 - >   26 x 26 x 256
14 conv 512 3 x 3/1 26 x 26 x 256 - >   26 x 26 x 512
15转256 1 x 1/1 26 x 26 x 512 - >   26 x 26 x 256
16 conv 512 3 x 3/1 26 x 26 x 256 - >   26 x 26 x 512
17最大2 x 2/2 26 x 26 x 512 - >   13 x 13 x 512
18转1024 3 x 3/1 13 x 13 x 512 - >   13 x 13 x1024
19 conv 512 1 x 1/1 13 x 13 x1024 - >   13 x 13 x 512
20转1024 3 x 3/1 13 x 13 x 512 - >   13 x 13 x1024
21 conv 512 1 x 1/1 13 x 13 x1024 - >   13 x 13 x 512
22转1024 3 x 3/1 13 x 13 x 512 - >   13 x 13 x1024
23转1024 3 x 3/1 13 x 13 x1024 - >   13 x 13 x1024
24转1024 3 x 3/1 13 x 13 x1024 - >   13 x 13 x1024
25路线16
26 reorg / 2
  26 x 26 x 512 - > 13 x 13 x2048
27路线26 24
28   转换1024 3 x 3/1 13 x 13 x3072 - > 13 x 13 x1024

  29 conv 425 1 x 1/1 13 x 13 x1024 - > 13 x 13 x 425
  30检测
从yolo.weights加载重量...完成!
  data / dog.jpg:预计于11.057513秒。
汽车:54%
  自行车:51%的狗:56%

它预测与输出图像中的边界框一起预期。

2 个答案:

答案 0 :(得分:1)

我认为你应该使用这个命令:

./darknet classify cfg/cifar_small.cfg cifar_small.weights data/dog.jpg

点击此处:https://pjreddie.com/darknet/tiny-darknet/

答案 1 :(得分:0)

在/examples/darknet.c中(从422〜500行),您可以看到darknet框架对'./darknet'之后的每个函数输入的作用。 在这种情况下,“ /。darknet classify〜”使函数“ predict_classifier”在examples / classifier.c中运行。

预测结果由第601〜606行的内容打印出来(在classifier.c中)

for(i = 0; i < top; ++i)
{
    int index = indexes[i];
    printf("%5.2f%%: %s\n", predictions[index] * 100, names[index]);
}