如何学习机器视觉,机器视觉如何入门。
写在前面的话:
刚毕业到公司做人工智能、机器视觉小组,项目启动没多久属于初期研发阶段。作为一个年轻的BOY进入机器视觉这一行,水很深。
学习机器视觉、人工智能前期需要学习图像基本知识,框架有Opencv,数学有CNN、Convolution、SVM、K-Means等知识。为了能够方便公司对后来的新人更快地上手,在这里总结机器视觉、人工智能的前期知识。
学习目标:
- 1、熟悉Linux开发环境,熟练运用开发工具
- 2、个人学习机器视觉为主,能独立进行模块开发
开发环境搭建:
-
- Linux操作系统:安装LINUX、使用LINUX常用命令、熟悉LINUX下常用软件、配置:
- 安装LINUX
- 使用LINUX常用命令
- 熟悉LINUX下常用软件、配置
- 熟悉ftp,telnet,ssh,修改网络网卡配置
- Linux操作系统:安装LINUX、使用LINUX常用命令、熟悉LINUX下常用软件、配置:
- 2、linux系统知识(如果你这都不会,我就只能哎啦)(1天)
开发环境
开发工具Eclipse: http://www.eclipse.org/downloads/
(笔者本人用Macbook air的Xcode进行C++开发,最新手痒升级了个pro,终于摆脱内存每次开发都占用53%的僵局)
学习计划
学习任务1 (2天)
目的:准备工作
任务1:
- 安装Linux操作系统,并在Linux上安装开发软件。
- 熟悉Linux基本命令。
- 在Linux上安装交叉编译工具。
- 熟悉数字图像处理
- 学习C/C++编程规范,一定要看Google的C++编程规范,一个字“棒”
任务2:
- c++编写一个文件夹管理类:
- 可以递归遍历指定路径的所有文件;
- 编写makefile文件进行编译;
- 使用makefile文件;
学习任务2 (1天)
目的:
学会安装Opencv并对Opencv有初步了解;对使用C++进行图像处理有初步了解;学会编写Makrfile文件,并对cmake有初步了解。
任务:
- 安装opencv3.0(笔者个人使用了opencv2.4.13,因为3装起来太多error,搞了一个多小时opencv3后因耽误工作效率决定opencv2,果断2分钟搞定)
- 了解图像的色彩空间(RGB,YUV等),熟悉图像的基本处理方式,例如:膨胀、腐蚀、二值化、均衡化、灰度图等;
- 使用opencv3.0编写c++程序,对图片进行二值化、均衡化,转换灰度图;并编写Makrfile文件对进行编译;
学习任务3 (1天)
目的:
学习基础知识,能够opencv进行独立编码,掌握opencv的基本操作;熟悉对图像的具体操作方式和图像的直方图统计方式。
任务:
- 写一个彩色图片中的物体进行边缘检测,能识别出物体的特征区域轮廓。
- 写一个程序用直方图统计彩色图片像素
- 写一个程序能进行直方图均衡化
学习任务4 (3天)
目的:
学习SVM原理和PVA特征提取方法,能够独立掌握使用Opencv开发的能力。
任务:
- 学习图像图像三大特征提取方式(LBP特征,PCA特征,HOG特征)
PCA特征应用:人脸识别
(1)收集人脸库
(2)将人脸库划分为训练库和测试库
(3)使用opencv,将训练库用PCA进行降维,输入给svm进行训练;
(4)对测试图片进行测试,输出所属的人名;
(5)输出平均脸的图片;
学习任务5 (2天)
目的:
学习了解图像的特征提取方式;能够独立掌握使用Opencv开发的能力。
任务:
- 学习图像图像三大特征提取方式(LBP特征,PCA特征,HOG特征)
- HOG特征应用:行人检测
HOG特征应用:行人检测
(1)基于opencv
(2)收集行人图片,提取图片的HOG特征训练;
(3)识别出图片中的行人
学习任务6 (2天)
目的:
学习了解人工智能相关领域的知识,特别是SVM、神经网络、CNN、图像卷积等知识哦。
任务:
- 人工智能学习
(1)、了解基本的数学算法公式
(2)、了解深度学习的基本原理,熟悉神经网络
(3)、了解opencv、caffe的框架体系,了解当前的已经比较成熟的人脸识别、车牌识别、物体识别案例