YOLO实时对象检测使用体验

Posted 隅子酱的blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了YOLO实时对象检测使用体验相关的知识,希望对你有一定的参考价值。

官网:https://pjreddie.com/darknet/yolo/

以下全部在服务器上完成,服务器上是有opencv等。

1.安装Darknet

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

2.下载预先训练的权重文件(258 MB)或者只是运行这个:  

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

3.运行检测器

./darknet detect cfg/yolo.cfg yolo.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
    1 max          2 x 2 / 2   416 x 416 x  32   ->   208 x 208 x  32
    .......
   29 conv    425  1 x 1 / 1    13 x  13 x1024   ->    13 x  13 x 425
   30 detection
Loading weights from yolo.weights...Done!
data/dog.jpg: Predicted in 0.016287 seconds.
car: 54%
bicycle: 51%
dog: 56%

Darknet打印出它检测到的对象,它的信心,以及找到它们需要多长时间。我们没有编译Darknet,OpenCV所以它不能直接显示检测。目录下predictions.png可看到上图您可以打开它来查看检测到的对象。由于我们在CPU上使用了Darknet,所以每个图像需要大约6-12秒。如果我们使用GPU版本,会更快。

4.下面是使用GPU需要修改的命令

不要忘了修改目录下的makefile!
GPU,cudnn,opencv设为1

make后重新跑一次(必须make)

这是我服务器跑的结果,没设置GPU的话用了50s。因为设置了opencv,所以直接弹出了图片。

 

 

 5.更改检测阈值(可选)

默认情况下,YOLO仅显示以0.25以上的置信度检测到的对象。您可以通过将该-thresh <val>标志传递给该yolo命令来进行更改。例如,要显示所有检测,您可以将阈值设置为0:

./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg -thresh 0

6.small yolo(可选)

微型YOLO基于Darknet参考网络,并且比正常的YOLO型号快得多但不太准确。使用VOC训练的版本:

wget https://pjreddie.com/media/files/tiny-yolo-voc.weights
./darknet detector test cfg/voc.data cfg/tiny-yolo-voc.cfg tiny-yolo-voc.weights data/dog.jpg

7.如果OpenCV可以读取视频,也可以在视频文件上运行它:(可选)

./darknet detector demo cfg/coco.data cfg/yolo.cfg yolo.weights <video file>

  

关于一次性检测多张图片和训练自己的模型后续加入。

以上是关于YOLO实时对象检测使用体验的主要内容,如果未能解决你的问题,请参考以下文章

在树莓派4B上使用YOLO V3 TINY进行实时对象检测

使用 YOLO v5 进行目标检测

opencv进阶-YOLO V3模型物体检测(非实时)

视觉检测中的YOLO家族算法是一种两步检测的方法,对吗

翻译:YOLOv3版本3 YOLO:实时物体检测 CNN卷积神经网络

opencv学习-OpenCV与YOLO之间的关系