YOLOv3使用过程

  • 一、用训练好的模型进行预测:Detection Using A Pre-Trained Model



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

yolo3 训练 代码 python yolov3训练流程_yolo3 训练 代码 python


进入darknet(master)文件夹,找到makefile文件

yolo3 训练 代码 python yolov3训练流程_github_02


打开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)

编译结果:

yolo3 训练 代码 python yolov3训练流程_配置文件_03


生成darknet可执行文件:

yolo3 训练 代码 python yolov3训练流程_yolov3_04


如果编译出错,或者需要重新配置编译:

make clean
make

2、下载训练好的权重文件(237M)
在darknet文件夹下:

wget https://pjreddie.com/media/files/yolov3.weights

3、进行预测:

在下载的工程文件夹中给我们准备好了一些测试数据:

data文件夹下:图片和标签

cfg文件夹下:yolov3配置文件和训练网络的数据配置

打开yolov3.cfg,注释Train下的batch、subdivision参数,取消注释Test下的相同参数

yolo3 训练 代码 python yolov3训练流程_yolov3_05


修改好后运行:

./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

输出:

yolo3 训练 代码 python yolov3训练流程_github_06


yolo3 训练 代码 python yolov3训练流程_实施目标检测_07


生成的预测图片:

yolo3 训练 代码 python yolov3训练流程_配置文件_08


yolo3 训练 代码 python yolov3训练流程_yolo3 训练 代码 python_09


如果编译时采用opencv,则会自动弹出窗口。

4、多张图片预测:
在命令中省去图片路径:

./darknet detect cfg/yolov3.cfg yolov3.weights

会提示输入图片路径,可以进行多图预测:

yolo3 训练 代码 python yolov3训练流程_实施目标检测_10

yolo3 训练 代码 python yolov3训练流程_实施目标检测_11


yolo3 训练 代码 python yolov3训练流程_yolo3 训练 代码 python_12


ctrl+C停止运行程序