https://pjreddie.com/darknet/yolo/
本文测试了yolov3 demo,实现对视频的物体检测。
step1:下载darknet
git clone https://github.com/pjreddie/darknet
如果没有git:
sudo apt-get install git
step2:Make操作:
cd darknet
make
step3:下载 pre-trained weight文件
wget https://pjreddie.com/media/files/yolov3.weights
建议浏览器下载,速度快一些
step4:测试一下
下载好之后,把yolov3.weight
剪切到darknet
文件夹里,然后执行命令:
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
/darknet
文件夹内,predictions.jpg
就是识别结果。
如果想利用darknet对视频进行处理,则需要分别用CUDA和OpenCV编译Darknet。
安装OpenCV和CUDA教程可以参考。
step1:修改Makefile,并make
/darknet/Makefile
里第一句改成GPU=1
;
NVCC的路径修改为自己的:NVCC = /usr/local/cuda-11.0/bin/nvcc
#进入文件后,按【i】进入编辑模式
vi Makefile
make
STEP2:执行 ./darknet -i 0 imagenet test cfg/alexnet.cfg alexnet.weights
1. 可能有报错:`Not an option: imagenet`
解决方法:
```powershell
修改命令为:./darknet -i 0 test ./data/horses.jpg cfg/alexnet.cfg alexnet.weights
step1:修改Makefile,并make
/darknet/Makefile
里第一句改成OPENCV=1
:
#进入文件后,按【i】进入编辑模式,或者用文本文件打开
vi Makefile
make
解决方法:安装这个库:
sudo apt install libopencv-dev
解决方法:
修改Makefile,只保留一行。
ARCH= -gencode arch=compute_35,code=sm_35
#-gencode arch=compute_30,code=sm_30
#-gencode arch=compute_50,code=[sm_50,compute_50] \
#-gencode arch=compute_52,code=[sm_52,compute_52]
step2:测试
./darknet imtest data/eagle.jpg
如果得到了很多eagle的窗口,就成功了!
CTRL+c
退出。
step1:下载一段dogs.MP4
的视频,放在/darknet/data
文件夹内
step2:执行
./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights data/dogs.MP4
出现错误:CUDA Error: out of memory
darknet: ./src/cuda.c:36: check_error: Assertion `0’ failed.
原因:GPU性能不够;
解决方法:修改cfg/yolov3.cfg
(用到哪个修改哪个)
batch=1
subdivisions=1
减少其batch数量能大大缓解内存紧张;
如果上面这样做还是出现内存不足的现象,那么只有两种方案了,要么用小一点的模型,要么就更改yolov3.cfg的height和width值了,我修改为宽高都为416,再测试就没问题了。