图像处理工程师 学习

2015-03-13 22:42:54 liuuze5 阅读数 14578

整理了一下网上一些公司对图像处理算法工程师的招聘要求:

                                                            图像处理算法工程师

 

职位要求

编程技能:

1、 具有较强的编程能力和良好的编程习惯, 精通c/c++编程,并熟练使用VS 或matlab开发环境;

2、 在计算机技术领域拥有扎实的技术功底,尤其在数据结构、算法和代码、软件设计方面功力深厚;

    对数据结构有一定的研究基础如链表、堆杖、树等,熟悉数据库编程;

3、 出色的算法分析能力,对某一特定算法可以做广泛的综述,有实际算法实现经验;

4、 熟悉面向对象编程思想,精于windows下的C/C++、VC++程序设计,熟悉MATLAB,对MFC有相对的了解和应用经验;

专业技能:

1、扎实的数学功底和分析技能,精通计算机视觉中的数学方法;

     高等数学(微积分)、线性代数(矩阵论)、随机过程、概率论、

     摄影几何、模型估计、数理统计、张量代数、数据挖掘、数值分析等;

2、具备模式识别、图像处理、机器视觉、信号处理和人工智能等基础知识;

     对图像特征、机器学习有深刻认识与理解;

3、精通图像处理基本概念和常用算法包括图像预处理算法和高级处理算法;

     常见的图像处理算法,包括增强、分割、复原、形态学处理等; 

     熟悉常见的模式识别算法,特别是基于图像的模式识别算法,掌握特征提取、特征统计和分类器设计; 
4、熟练使用OpenCV、Matlab、Halcon中的一种或一种以上工具库;

5、熟悉机器视觉系统的硬体选型,包括CCD相机,镜头及光源;熟悉相机与镜头搭配;

 

外语:

1. 英文熟练,能够熟练阅读和理解专业英文资料,有英文文献检索和阅读能力;
2. 良好的英语沟通能力

综合能力:

1.对工作认真负责,积极主动,勤奋踏实;

2.做事严谨,注重细节,有耐心,能够在压力下独立工作;

3.学习钻研能力强,有较强的理解能力和逻辑思维能力和良好的创新意识;

4.良好的协调沟通能力和团队合作精神; 

经验要求:

1.两年以上C/C++ 程序设计经验;

2.具有2年以上在Linux/Unix环境下用C/C++语言开发图像处理软件的经验。

3.数字图像处理、模式识别的理论知识和实践经验;

  有基于OpenCV开发项目经验,机器视觉行业经验;

  具有图像处理算法设计和开发经验;

  参与过机器视觉系统分析和设计;

4. 在Matlab 或其它数学软件上开发算法的经验;

 

视觉算法经验:请提供实现的算法列表

    目标识别、图像配准、三维测量、标定和重建、手势识别; 

    表面缺陷检测;尺寸测量;特征识别;

    图像去噪、滤波、融合算法
    3A算法:如自动曝光、自动对焦、自动白平衡


【工作内容】: 


1.为解决实际问题而进行探索性研究和创新,设计与模式识别、图像/视频智能分析处理相关的算法。

  图形图像处理、计算机视觉相关算法的研发以及应用程序的编写;

  参与核心软件项目算法设计及算法实现;研究图像处理算法,开发和调试算法原型

  软件算法研发:算法的代码实现、优化以及移植及其测试;

  负责机器视觉系统图象处理、分析及识别算法的设计、实现及调试;

  参与图象算法视觉应用软件的设计与实现。参与图象处理技术研究与设计;

2、对已有的计算机视觉算法进行实用化开发和优化研究;
   精益求精,将算法做到极致,使算法真正实用化;

  参与预研性的算法分析和论证,为产品开发提供基础研究及论证;


岗位职责:

1、 协助工程师进行算法的测试.;C++语言验证、测试算法;

2、编写算法规格说明;
3、相关专业文献的查阅; 
4、将部分matlab程序转为C或C++语言程序。 

1) 辅助图像处理工作
2) 大规模图像搜集与分类 
3) 与开发人员等进行沟通,跟踪产品的体验效果并改进;
4)负责公司的机器视觉与传感器项目的技术支持(如项目可行性评估、现场DEMO、装机、培训等)

   和 维护工作;

 

岗位职责:

1、负责计算机视觉中的图像采集,处理面阵和线扫描相机的成像和控制 ;
2、针对特定的计算机视觉问题,设计目标识别与快速定位与检测算法的实现,并进行优化;
3、对彩色图像和灰度图像实现物体表面的污点划痕检测算法设计和实现;
4、处理三维物体表面数据获取和实现三维测量算法的实现;
5、处理点激光和线激光源的成像,散斑噪声滤波和轮廓检测;
6、负责算法与软件GUI开发工程师接口;
7、完成上级领导交办的其他的工作。




 

图像算法工程师三重境界



一、传统图像算法工程师: 
主要涉及图形处理,包括形态学、图像质量、相机成像之3A算法、去雾处理、颜色空间转换、滤镜等,主要在安防公司或者机器视觉领域,包括缺陷检测;

二、现代图像算法工程师: 
涉及模式识别,主要表现的经验为AdaboostSVM的研究与应用,特征选取与提取,包括智能驾驶的研究与应用、行人检测、人脸识别;

