目前,手机的扫一扫功能可以帮助我们识别商品信息,识别花的名称,识别各种动物。这背后有一系列的技术支持。物种识别需要什么样的技术?识别的过程中用到哪些核心算法和理论?这都是大多数人不知道的。不过,物种识别理论与算法多种多样,针对不同的东西用到的识别算法也不相同,因此本文着重带大家了解其中一种算法和理论。即利用神经网络进行动物的识别。
动物识别涉及生物分类,只有生物学家已经把生物的类别分好了,计算机才能在此基础上进行物种的划分与识别。
不过,生物分类学降低了我们对生物多样性的理解。我们知道几乎所有分类信息都存在大量的高级专业知识和词汇,这让人不易理解,造成知识传播困难,尤其那些热爱科普的但不是专业科学家的人一看到到专业词汇就会头大。
因此,生物分类知识被局限在有限的地理区域内和有限数量的分类学家中。缺乏向公众提供分类学知识的机会被称为“分类学危机”。
计算机要出来解决这个分类学危机了。分类学家一直在寻找更有效的方法来满足物种识别的要求,例如开发数字图像处理和模式识别技术。目前,研究人员拥有昆虫,植物,蜘蛛和浮游生物的识别技术。这种方法可以进一步扩展到基于现场的生物识别,例如鱼类。这些方法有助于缓解“分类危机”。
计算机科学家也设计了一种简单有效的算法,并定义了一系列将特征识别与人工神经网络设计(ANN)结合使用的新功能。
那么这个算法可以识别哪些物种呢?可以识别鱼类,植物,和蝴蝶。
基于模式识别理论和典型的自动物种识别系统中使用的基本计算机处理路径,计算机科学家设计了一个用于物种水平自动个体识别的系统。该系统将预处理和提取组件与训练和识别过程共享。
训练图像的特征用于在特征提取之后建立分类进度模式的模型。然后将这些特征和经过训练的模型记录在数据库中,并结合到后续照片的分析中。该过程使用两种类型的数据对图像特征进行建模,从而获得更好的物种识别结果。
当用这种算法去训练如何识别一个动物时,计算机首先会去除图像背景,并转换为灰度。之后应用各种滤镜消除图像噪声来改善图像,然后将图像缩小。接下来,将处理后的图像轮廓化,然后绘制骨骼。上面这些步骤都可使用MATLAB语言中的图像处理模块完成。
处理完图片后,就会对图片中的动物进行特征提取。这些特征包括几何,形态和纹理特征,这些特征可以通过图像处理有效地提取,并且对于物种而言是唯一的。必须确保这些特征是该物种唯一的特征,这样才能提高识别精准度。
几何特征提取就得用到数学的功力了。基本上进行4步计算。分别计算样本区域的像素总数,图像像素周长,图像直径,图像紧密度。下面的图中展示了这4步数学公式,不过读者只需了解无需深究。
随后,算法需要处理图像的纹理。纹理是用于均匀描述区域的重要视觉图案。直观的度量提供诸如平滑度,粗糙度和规则性之类的属性。纹理取决于图像的分辨率,可以遵循两种方法:统计和频率。这个算法则使用统计近似值,其中统计值被分析为一阶和二阶。
从图像的灰度直方图获得统计一级。每个值除以像素总数,就会得到一个新的直方图,该直方图表示在需要识别的区域中显示确定的灰度级。
当然这也需要大量数学公式支持,考虑到不想让大家头大,直接跳过。不过我们最好知道处理图像纹理时用到了哪些公式,这些是方差公式,中位数公式,均匀度公式,同质公式,惯量公式等。有兴趣的可以自行了解。
形态特征是那些集中于像素组织的特征。它们分为两类:二维笛卡尔矩和归一化中心矩。
分析图像的特征结构对于物种级别的识别非常重要,因为人眼区分物种的直观感受就是物种的特征,而算法要做的就是代替人眼完成这些过程。
接下来就用到人工神经网络了。
先来讲讲什么叫人工神经网络,人工神经网络简称神经网络或类神经网络,在机器学习和认知科学领域,是一种模仿生物神经网络结构和功能的数学模型或计算模型。
神经网络由大量的人工神经元联结进行计算。大多数情况下人工神经网络能在外界信息的基础上改变内部结构,是一种自适应系统,通俗的讲就是具备学习功能。神经网络目前也具有情感功能,用到极其复杂的数学计算。
神经网络可以解决很多问题,例如机器视觉和语音识别。这些问题都是很难被传统基于规则的编程所解决的。本文讨论的物种识别就是如此,普通编程无法解决。
单层神经元网络是最基本的神经元网络形式,由有限个神经元构成,所有神经元的输入向量都是同一个向量。由于每一个神经元都会产生一个标量结果,所以单层神经元的输出是一个向量,向量的维数等于神经元的数目。
同时神经网络还有多层神经网络等等。
神经网络被定义为由大量自适应处理单元组成的并行计算机模型,这些单元通过互连与变量进行通信。多层网络具有一层或多层神经元,这些层通过从输入图像图案中逐渐提取更有意义的特征来学习复杂的任务。
与其它机器学习方法相比,神经网络学习速度较慢,但预测速度更快,并且具有非常好的非线性数据模型。简单的感知器被分配了多个输入,但是生成了一个输出,类似于依赖于输入权重的不同线性组合并生成了线性激活函数。
多层感知器由一组包含一个或多个输入层的源节点和一组隐藏节点输出组成。输入信号通过网络逐层传播。
神经网络结构由N个输入N = [ N 1,N 2,…,N n ],一个隐藏层h和一个输出向量S = [ S 1,S 2,…,S m ]组成。通过转换向量S,评估每个S i二进制信号[0,1]。在反向训练算法的基础上,有监督的训练阶段(即S型激活)是根据权重和偏差在负梯度的方向上进行更新,然后在相反的方向上进行更新。隐藏层和输出层的S激活函数由以下公式确定。
输入神经元的数量由每种模式中可用的描述符数量确定,输出神经元的数量由每个数据库中分类的物种数量决定。为了确定给定数据图像的最佳神经元数量,研究者已经探索了识别成功率与神经元数量之间的关系。显然,需要大量的神经元和世代来处理每个集合中图像的信息。随着物种数量的增加,识别也变得更加困难。
神经网络使用了来自图像数据的分类物种。但是,大多数其它研究仅使用物种丰富度较低的数据库,这些数据库通常跨越许多不同的学科,并且由于形态特征的巨大差异而易于分类。而神经网络以这些网络的工作为基础,并且所需的操作员专业知识,成本和响应时间都很低。神经网络的物种识别准确性和可用性,可以有效识别鱼类,植物,蝴蝶。
不过,物种之间的高表型相似性也会影响人工神经网络的识别能力,这是由于某些物种的表型差异较小,这些差异仅在细微的细节上有所变化,例如牙齿或鳍半径,这会影响分类。不过总体上。系统的总体性能达到了高精度和高精确度。具有较低物种数的物种的鉴别成功率较高,这可能由形态特征非常不同的物种而非实际物种的数量导致的。
算法会根据分类关键字,区分物种的字符是形态结构,颜色图案和大小。这些观察是个体的分类学特征。因此,某些分类学家可能会偏向任何给定特征的值,因此,可以通过使用基于机器的分类来消除人的主观性和时间限制。
特征提取方法并不取决于人们观察每个物种的个体标本的方式的变化,因此消除了人类的主观性。但是,仍然需要人类分类学家来训练定义物种的神经网络,并减少主观性或不确定性。
,