龙空技术网

CV岗位精选面试题(11-20)

七月在线 911

前言:

今天咱们对“k邻近算法簇中心的选取”大概比较关怀,你们都需要知道一些“k邻近算法簇中心的选取”的相关知识。那么小编同时在网络上收集了一些关于“k邻近算法簇中心的选取””的相关资讯,希望你们能喜欢,小伙伴们一起来了解一下吧!

评论有奖:评论区回复 “ 1 ”,领取最新升级版《名企AI面试100题》电子书!!

11、当参数量 >> 样本量时候, 神经网络是如何预防过拟合?

1. 正则化 2. Early Stopping 3. Dropout 4. 数据增强

过拟合即在训练误差很小,而泛化误差很大,神经网络时避免过拟合的方法:

1、正则化

正则化的思想十分简单明了。由于模型过拟合极有可能是因为我们的模型过于复杂。因此,我们需要让我们的模型在训练的时候,在对损失函数进行最小化的同时,也需要让对参数添加限制,这个限制也就是正则化惩罚项。

假设我们模型的损失函数为:

加入正则项 L 后,损失函数为:

常用的正则化有两种:L1正则和L2正则

L1正则表达式:

其中w代表模型的参数,k代表模型参数的个数。

L2正则表达式:

其中w代表模型的参数,k代表模型参数的个数。

L1正则与L2正则的思想就是不能够一味的去减小损失函数,你还得考虑到模型的复杂性,通过限制参数的大小,来限制其产生较为简单的模型,这样就可以降低产生过拟合的风险。

它们的区别在于L1更容易得到稀疏解。为什么呢?我们先看看一个直观的例子:

假设我们模型只有 w1,w2两个参数,上图中左图中黑色的正方形是L1正则项的等值线,而彩色的圆圈是模型损失的等值线;右图中黑色圆圈是L2正则项的等值线,彩色圆圈是同样模型损失的等值线。因为我们引入正则项之后,我们要在模型损失和正则化损失之间折中,因此我们去的点是正则项损失的等值线和模型损失的等值线相交处。通过上图我们可以观察到,使用L1正则项时,两者相交点常在坐标轴上,也就是 w1,w2中常会出现0;而L2正则项与等值线常相交于象限内,也即为 w1,w2非0。因此L1正则项时更容易得到稀疏解的。

而使用L1正则项的另一个好处是:由于L1正则项求解参数时更容易得到稀疏解,也就意味着求出的参数中含有0较多。因此它自动帮你选择了模型所需要的特征。L1正则化的学习方式是一种嵌入式特征学习方式,它选取特征和模型训练时一起进行的。

12、什么是感受野?

某一层特征图中的一个cell,对应到原始输入的响应的大小区域。

什么是感受野

感受野(Receptive Field),指的是神经网络中神经元“看到的”输入区域,在卷积神经网络中,feature map上某个元素的计算受输入图像上某个区域的影响,这个区域即该元素的感受野。

卷积神经网络中,越深层的神经元看到的输入区域越大,如下图所示,kernel size 均为3×3,stride均为1,绿色标记的是Layer2 每个神经元看到的区域,黄色标记的是Layer3 看到的区域,具体地,Layer2每个神经元可看到Layer1 上 3×3 大小的区域,Layer3 每个神经元看到Layer2 上 3×3 大小的区域,该区域可以又看到Layer1 上 5×5 大小的区域。

所以,感受野是个相对概念,某层feature map上的元素看到前面不同层上的区域范围是不同的,通常在不特殊指定的情况下,感受野指的是看到输入图像上的区域。

13、简述你对CBIR(Content-based Image Retrieval基于内容的图像检索)的理解

通过对比特征点\特征值的相似度,判断两个图片是否相近

基于内容的图像检索

基于内容的图像检索(CBIR, Content Based Image Retrieval)是相对成熟的技术领域,在工业界也有广泛的应用场景,如搜索引擎(Google、百度)的以图搜图功能,各电商网站(淘宝、Amazon、ebay)的相似商品搜索,社交平台(Pinterest)的相似内容推荐等。

基于内容的图像检索流程

