神奇的YOLOv2!

作者: 少寨主的互联网洞察 | 来源:发表于2018-04-13 17:17 被阅读370次

    很久以前就听说过yolo的过人之处,直到这两天,因为需要做一个物体检测标定位置的活儿,因此不得不就这个方向的研究进行一定的学习和摸索。今天,就让我们一起来见证一下这个YOLO的神奇之处。

    介绍一下

    YOLO核心思想:从R-CNN到Fast R-CNN一直采用的思路是proposal+分类 (proposal 提供位置信息, 分类提供类别信息)精度已经很高,但是速度还不行。 YOLO提供了另一种更为直接的思路: 直接在输出层回归bounding box的位置和bounding box所属的类别(整张图作为网络的输入,把 Object Detection 的问题转化成一个 Regression 问题)。

    YOLO的主要特点

    • 速度快,能够达到实时的要求。在 Titan X 的 GPU 上 能够达到 45 帧每秒。
    • 使用全图作为 Context 信息,背景错误(把背景错认为物体)比较少。
    • 泛化能力强。

    网络设计

    image
    捕获.PNG

    以上内容摘自知乎@晓雷的笔记,详细内容请看原文
    再来看看人家官网的描述:

    捕获1.PNG
    捕获2.PNG
    demo.png
    demo1.png

    嗯!非常有极客范的一个网站,蠢蠢欲动!


    看看它有多厉害!

    下面是Siraj Raval的一个演示视频,我觉着可以充分说明这个YOLO有多厉害:

    https://youtu.be/4eIBisqx9_g

    emmm~需要科学上网。

    实践之路

    我的电脑是Win10 64的,所以我是在Windows上面实现的,以下以我的环境为例进行阐述。而且也是以训练好的模型进行阐述。训练自己的数据集将在之后作进一步的探索。网上也有很多Linux实现的,想尝试的同学也可以搜索实践一下。

    • 第一步
      按照文章地址的描述了解一个大概的流程就好,建议不要按照博主的配置走,因为原作者已经在GitHub上面进行了更新和配置说明,跟着GitHub作者的描述走更加顺利。GitHub地址
      我的配置流程主要是按照下面的描述走的:

    How to compile on Windows:

    1. If you have MSVS 2015, CUDA 9.1, cuDNN 7.0 and OpenCV 3.x (with paths: C:\opencv_3.0\opencv\build\include & C:\opencv_3.0\opencv\build\x64\vc14\lib), then start MSVS, open build\darknet\darknet.sln, set x64 and Release, and do the: Build -> Build darknet. NOTE: If installing OpenCV, use OpenCV 3.4.0 or earlier. This is a bug in OpenCV 3.4.1 in the C API (see #500).

      1.1. Find files opencv_world320.dll and opencv_ffmpeg320_64.dll (or opencv_world340.dll and opencv_ffmpeg340_64.dll) in C:\opencv_3.0\opencv\build\x64\vc14\bin and put it near with darknet.exe

      1.2 Check that there are bin and include folders in the C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1 if aren't, then copy them to this folder from the path where is CUDA installed

      1.3. To install CUDNN (speedup neural network), do the following:

      1.4. If you want to build without CUDNN then: open \darknet.sln -> (right click on project) -> properties -> C/C++ -> Preprocessor -> Preprocessor Definitions, and remove this: CUDNN;

    2. If you have other version of CUDA (not 9.1) then open build\darknet\darknet.vcxproj by using Notepad, find 2 places with "CUDA 9.1" and change it to your CUDA-version, then do step 1

    3. If you don't have GPU, but have MSVS 2015 and OpenCV 3.0 (with paths: C:\opencv_3.0\opencv\build\include & C:\opencv_3.0\opencv\build\x64\vc14\lib), then start MSVS, open build\darknet\darknet_no_gpu.sln, set x64 and Release, and do the: Build -> Build darknet_no_gpu

    4. If you have OpenCV 2.4.13 instead of 3.0 then you should change pathes after \darknet.sln is opened

      4.1 (right click on project) -> properties -> C/C++ -> General -> Additional Include Directories:C:\opencv_2.4.13\opencv\build\include

      4.2 (right click on project) -> properties -> Linker -> General -> Additional Library Directories: C:\opencv_2.4.13\opencv\build\x64\vc14\lib


    其中需要注意的就是以上1.1的描述。基本环境编译没问题以后,就可以接着这篇文章继续进行了。后面的流程基本没什么问题

    效果展示

    下面展示一些我的测试案例吧
    程序初始化:


    process.PNG

    测试案例:


    test1.PNG
    test2.PNG

    还是很令人激动有木有!
    好了,今天介绍到此结束,后续训练自己的数据集!

    相关文章

      网友评论

        本文标题:神奇的YOLOv2!

        本文链接:https://www.haomeiwen.com/subject/vwthkftx.html