招聘内容

主要职责:

  1. 对现有经典图像/视频处理算法进行优化设计;
  2. 搭建算法模型,并初步实现与验证;
  3. 参与嵌入式产品的软件开发

主要要求:

  1. 能够深刻理解图像算法的底层逻辑;
  2. 精通常用经典图像/视频处理方法,了解机器学习算法;
  3. 掌握C++/C编程语言,精通OpenCV;
  4. 熟悉MATLAB,能够快速验证算法原型;

笔试/面试问题

运动估计

  1. 什么是光流?基本假设有哪些?
  2. 画出Lucas-Kanade算法进行参数化运动估计的算法流程图,并评价优缺点
  3. Lucas-Kanade算法如何实现对光照变化鲁棒?

图像去糊

  1. 解释贝叶斯方法:MLE、MAP
  2. 设计基于MAP的图像去糊算法,按步骤说明算法原理

程序设计

  1. 用C/C++实现快速排序算法

面试提问

  • 自我介绍
  • 介绍项目思路
  • 目标检测的算法了解过哪些
  • 轮廓提取算法的原理
  • 跟踪算法优缺点比较
  • 有没有嵌入式Linux的开发经验
  • 所做嵌入式项目的内存管理是怎样的

个人总结

这是来沪的第一次面试,认真总结反思,希望对以后发展有个好的引领.

  1. 从招聘信息和面试感受来说,招聘方还是很专业的,只是自己基础能力存在很大不足. 日常所做的图像处理基本都是调用opencv来实现,只有考虑某种算法而没有现成代码可用的时候,才会去研究算法原理,编码实现内部逻辑,比如主动轮廓模型、FCM聚类等. 所以轮廓提取算法的原理我答不上来,只知道cv::findContours,同样笔试题目也没答出来. 现在再看招聘要求“能够深刻理解图像算法的底层逻辑”,还被放在第一条,好丢脸啊,我真该仔细掂量掂量的.
  2. 从自身定位来看,招聘方从事的真的是很传统很经典的机器视觉研发,包括预处理、特征提取、识别应用一整套理论,而我只是侧重在图像预处理部分. 我也做深度学习CV方向,在识别和分类上更倾向于深度网络模型,所以并没有了解相应的经典算法,机器学习算法也只是学过两遍理论,基本都是调包实现再调参. 这样看来,自身定位和招聘方是有出入的. 我处于一个很尴尬的水平:没有算力支持,深度学习很难专精,往上的计算机视觉走得艰难;依赖openCV,面向API编程,往下的机器视觉投入不足. 不上不下,没有竞争力啊!
  3. 关于深度框架:一开始是打算学习tf2.0的,但感觉和企业用的版本差异太大,就没再考虑了. 跟着沐神学习,对mxnet的简洁高效很有好感,背后有亚马逊支持,据说Intel内部也在用,就学起来了. 但是招聘上大多要求tf和pytorch,学术上也是pytorch居多. 那就等mxnet的学习告一段落后,再多学一种吧!
  4. 除了专业技能,编码方面也该重视,拖了多年的数据结构与算法该学了!必须刷题了!加油!