写于毕业一年后

今天切切实实感到了自己的失败,也切切实实感受到了 什么是逆水行舟,你不学习不进步等于是 在倒退。

毕业一年,在武汉的工作不尽人意,校招那年没有努力尝试去bat,现在十分后悔,好的工作,好的学校,好的竞赛和项目经历 都会伴随着自己一生,机会稍纵即逝。

研究生三年基本是混过去了,没有沉淀下来什么,现在想清楚了,想要从事 计算机视觉这个行业。

默默记录下自己的面试经历,希望尽快找到满意的工作!

武汉→上海

传统测绘行业→互联网AI(计算机视觉)转型

我会一点点把面试的经历记录下来

7-18  杨浦区 某自动驾驶公司,岗位:算法工程师


昨夜两点把RCNN系列原理看完,原因是 自己的项目介绍中有些相关的经历,不过是两年前的,已经有些生疏了。

笔试(头一次到公司了 还有笔试,,之前的小公司一般直接面的)

分为三个部分(c++,python,理论数学部分)

1-1.用类模板实现比较两个数的大小,实现一个类,并在这个类中调用模板,对类的两个对象进行比较(没弄出来,对c++比较生疏)

1-2. c++一段构造一个类以及其友元类的改错题目(后来面试官说 我很多错误没找出来,基础太薄弱了)

2-1. python 关于**和*的含义(没做出来)

3-1. 两个正态分布变量的求和是什么分布?

3-2. 在一个半径为1的圆内取一个随机点的坐标

    思路:首先随机取一个同心圆,再随机取一个角度(rand()/360)*2*PI,这个角度对应的同心圆上的点即为随机取到的点。

面试:主要问项目,实现细节,数据怎么输入,我负责什么工作。问到了faster RCNN与fast RCNN以及RCNN的区别,我昨天刚看,可是还是没有回答好!不应该!哎

→RCNN

RCNN主要分为3个大部分,第一部分产生候选区,第二部分对每个候选区使用CNN提取长度固定的特征;第三部分使用一系列的SVM进行分类

(1)候选区域选择:区域建议Region Proposal是一种传统的区域提取方法,基于启发式的区域提取方法,用的方法是ss。然后将根据建议提取的目标图像标准化,作为CNN的标准输入可以看作窗口通过滑动获得潜在的目标图像,在RCNN中一般Candidate选项为2k个即可,即可理解为将图片划分成2k个网格,之后再对网格进行特征提取或卷积操作,这根据RCNN类算法下的分支来决定。然后基于就建议提取的目标图像将其标准化为CNN的标准输入。

(2)CNN特征提取:标准卷积神经网络根据输入执行诸如卷积或池化的操作以获得固定维度输出。也就是说,在特征提取之后,特征映射被卷积和汇集以获得输出。

(3)分类与边界回归:实际上有两个子步骤,一个是对前一步的输出向量进行分类(分类器需要根据特征进行训练); 第二种是通过边界回归框回归(缩写为bbox)获得精确的区域信息。其目的是准确定位和合并完成分类的预期目标,并避免多重检测。在分类器的选择中有支持向量机SVM,Softmax等等;边界回归有bbox回归,多任务损失函数边框回归等 。

 缺点:需要实现提取多个候选区域对应的图像(占用大量的空间);传统的CNN要求输入的mao是固定尺寸的,而归一化的过程中图片会产生形变而大小改变,对CNN的特征提取有致命的坏处;每个regeion proposal都需要进入CNN网络计算,会导致多次的重复的相同的特征提取。

RCNN→fast RCNN 

(1)选择性搜索Selective Search(SS)在图片中获得大约2k个候选框

 在第一步中所使用到的候选区域生成方法与RCNN无异,使用的方法都是Selective Search(SS)。以此方式来生成2k个候选框。其基本思路如下所述:使用过分割方法将图像分成小区域。在此之后,观察现有的区域。之后以最高概率合并这两个区域。重复此步骤,直到所有图像合并为一个区域位置。注意,在此处的合并规则与RCNN是相同的,优先合并以下四种区域: 颜色(颜色直方图)相近的; 纹理(梯度直方图)相近的; 合并后总面积小的。最后,所有已经存在的区域都被输出,并生成候选区域。

(2)使用卷积网络提取图片特征。类似于RCNN,在获取特征映射之后,需要卷积神经网络来进行卷积操作。 在此处Fast RCNN使用的卷积神经网络为普通的fc7,但是有所改动,也有使用VGG16的神经网络。 前五个阶段是conv + relu + pooling的基本形式。

(3) 在第二步进行的卷积操作过后可以得到feature map,根据之前RoI框选择出对应的区域(既可以理解为将feature map映射回原图像), 在最后一次卷积之前,使用 RoI池层来统一相同的比例。

在RCNN中,在进行卷积操作之前一般都是先将图片分割与形变到固定尺寸,这也正是RCNN的劣势之处。不得不说,这对检测来说是十分不应该出现的,这会让图像产生形变,或者图像变得过小,使一些特征产生了损失,继而对之后的特征选择产生巨大影响。Fast RCNN与RCNN不同。其不同之处如下:Fast RCNN在数据的输入上并不对其有什么限制,而实现这一没有限制的关键所在正是ROI Pooling层。该层的作用是可以在任何大小的特征映射上为每个输入ROI区域提取固定的维度特征表示,然后确保每个区域的后续分类可以正常执行。

fast RCNN→faster RCNN

对于Faster RCNN来讲,与RCNN和Fast RCNN最大的区别就是,目标检测所需要的四个步骤,即候选区域生成,特征提取,分类器分类,回归器回归,这四步全都交给深度神经网络(DNN)来做,并且全部运行在 GPU上,这大大提高了操作的效率。

做这样的任务的神经网络叫做Region Proposal Network(RPN)。

Faster RCNN可以说是由两个模块组成的:区域生成网络RPN候选框提取模块+Fast RCNN检测模块。具体做法:
  • 将RPN放在最后一个卷积层的后面
  • RPN直接训练得到候选区域

RPN是全卷积神经网络,其内部与普通卷积神经网络不同之处在于是将CNN中的全连接层变成卷积层。

Faster RCNN是基于RPN提取的proposal检测并识别proposal中的目标。其具体流程大致可概括为:

1.输入图像。2.通过区域生成网络RPN生成候选区域。3.提取特征。4.分类器分类。5.回归器回归并进行位置调整。

猜你喜欢

转载自blog.csdn.net/zhangxz259/article/details/81103536