使用预先训练的权重检测图像中对象的Darknet指南如下:https://pjreddie.com/darknet/yolo/
要运行的命令是:
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
最后一个参数是文件的路径,我曾尝试将其更改为data/*.jpg
,但没有成功。
如何使用暗网检测整个图像目录
根据下面提到的链接,可以使用cv2.dnn.readNetFromDarknet模块读取darknet、经过训练的权重和配置文件,在python中创建加载的模型。一旦加载了模型,就可以简单地使用for循环进行预测。请参阅此链接以进一步澄清
有一种简单的方法可以检测基于此存储库AlexeyAB/darknet的图像列表上的对象。
./darknet detector test cfg/obj.data cfg/yolov3.cfg yolov3.weights < images_files.txt
您可以从命令行(将文件夹文件发送到txt(或在Ubuntu上使用Nautilus等GUI工具生成文件列表。
两个额外的标志-dont_show -save_labels
将禁用用户交互,并将检测结果保存到文本文件中。
有一个技巧可以让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.jpgr";
incr I;
} elseif {$I == 1} {
send "data/kite.jpgr";
incr I;
} else {
exit;
}
exp_continue;
}
}
HEREDOC
另一个解决方案是从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( 编辑新探测器.py
- 更改.load_net行以使用:
cfg/yolov3-tiny.cfg
和yolov3-tiny.weights
- 更改要使用的.load_meta行:
cfg/coco.data
4a(通过在检测器中添加一些dn.dectect
行来检测图像中的对象.py
4b(运行检测器.py