2.0 前言
本文是YOLOv3系列第2篇,记录YOLOv3的几种应用方法。
建议参考github上作者的说明,写的十分清楚。
2.1 用于图片检测
操作:
下载yolov3.weights,放在目录..\darknet-master\build\darknet\x64下,双击此目录下的darknet_yolo_v3.cmd。
下载地址: https://github.com/AlexeyAB/darknet/blob/master/README.md
检测结果:
darknet_yolo_v3.cmd文件功能:检测darknet.exe同目录下的dog.jpg文件,结果存储在darknet.exe同目录下的predctions.jpg中。
自定义图片路径:删去darknet_yolo_v3.cmd文件中的dog.jpg(不是删掉dog.jpg文件)之后双击darknet_yolo_v3.cmd文件,命令行会提示输入测试图片的路径。
darknet_yolo_v3.cmd文件内容:
darknet.exe detector test data/coco.data yolov3.cfg yolov3.weights -i 0 -thresh 0.25 dog.jpg -ext_output
pause
2.2 用于视频检测
操作:
下载yolov-voc.weights,放在目录..\darknet-master\build\darknet\x64下,双击此目录下的darknet_demo_voc.cmd
下载地址见2.1图片检测
检测结果截图:
darknet_demo_voc.cmd文件功能:检测darknet.exe同目录下的test.mp4文件。
存储检测后的视频:双击darknet_demo_store.cmd而非darknet_demo_voc.cmd(其实只是添加了一个参数)。
darknet_demo_voc.cmd文件内容:
darknet.exe detector demo data/voc.data cfg/yolov2-voc.cfg yolo-voc.weights test.mp4 -i 0
pause
darknet_demo_store.cmd文件内容:
darknet.exe detector demo data/voc.data cfg/yolov2-voc.cfg yolo-voc.weights test.mp4 -i 0 -out_filename res.avi
pause
2.3 用于摄像头实时检测
2.3.1 使用电脑摄像头
操作:
下载yolov-voc.weights,放在...\darknet-master\build\darknet\x64目录下,
双击此目录下的darknet_web_cam_voc.cmd
下载地址见2.1照片检测
检测结果:
darknet_web_cam_voc.cmd文件功能:实时检测电脑摄像头中的物体。
更改摄像头:修改-c后的数字。
darknet_web_cam_voc.cmd文件内容:
# play video from Web-Camera number 0
rem darknet.exe detector demo data/voc.data cfg/yolov2-voc.cfg yolo-voc.weights -c 0
darknet.exe detector demo data/coco.data cfg/yolov3.cfg yolov3.weights -c 0
pause
2.3.2 使用手机摄像头
操作:
下载yolov-voc.weights,放在...\darknet-master\build\darknet\x64目录下,
双击此目录下的darknet_net_cam_voc.cmd。
注意:
在双击cmd文件之前需要:手机和电脑在同一个局域网内(手机和电脑连同一个wifi或者手机连电脑的wifi),安卓端需要下载IP Webcam 或者 Smart WebCam,然后打开软件,开启服务器,手机上会显示IP地址和端口,将cmd文件中的IP和端口(下边代码中的"http://192.168.0.80:8080")改为手机上显示的值。
此处给出网盘下载地址:
IP Webcam:下载链接:https://pan.baidu.com/s/1foa7T2lJAe546plQUdz7Kw 密码:hzzz
darknet_net_cam_voc.cmd文件功能:实时检测手机摄像头(作为网络摄像头)中的物体。
darknet_net_cam_voc.cmd文件内容:
# Download for Android phone mjpeg-stream: IP Webcam / Smart WebCam
#
# Smart WebCam - preferably: https://play.google.com/store/apps/details?id=com.acontech.android.SmartWebCam
# IP Webcam: https://play.google.com/store/apps/details?id=com.pas.webcam
#
# Replace the address below, on shown in the phone application
darknet.exe detector demo data/voc.data cfg/yolov2-voc.cfg yolo-voc.weights http://192.168.0.80:8080/video?dummy=param.mjpg -i 0
pause
2.4 部分命令参数说明
双击cmd文件相当于在命令行输入命令。
-dont_show:不显示过程。
-ext_output:输出预测物体的坐标。
-ext_output < data/valid.txt > result.txt:输出预测结果并写入result.txt文件。
-thresh <val>: 修改阈值,物体置信度超出此阈值时才会被框出。
如:darknet.exe detector test data/obj.data yolo-obj.cfg backup/yolo-obj_2300.weights -dont_show -ext_output < data/valid.txt > result.txt
# 将预测结果写入txt文件,不显示中间过程,可以使用这个命令来输出并存储测试的坐标。
# backup/yolo-obj_2300.weights:使用的模型相对于darknet.exe的路径。
# < data/valid.txt >:存储测试集路径的文件相对于darknet.exe的路径。
# result.txt:输出结果的存储路径。
2.5 修改源代码来附加更多的功能
示例:修改image.c让图片上显示置信度,修改后重新生成darknet.exe即可。
// 显示的图片上添加置信度
char buff[5];
_gcvt((selected_detections[i].det.prob[selected_detections[i].best_class] * 100), 5, buff);
char prob[] = "prob: ";
strcat(prob, buff);
image prob_label = get_label_v3(alphabet, prob, (im.h*.03));
draw_label(im, top + width - 25, left, prob_label, rgb);
左侧为修改前,右侧为修改后。