• 车辆追踪算法大PK:SVM+HOGvs.YOLO


    介绍

           对于Udacity(优达学城)自动驾驶汽车纳米学位的汽车检测和跟踪项目,如果使用传统的计算机可视化技术将是一个挑战,就像方向梯度直方图(Histogram of Oriented Gradients,HOG)和其它特征组合在一起在视频里跟踪汽车一样,理想的解决方案应该是实时运行的,如>30FPS,我曾经使用线性SVM来处理视频,在一台i7 CPU计算机上得到的结果只有可怜的3FPS。最后我使用YOLO来处理视频终于通过了Udacity的项目,YOLO是一个超快的用于对象检测的卷积神经网络,如果你的GPU够快(我当时使用的是GTX 1080),视频处理的速度可以达到65FPS,比我用SVM+HOG的方法足足快20倍。

    数据集

            我使用了KITTIGTI数据集,以及来自项目训练仓库的一些其它数据,只有两类数据:有车的和没有车的,GTI数据从视频流获得,因此所有图像都完全是随机的,然后被分为训练和测试数据集,在训练和测试数据集之间建立相关关系,我将每个数据源30%的数据集作为验证和测试数据集,所有图像都被重置为64x64像素的大小,以便于特征的提取。

    特征提取

        我使用的特征向量如下:

    空间特征:除了用于自检的像斑(16x16像素)外啥都没有。

    颜色直方图特征:捕获每个像斑的统计颜色信息,通过这种特征向量捕获的汽车颜色通常是非常饱和的。

    方向梯度直方图(HOG)特征:捕获每个图像通道的梯度结构,在不同的光线条件下,这种方法表现得还不错。

    这篇博客里有关于HOG特征的详细描述,其思想始终是,在一个直方图里,在一个图像上聚集梯度,让特征向量在不同视角和光线条件下变得更加稳定。下面是HOG特征应用于有车的和没车的图像上时的可视化呈现。

    最后一个特征向量包含前面3个不同方法提取的特征,因此有必要对每一个特征进行计量,防止因取值范围不同导致某一特征占主导地位,我使用了scikit学习包中的Standard.Scaler函数,通过移动平均值和按比例缩放到单位方差来标准化特征。

    训练一个线性支持向量机

            和其它分类和检测问题不同,检测汽车需要强实时,因此,要在高准确性和速度之间取得平衡,影响性能最主要的两个参数是特征向量的长度和汽车检测算法,线性SVM在速度和准确性之间提供了最好的折中方案,比随机森林(快但准确性不够)和非线性SVM(rbf内核,非常慢)的表现要好得多。最后测试时使用了一个包含6156个特征的特征向量,准确性超过了98.5%,但仍然有将近1.5%的像斑时不时的晃眼,特别是车道线、事故故障和栏杆。

    滑动窗口

              通常情况下,汽车检测和摄像机使用滑动窗口扫描图像一帧一帧记录类似,对每个窗口而言,通过计算特征向量并输入到分类器中,汽车在不同距离出现时,有必要搜索多个尺度,通常会有100多个特征向量需要提取,然后输入到分类器中,对每一帧图像进行处理。下面是正面检测大约150个窗口的例子,不出意外,仍然会有一些失误。

    为了过滤掉误判结果,我一直跟着检测窗口直到最后30帧,只考虑被准确识别的图像,最后有超过15次检测被记录下来,我用热图来呈现最终结果,可以看到噪点大大减少,

    通过热图的阈值,包含所有非零值的热图最小矩形边界框就可以确定下来。

    全文点击:http://click.aliyun.com/m/12645/  

  • 相关阅读:
    Android VersionedGestureDetector手势事件
    Android drawBitmapMesh扭曲图像
    如何利用SVN合并代码
    Android 微信分享图文资料
    Android google map 两点之间的距离
    Android 监听ContentProvider的数据改变
    Android 自动朗读(TTS)
    Android ContentProvider的实现
    解决xcode升级之后安装的插件失效
    Android Studio 更换国内源下载依赖库
  • 原文地址:https://www.cnblogs.com/iyulang/p/6513678.html
Copyright © 2020-2023  润新知