图像内容检索流程与文本检索流程类似,但二者信息表征方法不同。文本通过词频计算BoW来表征一段文本内容,而图像则使用视觉特征来表示。Google团队2003年[1]提出的视频内容检索方法借鉴文本检索流程,使用局部特征构建视觉词袋向量(Bag-of-Visual-Words,BoVW), 也称BoF(Bag-of-Features), 来表示图像。这里的视觉单词是指量化后的视觉特征。Video-Google[1]中检索系统也分为构建词库、构建索引和检索三部分。下图是视觉词库构建流程:

对图像提取若干个局部特征描述子,如SIFT,对这些描述子进行量化。量化器通常通过聚类得到:对特征描述子集合进行k-means聚类,聚类后得到的k个质心即为视觉单词。描述子desc的量化结果q(desc)为与desc最相近的质心的索引。所有质心构成了视觉词表。图像中的特征单词的词频构成了该图像的向量描述BoVW。假设视觉词表中的单词个数为N,那么BoVW向量的长度为N,向量中的元素为对应单词出现在该图像中的频次或者采用采用td-idf权重更新向量中每个元素值。

基于得到的视觉词库,计算所有图像(或视频中帧)数据的BoVW向量。检索进程启动时,将目标数据库中所有图像的BoVW向量构建索引。输入一副检索图像,提取该图像的BoVW特征,然后与目标库向量进行距离比对,查找近邻向量。 最直观的查找方法是蛮力查找即将查询向量q与所有的BoVW向量进行距离计算。这种穷举方式对大数据集或高维向量的查找效率非常低。为改进这个问题,Video-Google[1]提出采用倒排文件IVF结构进行索引构建,IVF索引结构如下图所示。图中i表示每个视觉单词。

由于词向量通常是很稀疏的,我们无需遍历目标库中的所有文件,因而可以通过建立倒排文件,对每个单词构建一个列表,列表中是所有包含当前单词的图像meta信息。检索时,只需要计算那些与当前查询图像包含相同单词的图像的BoVW向量间的距离即可,即通过减小搜索范围来降低搜索复杂度。

Video-Google提供了经典的基于内容的图像检索流程,核心技术可以总结为两点:特征提取和近邻查找。后续图像检索基于大多基于此思想,针对不同业务场景下的数据特点,对涉及的特征提取和近邻查找技术进行优化,最终目标是提取能够高效表征图像的特征向量,进行快速视觉内容查找。

更多内容可以查看:赵丽丽:基于内容的图像检索技术:从特征到检索

【TPAMI重磅综述】 SIFT与CNN的碰撞:万字长文回顾图像检索任务十年探索历程(上): ZL LI:【TPAMI重磅综述】 SIFT与CNN的碰撞:万字长文回顾图像检索任务十年探索历程(上)

论文 SIFT Meets CNN: A Decade Survey of Instance Retrieval:

14、什么是计算机视觉单词模型?

参考1:提取图像特征,然后用KMeans聚类得到视觉词汇表,用词汇表描述衣服图像。

参考2:

引言

最初的Bag of words,也叫做“词袋”,在信息检索中,Bag of words model假定对于一个文本,忽略其词序和语法,句法,将其仅仅看做是一个词集合,或者说是词的一个组合,文本中每个词的出现都是独立的,不依赖于其他词 是否出现,或者说当这篇文章的作者在任意一个位置选择一个词汇都不受前面句子的影响而独立选择的。

Bag-of-words模型是信息检索领域常用的文档表示方法。在信息检索中,BOW模型假定对于一个文档,忽略它的单词顺序和语法、句法等要素,将其仅仅看作是若干个词汇的集合,文档中每个单词的出现都是独立的,不依赖于其它单词是否出现。也就是说,文档中任意一个位置出现的任何单词,都不受该文档语意影响而独立选择的。例如有如下两个文档:

1:Bob likes to play basketball, Jim likes too.

2:Bob also likes to play football games.

基于这两个文本文档,构造一个词典:

Dictionary = {1:”Bob”, 2. “like”, 3. “to”, 4. “play”, 5. “basketball”, 6. “also”, 7. “football”, 8. “games”, 9. “Jim”, 10. “too”}

这个词典一共包含10个不同的单词,利用词典的索引号,上面两个文档每一个都可以用一个10维向量表示(用整数数字0~n(n为正整数)表示某个单词在文档中出现的次数):

