最近看了点关于机器视觉的资料,做下自我理解的总结
1.机器视觉Computer Version 与OpenCV的关系
OpenCV是机器视觉的开源库,提供基本的图像和视频处理模块及函数,并且openCV提供各种代码接口如python,C++,java等。
OpenCV从1999年发展到现在其核心的功能模块包括:
二维与三维特征工具箱
运动估算
人脸识别
姿势识别
人机交互
运动理解
对象检测
移动机器人
分割与识别
视频分析
运动跟踪
图像处理
机器学习
深度神经网络
(以上模块出自《OpenCV Android开发实战》)
2.人工智能,机器学习,神经网络,深度学习的关系
如下图所示最基本的关系图,详情参考
https://www.zhihu.com/question/57770020
目前传统的机器学习算法用的已经很少,深度学习算法是基于神经网络的。深度学习常用的两个领域就是机器视觉CV和自然语言处理NPL(Natural Language Processing)。
3.机器视觉可解决的问题
(1)分类任务:例如识别一堆图片中是猫是狗,识别人物,风景
(2)检测任务:识别图片中物体的名称和位置框图标出如下图所示
(3)分割任务:识别前景与背景,语义分割同类识别为同一类不区分具体的单位例如一张图片中和和多个人就识别为人,实例分割就是区分每一个个体很多个人区分为n个人 如下图所示
(4)聚类:没有标注数据,以图搜图
(5)降噪:超分辨率重构
(6)图像翻译
(7)生成图片
以上参考《机器学习VS复杂系统》中用深度学习玩图像的七重关卡。
(8)由以上可引申出目标追踪,深度估计,姿态估计,三维重建等其他机器视觉任务。
4.OpenCV与 深度学习算法的区别(CV领域的深度学习算法)
(以我现在目前所知范围理解)OpenCV更像一个工具来处理图片,CV深度学习算法是训练模型完成特定的机器视觉任务。
5.机器视觉开发环境搭建
(1)Anaconda安装 (相当于python环境全家桶包)
(2)OpenCV包安装(学习openCV需要安装)
(3)cuda安装
(4)PyTorch安装 (深度学习框架)
(5)mmlab安装(提供各种算法)