三、人工智能时代图像算法工程师: 
深度学习,主要在大型互联网公司或者研究所机构,具体体现在TensorFlow等开源库的研究与应用,包括机器人的研、基于深度学习的人脸识别;







2015-04-15 21:23:18 qq_23668339 阅读数 539

     既然学了模式识别这个专业,研究生期间主要方向是机器学习,计算机视觉,图像处理。所以很想了解现在这个领域的就业方向及相关要求。

今天在“增强视觉 | 计算机视觉 增强现实”上看到一则招聘智能图像/视频处理工程师的广告,岗位要求如下:

  1. 动手能力强,熟练掌握C/C++/Matlab语言,有较强的算法分析和实现能力,并具备良好的代码与文档风格;
  2. 了解人脸识别、目标检测、跟踪和识别、图像处理等技术,具备一年以上实际工作经验;
  3. 参与项目需求分析、负责设计完成需求规格、软件架构、测试策略,撰写相关的技术文档;
  4. 搭建研发环境,完成系统中相关软件模块的编码、调试、单元测试、功能验证,保证项目进度和产品质量;
  5. 协助完成项目的系统集成测试、版本交付等工作,对项目实施和维护提供支持;

     于是搜了一些关于图像、视频处理方面的就业要求,做一下总结,以便让自己明确研究生期间的学习任务,即便做不成科学家,也得有点

技术吧。

    1.编程语言:熟悉C++/C/OpenCV/Matlab开发语言,主要是有较强的C++/C图像处理编程能力,绝大多数岗位都要求熟悉OpenCV,Matlab在理论验证阶段比较方便,但是在操作硬件和效率上远不及C++/C,所以一般公司对此没要求。以后还要仔细学习C++/C,还是先从C++ primer开始,之后再看些effective系列的。另外,还要求具备良好的代码与文档风格,以后写代码还是要讲求规范了。

  

     2.知识储备:机会总是青睐有准备的人。图像处理应用很广,因此不同岗位要求侧重不同,最基本都必须掌握图形处理的开发与研究,熟悉图像处理的各种算法,特别是图像去燥、图像增强、复原、质量改善、检测、色彩科学、图像分割、图像识别处理、图像跟踪、图像的获取及视频处理,具体应用包括人脸识别、医学影像处理、多点识别、文字检测与是识别。特别的,结合不同应用,还需要自然语言处理知识。另外,要有优秀的数学功底(特别是线性代数、优化理论、统计知识)。

     3.英语水平:优秀的英文写作技能,英语口语流利。主要是能读懂英文技术文档,在研究院还需要写论文,公司更需要写技术文档,所以平时得多积累专业词汇。至于英语口语,还是从听力开始吧,中科院自动化所的图像处理、机器学习的课都很经典,大多数是留学归来的年轻教师,可以开拓思路,顺便积累专业词汇。这个寒假要把图像处理的课听完,再多做些试验。个人还比较喜欢“The Big Bang Theory”,悠闲加娱乐。

   4.社交能力:硬件条件之后就是软件条件。大多数公司如是说:“良好的表达能力、团队合作精神和创新能力”。我觉得就是社交能力,HR看你合不合群。有个同学去参加面试,参加面试的还有研究生和来自理工科背景更雄厚的本科生,在群面、无领导小组讨论和辩论阶段,很多背景很强的学生却因太过张扬和表现自己被pass(这是同学分析的原因)。看来沉着、稳重还是必要的,谁也不想招个老板进来。而所谓的创新能力,另一个同学的面试经历给了我很大启发。他现在已经实习两个月了,回顾自己面试,他觉得正像面试官说的:“你还没入门呢”。而之所以拒掉N个研究生,选择同学这个应届毕业生,主要是他对这个方向很有热情,本科期间在毫无指导的情况下,主动接触了很多零零碎碎的东西,帮助同学和老师解决了一个又一个稀奇古怪的问题。据他说,这些东西在之后的工作中没一样能用到的,但是没有这些基础又是绝对干不了活的。之后的工作也是,没有人盯着他干活,老板给个指标,就放手做去吧,老板只要个结果。公司里每个人基本都要独挡一面,有时候还得独挡几面,所以非关键难题请教前辈,其他细节问题别人也不清楚,清楚也没时间指导。同学主动去学,去解决问题的能力是最让老板放心的。从他的话中体现出来的热情才是他“创新能力”的原动力。

      额……要学的真多,鸭梨倍增,貌似都是本科没学过的,学过的,不常用,也忘差不多了。曾经的那些模数电,控制神马的似乎是不太用的上了,我就是在不断印证那句话:生命在于折腾。

2017-11-13 16:28:02 su_yuheng 阅读数 3936

 既然学了模式识别这个专业,研究生期间主要方向是机器学习,计算机视觉,图像处理。所以很想了解现在这个领域的就业方向及相关要求。

今天在“增强视觉 | 计算机视觉 增强现实”上看到一则招聘智能图像/视频处理工程师的广告,岗位要求如下:

  1. 动手能力强,熟练掌握C/C++/Matlab语言,有较强的算法分析和实现能力,并具备良好的代码与文档风格;
  2. 了解人脸识别、目标检测、跟踪和识别、图像处理等技术,具备一年以上实际工作经验;
  3. 参与项目需求分析、负责设计完成需求规格、软件架构、测试策略,撰写相关的技术文档;
  4. 搭建研发环境,完成系统中相关软件模块的编码、调试、单元测试、功能验证,保证项目进度和产品质量;
  5. 协助完成项目的系统集成测试、版本交付等工作,对项目实施和维护提供支持;

     于是搜了一些关于图像、视频处理方面的就业要求,做一下总结,以便让自己明确研究生期间的学习任务,即便做不成科学家,也得有点

