对算法选择的建议

agu*_*tin 6 algorithm pattern-matching perceptron feature-detection neural-network

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

在此输入图像描述

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

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

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

Hun*_*gry 5

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

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

将形状识别为汽车或卡车实际上将是更简单的任务,因为整个图像可以被馈送到在选择的预先分类的车辆图像上训练的CNN.通过随机挤压/拉伸变形来增加训练数据集,可以解决速度的挤压/拉伸效应.有关如何在CNN中设置参数的建议,请参阅如何确定用于图像分类的卷积神经网络的参数.

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


Nuc*_*man 1

您应该能够获得车辆、高度(最大高度)、车轮数量、窗户的位置/形状(如果光束穿过窗户)以及总体形状。

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

如果您有良好的、有代表性的模板并且不想太具体地说明车辆是什么,那么总体来说这应该工作得相当好。例如,考虑到您的系统是如何工作的,找到可用于区分跨界车和货车之间差异的模板可能会很困难,但如果您在跨界车是什么方面留有一点余地,应该可以正常工作分类为。

编辑:

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

  • 引擎盖的开始
  • 引擎盖/挡风玻璃交叉点
  • 车顶/挡风玻璃交叉口
  • 轮胎/车身交叉点(每个轮胎 2 个这样的点)

结果将是一个块状但相当准确的车辆形状。这些点的大致位置以及它们是否存在应该有助于判断车辆类型。不过,使用固定模板会简单得多,如果一辆货车被列为卡车,您可能可以使用该货车作为货车的附加模板。

  • 长度是车辆速度的函数。 (3认同)
  • 公平地说,尽管它们很可能不会猛踩刹车或油门,所以即使车辆纵向拉伸或压缩,其余部分总体上应该是有效的。由于轮胎是圆形的,因此如果您可以看到轮胎全高一半以上,则可以从中提取准确的长度比例因子。 (2认同)