Ubuntu16.04+YOLOv3初步使用

最近闲着,试了个目标检测的模型——YOLOv3,这是YOLO第三代,更具体的了解可以参考官网:
YOLO: Real-Time Object Detection

1、 下载及编译

下载:

git clone https://github.com/pjreddie/darknet.git

编译:

cd darknet
make

2、 测试:

下载权重文件:yolov3.weights,链接:https://pjreddie.com/media/files/yolov3.weights
下载好后,将yolov3.weights复制到darknet目录下。
测试:

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

结果:

layer     filters    size              input                output
    0 conv     32  3 x 3 / 1   416 x 416 x   3   ->   416 x 416 x  32  0.299 BFLOPs
    1 conv     64  3 x 3 / 2   416 x 416 x  32   ->   208 x 208 x  64  1.595 BFLOPs
    .......
  105 conv    255  1 x 1 / 1    52 x  52 x 256   ->    52 x  52 x 255  0.353 BFLOPs
  106 detection
truth_thresh: Using default '1.000000'
Loading weights from yolov3.weights...Done!
data/dog.jpg: Predicted in 30.129329 seconds.
dog: 99%
truck: 93%
bicycle: 99%

在darknet目录下生成一副图片,即为检测结果。如果编译的是OpenCV版本,则图片会自动显示。

3、 精简版的Tiny YOLOv3

先下载权重文件:
https://pjreddie.com/media/files/yolov3-tiny.weights
再执行:

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

速度会快很多,但是相应的,检测正确率也下降。

4、带CUDA和OpenCV版本

从上面的结果可以看到,使用纯CPU进行图像相关的计算,耗时非常严重,一张图片就要耗时30s。下面安装和使用GPU和CUDA版本,时间上有巨大提升,一张照片只用0.17s。用的是笔记本很普通的入门级独显MX150,基本可以达到6 FPS,勉强可以实现实时目标检测。
OpenCV+CUDA的配置可以参考我另一篇博文:
ubuntu16.04+OpenCV3.3.0+CUDA8.0(at MX150)
运行时可能会出现的问题:
在这里插入图片描述
这是因为显卡的内存已经爆炸,需要对模型的参数进行修改。有以下方法可以对该问题进行解决。

1)、

对cfg/yolov3.cfg文件前面几行进行修改

# Testing
batch=1
subdivisions=1
# Training
#batch=64
#subdivisions=16
2)、

在命令行前面加sudo

3)、

对cfg/yolov3.cfg文件前面第8、9行进行修改,width和height都为416:

width=416
height=416

我按第1)和3)改完之后,就可以愉快的玩耍了!结果如下图:
在这里插入图片描述

5、 摄像头图像实时检测

编译版本必须带CUDA和OpenCV。
执行:

./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights

默认开启电脑自带的摄像头。如果是外接摄像头,需要加上参数-c
如通过ls /dev/video查看外接的摄像头是video1,那么输入指令:

./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights -c 1
参考文章

1、Ubuntu16.04+YOLOv3配置_CSDN
2、ubuntu+OpenCV3.3.0+CUDA配置详情_CSDN
3、ubuntu16.04下opencv3.3 GPU(CUDA)加速_CSDN
4、YOLO:实时目标检测_简书

你可能感兴趣的:(计算机视觉)