技术吧。

    1.编程语言:熟悉C++/C/OpenCV/Matlab开发语言,主要是有较强的C++/C图像处理编程能力,绝大多数岗位都要求熟悉OpenCV,Matlab在理论验证阶段比较方便,但是在操作硬件和效率上远不及C++/C,所以一般公司对此没要求。以后还要仔细学习C++/C,还是先从C++ primer开始,之后再看些effective系列的。另外,还要求具备良好的代码与文档风格,以后写代码还是要讲求规范了。

  

     2.知识储备:机会总是青睐有准备的人。图像处理应用很广,因此不同岗位要求侧重不同,最基本都必须掌握图形处理的开发与研究,熟悉图像处理的各种算法,特别是图像去燥、图像增强、复原、质量改善、检测、色彩科学、图像分割、图像识别处理、图像跟踪、图像的获取及视频处理,具体应用包括人脸识别、医学影像处理、多点识别、文字检测与是识别。特别的,结合不同应用,还需要自然语言处理知识。另外,要有优秀的数学功底(特别是线性代数、优化理论、统计知识)。

     3.英语水平:优秀的英文写作技能,英语口语流利。主要是能读懂英文技术文档,在研究院还需要写论文,公司更需要写技术文档,所以平时得多积累专业词汇。至于英语口语,还是从听力开始吧,中科院自动化所的图像处理、机器学习的课都很经典,大多数是留学归来的年轻教师,可以开拓思路,顺便积累专业词汇。这个寒假要把图像处理的课听完,再多做些试验。个人还比较喜欢“The Big Bang Theory”,悠闲加娱乐。

   4.社交能力:硬件条件之后就是软件条件。大多数公司如是说:“良好的表达能力、团队合作精神和创新能力”。我觉得就是社交能力,HR看你合不合群。有个同学去参加面试,参加面试的还有研究生和来自理工科背景更雄厚的本科生,在群面、无领导小组讨论和辩论阶段,很多背景很强的学生却因太过张扬和表现自己被pass(这是同学分析的原因)。看来沉着、稳重还是必要的,谁也不想招个老板进来。而所谓的创新能力,另一个同学的面试经历给了我很大启发。他现在已经实习两个月了,回顾自己面试,他觉得正像面试官说的:“你还没入门呢”。而之所以拒掉N个研究生,选择同学这个应届毕业生,主要是他对这个方向很有热情,本科期间在毫无指导的情况下,主动接触了很多零零碎碎的东西,帮助同学和老师解决了一个又一个稀奇古怪的问题。据他说,这些东西在之后的工作中没一样能用到的,但是没有这些基础又是绝对干不了活的。之后的工作也是,没有人盯着他干活,老板给个指标,就放手做去吧,老板只要个结果。公司里每个人基本都要独挡一面,有时候还得独挡几面,所以非关键难题请教前辈,其他细节问题别人也不清楚,清楚也没时间指导。同学主动去学,去解决问题的能力是最让老板放心的。从他的话中体现出来的热情才是他“创新能力”的原动力。

      额……要学的真多,鸭梨倍增,貌似都是本科没学过的,学过的,不常用,也忘差不多了。曾经的那些模数电,控制神马的似乎是不太用的上了,我就是在不断印证那句话:生命在于折腾。

2018-01-27 00:00:00 meyh0x5vDTk48P2 阅读数 13434

 向AI转型的程序员都关注了这个号???


大数据挖掘DT数据分析  公众号: datadw



把一些相关的知识点总结一下。这个比长,感兴趣的挑自己相关的那部分看。

都是一些基础知识,面相关岗位问到的比较多。


(回答时对算法要有一定的见解,最好不要照书上的背)  


(一)            机器学习方面

SVM  

1、  支撑平面---和支持向量相交的平面;;;分割平面---支撑平面中间的平面(最优分类平面)

2、  SVM不是定义损失,而是定义支持向量之间的距离à目标函数看PPT13~17页

3、  正则化参数对支持向量数的影响

LR  

1、  LR的形式:h(x)=g(f(x));其中x为原始数据;f(x)为线性/非线性回归得到的值,也叫判定边界;g()为Sigmoid函数,最终h(x)输出范围为(0,1)

LR对样本分布敏感。  

***LR和朴素贝叶斯(NB)的区别?  

LR是loss最优化求出的,NB是统计跳过loss最优,直接得出权重

NB比LR多了一个条件独立假设

一个是判别模型(LR),一个是生成模型(NB)

1、  判别模型和生成模型???

   

2、  机器学习中,LR和SVM有什么区别?à

两者都可以处理非线性问题;LR和SVM最初都是针对二分类问题的。

SVM最大化间隔平面、LR极大似然估计;SVM只能输出类别,不能给出分类概率

两者loss function不同;LR的可解释性更强;SVM自带有约束的正则化

2、LR为什么用sigmoid函数,这个函数有什么优点和缺点?为什么不用其他函数?(sigmoid是伯努利分布的指数族形式)

Logistic Regression 只能用于二分类,而sigmoid对于所有的输入,得到的输出接近0或1

Sigmoid存在的问题:梯度消失、其输出不是关于原点中心对称的(训练数据不关于原点对称时,收敛速度非常慢à输入中心对称,得到的输出中心对称时,收敛速度会非常快)、计算耗时

Tanh激活函数存在的问题:梯 度消失、计算耗时,但是其输出是中心对称的

ReLU:其输出不关于原点对称;反向传播时,输入神经元小于0时,会有梯度消失问题;当x=0时,该点梯度不存在(未定义);

ReLu失活(dead RELU)原因:权重初始化不当、初始学习率设置的非常大

Maxout:根据设置的k值,相应的增大了神经元的参数个数

Xavier权重初始化方法:对每个神经元的输入开根号



3、  SVM原问题和对偶问题关系?

SVM对偶问题的获得方法:将原问题的目标函数L和约束条件构造拉格朗日函数,再对L中原参数和lambda、miu分别求导,并且三种导数都等于0;再将等于0的三个导数带入原目标函数中,即可获得对偶问题的目标函数

关系:原问题的最大值相对于对偶问题的最小值

4、  KKT(Karysh-Kuhn-Tucker)条件有哪些,完整描述?

KKT条件是思考如何把约束优化转化为无约束优化à进而求约束条件的极值点

下面两个思考题的答案都是  在需要优化的目标为凸函数(凸优化)的情况下。  

问题一:当一个优化问题是凸优化问题时,可以直接用KKT条件求解。  

5、  凸优化(可行域为约束条件组成的区域)

5、 SVM的过程?Boost算法?

6、  决策树过拟合哪些方法,前后剪枝

决策树对训练属性有很好的分类能力;但对位置的测试数据未必有好的分类能力,泛化能力弱,即发生过拟合。

防止过拟合的方法:剪枝(把一些相关的属性归为一个大类,减少决策树的分叉);随机森林

7、  L1正则为什么可以把系数压缩成0,坐标回归的具体实现细节?

L1正则化可以实现稀疏(即截断),使训练得到的权重为0;

l1正则会产生稀疏解,即不相关的的特征对应的权重为0,就相当于降低了维度。但是l1的求解复杂度要高于l2,并且l1更为流行

正则化就是对loss进行惩罚(加了正则化项之后,使loss不可能为0,lambda越大惩罚越大-->lambda较小时,约束小,可能仍存在过拟合;太大时,使loss值集中于正则化的值上)

正则化使用方法:L1/L2/L1+L2

8、  LR在特征较多时可以进行怎样的优化?-->L1正则有特征选择的作用

如果是离线的话,L1正则可以有稀疏解,batch大点应该也有帮助,在线的解决思路有ftrl,rds,robots,还有阿里的mlr。当然还可以用gbdt,fm,ffm做一些特性选择和组合应该也有效果。

9、  机器学习里面的聚类和分类模型有哪些?

分类:LR、SVM、KNN、决策树、RandomForest、GBDT

回归:non-Linear regression、SVR(支持向量回归-->可用线性或高斯核(RBF))、随机森林

聚类:Kmeans、层次聚类、GMM(高斯混合模型)、谱聚类

10、              聚类算法(可以作为监督学习中稀疏特征的处理):Kmeans、层次聚类、GMM(高斯混合模型)

聚类算法唯一用到的信息是样本和样本之间的相似度。  

评判聚类效果准则:高类间距,低类内距;高类内相似度,低类间相似度。

相似度与距离负相关。

图像之间的距离的度量是对每个像素操作,最后获得距离

Kmeans和GMM需要制定类别K

AKmeans算法:对于已有的未标记的样本,同时给定结果聚类的个数K;目标是把比较接近的样本归为一类,总共得到k个cluster

Kmeans中初始k个中心点(Kmeans对中心点的选取比较敏感)的选取方法:a、随机选取k个初始的样本中心点(b、直接选取k个样本点),然后计算每个样本到k个选定的样本中心点的距离;再比较待聚类样本到初始样本点的距离,将待聚类的样本指定为距离较近的各个类别(离哪个近,就归为哪一类);最后重新计算聚类中心:;重复迭代。

Kmeans收敛状态:  

(1)聚类中心不再变化(2)每个样本到对应聚类中心的距离之和不再有很大的变化  


损失函数àloss function后面的||xn-uk||^2表示采用欧式距离作为距离度量:  


Kmeans可以用于图像分割;

Kmeans的缺点:对初始样本点的选取敏感;对异常点(如:一个远离大多数点的孤立的点)的免疫不好;对团状数据点效果较好,对带状效果不好;

Kmeans与Kmeans++初始化的区别:Kmeans初始样本点的选取是随机选取的;Kmeans++是选取最远的k个点作为初始样本点

A、 层次聚类  

有两种层次聚类--)bottom-up(从多个类聚成一个类-->每次都是合并最相似的两个类)、up-bottom(一个类到多个类-->每次都剔除最不相似的类);层次距离是一种树状结构


Kmeans与层次聚类对比:  


C、高斯混合模型à由单高斯模型线性加权组合


初始参数:样本点属于各个高斯函数的概率,以及每个高斯函数的均值和方差(参数都是随机给定)


GMM求解过程àEM算法求解     

E-step(由已知的均值和方差估算在该参数下的样本点的分布)和M-step(由样本点的分布再求均值和方差)是EM算法

à这和EM求解的过程一样

Kmeans是硬聚类(每个样本只能属于某一类);而GMM对于每个样本点,都有属于每个类的概率。

