那个,要不要关注我一下。。。
1. 图像识别与定位
图像的相关任务可以分成以下两大类和四小类:
图像识别,图像识别+定位,物体检测,图像分割。
图像的定位就是指在这个图片中不但识别出有只猫,还把猫在图片中的位置给精确地抠出来今天我们来讲一讲如何神经网络来做图像识别与定位。
图像的识别:
可以看成是图像的分类》C个类别
输入:整个图片
输出:类别标签(每个类别会有一个概率,选出概率最大的标签)
评估标准:准确率
图形的定位:
输入:整个图像
输出:物体边界框(x,y,w,h)。x,y是物体边界框的左上定点的横纵坐标;w,h是这个图片的长和高。通过这4个指标就可以定位出图中的物体的位置。
评估标准:交并准则
所以图像的识别与定位就是以上两个任务组成。
下面介绍2中思路去实现图像的识别与定位。
1.1 思路1:视作回归
对于图像定位来说只要求出了(x,y,w,h)这四个值就得到了定位,因为这四个值是连续性,所以不能用分类的方法来做,这里考虑用回归来做。
与之前分类问题不同的是,现在我们使用L2loss也就是欧氏距离来求损失函数。
步骤1:
首先得搭一个图像识别的神经网络,可以在VGG,GoogleLenet这些优秀的模型上fine-tuning一下。
步骤2:
接下来在上述神经网络的尾部展开成两个部分:成为classification + regression的模式。前者是为了识别,后者是为了定位。一般这个展开会放在卷积层后面,也有时候放在全连接层后面。
步骤3:
在regression回归部分使用欧氏距离计算损失,然后运用SGD来训练,在classification部分和以前一样不变。
步骤4:
在预测阶段,将classification和regression两个模块拼上,让他们各自去实现自己不同的功能。
regression模块加在什么位置呢?
可以放在卷积层后,如VGG
也可以放在全连接层后, 如DeepPose
能否对主体有更细致的识别?
神经网络能够对图形进行定位,那么能否识别出这个物体在干啥子在做什么动作呢?
这也可以,需要提前把规定好K个组成部分,然后分别去做k个部分的回归就行了。
比如识别人的姿势,每个人的组成部分是固定的,可以将人分成K个首尾相接的线段,然后对这些线段分别求回归。
1.2 思路2:借助图像窗口
另一个思路是来自于2014年发表的一篇论文。它的逻辑是这样的:取不同大小的“框”,让框出现在不同位置,判定每个框在每个为上的得分,按照得分高低对结果宽工作抽取与合并。
如下图,取一个3*221*221的一个框,让它在图像的4个位置走一遍,然后得出每个位置的得分,右下角的框得分最高,识别出猫的概率为0.8.
这个方法存在最大的问题是:“参数多”,“计算慢”。因为要去尝试不同大小的框并放在不同位置。但是论文中提到了解决这两个缺陷的方案。
下图是神经网络最初的形式,从卷积层出来或分成了两个模块,每个模块中分别有及几层的全连接。如果FC层中的神经元有4096个,那么这个过程会产生4096*4096个参数。
论文作者提出了这样的方案,从卷积层出来后的两个模块中,将FC层乘以一个1*1的conv卷积层,那么参数的数量就下降到了4069*1了。
论文里的东东拿出来讲的要十分庞大,有兴趣的童鞋直接看原文论,哈哈。
2. 物体识别
2.1 背景
在衣服图中可能有多个物体,此时就需要去把每个物体都识别出来。比如下图中有4个物体,两个猫星人,一个汪星人,一个小鸭子。如果用回归,要去识别四个物体就需要预测4*4 = 16 个连续值了。
用回归来做物体识别需要先确定物体的个数K。但是通常情况下,我们并不知道图像中有多少个物体,就像下图这样。
于是我们又回到了分类问题,让不同大小的框去移动然后做分类,就像下图这样。
但是分类问题来做物体识别也有难处:
--你需要找很多位置,还需要设定很多不同大小的框
--还要对每个框在每个位置的图像做分类
--而且你选的框的大小也不一定对啊
--.....
2.2 边缘策略
我们来换一个角度想问题,为什么要用那么多的框大海捞针呢,为什么不在图中先找到一个可能成框的东东作为候选框呢。
--也就是说,想办法找到包含内容的图框。
原理是这样的,先找到一个像素点,然后将它周围与它相近的点也包罗进来形成了一个小的候选框,这些小的候选框再向周围扩张,将颜色相似的点包含进来,如此一轮一轮候选框就会逐渐扩大了。具体过程如下图:
最后一张图中其实已经非常清晰地识别出来墙上的相框和旁边的美女了。
2.3 R-CNN
一个大牛在2014年发表了一篇物体识别的论文。
它的实验大概是这样做的:
首先对图片使用边缘策略进行物体识别,然后将每个候选框输入卷积层产出特征,接着一边让卷基层的输出进入SVM做一个“有无物体”的分类,如果有的话就进行回归计算。回归计算是去调整候选框,使其能刚好抠出一个物体。
有兴趣的童鞋还是可以去看原版论文:
kafka,hbase,spark,Flink等入门到深入源码,spark机器学习,大数据安全,大数据运维,请关注浪尖公众号,看高质量文章。
更多文章,敬请期待