Fork me on GitHub

计算机视觉面试 31 题:CV 面试考点,精准详尽解析(1 - 4 )

添加客服微信:julyedufu77:回复 “ 7 ”,领取最新升级版《名企AI面试100题》电子书!!

1、基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD

一、目标检测常见算法

object detection,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别。所以,object detection要解决的问题就是物体在哪里以及是什么的整个流程问题。

然而,这个问题可不是那么容易解决的,物体的尺寸变化范围很大,摆放物体的角度,姿态不定,而且可以出现在图片的任何地方,更何况物体还可以是多个类别。

目前学术和工业界出现的目标检测算法分成3类:

  1. 传统的目标检测算法:Cascade + HOG/DPM + Haar/SVM以及上述方法的诸多改进、优化;
  2. 候选区域/框 + 深度学习分类:通过提取候选区域,并对相应区域进行以深度学习方法为主的分类的方案,如:

R-CNN(Selective Search + CNN + SVM)

SPP-net(ROI Pooling)

Fast R-CNN(Selective Search + CNN + ROI)

Faster R-CNN(RPN + CNN + ROI)

R-FCN

等系列方法;

  1. 基于深度学习的回归方法:YOLO/SSD/DenseBox 等方法;以及最近出现的结合RNN算法的RRC detection;结合DPM的Deformable CNN等

计算机视觉面试31题:CV面试考点,精准详尽解析(1-10)

传统目标检测流程:

  1. 区域选择(穷举策略:采用滑动窗口,且设置不同的大小,不同的长宽比对图像进行遍历,时间复杂度高)
  2. 特征提取(SIFT、HOG等;形态多样性、光照变化多样性、背景多样性使得特征鲁棒性差)
  3. 分类器分类(主要有SVM、Adaboost等)

2、请简单解释下目标检测中的这个IOU评价函数(intersection-over-union)

解析一

在目标检测的评价体系中,有一个参数叫做 IoU ,简单来讲就是模型产生的目标窗口和原来标记窗口的交叠率。具体我们可以简单的理解为: 即检测结果(DetectionResult)与 Ground Truth 的交集比上它们的并集,即为检测的准确率 IoU :

计算机视觉面试31题:CV面试考点,精准详尽解析(1-10)

如下图所示:GT = GroundTruth; DR = DetectionResult;

黄色边框框起来的是:

GT⋂DR

绿色框框起来的是:

GT⋃DR

应该够详细了,上幅图直观些。当然最理想的情况就是 DR 与 GT 完全重合,即

IoU=1

下面附上图例说明

计算机视觉面试31题:CV面试考点,精准详尽解析(1-10)

原图则如下

计算机视觉面试31题:CV面试考点,精准详尽解析(1-10)

3、KNN与K-means区别?

Wikipedia上的 KNN词条 中有一个比较经典的图如下:



计算机视觉面试31题:CV面试考点,精准详尽解析(1-10)

KNN算法流程:

从上图中我们可以看到,图中的数据集是良好的数据,即都打好了label,一类是蓝色的正方形,一类是红色的三角形,那个绿色的圆形是我们待分类的数据。

如果K=3,那么离绿色点最近的有2个红色三角形和1个蓝色的正方形,这3个点投票,于是绿色的这个待分类点属于红色的三角形。

如果K=5,那么离绿色点最近的有2个红色三角形和3个蓝色的正方形,这5个点投票,于是绿色的这个待分类点属于蓝色的正方形。

我们可以看到,KNN本质是基于一种数据统计的方法!其实很多机器学习算法也是基于数据统计的。

KNN是一种memory-based learning,也叫instance-based learning,属于lazy learning。即它没有明显的前期训练过程,而是程序开始运行时,把数据集加载到内存后,不需要进行训练,就可以开始分类了。具体是每次来一个未知的样本点,就在附近找K个最近的点进行投票。

K-Means介绍:

计算机视觉面试31题:CV面试考点,精准详尽解析(1-10)

如图所示,数据样本用圆点表示,每个簇的中心点用叉叉表示:

(a)刚开始时是原始数据,杂乱无章,没有label,看起来都一样,都是绿色的。

(b)假设数据集可以分为两类,令K=2,随机在坐标上选两个点,作为两个类的中心点。

(c-f)演示了聚类的两种迭代。先划分,把每个数据样本划分到最近的中心点那一簇;划分完后,更新每个簇的中心,即把该簇的所有数据点的坐标加起来去平均值。这样不断进行”划分—更新—划分—更新”,直到每个簇的中心不在移动为止。(图文来自Andrew ng的机器学习公开课)。

现在,汇总一下KNN和K-Means的区别

计算机视觉面试31题:CV面试考点,精准详尽解析(1-10)

最后,推荐关于K-Means的一篇博文:漫谈 Clustering (1)_ k-means pluskid -漫谈 Clustering (1): k-means

4、K-means选择初始点的方法有哪些,优缺点是什么?(列出两种以上)

计算机视觉面试31题:CV面试考点,精准详尽解析(1-10)

KMeans是数据挖掘十大算法之一,在数据挖掘实践中,我们也常常将KMeans运用于各种场景,因为它原理简单、易于实现、适合多种数据挖掘情景。

如上图所示,数据样本用圆点表示,每个簇的中心点用叉叉表示:

(a)刚开始时是原始数据,杂乱无章,没有label,看起来都一样,都是绿色的。

(b)假设数据集可以分为两类,令K=2,随机在坐标上选两个点,作为两个类的中心点。

(c-f)演示了聚类的两种迭代。先划分,把每个数据样本划分到最近的中心点那一簇;划分完后,更新每个簇的中心,即把该簇的所有数据点的坐标加起来去平均值。这样不断进行”划分—更新—划分—更新”,直到每个簇的中心不在移动为止。(图文来自Andrew ng的机器学习公开课)。

初始中心点的选择:

初始中心点的选择最简单的做法是随机从样本中选K个作为中心点,但由于中心点的选择会影响KMeans的聚类效果,因此我们可以采取以下三种方式优化中心点的选取:

1.多次选取中心点进行多次试验,并用损失函数来评估效果,选择最优的一组;

2.选取距离尽量远的K个样本点作为中心点:随机选取第一个样本C1作为第一个中心点,遍历所有样本选取离C1最远的样本C2为第二个中心点,以此类推,选出K个初始中心点

3.特别地,对于像文本这样的高维稀疏向量,我们可以选取K个两两正交的特征向量作为初始化中心点。

添加客服微信:julyedufu77:回复 “ 7 ”,领取最新升级版《名企AI面试100题》电子书!!


本文地址:https://www.6aiq.com/article/1622050621719
本文版权归作者和AIQ共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出