专栏名称: 传感器技术
制造业的未来是智能化,智能化的基础就是传感器; 互联网的方向是物联网,物联网的基石也是传感器; 关注传感器技术,获得技术资讯、产品应用、市场机会,掌握最黑科技,为中国工业导航。
目录
相关文章推荐
51好读  ›  专栏  ›  传感器技术

面部识别技术能用来识别鲸鱼?

传感器技术  · 公众号  ·  · 2017-07-06 06:26

正文

文章来源: 数据派THU


鲸鱼图片示例

竞赛要求参赛团队建立一个模型,以识别照片中捕获的鲸鱼是447只鲸鱼中的哪一只。说的更专业一点,对于每张照片,我们需要提供所有447只鲸鱼的概率分布。模型的优劣通过多类对数损失(交叉熵)来评估。


值得注意的是,训练数据集并不平衡。不同鲸鱼之间的照片数量差别很大:有一些“名鲸”有40张左右,大多数有十几张,还有二十多只鲸鱼只有一张照片。另一个挑战是不同类别的图像(即不同的鲸鱼)彼此非常相似。这与我们区分狗、猫、袋熊和飞机的情况有些不同。这对我们训练的神经网络造成了一些困难:区别不同的鲸鱼的特征只占了图像的一小部分,并不是很明显。帮助我们的分类器专注于正确的特征,即鲸鱼的头部和皮肤斑纹(callosity pattern),被证明是至关重要的。



软硬件


我们使用Python,Numpy和Theano来实现我们的算法。为了创建人工标注(并且保证在长时间里不失去理智),我们使用了Sloth(一个通用的标签工具)以及一个专用的Julia脚本。


为了训练我们的模型,我们使用了两种Nvidia的显卡:Tesla K80和GRID K520。



不太配合的鲸鱼


因此,在训练最终分类器之前,我们花了一些时间(和精力)来解释这个事实。这种方法的可以理解为从随机的图片中(被摄对象处于任意位置)获取护照照片(标准照片)。这也是头部定位器和头部校准器的目的。头部定位器对输入的照片中的头部产生一个边框,但此时头部还处于一个随机的方向,而且不一定在照片中间。头部校准器将前面圈出的头部区域进行旋转和缩放,使得喷水孔(blowhead)和帽尖(bonnet-tip)总是处于固定的位置,距离也不变。这两个步骤都是通过在人工标注的训练集上训练神经网络完成的。


帽尖(红点)和喷水孔(蓝点)


鲸鱼定位


这是为了获得优质的护照照片而迈出的第一步。 为了获得训练数据,我们在训练数据中手动标注了所有的鲸鱼,并用方框圈出了它们的头部(特别感谢我们的人力资源部门帮助!)。

头部定位器得到的头部边框


这些标注为训练集中的每个图像提供四个数字:矩形的左下角和右上角的坐标。然后我们训练一个收到原始图像(调整为256×256)的CNN并输出边界框的两个坐标。虽然这显然是一个回归的任务,但我们并未使用L2损失函数,而是将输出量化分组并使用Softmax以及交叉熵损失函数,并取得了更大的成功。我们还尝试了几种不同的方法,包括训练CNN来区分头部照片和非头部照片,甚至是一些非监督方法。然而,他们的结果却逊色不少。


此外,头部定位网络还必须预测喷水孔和帽尖的坐标(以相同的量化方式),但是在这个任务中不太成功,所以我们忽略了这个输出。


我们训练了5个不同的网络,架构基本相同。

头部定位器的构架


这5个网络不同之处在于用于量化坐标的buckets的数量。我们尝试了20,40,60,128,还有另外一个较小的网络用了20个buckets。


在将图像输入网络之前,我们进行了数据增强(调整到256 x 256以后)。


  • 旋转:最大到10度(注意,如果使用更大的角度,就不能仅仅旋转这些点,你必须重新计算边界,我们太懒没有这么做)

  • 缩放:1/1.2到1.2之间的随机比率

  • 颜色扰动,比例为0.01。


虽然我们没有采用测试时增强技术,但我们将所有5个网络的输出相结合,即每次裁剪后的图片传到下一步(头部校准)时,我们会在5个网络的输出结果中随机选择一个。如上所述,这些网络的裁剪结果非常令人满意。实际上,我们并没有真正“物理地”裁剪图像(即产生一堆更小的图像),我们所做的(事实证明也是非常方便的)只是生成一个含有边框信息的json文件。这可能是无关紧要的,但是这样让我们能够轻松进行试验。


鲸鱼的“护照照片”


分类器的最后一步就是调整照片,使他们都符合相同的标准。基本的想法是训练一个CNN来估计喷水孔和帽尖的坐标。有了这些坐标,就可以很容易构造变换,使得原始图像变换为这两个点总是处于相同的位置(即头部校准)。由于Anil Thomas的标注,我们有了训练集的坐标。所以,我们再次训练CNN来预测量化坐标。虽然使用整个图像来确定这些点也是可能的(即跳过头部定位的步骤),但通过前面的操作我们可以更容易得实现头部校准。


另外,网络还有一些额外的任务要解决。首先,它需要预测哪只鲸鱼在图像上(即解决原始任务),此外还需要知道鲸鱼头部的皮肤斑纹是否连续(又一次需要在人工标注的训练集进行训练,虽然这时工作量少多了,每个鲸鱼2-3张图片就够了)。

不连续(左)和连续(右)的皮肤斑纹


我们使用如下的架构。

头部校准器的构架


从头部定位器中我们获得了头部的大概位置,来作为头部校准器的输入。这次我们敢于使用更大胆的数据增强:


  • 平移,随机平移,最大4个像素

  • 旋转,最大360度

  • 缩放,1到1.5之间的随机比率

  • 颜色扰动,比例为0.01








请到「今天看啥」查看全文