GMM优势:多个分布的组合、速度快(EM算法求解)、最大数据似然概率

GMM劣势:对初始化值敏感,容易陷入局部最优、需指定k个高斯分布;对非凸分布数据集效果不好。

11、              kmeans的分类过程,用kmeans的数据有什么样的分布(高斯分布),loss函数是啥?

见问题“9”

12、              逻辑斯特回归和线性回归的损失函数?

13、              正则化为什么能防止过拟合?(https://www.zhihu.com/question/20700829)

过拟合表现在训练数据上的误差非常小,而在测试数据上误差反而增大。其原因一般是模型过于复杂,过分得去拟合数据的噪声. 正则化则是对模型参数添加先验,使得模型复杂度较小,对于噪声的输入扰动相对较小。

正则化时,相当于是给模型参数w 添加了一个协方差为1/lambda 的零均值高斯分布先验。 对于lambda =0,也就是不添加正则化约束,则相当于参数的高斯先验分布有着无穷大的协方差,那么这个先验约束则会非常弱,模型为了拟合所有的训练数据,w可以变得任意大不稳定。lambda越大,表明先验的高斯协方差越小,模型约稳定, 相对的variance(方差)也越小。  

10关键词  

1、训练集测试集验证集划分方式

https://www.zhihu.com/question/26588665/answer/33490049  

2、TPR(Recall)、FPR、ROC 、AUC(与准确率和召回率有关)

http://blog.csdn.net/feiyang2010jin/article/details/50547365  


 

3、坐标轴下降法->用来解决loss function对参数不可导时(此时梯度下降算法不再有效),求取参数更新量的方法

坐标轴下降法和梯度下降法具有同样的思想,都是沿着某个方向不断迭代,但是梯度下降法是沿着当前点的负梯度方向进行参数更新,而坐标轴下降法是沿着坐标轴的方向。

http://blog.csdn.net/ymmxz/article/details/69396222  

lasso(Least absolute shrinkage and selection operator)

坐标轴下降法和最小角回归法(http://blog.csdn.net/bbbeoy/article/details/72523540)都是求解Lasso回归的方法。


4、批量梯度下降算法BGD,小批量梯度下降法MBGD,随机梯度下降算法SGD的比较  

http://blog.csdn.net/yMMxz/article/details/69371926  


5、学习率褪火 (衰减)-->没学习多少次都会将学习率减少(lr/decay_rate)

6、多分类问题转二分类方法-->组合多个二分类器来实现多分类器,方法如下:

a.一对多法(one-versus-rest,简称OVR SVMs)。训练时依次把某个类别的样本归为一类,其他剩余的样本归为另一类,这样k个类别的样本就构造出了k个SVM。分类时将未知样本分类为具有最大分类函数值的那类。

b.一对一法(one-versus-one,简称OVO SVMs或者pairwise)。其做法是在任意两类样本之间设计一个SVM,因此k个类别的样本就需要设计k(k-1)/2个SVM。当对一个未知样本进行分类时,最后得 票最多的类别即为该未知样本的类别。

c.层次支持向量机(H-SVMs)。层次分类法首先将所有类别分成两个子类,再将子类进一步划分成两个次级子类,如此循环,直到得到一个单独的类别为止。


说明:LR的多分类也可以用上面的方法

http://blog.sina.com.cn/s/blog_4af0fab001010ybp.html  

http://blog.sina.com.cn/s/blog_4c98b96001009b8d.html  

1、  跳出局部极小值方法

-->优化方法,如momentum updata、Adam等;调整学习率

4、显著性检验

5、线性回归、广义线性回归

7、最小二乘误差及其概率解释

9、LDA(二类、多类)

11、类别不平衡解决方法:欠采样、过采样、阈值移动

12、模型融合方法:bagging、随机森林、ADABOOST、 Gradient Boosting Tree

前面两种是综合多个模型的结果;后面两个是重复训练

Bagging-->模型融合(随机森林也属于模型融合);有两种方法(bagging对朴素贝叶斯没什么用,因为NB太稳定,提升不大)

ADABOOST(boosting一类的算法)的步骤-->重复迭代和训练;每次分配给错的样本更高的权重;最简单的分类器(如:线性分类器的二分类)叠加

ADABOOST分类过程详细解释如下:先用一个简单的分类器将样本分成两类;为分错的样本分配更高的权重(初始权重设为1/N即可,N为样本数);重复上次两个过程(再次分类,并为错误的样本设置更高的权重);最后将所有样本数据正确分类后,将各个分类器叠加。

Gradient Boosting Tree:和Adaboost的思路类似,解决回归问题。

14、              决策树、随机森林、GBDT、XGBOOST

A、决策树(有监督学习):  


建立决策树的关键,即在当前状态下选择哪个属性作为分类依据。根据不同的目标函数,建立决策树主要有一下三种方法:ID3、C4.5、CART


BBootstraping不需要外界帮助,仅依靠自身力量让自己变得更好。

C、随机森林(bagging+决策树):


Bootstrap采样:有放回的重复抽样


DAdaboost  

教程第11节 决策树随机森林……pdf –p37

E、  GBDT—梯度下降决策树(有监督学习)

15、              熵 信息增益(ID3算法)、信息增益率(C4.5算法)、基尼系数(CART)

教程第11节 决策树随机森林……pdf -p10

16、              投票机制

1)一票否决(一致表决)、2)少数服从多数、3)有效多数(加权)