1:[1, 2, 1, 1, 1, 0, 0, 0, 1, 1]

2:[1, 1, 1, 1 ,0, 1, 1, 1, 0, 0]

向量中每个元素表示词典中相关元素在文档中出现的次数(下文中,将用单词的直方图表示)。不过,在构造文档向量的过程中可以看到,我们并没有表达单词在原来句子中出现的次序(这是本Bag-of-words模型的缺点之一,不过瑕不掩瑜甚至在此处无关紧要)。

一、原理

考虑将Bag-of-words模型应用于图像表示。为了表示一幅图像,我们可以将图像看作文档,即若干个“视觉词汇”的集合,同样的,视觉词汇相互之间没有顺序。

图1 将Bag-of-words模型应用于图像表示

由于图像中的词汇不像文本文档中的那样是现成的,我们需要首先从图像中提取出相互独立的视觉词汇,这通常需要经过三个步骤:

(1)特征提取

(2)特征表示

(3)单词本的生成

通过观察会发现,同一类目标的不同实例之间虽然存在差异,但我们仍然可以找到它们之间的一些共同的地方,比如说人脸,虽然说不同人的脸差别比较大,但眼睛,嘴,鼻子等一些比较细小的部位,却观察不到太大差别,我们可以把这些不同实例之间共同的部位提取出来,作为识别这一类目标的视觉词汇。

而SIFT算法是提取图像中局部不变特征的应用最广泛的算法,因此我们可以用SIFT算法从图像中提取不变特征点,作为视觉词汇,并构造单词表,用单词表中的单词表示一幅图像。

接下来,我们通过上述图像展示如何通过Bag-of-words模型,将图像表示成数值向量。现在有三个目标类,分别是人脸、自行车和吉他。

第一步:利用SIFT算法,从每类图像中提取视觉词汇,将所有的视觉词汇集合在一起,如下图2所示:

第二步:利用K-Means算法构造单词表。K-Means算法是一种基于样本间相似性度量的间接聚类方法,此算法以K为参数,把N个对象分为K个簇,以使簇内具有较高的相似度,而簇间相似度较低。SIFT提取的视觉词汇向量之间根据距离的远近,可以利用K-Means算法将词义相近的词汇合并,作为单词表中的基础词汇,假定我们将K设为4,那么单词表的构造过程如下图3所示:

第三步:利用单词表的中词汇表示图像。利用SIFT算法,可以从每幅图像中提取很多个特征点,这些特征点都可以用单词表中的单词近似代替,通过统计单词表中每个单词在图像中出现的次数,可以将图像表示成为一个K=4维数值向量。

图3 单词本的生成

上图中,我们从人脸、自行车和吉他三个目标类图像中提取出的不同视觉词汇,而构造的词汇表中,会把词义相近的视觉词汇合并为同一类,经过合并,词汇表中只包含了四个视觉单词,分别按索引值标记为1,2,3,4。通过观察可以看到,它们分别属于自行车、人脸、吉他、人脸类。

15、简述什么是Local Feature(局部特征算子)?

局部图像算子是图像特征的局部表达,它反映了图像上具有的局部特性,适合于对图像进行匹配,检索等应用。

视觉单词BOVW也是一种Local Feature。

1.局部算子分类:

1)基于分布的算子;

2)空间频率技术;

3)微分算子:

2.局部特征建立依赖的空间

1)归一化的Laplacian尺度空间

2) Difference of Gaussian

3. 局部区域检测算法

1)Harris points 旋转不变量 特征点周围41×41像素区域 大小固定

2)Harris-Laplace regions 旋转和尺度不变量 检测角点结构特征

3)Hessian-Laplace regions 旋转和尺度不变量 特征点是由Hessian 决定的空间极大值和Laplacian-of-Gaussian.尺度空间极大值,与DoG检测近似,但是在尺度空间能获得更高的准确度,并且在尺度选择上的准确度也高于Harris-Laplace 。检测的准确性影响算子的执行力。

4)Harris-Affine regions 仿射不变量 由Harris-Laplace 检测子检测位置和尺度,附近的仿射由基于二次动差矩阵的affine adaptation 程序决定

5)Hessian-Affine regions 仿射不变量 由Hessian-Laplace 检测子检测位置和尺度,附近的仿射由affine adaptation 程序决定

4. 局部区域描述子

1) SIFT描述子 是一个3D梯度位置方向直方图,位置被量化到4×4局部栅格,梯度角度分为8个方向,算子为4×4×8=128维

2)Gradient location-orientation histogram (GLOH),GLOH是SIFT描述子的一种延伸,为了增强其鲁棒性和独立性。以对数极坐标在半径方向建立三个带(6,11,15)和8个角度方向,形成17个位置带,中心带在半径方向不分块。梯度方向量化为16个带,形成272维矢量,利用PCA降维

3)Shape context 与SIFT描述子相似,但是基于边缘 Shape context是一个边缘点位置和方向的3D直方图,以对数极坐标在半径方向建立三个带(6,11,15)和4个角度方向,生成36维描述子

4)Geometric histogram 在一个区域内描述边缘分布直方图

5)PCA-SIFT 描述子 以特征点周围39×39像素块形成3024维矢量,用PCA降维36维

6)Spin image 是一个量化像素位置和强度的直方图 ,在5个圆环中计算10个强度带,生成50维算子

7)Steerable filters and differential invariants 使用与高斯卷积后的导数

8)Complex filters

9) Moment invariants

10) Cross correlation

6.匹配方法:

基于阈值的匹配

基于最近邻匹配:如果DB是DA的最近邻区域,且之间的距离小于阈值则区域A与区域B是匹配的

基于次最近距离与最近距离之比

7. 描述子维数影响

低维算子:steerable filters ,complex filters, differential invariants

基于微分的算子,导数的阶数影响着算子的维数,对于steerable filters 三阶导数和四阶导数都能保持算子的独立性,并且导数的阶数对算子匹配的准确度影响显而易见,但是对complex filters 和differential invariants影响较小。并且steerable filters 计算到四阶导数时效果比differential invariants 效果好。

高维算子:GLOH,PCA-SIFT,cross correlation 算子 维数过高与过低效果都不理想。对于GLOH算子,128维匹配效果高于40维和272维,对于PCA-SIFT36维效果好于20维和100维,对于cross correlation则81维匹配效果好于36维和400维。

8.对不同图像变换的适应性

1)仿射变换。 利用Hessian Affine 和Harris Affine 检测特征点,然后对不同的局部算子测试。效果最好的是SIFT算子。并且利用Hessian Affine 比Harris Affine的效果好,因为基于拉普拉斯的尺度选择与Hessian 算子相结合可以获得更准确的结果。

2)尺度变换 大多算子表现良好

3)旋转变

16、KD-Tree相比KNN来进行快速图像特征比对的好处在哪里?

参考解析1:极大的节约了时间成本.点线距离如果大于最小点,无需回溯上一层,如果小于最小点,则再上一层寻找。

参考解析2:

1. 什么是KNN

1.1 KNN的通俗解释

何谓K近邻算法,即K-Nearest Neighbor algorithm,简称KNN算法,单从名字来猜想,可以简单粗暴的认为是:K个最近的邻居,当K=1时,算法便成了最近邻算法,即寻找最近的那个邻居。

用官方的话来说,所谓K近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例(也就是上面所说的K个邻居),这K个实例的多数属于某个类,就把该输入实例分类到这个类中。

如上图所示,有两类不同的样本数据,分别用蓝色的小正方形和红色的小三角形表示,而图正中间的那个绿色的圆所标示的数据则是待分类的数据。也就是说,现在,我们不知道中间那个绿色的数据是从属于哪一类(蓝色小正方形or红色小三角形),KNN就是解决这个问题的。

如果K=3,绿色圆点的最近的3个邻居是2个红色小三角形和1个蓝色小正方形,少数从属于多数,基于统计的方法,判定绿色的这个待分类点属于红色的三角形一类。

如果K=5,绿色圆点的最近的5个邻居是2个红色三角形和3个蓝色的正方形,还是少数从属于多数,基于统计的方法,判定绿色的这个待分类点属于蓝色的正方形一类。

于此我们看到,当无法判定当前待分类点是从属于已知分类中的哪一类时,我们可以依据统计学的理论看它所处的位置特征,衡量它周围邻居的权重,而把它归为(或分配)到权重更大的那一类。这就是K近邻算法的核心思想。

