PS:为了面试准备的,总结的有点粗糙。
1.receptive field:感受野
在卷积神经网络CNN中,决定某一层输出结果中一个元素所对应的输入层的区域大小,被称作感受野
左图:如果只看特征图,我们无法得知特征的位置(即感受野的中心位置)和区域大小(即感受野的大小)
右图:CNN特征图的大小固定,其特征位置即感受野的中心位置。各个特征(可以理解为图像中的像素点)的位置在卷积后保持不变,空的部分用空白来填充。
2.虚函数,virtual关键字,c++多态
a、编译时多态性(静态多态):通过重载函数实现
b、运行时多态性(动态多态):通过虚函数实现。(声明基类的指针,利用该指针指向任意一个子类对象,调用相应的虚函数,可以根据指向的子类的不同而实现不同的方法。virtual关键字)
虚函数: 就是允许被其子类重新定义的成员函数
纯虚函数: 是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法
简单记:一个接口,多种方法
作用:封装可以使得代码模块化,继承可以扩展已存在的代码,他们的目的都是为了代码重用。而多态的目的则是为了接口重用。
3.常见CNN结构
LeNet,AlexNet,VGG,GoogleNet,ResNet
4.物体跟踪与识别,SLAM(重要!!!!)
Simultaneous Localization and Mapping, 同时定位与地图构建
SLAM 的目的是解决“定位”与“地图构建”
应用:
室内扫地机
室内服务机器人
自动驾驶
空中的无人机
虚拟现实
增强现实
整个视觉SLAM流程包括以下步骤:
1.传感器信息读取。在视觉SLAM中主要为相机图像信息的读取和预处理。如果是在机器人中,还可能有码盘、惯性传感器等信息的读取和同步。
2.视觉里程计(Visual Odometry,VO)。视觉里程计的任务是估算相邻图像间相机的运动,以及局部地图的样子。VO又称为前端(Front End)。
3.后端优化(Optimization)。后端接受不同时刻视觉里程计测量的相机位姿,以及回环检测的信息,对它们进行优化,得到全局一致的轨迹和地图。由于接在VO之后,又称为后端(Back End)。
4.回环检测(Loop Closing)。回环检测判断机器人是否到达过先前的位置。如果检测到回环,它会把信息提供给后端进行处理。
5.建图(Mapping)。它根据估计的轨迹,建立与任务要求对应的地图。
经典的视觉SLAM框架是过去十几年的研究成果。这个框架本身及其所包含的算法已经基本定型,并且已经在许多视觉程序库和机器人程序库中提供。依靠这些算法,我们能够构建一个视觉SLAM系统,使之在正常的工作环境里实时定位与建图。因此,我们说,如果把工作环境限定在静态、刚体,光照变化不明显、没有人为干扰的场景,那么,这个SLAM系统是相当成熟的了。
5.梯度下降和牛顿法的区别
凸函数求极值的方法,他们都是为了求得目标函数的近似解。
梯度下降: