YOLO(http://pjreddie.com/darknet/yolo/)是自己实现的框架darknet,并不是基于caffe,虽然Github上有基于caffe的实现。YOLO的编译很快,tinyYOLO的速度确实也非常高,不过准确度是真的低。
记录一下YOLO利用摄像头获取图像并进行目标检测的过程:
首先去github下载darknet(https://github.com/pjreddie/darknet)并解压。
安装CUDA(仅支持NVIDIA独立显卡)。
我强烈建议重装Ubuntu后先搞定显卡驱动的问题。因为折腾显卡驱动不成功的结果就是重装系统,意味着很多东西会没有,所以先搞定显卡驱动。另外如果你的事NVIDIA的独立显卡却使用Ubuntu自带的驱动当成集成显卡在用,发热量很大还浪费。
这里通过安装cuda顺带解决显卡的驱动问题。
首先下载cuda安装包,官网地址为CUDA 8.0 Downloads(https://developer.nvidia.com/cuda-downloads),我下载的是cuda-repo-ubuntu1404_8.0.44-1_amd64.deb
按网站上的安装指导:
Installation Instructions:
sudo dpkg -i cuda-repo-ubuntu1404-8-0-local_8.0.44-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda
修改该文件的名字为:
cuda-repo-ubuntu1404.8.0.44-1_amd64.deb
开始安装,输入命令:
cd Desktop
sudo dpkg -i cuda-repo-ubuntu1404_8.0.44-1_amd64.deb
结果:
Selecting previously unselected package cuda-repo-ubuntu1404-8-0-local.
(Reading database ... 266309 files and directories currently installed.)
Preparing to unpack cuda-repo-ubuntu1404_8.0.44-1_amd64.deb ...
Unpacking cuda-repo-ubuntu1404-8-0-local (8.0.44-1) ...
Setting up cuda-repo-ubuntu1404-8-0-local (8.0.44-1) ...
OK
再依次输入:
sudo apt-get update
sudo apt-get install cuda
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
重启,查看相关信息:
750显卡的驱动正确安装。
安装OPENCV2:sudo apt-get install libopencv-dev
修改Makefile中对应的:GPU=1,OpenCV=1
编译:make
输入:./darknet imtest data/eagle.jpg测试是否安装成功,成功的话会显示很多图片。
下载weights参数:下载tiny-yolo-voc.weights(http://pjreddie.com/media/files/tiny-yolo-voc.weights)。在根目录下建立weights文件夹,保存该weights文件。
输入命令:./darknet detector demo cfg/coco.data cfg/tiny-yolo-voc.cfg weights/tiny-yolo-voc.weights
即开始调用摄像头运行。
遇到的错误:
nvcc -gencode arch=compute_20,code=[sm_20,sm_21] -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_50,code=[sm_50,compute_50] -gencode arch=compute_52,code=[sm_52,compute_52] -DOPENCV `pkg-config --cflags opencv` -DGPU -I/usr/local/cuda/include/ --compiler-options "-Wall -Wfatal-errors -Ofast -DOPENCV -DGPU" -c ./src/convolutional_kernels.cu -o obj/convolutional_kernels.o
/bin/sh: 1: nvcc: not found
make: *** [obj/convolutional_kernels.o] Error 127
解决方法:
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH