算法选择的建议

6
我需要做一个项目,通过名为“车辆扫描仪”的传感器来扫描车辆的形状并检测它是什么类型的车辆。这些传感器只有50束光线,每束光线都有接收器和发射器,如图所示。我从传感器中获取每个光束的原始状态(阻塞或未阻塞),通过持续扫描,我们可以创建一个可能非常低分辨率的车辆图像。
我的问题是,我可以使用什么算法/技术来检测和识别车辆的形状,我们想要计算车轮数量,并尝试确定该形状是汽车、卡车还是皮卡等类型的车,至少我们想要计算车轮数量。
我考虑训练一个神经网络,但也许有一种更简单的方法来进行这种模式检测,我不知道该用什么。如果您有任何其他建议/意见,将不胜感激。

在大多数情况下,车辆的长度不是足够的吗?我从未见过一辆(装载)卡车的长度甚至可以与汽车相媲美。 - Willem Van Onsem
@CommuSoft 如果卡车行驶速度很快,观察到的数量会减少,那么它不会看起来像一辆汽车吗?我认为高度将是更好的指标,因为它不会改变。 - Vikram Bhat
可以使用速度计(使用回声/激光测量速度)有效地测量这个。 - Willem Van Onsem
3个回答

5
一种标准的神经网络是一个合理的选择并且可以工作,但是卷积神经网络(CNN)可能是最佳选择(请参见这里进行快速解释)。由于CNN具有稀疏连接,因此它们非常适用于图像识别,允许空间局部相关性(即考虑彼此相邻的输入之间的关系),这意味着它们比标准神经网络更有效地推广到新数据集,并且训练速度也更快。
为了检测轮子数量,可以将低分辨率输入分成多个重叠的“轮子大小”补丁,然后使用每个补丁作为CNN的输入,该CNN已经被训练以检测轮子。由于CNN在同一轮子周围的多个补丁返回真值的可能性,因此需要实现接近性检查器,以便每个本地“真实”补丁仅导致总计数器的单个增量。这可以通过确定具有最高输出节点激活的本地补丁来完成,并防止该补丁周长内的任何其他补丁影响总计数器。

将形状识别为汽车或卡车实际上是一个更简单的任务,因为整个图像可以馈送到训练有素的CNN中,该CNN经过了一系列预分类的车辆图像的训练。可以通过使用随机挤压/拉伸变形来增强训练数据集,以克服速度的挤压/拉伸效果。有关如何设置CNN参数的建议,请参见how do you decide the parameters of a convolutional neural network for image classification.

作为卷积神经网络(CNN)有效性的证明,可以看一下2012年大规模视觉识别挑战赛(LSVRC)的结果。LSVRC是一个图像分类比赛,参赛者竞争在任意选择的256x256图像上实现最低的分类误差。获胜的网络名为Supervision,通过使用CNN模型实现了几乎是其最接近竞争对手的一半的误差。CNN还保持着许多文本识别任务最高准确率的记录,例如MNIST数字识别任务,其中该模型获得了99.8%的准确率-这个准确率与人类识别率相当。

1
您应该能够获得车辆、高度(最大高度)、轮子数量、窗户的位置/形状(如果横梁穿过窗户)和一般形状。您可以为汽车、卡车、货车等的侧面轮廓设计一个模板(或几个模板)。然后,您可以将每个模板拉伸到测量尺寸并从模板形状中减去记录的形状。差异最小的模板是最接近的匹配项。通过允许形状更加可变,可以改进此方法。例如,引擎盖的高度可以根据引擎盖高度与车顶高度的最小/最大记录比例上下移动一定程度。如果您有这样的比率集合(或者如果您在网上找到它们,则为实际记录值)和模板,则应该足够好。您可以通过分析许多车辆照片来获取这些比率。如果您拥有良好的代表性模板并且不试图过于具体地指出车辆类型,则总体上应该效果很好。例如,如果您试图使用系统来区分跨界车和货车,则可能难以找到可用的模板,但是如果您允许一定的灵活性来分类跨界车,则应该也可以正常工作。
实际上,您可以使用单个模板,并且只需有几个可调整的点(最多约10个这样的点),其配置可用于对车辆进行分类。以下是一些示例:
  • 引擎盖开始
  • 引擎盖/挡风玻璃交界处
  • 车顶/挡风玻璃交界处
  • 轮胎/车身交界处(每个轮胎有2个这样的点)
结果将是一个方块状但相当精确的车辆形状。大致了解这些点的位置以及它们是否存在应该有助于确定车辆类型。虽然拥有固定的模板会更简单,如果例如将面包车列为卡车,则可以将该面包车用作面包车的附加模板。

3
车辆的速度是长度的函数。 - phs
2
公正的观点,尽管他们可能不会猛踩刹车或油门,所以即使车辆在长度上被拉伸或压缩,其余部分仍然应该是有效的。由于轮胎是圆形的,如果您可以看到超过一半的轮胎完整高度,则可以从中提取准确的长度缩放因子。 - Nuclearman

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.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接