上周在Windows 10+CUDA10.1的环境下,安装成功dlib19.17,并且跑了一个Python测试程序,480*360的图片上,三个人脸,最快运行时间:0.047427秒,相当于20帧/秒(由于YOLO v3测试程序是C++编写的EXE,因此只取了最快时间进行比较,没有使用Python测试程序的平均时间0.061795秒,相当于16帧/秒)。
在HP笔记本上安装Anaconda3+CUDA10.1+dlib19.17的过程请参考:
https://blog.csdn.net/weixin_41943311/article/details/91866987
在opencv3.4.1+dlib19.17环境中测试人脸识别请参考:
https://blog.csdn.net/weixin_41943311/article/details/91983263
晚上听高手说,YOLO v3更快。于是,今天在Windows 10+CUDA10.1的环境下跑一跑YOLO v3试试,用同样的480*360的图片,三个人脸,在缺省的配置条件下,运行时间:0.043134秒,大约比dlib19.17快10%。
如果直接将PyCharm集成环境中调用dlib19.17的Python程序与YOLO v3的darknet.exe的运行速度进行对比,则YOLO v3的速度大约比dlib19.17快30%。
因为YOLO v3是编译成EXE文件在Windows上运行,因此相关软件的安装和配置,与之前Anaconda3安装的Python3.6.7环境和opencv3.4.1不会发生冲突。
我的HP笔记本(带GPU:NVIDIA GeForce GTX 1060 with Max-Q Design)已经安装了Microsoft Visual Studio 2015 update3和CUDA10.1,相关的安装过程这里就不再重复,感兴趣的同学可以参考前面的文章。下面的主要工作是安装opencv3.4.0、编译YOLO v3的主程序darknet.exe并进行一个简单的测试。
(1)安装opencv 3.4.0
下载地址:https://opencv.org/releases/
安装文件:opencv-3.4.0-vc14_vc15.exe
说明:因为opencv3.41在编译时会遇到很多问题,所以这里只安装opencv3.4.0。更高版本我没有测试过,不清楚兼容性如何。
选择目录安装完软件以后,设置一下环境变量(系统变量):
(2)编译darknet.exe
YOLO v3下载地址:https://github.com/AlexeyAB/darknet
安装文件:darknet-master.zip
将下载的文件包解压缩,使用Microsoft Visual Studio 2015 update3编译。
以下内容参考:https://www.cnblogs.com/songhouhou/p/10805976.html
(2.1)修改darknet.vcxproj文件
进入darknet-master\build\darknet目录,用记事本打开darknet.vcxproj,将所有CUDA 10.0修改为自己对应的CUDA版本,这里使用CUDA 10.1,故改为10.1。(共有两处需要修改)
(2.2)打开darknet.sln
(2.2.1)将项目修改为Release x64
(2.2.2)配置包含目录 + 库目录 + 链接器
包含目录:在darknet项目上点击鼠标右键->属性,弹出如下界面:然后VC++目录-->包含目录-->编辑
添加的目录:...\opencv\build\include(...代表opencv的安装路径,下文同理)
...\opencv\build\include\opencv
...\opencv\build\include\opencv2
库目录:方法与包含目录类似,添加的目录为:...\opencv\build\x64\vc14\lib
链接器:添加目录...\opencv\build\x64\vc14\lib下库的名字:opencv_world340.lib
(2.2.3)右键darknet,选择属性,进入CUDA C/C++中的Code Generation,删掉compute_75,sm_75(此步极为关键,要不然必出错)
(2.3)右键darknet,选择生成
编译成功,会在darknet\build\darknet\x64下得到darknet.exe。
(3)做一下人脸识别的测试
(3.1)下载yolov3.weights
下载地址:https://pjreddie.com/media/files/yolov3.weights
文件:yolo3.weights
将yolo3.weights复制到darknet.exe所在的工作目录下(如:F:\AI\darknet-master\build\darknet\x64)。
(3.2)复制opencv3.4.0的动态链接库
把opencv的安装目录(如:F:\AI\opencv\build\x64\vc14\bin)下的opencv_world340.dll 和 opencv_ffmpeg340_64.dll 复制到 darknet.exe所在的工作目录下(如:F:\AI\darknet-master\build\darknet\x64)。
(3.3)测试
在darknet\build\darknet\x64下按住shift键,点击鼠标右键选择“在此处打开Powershell 窗口(s)”
在命令行输入 .\darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
如果看到以下结果,说明你成功的配好了YOLO v3:
我们把狗狗的图片(F:\AI\darknet-master\build\darknet\x64\data\dog.jpg)修改为上周用于dlib19.17测试的图片,480*360的图片,三个人脸,在缺省的配置条件下,最快运行时间:0.043134秒,简单测算一下,大约比dlib19.17快10%。
如果直接将PyCharm集成环境中调用dlib19.17的Python程序与YOLO v3的darknet.exe的运行速度进行对比,则YOLO v3的速度大约比dlib19.17快30%。
测试记录如下(单位:毫秒):
(1)45.824000,(2)43.965000,(3)43.614000,(4)44.004000,(5)43.635000,(6)43.876000,(7)43.166000,(8)43.134000,(9)43.916000,(10)43.492000。
平均值为:43.8626毫秒,即:0.0438626秒;最快运行时间为:43.134毫秒,即:0.043134秒。
(完)