我们看到,K近邻算法的核心在于找到实例点的邻居,这个时候,问题就接踵而至了,如何找到邻居,邻居的判定标准是什么,用什么来度量。这一系列问题便是下面要讲的距离度量表示法。

17、简述encode和decode思想

解析1:

Encoder-Decoder(编码-解码)是深度学习中非常常见的一个模型框架,比如无监督算法的auto-encoding就是用编码-解码的结构设计并训练的;比如image caption的应用,就是CNN-RNN的编码-解码框架;再比如神经网络机器翻译NMT模型,往往就是LSTM-LSTM的编码-解码框架。因此,准确的说,Encoder-Decoder并不是一个具体的模型,而是一类框架。Encoder和Decoder部分可以是任意的文字,语音,图像,视频数据,模型可以采用CNN,RNN,BiRNN、LSTM、GRU等等。所以基于Encoder-Decoder,我们可以设计出各种各样的应用算法。

Encoder-Decoder框架有一个最显著的特征就是它是一个End-to-End学习的算法;本文将以文本-文本的例子作为介绍,这样的模型往往用在机器翻译中,比如将法语翻译成英语。这样的模型也被叫做 Sequence to Sequence learning[1]。所谓编码,就是将输入序列转化成一个固定长度的向量;解码,就是将之前生成的固定向量再转化成输出序列。

解析2:

一、Encoder-Decoder(编码-解码)

介绍

Encoder-Decoder是一个模型构架,是一类算法统称,并不是特指某一个具体的算法,在这个框架下可以使用不同的算法来解决不同的任务。首先,编码(encode)由一个编码器将输入序列转化成一个固定维度的稠密向量,解码(decode)阶段将这个激活状态生成目标译文。

回顾一下,算法设计的基本思路:将现实问题转化为一类可优化或者可求解的数学问题,利用相应的算法来实现这一数学问题的求解,然后再应用到现实问题中,从而解决了现实问题。(比如,我们想解决一个词性标注的任务(现实问题),我们转化成一个BIO序列标注问题(数学模型),然后设计一系列的算法进行求解,如果解决了这个数学模型,从而也就解决了词性标注的任务)。

Encoder :编码器,如下:

Decoder:解码器,如下:

合并起来,如下:

更具体一点的表达如下所示:

说明:

1. 不论输入和输出的长度是什么,中间的“向量c”长度都是固定的(这是它的缺陷所在)。

2. 根据不同的任务可以选择不同的编码器和解码器(例如,CNN、RNN、LSTM、GRU等)

3. Encoder-Decoder的一个显著特征就是:它是一个end-to-end的学习算法。

4. 只要符合这种框架结构的模型都可以统称为Encoder-Decoder模型。

在图像中的应用:比如SegNet图像分割算法

18、输入图片尺寸不匹配CNN网络input时候的解决方式?(三种以上)

解析:

1. two-fixed方法:直接对输入图片Resize缩放;

2. one-fixed方法: 固定一边,缩放另一条边;

3. free方法:去掉FC全连接层加入全局池化层,或者使用卷积层替换全连接层;

网络之所以要输入固定大小的图片,主要是因为网络中存在FC全连接层,而且全连接层的一个缺点是参数量大容易导致过拟合,关于这部分解释说明可以参考第9题“如果最后一个卷积层和第一个全连接层参数量太大怎么办?”

卷积层替换全连接层

在经典分类网络,比如LeNet、AlexNet中,在前面的卷积层提取特征之后都串联全连接层来做分类。目前很多网络比如YOLO系列、SSD以及Faster RCNN的RPN,MTCNN中的PNet等都使用卷积层来代替全连接层,一样可以做到目标分类的效果,而且具有以下优点:

1. 更灵活,不需要限定输入图像的分辨率;

2. 更高效,只需要做一次前向计算;

全连接层和卷积层只要设置好了对应的参数,可以在达到相同输入输出的效果,在这个意义上,在数学上可以认为它们是可以相互替换的。

