1

使用预训练权重检测图像中对象的暗网指南在这里:https ://pjreddie.com/darknet/yolo/

要运行的命令是:

./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

最后一个参数是文件的路径,我尝试将其更改为data/*.jpg但没有用。

如何使用 Darknet 检测整个目录的图像?

4

4 回答 4

2

根据下面提到的链接,可以使用 cv2.dnn.readNetFromDarknet 模块来读取暗网、训练的权重和配置文件,以在 python 中制作加载模型。加载模型后,可以简单地使用 for 循环进行预测。 请参阅此链接以获取进一步说明

于 2020-02-26T13:44:43.580 回答
1

有一个技巧可以使 Darknet 可执行加载权重一次并推断多个图像文件。expect用来做这个把戏。

安装expect

sudo yum install expect -y
#sudo apt install expect -y

对多个图像进行对象检测:

expect <<"HEREDOC"
  puts "Spawning...";
  spawn ./darknet detect cfg/yolov3-tiny.cfg yolov3-tiny.weights;
  set I 0;

  expect {
    "Enter Image Path" {
      set timeout -1;

      if {$I == 0} {
        send "data/dog.jpg\r";
        incr I;
      } elseif {$I == 1} {
        send "data/kite.jpg\r";
        incr I;
      } else {
        exit;
      }

      exp_continue;
    }
  }
HEREDOC
于 2020-02-26T20:16:44.613 回答
1

有一种简单的方法可以检测基于此存储库AlexeyAB/darknet的图像列表中的对象。

./darknet detector test cfg/obj.data cfg/yolov3.cfg yolov3.weights < images_files.txt

您可以从命令行(将文件夹文件发送到 txt)或使用 Ubuntu 上的 Nautilus 等 GUI 工具生成文件列表。

两个额外的标志-dont_show -save_labels将禁用用户交互,并将检测结果保存到文本文件中。

于 2020-12-26T19:03:06.037 回答
0

另一种解决方案是从 Python2 加载 Darknet(不是 3,Darknet 使用的是 Python2)。

1a) 如https://pjreddie.com/darknet/yolo/中所述克隆暗网

1b)转到克隆的目录,下载yolov3-tiny.weightsyolov3.weightshttps://pjreddie.com/darknet/yolo/中所述

2)复制darknet/examples/detector.pydarknet目录

3) 编辑新的detector.py

  • 更改 .load_net 行以使用:cfg/yolov3-tiny.cfgyolov3-tiny.weights
  • 更改 .load_meta 行以使用:cfg/coco.data

4a)通过dn.dectect在detector.py中添加一些行来检测图像中的对象

4b) 运行检测器.py

于 2020-02-26T20:43:51.010 回答