本科生学opencv
A. 工业机器视觉学习需要多久
3个月-5年左右,学得快的3个月就能学好,学得慢的需要好几年。
1、本科及以上学历,有3-5年的机器视觉工作背景或智能相机开发经验以及项目经验
2、熟练掌握C/C++/Python语言,有较强的算法分析和实现能力
3、熟悉工业相机、镜头、光源及采集卡的选型4、有OpenCV算法库和常用的数字图像处理算法项目经验优佳
5、有OCR检测软件开发经验或产品检测软件开发经验优先。
B. 为什么说光学工程是劝退专业
在很多院校,单从招生来讲,确实光学工程规模不大,热门程度不如电子和计算机。但也要看到,能开设光学工程的科研院所,实力不会差。从其专业来看,光学工程内容很广,与机械、电子、通信、精密仪器、医学等都存在紧密联系。举个例子,国内几个代表性研究所都以光学机械简称光机所来命名,当然这是比较传统的了。在清华和天津大学都在精密仪器系,而浙大和华科则专业演变比较显著。不管叫什么名字,现代科技的专业与技术交叉融合非常厉害,从这点来讲不必太计较具体名称。从市场与就业角度来讲,有人认为光学工程只能在低端就业,这是严重的错误并容易误导他人。
接下来,讲讲计算机和电方面的,计算机方面,主要是图像处理,其中有算法也有结合硬件的,像fpga,dsp,gpu。不过不读博不建议搞算法,研究生真正学东西的也就一年,搞算法干不过计算机专业的,还是配合点硬件混口饭吃吧。而图像处理所招岗位也都要求会深度学习和机器学习,去做机器视觉系统的话则会要求C++、opencv、电路、运动控制板卡,典型能者多劳却不多得。
C. 算法工程师应该学哪些
一、算法工程师简介
(通常是月薪15k以上,年薪18万以上,只是一个概数,具体薪资可以到招聘网站如拉钩,猎聘网上看看)
算法工程师目前是一个高端也是相对紧缺的职位;
算法工程师包括
音/视频算法工程师(通常统称为语音/视频/图形开发工程师)、图像处理算法工程师、计算机视觉算法工程师、通信基带算法工程师、信号算法工程师、射频/通信算法工程师、自然语言算法工程师、数据挖掘算法工程师、搜索算法工程师、控制算法工程师(云台算法工程师,飞控算法工程师,机器人控制算法)、导航算法工程师(
@之介
感谢补充)、其他【其他一切需要复杂算法的行业】
专业要求:计算机、电子、通信、数学等相关专业;
学历要求:本科及其以上的学历,大多数是硕士学历及其以上;
语言要求:英语要求是熟练,基本上能阅读国外专业书刊,做这一行经常要读论文;
必须掌握计算机相关知识,熟练使用仿真工具MATLAB等,必须会一门编程语言。
算法工程师的技能树(不同方向差异较大,此处仅供参考)
1 机器学习
2 大数据处理:熟悉至少一个分布式计算框架Hadoop/Spark/Storm/ map-rece/MPI
3 数据挖掘
4 扎实的数学功底
5 至少熟悉C/C++或者Java,熟悉至少一门编程语言例如java/python/R
加分项:具有较为丰富的项目实践经验(不是水论文的哪种)
二、算法工程师大致分类与技术要求
(一)图像算法/计算机视觉工程师类
包括
图像算法工程师,图像处理工程师,音/视频处理算法工程师,计算机视觉工程师
要求
l
专业:计算机、数学、统计学相关专业;
l
技术领域:机器学习,模式识别
l
技术要求:
(1) 精通DirectX HLSL和OpenGL GLSL等shader语言,熟悉常见图像处理算法GPU实现及优化;
(2) 语言:精通C/C++;
(3) 工具:Matlab数学软件,CUDA运算平台,VTK图像图形开源软件【医学领域:ITK,医学图像处理软件包】
(4) 熟悉OpenCV/OpenGL/Caffe等常用开源库;
(5) 有人脸识别,行人检测,视频分析,三维建模,动态跟踪,车识别,目标检测跟踪识别经历的人优先考虑;
(6) 熟悉基于GPU的算法设计与优化和并行优化经验者优先;
(7) 【音/视频领域】熟悉H.264等视频编解码标准和FFMPEG,熟悉rtmp等流媒体传输协议,熟悉视频和音频解码算法,研究各种多媒体文件格式,GPU加速;
应用领域:
(1) 互联网:如美颜app
(2) 医学领域:如临床医学图像
(3) 汽车领域
(4) 人工智能
相关术语:
(1) OCR:OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程
(2) Matlab:商业数学软件;
(3) CUDA: (Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台(由ISA和GPU构成)。 CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题
(4) OpenCL: OpenCL是一个为异构平台编写程序的框架,此异构平台可由CPU,GPU或其他类型的处理器组成。
(5) OpenCV:开源计算机视觉库;OpenGL:开源图形库;Caffe:是一个清晰,可读性高,快速的深度学习框架。
(6) CNN:(深度学习)卷积神经网络(Convolutional Neural Network)CNN主要用来识别位移、缩放及其他形式扭曲不变性的二维图形。
(7) 开源库:指的是计算机行业中对所有人开发的代码库,所有人均可以使用并改进代码算法。
(二)机器学习工程师
包括
机器学习工程师
要求
l
专业:计算机、数学、统计学相关专业;
l
技术领域:人工智能,机器学习
l
技术要求:
(1) 熟悉Hadoop/Hive以及Map-Rece计算模式,熟悉Spark、Shark等尤佳;
(2) 大数据挖掘;
(3) 高性能、高并发的机器学习、数据挖掘方法及架构的研发;
应用领域:
(1)人工智能,比如各类仿真、拟人应用,如机器人
(2)医疗用于各类拟合预测
(3)金融高频交易
(4)互联网数据挖掘、关联推荐
(5)无人汽车,无人机
相关术语:
(1) Map-Rece:MapRece是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Rece(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。
(三)自然语言处理工程师
包括
自然语言处理工程师
要求
l
专业:计算机相关专业;
l
技术领域:文本数据库
l
技术要求:
(1) 熟悉中文分词标注、文本分类、语言模型、实体识别、知识图谱抽取和推理、问答系统设计、深度问答等NLP 相关算法;
(2) 应用NLP、机器学习等技术解决海量UGC的文本相关性;
(3) 分词、词性分析、实体识别、新词发现、语义关联等NLP基础性研究与开发;
(4) 人工智能,分布式处理Hadoop;
(5) 数据结构和算法;
应用领域:
口语输入、书面语输入
、语言分析和理解、语言生成、口语输出技术、话语分析与对话、文献自动处理、多语问题的计算机处理、多模态的计算机处理、信息传输与信息存储 、自然语言处理中的数学方法、语言资源、自然语言处理系统的评测。
相关术语:
(2) NLP:人工智能的自然语言处理,NLP (Natural Language Processing) 是人工智能(AI)的一个子领域。NLP涉及领域很多,最令我感兴趣的是“中文自动分词”(Chinese word segmentation):结婚的和尚未结婚的【计算机中却有可能理解为结婚的“和尚“】
(四)射频/通信/信号算法工程师类
包括
3G/4G无线通信算法工程师, 通信基带算法工程师,DSP开发工程师(数字信号处理),射频通信工程师,信号算法工程师
要求
l
专业:计算机、通信相关专业;
l
技术领域:2G、3G、4G,BlueTooth(蓝牙),WLAN,无线移动通信, 网络通信基带信号处理
l
技术要求:
(1) 了解2G,3G,4G,BlueTooth,WLAN等无线通信相关知识,熟悉现有的通信系统和标准协议,熟悉常用的无线测试设备;
(2) 信号处理技术,通信算法;
(3) 熟悉同步、均衡、信道译码等算法的基本原理;
(4) 【射频部分】熟悉射频前端芯片,扎实的射频微波理论和测试经验,熟练使用射频电路仿真工具(如ADS或MW或Ansoft);熟练使用cadence、altium designer PCB电路设计软件;
(5) 有扎实的数学基础,如复变函数、随机过程、数值计算、矩阵论、离散数学
应用领域:
通信
VR【用于快速传输视频图像,例如乐客灵境VR公司招募的通信工程师(数据编码、流数据)】
物联网,车联网
导航,军事,卫星,雷达
相关术语:
(1) 基带信号:指的是没有经过调制(进行频谱搬移和变换)的原始电信号。
(2) 基带通信(又称基带传输):指传输基带信号。进行基带传输的系统称为基带传输系统。传输介质的整个信道被一个基带信号占用.基带传输不需要调制解调器,设备化费小,具有速率高和误码率低等优点,.适合短距离的数据传输,传输距离在100米内,在音频市话、计算机网络通信中被广泛采用。如从计算机到监视器、打印机等外设的信号就是基带传输的。大多数的局域网使用基带传输,如以太网、令牌环网。
(3) 射频:射频(RF)是Radio Frequency的缩写,表示可以辐射到空间的电磁频率(电磁波),频率范围从300KHz~300GHz之间(因为其较高的频率使其具有远距离传输能力)。射频简称RF射频就是射频电流,它是一种高频交流变化电磁波的简称。每秒变化小于1000次的交流电称为低频电流,大于10000次的称为高频电流,而射频就是这样一种高频电流。高频(大于10K);射频(300K-300G)是高频的较高频段;微波频段(300M-300G)又是射频的较高频段。【有线电视就是用射频传输方式】
(4) DSP:数字信号处理,也指数字信号处理芯片
(五)数据挖掘算法工程师类
包括
推荐算法工程师,数据挖掘算法工程师
要求
l
专业:计算机、通信、应用数学、金融数学、模式识别、人工智能;
l
技术领域:机器学习,数据挖掘
l
技术要求:
(1) 熟悉常用机器学习和数据挖掘算法,包括但不限于决策树、Kmeans、SVM、线性回归、逻辑回归以及神经网络等算法;
(2) 熟练使用SQL、Matlab、Python等工具优先;
(3) 对Hadoop、Spark、Storm等大规模数据存储与运算平台有实践经验【均为分布式计算框架】
(4) 数学基础要好,如高数,统计学,数据结构
l
加分项:数据挖掘建模大赛;
应用领域
(1) 个性化推荐
(2) 广告投放
(3) 大数据分析
相关术语
Map-Rece:MapRece是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Rece(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。
(六)搜索算法工程师
要求
l
技术领域:自然语言
l
技术要求:
(1) 数据结构,海量数据处理、高性能计算、大规模分布式系统开发
(2) hadoop、lucene
(3) 精通Lucene/Solr/Elastic Search等技术,并有二次开发经验
(4) 精通Lucene/Solr/Elastic Search等技术,并有二次开发经验;
(5) 精通倒排索引、全文检索、分词、排序等相关技术;
(6) 熟悉Java,熟悉Spring、MyBatis、Netty等主流框架;
(7) 优秀的数据库设计和优化能力,精通MySQL数据库应用 ;
(8) 了解推荐引擎和数据挖掘和机器学习的理论知识,有大型搜索应用的开发经验者优先。
(七)控制算法工程师类
包括了云台控制算法,飞控控制算法,机器人控制算法
要求
l
专业:计算机,电子信息工程,航天航空,自动化
l
技术要求:
(1) 精通自动控制原理(如PID)、现代控制理论,精通组合导航原理,姿态融合算法,电机驱动,电机驱动
(2) 卡尔曼滤波,熟悉状态空间分析法对控制系统进行数学模型建模、分析调试;
l
加分项:有电子设计大赛,机器人比赛,robocon等比赛经验,有硬件设计的基础;
应用领域
(1)医疗/工业机械设备
(2)工业机器人
(3)机器人
(4)无人机飞控、云台控制等
(八)导航算法工程师
要求
l 专业:计算机,电子信息工程,航天航空,自动化
l 技术要求(以公司职位JD为例)
公司一(1)精通惯性导航、激光导航、雷达导航等工作原理;
(2)精通组合导航算法设计、精通卡尔曼滤波算法、精通路径规划算法;
(3)具备导航方案设计和实现的工程经验;
(4)熟悉C/C++语言、熟悉至少一种嵌入式系统开发、熟悉Matlab工具;
公司二(1)熟悉基于视觉信息的SLAM、定位、导航算法,有1年以上相关的科研或项目经历;
(2)熟悉惯性导航算法,熟悉IMU与视觉信息的融合;
应用领域
无人机、机器人等。
D. 入行机器视觉,视觉技术到底难不难学
入行机器视觉并不难,但是想学好机器视觉技术需要掌握以下几方面的知识和技能:
1、了解基本概念和原理:首先需要了解机器视觉的基本概念和原理:包括图像处理、计算机视觉、机器学习等相关领域的基本知识。
2、学习图像处理基础:学习图像处理的基础知识,包括图像变换、滤波、增强、恢复等技术,以及图像分割、边缘检测、特征提取等图像分析方法。
3、掌握技术视觉算法:学习并掌握机器视觉算法,包括目标检测、识别、跟踪等算法、以及深度学习算法在机器视觉中的应用。
6、关注最新技术动态:关注机器视觉领域最新技术动态和发展趋势,可以通过参加学术会议、阅读相关文献,关注行业动态等方式来跟进最新技术进展。
E. 学习了哪些知识,计算机视觉才算入门
计算机视觉是一个很大的范畴的总和,有两种学习方式,一种是阅读基础书,搞懂它的每一部分;另一种是找一个问题,看文献,编程实现,不断往深走。这两种学习方式是互补的,如果你看了好几年书还不能上手解决问题,或者只会解决某些很特殊的问题,对其他问题束手无策都不算成功。因此你需要把看书掌握一般知识和编程实验解决具体问题齐头并进。下面说你要干什么:
下载安装OpenCV2
OpenCV是一个非常强大的计算机视觉库,包括了图像处理、计算机视觉、模式识别、多视图几何的许多基本算法,有c++和Python两种接口。学习的材料首先是安装目录下doc文件夹里的帮助文档,提供所有函数的用法,任何时候对任何函数有疑问请查阅帮助文档,安装目录下还提供一大堆写好的演示程序供参考;《OpenCV_2 Computer Vision Application Programming Cookbook》是一本比较基础的介绍材料,它的缺点是没有介绍分类器(模式识别)方面的函数怎么用。
虽然网上还有其他很多流行的库,比如处理特征点的VLfeat,处理点云的PCL,处理GPU运算的CUDA,处理机器人问题的ROS和MRPT,但是这些都是你在解决具体问题时才会考虑去用的东西,如果你想快速读取视频、做个屏幕交互程序、使用流行的分类器、提取特征点、对图像做处理、进行双目重建,OpenCV都提供相应函数,因此在你不知道该把余生用来干什么的时候,先装OpenCV学习。
读综述
Computer Vision: Algorithms and Application。这本书用1000页篇幅图文并茂地浏览了计算机视觉这门学科的诸多大方向,如果你不知道计算机视觉是一门搞什么的学科,这本书是你绝佳的选择。它的优点是涉猎了大量文献,缺点是缺乏细节,因此很显然只读这本书你根本没法上手工作,因为它讲的实在是太粗糙了。如果你对其中的某一部分感兴趣,就请去读相关文献,继续往下走,这就是这本书的意义。有中文版,但是翻译的不好,也不建议你细细去读,看看里面的图片即可。
Computer Vision: Models, Learning, and Inference:这本书是我认为研究生和高年级本科生入门计算机视觉最好的教材。它内容丰富,难度适中,推导翔实,语言流畅,强烈推荐你花2个月时间把这本书读完。
多视图几何
Multiple View Geometry in Computer Vision:这本书是多视图几何的圣经,意思就是说想搞三维重建或者图像测量之类的项目,这本书是必读的。它需要你有线性代数的基本知识,会SVD分解即可。第一版有中文版,翻译的非常好,但是已经绝版了,可以上淘宝高价买一本,第二版添加的内容很少,在网上可以下载到。
模式识别
模式识别核心就是训练一个函数来拟合手头的数据,如果数据的标签是离散的,称为分类问题,如数据的标签是连续的,称为回归问题;分类又分有监督分类和无监督分类,有监督分类器有神经网络、支持向量机、AdaBoost、随机场、树模型等等。当你拿到一大堆数据,需要从里面找关系的时候,一般都需要使用模式识别算法来训练一个函数/分类器/模型,因此模式识别是机器学习的核心。
《模式分类(第二版)》:这是一本适合普通读者阅读的教材,介绍了模式识别中经典的分类器,讲解细致,语言生动,难度适中,每一个算法都有伪代码。
The Elements of Statistical Learning:这本书使用严谨的数学工具分析模式识别算法,它比较难,但是非常深刻。每拿到一个模型它都会分析这个模型在数学上是如何构造的,并且推导模型的分类错误率。分析和推导是这本书的精髓。
Pattern Recognition and Machine Learning:这是一本从贝叶斯学派的角度分析模式识别模型的书,它使用的工具主要是概率论,比较难,非常深刻,内容非常丰富。
虽然这两本书很难,但是它们用到的数学知识不过是基本的概率论和线性代数,只是用的比较活,计算机视觉这个学科需要的数学知识也是这个水平。
图形学
图形学教材首先推荐《计算机图形学与几何造型导论》,这本书用流畅的语言介绍了图形学的基础知识,选材有趣,推导简洁但是绝不跳步走,保证你能看懂而且不会看烦。
光线追踪器我看过一本薄的《Realistic Ray Tracing》和一本厚的《Ray Tracing from the Ground Up》,两本书都有代码。后一本内容极其丰富,有中文版,翻译尚可。后一本唯一的缺点就是讲不清楚BRDF,但这恰恰是前一本的亮点。
还有一些比较偏的书,比如偏微分方程在图像处理中的应用、细分、压缩感知、马尔科夫随机场、超分辨率分析,概率机器人、多尺度几何分析,这些领域都有各自的名著,你在某个领域深挖的时候,类似这样的书可能会出现在参考文献中,那时再看不迟。
读文献
写到书里的知识基本上都有些过时,你得通过看文献掌握各个领域最新的发展动态。计算机视觉的顶级期刊有两个PAMI和IJCV,顶级会议有ICCV和CVPR,在科学网—[转载]计算机视觉方向的一些顶级会议和期刊有更加详细的介绍。
F. 本科毕业设计多少代码量比较合适matlab400行左右够吗
本科毕设的话这个工作量差不多了,估计是你完成的太早了,做再多老师也会说不内行的……就是为了让你继容续前进!
你可以做做单纯Hough变换、直线检测、圆检测等模块。标准C的话可以看看Opencv的Hough部分,不调用库函数(除了文件读取)编写也不难!