16、数值优化理论:梯度下降、牛顿、共轭梯度

牛顿法(dk为更新量)-->引入了二阶偏导(Hessian矩阵)-->求解无约束优化(迭代的初始值一般是随机选取的)  

缺点:不能保证Hessian矩阵(二阶偏导组成的矩阵)一定可逆  

17、SVM、SVR、软间隔SVM、SMO

18、SVM核函数

核函数主要是将线性不可分的数据映射到高位空间再进行分类

核函数的种类:

高斯核是用的最多的核函数à对训练数据分类效果最好  

高斯核的缺点:容易过拟合,需要更多的样本、泛化能力弱  

19、距离方法:闵科夫斯基 、VDM、马氏距离

20、K-means、KNN、LVQ、DBSCAN、谱聚类  

 21、降维方法:LDA、PCA、SVD

22、特征选择方法:总体分为过滤型、包裹型、嵌入型(à基于模型的;如:正则化)

Relief、LVW、正则化(L1/L2)

特征选择的原因:特征存在冗余(特征相关度太高)、掺杂了噪声(特征对预测结果有负影响)

L1正则化是截断效应(实现稀疏,把不相关的特征的系数变成0);L2正则化是缩放效应,使最后得到的参数很小

25、交叉熵?KL散度(也叫KL距离)?

25、最大熵模型、EM(Expectation Maximization)算法

最大熵模型的求解可以转化为对偶问题的极大化;

26、特征-->数据中抽取出来的对结果预测有用的信息

       特征工程-->使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥很好的作用的过程。

27、交叉验证

K折交叉验证(K-flod cross validation)

http://www.cnblogs.com/boat-lee/p/5503036.html  

将训练集分成K份;依次将第i(i=k,…,1)折作为交叉验证集,其余k-1折(除第i折外)作为测试集;总共进行k次,每进行完一次训练,都用test data去测试,得到k个准确率;最后取k个准确率的均值作为最后结果。

28、过拟合和欠拟合

欠拟合(under fitting):参数过少,不足以表达数据的特征

过拟合(over fitting):参数过多,过渡拟合数据,泛化能力差(训练时的准确率很好,但测试的时候就很差)

欠拟合解决方法:找更多的特征;减小正则化系数

(二)深度学习方面

1、MLP的BP过程?delta的意义?每一层节点的残差?

2、max pool层怎么做的?

3、caffe架构?caffe如何构建网络?

4、去卷积过程(转置卷积)?http://blog.csdn.net/fate_fjh/article/details/52882134  

5、单个神经元是否线性可分(模式识别的概念,是否能用用线性函数将样本分类)?

是否线性可分是对于样本集的;线性可分是数据集合的性质,和分类器没啥关系。

可以通过线性函数分类的即为线性可分

6、深度学习模型的发展?深度学习的评价标准?

7、强化学习应用场景和方法?adaboost和cascade adaboost?损失函数有哪些?分类回归聚类的区别与联系?目标检测的三种方法?

8、目标检测常用的网络,RCNN, SPP, Fast RCNN, Faster RCNN的区别?

9、随机梯度下降,标准梯度?softmax公式?信息熵公式?

10、SVM和softmax的区别?

Svm具有附加稳定性,当样例满足边界条件时,该样例不会影响损失函数;而softmax将考虑所有的样例

11、训练时,mini-batch与GPU的内存匹配-->训练网络时的mini batch是由GPU的内存决定的。

12、正则化:正则化表现的是对高维度W的惩罚力度,当正则化系数(lambda)很大时,使w变的非常小,最终的结果是函数变得非常平滑。正则化系数(lambda)越小,拟合程度越高,效果越好。

13、batch normalization中gamma和beta初始化为1和0,然后在训练中优化他们

BN可以减少dropout(可以不要dropout)

14、当训练到最后,loss值很大,但精度在上升?-->说明loss变化很小,需要增大学习率

梯度爆炸(loss发散,出现nan)-->学习率很大,需要减小学习率

15、如果loss开始一直不变,但是从某点开始下降的原因à因为初始值选定的不好,错误的初始值会让梯度一开始接近0。

16、优化策略的比较:

http://www.cnblogs.com/denny402/p/5074212.html  

SGD-->Momentum updata-->Nesterov Momentum updata-->AdaGrad update--> RMSProp update-->Adam update

以上都是一阶优化方法,对于二阶优化方法(BFGS和L-BFGS),二阶优化方法不需要学习率这个参数,可以直接对目标进行优化。

SGD:根据梯度直接更新w

Momentum updata:不是通过计算得到的梯度直接更新w,而是增加一个变量V(定义为速度),改变了和梯度直接相关,再用V更新w

Nesterov Momentum updata:更新方式

AdaGrad update:每个参数自适应学习速率的方法(因为参数空间的每一维都有自己的学习速率,它会根据梯度的规模的大小动态变化)

长时间训练时,AdaGrad算法会发生什么?-->根据更新公式,不断有正数加到cache中,更新步长会逐渐衰减到0,最后完全停止学习。

1e-7:平滑因子,防止除数变成0

RMSProp update:解决了AdaGrad中会停止更新的问题

Adam update:

  adagrad记录的是梯度的二阶矩,并按指数和形式表示

Momentum的作用:稳定梯度的方向

17、模型集成

