【问题标题】:YOLO (Darknet): How to detect a whole directory of images?YOLO(暗网):如何检测整个目录的图像?
【发布时间】:2020-06-10 06:49:49
【问题描述】:
使用预训练权重检测图像中对象的暗网指南在这里:https://pjreddie.com/darknet/yolo/
要运行的命令是:
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
最后一个参数是文件的路径,我尝试将其更改为data/*.jpg,但没有成功。
如何使用暗网检测整个目录的图片?
【问题讨论】:
标签:
machine-learning
computer-vision
object-detection
yolo
darknet
【解决方案2】:
有一个技巧可以让 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
【解决方案3】:
有一种简单的方法可以检测基于此存储库AlexeyAB/darknet 的图像列表中的对象。
./darknet detector test cfg/obj.data cfg/yolov3.cfg yolov3.weights < images_files.txt
您可以从命令行 (Send folder files to txt ) 或使用 Ubuntu 上的 Nautilus 等 GUI 工具生成文件列表。
两个额外的标志-dont_show -save_labels 将禁用用户交互,并将检测结果保存到文本文件中。
【解决方案4】:
另一种解决方案是从 Python2 加载 Darknet(不是 3,Darknet 使用的是 Python2)。
1a) 如https://pjreddie.com/darknet/yolo/中所述克隆暗网
1b) 转到克隆目录,下载yolov3-tiny.weights 和yolov3.weights,如https://pjreddie.com/darknet/yolo/ 中所述
2) 将darknet/examples/detector.py 复制到darknet 目录
3) 编辑新的detector.py
- 更改 .load_net 行以使用:
cfg/yolov3-tiny.cfg 和 yolov3-tiny.weights
- 更改 .load_meta 行以使用:
cfg/coco.data
4a) 通过在detector.py 中添加一些dn.dectect 行来检测图像中的对象
4b) 运行检测器.py