YOLO(暗网):如何检测整个目录的图像?
YOLO (Darknet): How to detect a whole directory of images?
这里是使用预训练权重检测图像中对象的暗网指南:https://pjreddie.com/darknet/yolo/
运行的命令是:
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
最后一个参数是文件的路径,我尝试将其更改为 data/*.jpg
但没有成功。
如何使用暗网检测整个目录的图片?
根据下面提到的link,可以使用cv2.dnn.readNetFromDarknet模块读取暗网、训练好的权重和配置文件,在python中制作一个加载模型。加载模型后,可以简单地使用 for 循环进行预测。
Please refer this link for further clarification
有一个技巧可以使 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
另一个解决方案是从 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) 运行 detector.py
有一种简单的方法可以检测基于此存储库的图像列表中的对象 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
将禁用用户交互,并将检测结果保存到文本文件。
这里是使用预训练权重检测图像中对象的暗网指南:https://pjreddie.com/darknet/yolo/
运行的命令是:
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
最后一个参数是文件的路径,我尝试将其更改为 data/*.jpg
但没有成功。
如何使用暗网检测整个目录的图片?
根据下面提到的link,可以使用cv2.dnn.readNetFromDarknet模块读取暗网、训练好的权重和配置文件,在python中制作一个加载模型。加载模型后,可以简单地使用 for 循环进行预测。 Please refer this link for further clarification
有一个技巧可以使 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
另一个解决方案是从 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) 运行 detector.py
有一种简单的方法可以检测基于此存储库的图像列表中的对象 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
将禁用用户交互,并将检测结果保存到文本文件。