YOLOv3(you only look once ,实时目标检测系统)的官方网站为: https://pjreddie.com/darknet/yolo/。
本文主要根据该网站的指示进行操作
系统:Ubuntu18.04
一、用训练好的模型进行预测:Detection Using A Pre-Trained Model
1、下载程序,打开文件夹,配置makefile文件,进行编译:
git clone https://github.com/pjreddie/darknet
也可以通过github网页进行下载:下载的文件夹为darknet-master
进入darknet(master)文件夹,找到makefile文件
打开makefile文件
GPU=1 #如果使用GPU设置为1,CPU设置为0
CUDNN=1 #如果使用CUDNN设置为1,否则为0
OPENCV=0 #如果调用摄像头,还需要设置OPENCV为1,否则为0
OPENMP=0 #如果使用OPENMP设置为1,否则为0
DEBUG=0 #如果使用DEBUG设置为1,否则为0
#根据自己的GPU配置,主要修改后面的数子,根据NVIDIA的显卡计算力
ARCH= -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]
-gencode arch=compute_20,code=[sm_20,sm_21] \ This one is deprecated?
CC=gcc
NVCC=/home/user/cuda-9.0/bin/nvcc #NVCC=nvcc 修改为自己的路径
AR=ar
ARFLAGS=rcs
OPTS=-Ofast
LDFLAGS= -lm -pthread
COMMON= -Iinclude/ -Isrc/
CFLAGS=-Wall -Wno-unused-result -Wno-unknown-pragmas -Wfatal-errors -fPIC
...
ifeq ($(GPU), 1)
COMMON+= -DGPU -I/home/hebao/cuda-9.0/include/ #修改为自己的路径
CFLAGS+= -DGPU
LDFLAGS+= -L/home/hebao/cuda-9.0/lib64 -lcuda -lcudart -lcublas -lcurand #修改为自己的路径
endif
修改好后,编译文件(本次不采用GPU,不用opencv)
make -j4 #(4线程编译,根据自己的CPU)
编译结果:
生成darknet可执行文件:
如果编译出错,或者需要重新配置编译:
make clean
make
2、下载训练好的权重文件(237M)
在darknet文件夹下:
wget https://pjreddie.com/media/files/yolov3.weights
3、进行预测:
在下载的工程文件夹中给我们准备好了一些测试数据:
data文件夹下:图片和标签
cfg文件夹下:yolov3配置文件和训练网络的数据配置
打开yolov3.cfg,注释Train下的batch、subdivision参数,取消注释Test下的相同参数
修改好后运行:
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
输出:
生成的预测图片:
如果编译时采用opencv,则会自动弹出窗口。
4、多张图片预测:
在命令中省去图片路径:
./darknet detect cfg/yolov3.cfg yolov3.weights
会提示输入图片路径,可以进行多图预测:
ctrl+C停止运行程序