对算法选择的建议

时间:2014-08-20 20:02:49

标签: algorithm pattern-matching neural-network feature-detection perceptron

我必须做一个项目,试图扫描车辆的形状并检测它是什么类型的车辆,扫描将使用称为“车辆扫描仪”的传感器进行,它们只有50个光束,每个光束都有受体和发射如图所示:

enter image description here

我从传感器获得每个光束的原始状态(阻挡或解锁),并且通过连续扫描,我们可以创建可能非常低分辨率的车辆图像。

我的问题是我可以使用什么算法/技术来检测和识别车辆的形状,我们想要计算车轮,如果可以的话,尝试确定这种形状是汽车,卡车还是皮卡等至少我们想要数轮子。

我正在考虑训练神经网络,但对于我可以使用的这种模式检测可能是一种更简单的方法,我不知道。 任何其他建议/建议将不胜感激

3 个答案:

答案 0 :(得分:5)

标准神经网络是一个合理的选择并且可行,但卷积神经网络(CNN)可能是最佳选择(see this for a quick explanation)。 CNN非常适合图像识别,因为它们的稀疏连接允许空间局部相关(即它们考虑到彼此非常接近的输入之间的关系),这意味着它们更有效地推广到新的数据集比标准的神经网络,也更快的训练。

为了检测轮子的数量,可以将低分辨率输入分成多个重叠的轮子尺寸。补丁,然后使用每个补丁作为CNN的输入,CNN已经过训练以检测轮子。由于有可能CNN在同一个车轮周围的多个补丁中返回true,因此需要实施接近检查器,以便每个本地的真实'补丁仅导致总计数器的单个增量。这可以通过识别具有最高输出节点激活的本地补丁,并通过防止该补丁周围的任何其他补丁影响总计数器来完成。

将形状识别为汽车或卡车实际上将是一项更简单的任务,因为整个图像可以被馈送到经过选择的预先分类的车辆图像训练的CNN。通过随机挤压/拉伸变形增加训练数据集,可以解决速度的挤压/拉伸效应。有关如何在CNN中设置参数的建议,请参阅how do you decide the parameters of a convolutional neural network for image classification.

作为CNN有效性的证明,请查看Large Scale Visual Recognition Challenge 2012 (LSVRC)的结果。 LSVRC是一个图像分类竞赛,竞争对手竞争在任意选择的256x256图像上实现最低的分类错误。获胜的网络名为督导,通过使用CNN模式,实现了其竞争对手差不多一半的错误。 CNN还在许多文本识别任务中保持最高准确度的记录,例如MNIST digit recognition task,其中模型的准确度为99.8% - 准确度可与人类识别率相媲美。

答案 1 :(得分:1)

你应该能够获得车辆,高度(到最大高度),车轮数量,窗户的位置/形状(如果横梁穿过窗户)和一般形状。

你可能只需要一个模板(或几个模板)来了解汽车,卡车,货车的侧面轮廓。然后,您可以将每个模板拉伸到尺寸度量,并从模板形状中减去记录的形状。差异最小的模板是最接近的匹配。这可以通过允许形状更加可变来改进。例如,根据发动机罩高度与车顶高度的最小/最大记录比率,发动机罩的高度可以向上或向下移动一定程度。如果你有这样的比率的集合(或者如果你在网上找到它们的实际记录值)和模板,那么你应该能够做得很好。你可以通过分析一些车辆照片来获得这些比率。

如果您拥有良好的,有代表性的模板并且不想过于具体地确定车辆是什么,那么这应该在整体上运作得相当好。例如,根据您的系统如何工作,找到可用于分辨交叉和货车之间差异的模板可能很困难,但如果您考虑到交叉是什么的一些余地,应该可以正常工作归类为。

编辑:

实际上,您可以使用单个模板并且只有一些可调节点(最多约10个这样的点),其配置可用于对车辆进行分类。几个例子:

  • 启动引擎盖
  • 遮光罩/挡风玻璃交叉口
  • 屋顶/挡风玻璃交叉口
  • 轮胎/车身交叉点(每个轮胎2个这样的点)

结果将是一个块状但相当准确的车辆形状。大致位于这些点的位置以及它们是否存在对于告知车辆类型应该是有用的。虽然,固定模板会更简单,如果说货车被列为卡车,你可以使用那辆货车作为货车的附加模板。

答案 2 :(得分:0)

您主要担心的是车辆的速度,因为更快的车辆会给您更少的观察量,这将是不准确的。以下是检查方法: -

算法: -

1. Height is accurate metric to check as it is not affected by speed
2. get a median of all the heights you get , that would be close to exact height.
3. you can also evaluate the width which is not correct as speed can change.
4. ratio  height/width can be checked.
5. there are certain ranges of height/width ratio for car,truck etc.
6. height can mostly classify between truck and cars.
7. ratio of height/width can be used to scale the image to correct range.
8. After scaling you might give that image to neural network which you trained.
9. train neural network with already gathered real life observations if you can.
10. May be you can also create a simulation by 3d modelling and animation.