先单独训练多个不同的模型;在训练时,将每个模型的结果取平均值即可。-->可提升精度

缺点是必须单独训练不同的模型

18、Cross entropy loss 和sigmod Cross entropy loss的区别?

http://blog.csdn.net/u012235274/article/details/51361290  

看博文里写的就没啥区别

SmoothL1Loss  

优势:smoothL1Loss在接近0的时候,看起来像二次函数

SoftMaxWithLoss  

19、没有隐藏层的神经网络是线性的,只能处理线性可分的问题(线性可分问题从二维角度看,即分界线是一条直线,多维就是存在线性超平面将其分类)。

20、卷积神经网络中,在没有zero-padding的情况下,当输入为7*7,filter为3*3,stride为3是,这里的stride是不允许这样设置的,因为这样的话输出就是2.333*2.333(不是整数),所以zero-padding避免了这种情况的发生

Zero-padding的另一种作者用,就是避免图像在卷积神经网络中向前传播时,图像提取出来的特征越来越小,zero-padding可以保证图像的尺寸。

21、定位和检测的区别:

区别在于要找的目标的数量;

对于定位,图像中只有一个或一种对象,用框标出对象的位置

对于检测,图像中有多个目标或多种对象。

23、数据不足时:

数据增强、transfer learning(fine-tuning:根据数据集的大小,训练网络的最后一层或者最后几层)、修改网络

Fine-tuning:固定网络,即为学习率为0、需要训练的层的学习率比较高(原来训练好的网络的学习率的十分之一)、当预训练的层(中间层)需要改变时,学习率很小(如原学习率的一百分之一)

24、goolenet和resnet中用到的结构(瓶颈结构 bottlenecks:输入输出相同)

1x1的卷积层相当于全连接层-->遍历所有像素

3x3的卷积可以替换成1x3和3x1的不对称卷积(inception v3)-->减少参数

25、CNN中 卷积的实现

傅里叶变换可以用于大卷积核的运算

im2col(主要的):

caffe和torch不支持使用16位计算。

26、WindowDataLayer(窗口数据),用于检测,可以读取hdf5数据。

27、Caffe中的交叉验证?

定义两个prototxt文件(训练阶段和测试阶段),train_val.prototxt和deploy.prototxt;后者用于测试集中,测试阶段的train_val.prototxt用于验证。

28、其他框架?

Torch-->C和Lua语言写的,Torch中主要的是Tensors类

TensorFlow-->pip安装,TensorBoard为可视化工具 ,支持多GPU,支持分布式训练(多机),支持RNN

Theano、MxNet、

29、语义分割(Semantic Segmentation)和实例分割(Instance Segmentation)

语义分割-->操作像素,标记每个像素所属的标签à不关心具体的类,同一类目标标记为相同的像素

实例分割à 输出类别同时标记像素(同时检测并分割)-->关心目标的类,不同目标标记为不同的像素(同一类中的目标也标记为不同 的像素)

分割时使用全卷积网络(以filter1*1的卷积层替换fc层,操作每个像素)可以得到所有像素的标签,而不用先将图像分成许多小块,再通过卷积为块 的中心像素分类(这样就很耗时)

30、反卷积(卷积转置)

31、Spatial Transformer Networks(空间变换网络)

32、无监督学习

聚类等、PCA(线性的)

自动编码器(Auto encoder)、Generative Adversarial Networks(GAN)

(三)图像方面

1、opencv遍历像素的方式?

2、LBP原理?

3、HOG特征计算过程,还有介绍一个应用HOG特征的应用?

4、opencv里面mat有哪些构造函数?

5、如何将buffer类型转化为mat类型?

6、opencv如何读取png格式的图片?(我貌似记得opencv不能读取png格式的图片,好像每种格式图片的表头不一样,需要转化,给他说了半天他,他也没明白)

7、opencv如何读取内存图片?

8、opencv里面有哪些库?

9、用过opencv里面哪些函数?(我顺带回答了一下canny,HR又问opencv里面有c-a-n-n-y有这几个字母的函数吗,尴尬。。。又问我如何自己写canny边缘检测算法)

10、opencv里面为啥是bgr存储图片而不是人们常听的rgb?

12、你说opencv里面的HOG+SVM效果很差?他就直接来了句为啥很差?差了就不改了?差了就要换其他方法?、

13、讲讲HOG特征?他在dpm里面怎么设计的,你改过吗?HOG能检测边缘吗?里面的核函数是啥?那hog检测边缘和canny有啥区别?

13、如何求一张图片的均值?(考虑了溢出和分块求解,貌似不满意。。。回头看看积分图里面如何解决溢出的。)

14、如何写程序将图像放大缩小?(我回答的插值,不太对。。。比如放大两倍可以插值,那放大1.1倍呢,)-->放大1.1倍也可以插值

15、如何遍历一遍求一张图片的方差?(回答的是采用积分图,并让我推导这样为啥可行。这个问题以前帮同学解决过。。。)

(四)编程方面(C++/Python)


1、  全排列

2、  矩阵求最长连续递增的路径长度?à

329. Longest Increasing Path in a Matrix https://leetcode.com/problems/longest-increasing-path-in-a-matrix/discuss/  

3、vector和list的区别?

4、c里面有哪些内存申请方法?

5、虚函数和纯虚函数的区别?

6、重载、覆盖、重写的区别?

7、用过C++11吗?用过里面的哪些?

8、有哪些类型转换函数?以及用在哪些场景?