将全连接操作转化成卷积操作,也就是卷积最后一层的feature map 如果使用卷积操作是将每个神经元 Flatten之后dense连接到后面的若干神经元,以AlexNet为例,最后一层为256x7x7,得到后面的4096个神经元,但是如果使用7X7的卷积核对前面的FeatureMap进行继续卷积(padding=0),不也可以得到 4096X1X1的向量吗,如果图片大一些,例如384x384,那没AlexNet最后一层的大小就是256X12X12经过一个7x7的卷积核之后就是4096x6x6了,这时候这6x6=36个神经元就有了位置信息。如下图所示:

卷积替代全连接的优点:

1. 对输入分辨率的限制

如果网络后面有全连接层,而全连接层的输入神经元个数就是固定的,那么反推上层卷积层的输出是固定的,继续反推可知输入网络的图片的分辨率是固定的。例如,LetNet由于由全连接层,输入就只能是28 x 28的。

如果网络中的全连接层都用卷积层替代,网络中只有卷积层,那么网络的输出分辨率是随着输入图片的分辨率而来的,输出图中每一个像素点都对应着输入图片的一个区域(可以用stride,pooling来反算)。

2. 计算效率比较

同样以LeNet来做例子,如果一个图片是280 x 280的分辨率,为了识别图片中所有的数字(为了简单,假设每个数字都是在这个大图划分为10 x 10的网格中),那么为了识别这100个位置数字,那么至少需要做100次前向;而全卷积网络的特点就在于输入和输出都是二维的图像,并且输入和输出具有相对应的空间结构,我们可以将网络的输出看作是一张heat-map,用热度来代表待检测的原图位置出现目标的概率,只做一次前向就可以得到所有位置的分类概率。

FCN(Fully Convolutional Networks for Semantic Segmentation)论文链接:

19、FCN与CNN最大的区别?

FCN中用卷积层替换了CNN中的全连接层

1. FCN概述

CNN做图像分类甚至做目标检测的效果已经被证明并广泛应用,图像语义分割本质上也可以认为是稠密的目标识别(需要预测每个像素点的类别)。

传统的基于CNN的语义分割方法是:将像素周围一个小区域(如25*25)作为CNN输入,做训练和预测。这样做有3个问题:

- 像素区域的大小如何确定 ;

- 存储及计算量非常大 ;

- 像素区域的大小限制了感受野的大小,从而只能提取一些局部特征;

2.FCN原理及网络结构

一句话概括原理:FCN将传统卷积网络后面的全连接层换成了卷积层,这样网络输出不再是类别而是 heatmap;同时为了解决因为卷积和池化对图像尺寸的影响,提出使用上采样的方式恢复。核心思想:

- 不含全连接层(fc)的全卷积(fully conv)网络,可适应任意尺寸输入。

- 增大数据尺寸的反卷积(deconv)层,能够输出精细的结果。

- 结合不同深度层结果的跳级(skip)结构,同时确保鲁棒性和精确性。

网络结构示意图:

网络结构详图:输入可为任意尺寸图像彩色图像;输出与输入尺寸相同,深度为:20类目标+背景=21类。

3 CNN 与 FCN

CNN

通常CNN网络在卷积层之后会接上若干个全连接层, 将卷积层产生的特征图(feature map)映射成一个固定长度的特征向量。以AlexNet为代表的经典CNN结构适合于图像级的分类和回归任务,因为它们最后都期望得到整个输入图像的一个数值描述(概率),比如AlexNet的ImageNet模型输出一个1000维的向量表示输入图像属于每一类的概率(softmax归一化)。

比如:下图中的猫, 输入AlexNet, 得到一个长为1000的输出向量, 表示输入图像属于每一类的概率, 其中在“tabby cat”这一类统计概率最高。

FCN

FCN对图像进行像素级的分类,从而解决了语义级别的图像分割(semantic segmentation)问题。与经典的CNN在卷积层之后使用全连接层得到固定长度的特征向量进行分类(全联接层+softmax输出)不同,FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷积层的feature map进行上采样, 使它恢复到输入图像相同的尺寸,从而可以对每个像素都产生了一个预测, 同时保留了原始输入图像中的空间信息, 然后在上采样的特征图上进行逐像素分类。

最后逐个像素计算softmax分类的损失, 相当于每一个像素对应一个训练样本。下图是Longjon用于语义分割所采用的全卷积网络(FCN)的结构示意图:

简单的来说,FCN与CNN的区域在把于CNN最后的全连接层换成卷积层,输出的是一张已经Label好的图片:

这些抽象的特征对分类很有帮助,可以很好地判断出一幅图像中包含什么类别的物体,但是因为丢失了一些物体的细节,不能很好地给出物体的具体轮廓、指出每个像素具体属于哪个物体,因此做到精确的分割就很有难度。

基于CNN的分割方法与FCN的比较

传统的基于CNN的分割方法:为了对一个像素分类,使用该像素周围的一个图像块作为CNN的输入用于训练和预测。这种方法有几个缺点:

1. 存储开销很大。例如对每个像素使用的图像块的大小为15x15,然后不断滑动窗口,每次滑动的窗口给CNN进行判别分类,因此则所需的存储空间根据滑动窗口的次数和大小急剧上升。

2. 计算效率低下。相邻的像素块基本上是重复的,针对每个像素块逐个计算卷积,这种计算也有很大程度上的重复。

3. 像素块大小的限制了感知区域的大小。通常像素块的大小比整幅图像的大小小很多,只能提取一些局部的特征,从而导致分类的性能受到限制。

而全卷积网络(FCN)则是从抽象的特征中恢复出每个像素所属的类别。即从图像级别的分类进一步延伸到像素级别的分类。

更多内容参考:语义分割--全卷积网络FCN详解 - 我的明天不是梦 - 博客园

20、遇到class-imbalanced data(数据类目不平衡)问题怎么办?

解析1:

设置不同类的权重weighted loss

batch-wise balanced sampling(循环平衡采样) 

解析2:

当你在对一个类别不均衡的数据集进行分类时得到了90%的准确度(Accuracy)。当你进一步分析发现,数据集的90%的样本是属于同一个类,并且分类器将所有的样本都分类为该类。在这种情况下,显然该分类器是无效的。并且这种无效是由于训练集中类别不均衡而导致的。

首先举2个关于类别不均衡的例子:

1. 在一个二分类问题中,训练集中class 1的样本数比class 2的样本数是60:1。使用逻辑回归进行分类,最后结果是其忽略了class 2,即其将所有的训练样本都分类为class 1。

2. 在分类任务的数据集中,有三个类别,分别为A,B,C。在训练集中,A类的样本占70%,B类的样本占25%,C类的样本占5%。最后我的分类器对类A的样本过拟合了,而对其它两个类别的样本欠拟合。

什么是类别不均衡问题:

类别数据不均衡是分类任务中一个典型的存在的问题。简而言之,即数据集中,每个类别下的样本数目相差很大。例如,在一个二分类问题中,共有100个样本(100行数据,每一行数据为一个样本的表征),其中80个样本属于class 1,其余的20个样本属于class 2,class 1:class2=80:20=4:1,这便属于类别不均衡。当然,类别不均衡问同样会发生在多分类任务中。它们的解决方法是一样的。因此,为了便于讨论与理解,我们从二分类任务入手进行讲解。

类别不均衡问题是现实中很常见的问题

大部分分类任务中,各类别下的数据个数基本上不可能完全相等,但是一点点差异是不会产生任何影响与问题的。

在现实中有很多类别不均衡问题,它是常见的,并且也是合理的,符合人们期望的。如,在欺诈交易识别中,属于欺诈交易的应该是很少部分,即绝大部分交易是正常的,只有极少部分的交易属于欺诈交易。这就是一个正常的类别不均衡问题。又如,在客户流失的数据集中,绝大部分的客户是会继续享受其服务的(非流失对象),只有极少数部分的客户不会再继续享受其服务(流失对象)。一般而已,如果类别不平衡比例超过4:1,那么其分类器会大大地因为数据不平衡性而无法满足分类要求的。因此在构建分类模型之前,需要对分类不均衡性问题进行处理。

在前面,我们使用准确度这个指标来评价分类质量,可以看出,在类别不均衡时,准确度这个评价指标并不能work。因为分类器将所有的样本都分类到大类下面时,该指标值仍然会很高。即,该分类器偏向了大类这个类别的数据。

评论有奖:评论区回复 “ 1 ”,领取最新升级版《名企AI面试100题》电子书!!

标签: #k邻近算法簇中心的选取