算法选择建议

Posted

技术标签:

【中文标题】算法选择建议【英文标题】:Advice for algorithm choice 【发布时间】:2014-10-14 07:50:44 【问题描述】:

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

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

我的问题是我可以使用哪些算法/技术来检测和识别车辆的形状,我们想要计算车轮,如果可以,尝试识别该形状是汽车、卡车还是皮卡等.,至少我们要数***。

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

【问题讨论】:

大多数情况下车辆的长度还不够吗?我从未见过长度与汽车相当的(满载)卡车。 @CommuSoft 如果卡车移动得很快,它不会看起来像一辆汽车,因为你会得到更少的观察结果。我认为高度将是一个更好的指标,因为它不会改变。 可以使用速度计有效地测量这一点(使用回波/激光测量速度)。 【参考方案1】:

标准神经网络将是一个合理的选择并且可以工作,但是卷积神经网络 (CNN) 可能是最佳选择 (see this for a quick explanation)。 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 图像上竞争以实现最低分类错误。获胜的网络名为 Supervision,通过使用 CNN 模型,其误差几乎是其紧密竞争对手的一半。 CNN 在许多文本识别任务中也保持着最高准确率的记录,例如MNIST digit recognition task,该模型的准确率达到了 99.8%——准确率可与人类识别率相媲美。

【讨论】:

【参考方案2】:

您应该能够获得车辆、高度(达到最大高度)、车轮数量、窗户的位置/形状(如果光束穿过窗户)和一般形状。

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

如果您有良好的、有代表性的模板,并且不想过于具体地说明车辆是什么,这应该可以很好地工作。例如,考虑到您的系统是如何工作的,找到可以用来区分跨界车和厢式货车的模板可能很困难,但如果您对跨界车有一点余地,应该可以正常工作分类为。

编辑:

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

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

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

【讨论】:

长度是车辆速度的函数。 公平点,尽管它们可能不会在刹车或加速器上猛烈撞击,因此即使车辆纵向拉伸或压缩,其余部分也应该是有效的。由于轮胎是圆形的,如果您能看到轮胎全高的一半以上,则可以从中提取准确的长度比例因子。【参考方案3】:

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

算法:-

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.

【讨论】:

以上是关于算法选择建议的主要内容,如果未能解决你的问题,请参考以下文章

❤️死磕排序系列之 「 选择排序 」 ❤️ (建议排序)

八大排序算法sum up,存干货,[ 建议收藏!!! ]

VB实现6大排序算法---动态过程展示(建议收藏)

VB实现6大排序算法---动态过程展示(建议收藏)

C语言实现九大排序算法(建议收藏!)

C语言实现九大排序算法(建议收藏!)