Update: 博主建了一个计算机视觉&YOLO的群:659389932。希望与大家多多交流。(2017-08-15)
说明
使用TensorFlow实现的YOLO,发现效果很一般(GTX960下,一张图1.2s左右),因此打算用darknet实现的YOLO来跑跑看效果。
大致交代一下,TensorFlow版本的YOLO在台式机显卡GTX960,16GB内存情况下,大概是1.2s一张图。现在在GPU工作站(CPU至强系列,GPU两块Titan xp)上测试用darknet实现的YOLO,基于CPU的是12.3s一张图,这个效果是真的很差啊,然后就想既然都用了GPU工作站了,那用GPU跑起来。
官网(YOLO: Real-Time Object Detection)上对于CPU、GPU编译的有一段话来介绍:
Darknet prints out the objects it detected, its confidence,
and how long it took to find them. Since we are using
Darknet on the CPU it takes around 6-12 seconds per image.
If we use the GPU version it would be much faster.
编译GPU版本并没有告诉我们怎么做?网上找到了很多都会出现bug,所以我给出步骤分享给大家。
接下来我将给出大家一个详细的步骤:
1、打开你的MakeFile文件,将GPU=0 --> GPU=1
2、CUDNN=0 --> CUDNN=1
3、DEBUG=0 --> DEBUG=1
4、NVCC=/usr/local/cuda/cuda/bin/nvcc
-->NVCC=/usr/local/cuda/cuda-8.0/bin/nvcc
5、COMMON+= -DGPU -I/usr/local/cuda/include
-->COMMON+= -DGPU -I/usr/local/cuda-8.0/include
6、LDFLAGS+= -L/usr/local/cuda/lib64-lcuda -lcudart -lcublas -lcarand
--> LDFLAGS+= -L/usr/local/cuda-8.0/lib64-lcuda -lcudart -lcublas -lcarand
到这里,Makefile 文件就配置好了。这个时候如果你直接对 darknet 进行 make,会出现 nvcc: can't found the file.
接下来的步骤就是安装一下 nvidia-cuda-toolkit,这样 make 的时候就可以找到 nvcc.
7、cd 到 /usr/local/cuda-8.0/bin,
命令行为 sudo apt-get install nvidia-cuda-toolkit
8、cd 到 /yolo_darknet/darknet,
命令行为 make
只要不报错就说明make成功。
9、依旧在文件夹 /yolo_darknet/darknet
命令行为 ./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg GPU=1
测试结果
那么你会看到模型运行起来了,测试结果为:
那么很显然,大家可以看到GPU加速后,效率惊人。计算一下帧率能达到60.496 FPS。
希望有在用YOLO的小伙伴能和我交流一下,谢谢。