9、用过GCC吗?会linux吗?

10、堆和栈的区别?

11、Python中定义类的私有变量?在变量前面加双下划线“__”,如:__x,则为私有变量

11、请描述指针数组和数组指针的区别 
指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针

数组指针:a pointer to an array,即指向数组的指针

还要注意的是他们用法的区别,下面举例说明。

int* a[4] 指针数组

 表示:数组a中的元素都为int型指针   

元素表示:*a[i]   *(a[i])是一样的,因为[]优先级高于*

int (*a)[4] 数组指针

             表示:指向数组a的指针


             元素表示:(*a)[i]  

 

(五)开放性问题

1、最后问面试官的问题

(1)我以后的面试要注意哪些问题,提点建议?或为了更好地胜任这个岗位,我还需要补充哪些技能? 入职后是否有产品培训和技能培训?

(2)当感觉还可以时,就问公司培训制度,晋升机制,以及自己来了应该做什么,当感觉没戏时,就问,你给我一些关于职业的建议吧,以及怎么提升自己

3、 HR面试(自己总结的)  

(1)       期望薪资

(2)       你理想的工作是什么样的?


(3)       关于你以后的工作打算,你有什么想法?


 

(4)       职业规划

(5)       做项目时遇到的困难及解决方法?

(6)做科研辛苦吗?

(6)       对公司的看法?为什么应聘我们公司?

(7)       你在同龄人中处于什么档次 和大牛的差距在哪?

(8)       你跟同龄人相比有什么优势?

(9)       你除了我们公司,还投了哪些公司?

说几个

(10)   BAT之外,你最最想去的是哪家公司,为什么?

(11)   如果我们给你发offer,你还会继续秋招么?

(12)   【跨专业】本科+研究生在本专业学了多年,为什么没在本行业求职?

(13)   【家离企业所在地较远】为什么想来xx地方工作,父母支持么?

(14)   【对象】如果对象和你在意向工作地发生分歧,你怎么处理?

(15)   优缺点?

(16)   介绍你一次最失败的一次经历?

(17)   介绍你一次最成功的一次经历?

(18)   这份工作你有想过会面对哪些困难吗?

(19)   如果你发现上司做错了,你将怎么办?

      (19)你觉得大学生活使你收获了什么?

      (20)你对加班的看法?

      (21)当公司给出的待遇偏低不足以吸引到优秀人才的时候,你该怎么去招聘?

这些知识点都是我自己总结的,包括HR面的问题。
 

人工智能大数据与深度学习

搜索添加微信公众号:weic2c

长按图片,识别二维码,点关注



大数据挖掘DT数据分析

搜索添加微信公众号:datadw


教你机器学习,教你数据挖掘

长按图片,识别二维码,点关注




轻    松     一   刻




2018-03-02 14:41:46 jacob6_b 阅读数 8772
推崇以练促学,以学促练。所以不会一上来就推荐一堆理论性东西的。
1)opencv。无论以后是否使用opencv,咱先用着玩起来。找本书跟着写写demo,然后自己做点小应用,虽然一直在调用api但是大概知道图像处理是个什么玩意儿。(当然期间配合着可以学学C++或者Python)
2)冈萨雷斯的数字图像处理 + opencv部分源码。调了这么久的api,是不是已经欲求不满了?所以我们开始研究算法吧,这时候对于一些常用的函数,我们可以去看看对应的实现,以及在理论上到底是个什么意思,为什么需要这样。记住是opencv的部分源码,不是让你去通看,看着看着就没兴趣了,而且也迷失了方向。
3)数学。 对于算法走到后来就是很多数学的东西,对于这些我推荐的还是差哪儿补哪儿,哪儿不懂学哪儿。而不是抱着几门公开课,厚厚的书啃,这样就又迷失方向了,记住我们是要学图像处理的。
4)项目实践。这个不用多说,找点实际问题去解决会进步很快哦。
当这儿,我们已经对图像处理有了一个熟悉感了,但是可能会觉得有些杂,这时候就是静下来系统的看看冈萨雷斯那本书了,慢慢的就会有一种通透的感觉。(我也没达到通透。。。)
以上就是传统图像处理算法的路子了。现在还有很火的 机器学习和深度学习 做图像处理的。大概路子差不多,学的东西不太一样。
1)Keras/Caffe/Tensorflow/Mxnet等等 深度学习库或者scikit-learn 机器学习库。语言推荐python,深入底层后也需要C++。DL库强烈推荐Keras上手,非常快。
2)深度学习方面的书比较少,主要还是以 论文 为主吧,多看总有益。机器学习的书籍:国内:《统计学习方法》(满满的干货),周志华的《机器学习》,国外的《An Introduction to Statistical Learning 》《ESL》《PRML》等等,当然看英文的可能比较辛苦。
3)因为这方面比较火,所以网上公开课也不少。Ng大神的《Machine Learning》,林轩田的《机器学习基石》《机器学习技法》,HInton的《Neural Network for Machine Learning》,任选其一学习即可,英文稍差可以看林轩田的,台湾人,说的是中文。
4)数学。线性代数,矩阵论,概率论,数理统计都会用到的。学习方法还是如上所说。

5)学ML/DL切忌纸上谈兵,多实践。网上找点数据集,各种模型自己跑跑试试,改改,这样才能理解透彻。

链接:https://www.zhihu.com/question/51369979/answer/126568619