1. 计算机视觉概述
研究理论和应用:
• 研究如何使机器“看”的科学
• 让计算机具有人类视觉的所有功能
• 让计算机从图像数据中,提取有用的信息并解释
• 重构人眼;重构视觉皮层;重构大脑剩余部分
模拟人类视觉的优越能力:
• 识别人、物体、场景
• 估计立体空间、距离
• 躲避障碍物进行导航
• 想象并描述故事
• 理解并讲解图片
弥补人类视觉的缺陷:
• 关注显著内容、容易忽略很多细节
• 不在乎、不擅长精细感知
• 容易受幻觉干扰
• 描述主观、模棱两可
• 不善于长时间稳定的执行同一个任务
• 当然,还有视觉障碍人士
计算机视觉一般使用感知设备(如摄像头)模拟人的眼睛,使用计算设备(如CPU/GPU/FPGA)模拟人的大脑,如下图所示。
高度复合学科:
• 工程
• 计算机科学
• 数学
• 心理学
• 生物学
• …
2个主要研究维度:
• 语义感知(semantic)
• 几何属性(Geometry)
感知上的本质差异:
人工智能目标: • 解决”像素值”与”语义”之间的鸿沟(Gap)
2. 研究挑战
挑战 | 举例 |
---|---|
视角变化 | |
光照变化 | |
尺度变化 | |
形态变化 | |
背景混淆干扰 | |
遮挡 | |
类内物体的外观差异 |
3. 内容简介
部分I:计算机视觉的基础
⋄ \diamond ⋄ 图像预处理
⋄ \diamond ⋄ 图像特征及描述
⋄ \diamond ⋄ 未有深度学习之前
部分II:深度学习的理论基础
⋄ \diamond ⋄ BP神经网络详解
⋄ \diamond ⋄ 深度学习基础
部分III:深度学习在计算机视觉中的应用
⋄ \diamond ⋄ 图像分类 ← \leftarrow ← 卷积神经网络CNN
⋄ \diamond ⋄ 图像检测 ← \leftarrow ← 区域卷积神经网络R-CNN
⋄ \diamond ⋄ 图像分割 ← \leftarrow ← 全卷积神经网络FCN
⋄ \diamond ⋄ 图像描述 ← \leftarrow ← 迭代神经网络RNN
⋄ \diamond ⋄ 图像生成 ← \leftarrow ← 生成对抗网络GAN
3.1 计算机视觉的基础
- 图像预处理: 1. 图像显示与存储原理
2. 图像增强的目标
3. 点运算:基于直方图的对比度增强
4. 形态学处理
5. 空间域处理:卷积
6. 卷积的应用(平滑、边缘检测、锐化等)
7. 频率域处理:傅里叶变换、小波变换 - 图像特征及描述: 1. 颜色特征
⋄ \diamond ⋄ 量化颜色直方图
⋄ \diamond ⋄ 聚类颜色直方图
2. 几何特征
⋄ \diamond ⋄ Edge,Corner,Blob
3. 基于关键点的特征描述子
⋄ \diamond ⋄ SIFT,SURF,ORB
4. 其他特征提取(LBP、Gabor) - 深度学习之前的方法: 1. 图像分割
⋄ \diamond ⋄ 基于阈值、基于边缘
⋄ \diamond ⋄ 基于区域、基于图论
2. 人脸检测
⋄ \diamond ⋄ Haar-like特征+级联分类器
3. 行人检测
⋄ \diamond ⋄ HOG+SVM
⋄ \diamond ⋄ DPM
3.2 深度学习的理论基础
- 神经网络与深度学习基础: 1. 神经网络
⋄ \diamond ⋄ 神经元
⋄ \diamond ⋄ 前馈网络
⋄ \diamond ⋄ 梯度下降
⋄ \diamond ⋄ 误差反向传播
2. 深度学习
⋄ \diamond ⋄ 与传统神经网络的区别
⋄ \diamond ⋄ 目标函数
⋄ \diamond ⋄ 改进的梯度下降
⋄ \diamond ⋄ 避免过适应
3.3 深度学习在计算机视觉中的应用
-
识别 → \rightarrow →内容是什么? 1. 人脸识别
2. 字符识别
3. 车牌识别
4. 行为识别
5. 步态识别 -
基于深度学习的方法:图片分类 ← \leftarrow ←有没有?
卷积神经网络CNN: • 计算机视觉中的基础网络
• 有监督深度模型时代的起点
• AlexNet → \rightarrow →VGG → \rightarrow →GoogLeNet → \rightarrow →ResNet → \rightarrow →ResNeXt
• GoogLeNet
• Inception V1 → \rightarrow → V2 → \rightarrow → V3 → \rightarrow → V4
• Inception ResNet V1 → \rightarrow → V2
• 结构趋势
• 更深(Depth):8层 → \rightarrow → 1000+层
• 更宽(Width):1分支 → \rightarrow → 4+分支
• 更多基数(Cardinality ):1 → \rightarrow → 32 -
基于深度学习的方法:检测 → \rightarrow →目标在哪儿? 1. 物体检测
2. 人脸检测
3. 姿态检测
区域卷积神经网络R-CNN: • 让基础网络具备区域输出能力
• 第1阶段:R-CNN → \rightarrow → SPP-Net → \rightarrow → Fast/Faster R-CNN
• 第2阶段:YOLO → \rightarrow → SSD → \rightarrow → R-FCN
• 目的
• 检测更快、更准确
• 工业应用
• 智能监控
• 辅助驾驶 -
基于深度学习的方法:图片分割 → \rightarrow →区域轮廓? 1. 前景分割
2. 语义分割
全卷积神经网络FCN: • 让基础网络做像素输出
• FCN → \rightarrow →SegNet/DeconvNet → \rightarrow →DeepLab
• 目的
• 语义推断
• 分割更精确
• 工业应用
• 辅助驾驶
• ……
• 反卷积/转置卷积
应用: 对医学、生物影像中的器官、 组织或细胞进行分割,即判断出影像中的每一个像素点是否属于器官、组织或细胞。
生物医疗领域的图像分割。
U-net和V-net。 -
视觉&语言: 1. 图片描述 (Captioning)
2. 图片问答(Question Answering)
递归神经网络RNN: • 具有记忆功能,构建不定长序列数据的模型
• Vanilla RNN → \rightarrow →LSTM → \rightarrow →GRU
• 应用范围
• 文本序列
• 区域序列
• 视频序列
• 研究问题
• 图片描述、问答
• 机器翻译 -
图像生成: 1. 样本分布学习
2. 超分辨率
3. 以图生文
4. 语义分割
生成对抗网络GAN: • 网络结构
• 生成器网络( Generator )
• 判别器网络( Discriminator )
• 网络改进
• GAN → \rightarrow →CGAN → \rightarrow → DCGAN → \rightarrow → wGAN
• SRGAN
• 应用范围:
• 样本数据分布(生成)学习
• 有监督问题的优化 -
图片检索 → \rightarrow →相似图片
4. 开源库与应用环境介绍
4.1 实践环境
- Windows
- OpenCV 3.4
- Python 3.6+
- TensorFlow 1.9+
- Keras等
4.2 开源库
- OpenCV
• 函数库:计算机视觉,机器学习
• 优化算法:2500+
• 编程语言:C, C++, Java, Python, MATLAB
• 系统:Windows, Linus, Mac OS, iOS, Android
• 并行计算:CUDA, OpenCL
• URL:http://opencv.org/ - Caffe
• 函数库:深度学习
• 发布方:Berkeley Vision and Learning Center (BVLC)
• 编程语言:C++, Python
• 并行计算:CUDA
• URL:http://caffe.berkeleyvision.org
• 特色:
• 在配置中定义模型并优化,不需要硬编码
• 代码的可扩展性强
• 运行速度非常快 - Torch(PyTorch)
• 函数库:深度学习
• 发布方:Facebook
• 编程语言:Lua(Python)
• 并行计算:CUDA
• URL:https://torch.ch(http://pytorch.org/)
• 特色:
• 使用动态计算图,提供了更快速的方法
• 提供了运行在 GPU/CPU 之上、基础的张量操作库
• 支持共享内存的多进程并发(multiprocessing )库 - Tensorflow
• 函数库:深度学习
• 发布方:Google
• 编程语言:Python
• 并行计算:CUDA
• URL: https://www.tensorflow.org/
• 特色:
• 多机、多GPU分布式
• 适用于超大模型,超大数据集
• Tensorboard将训练过程可视化 - Keras
• 函数库:深度学习
• 发布方: Franois Chollet
• 编程语言:Python
• URL:https://keras.io
• 特色:
• 兼容 Theano 和 Tensorflow 的深度学习高级包
• 用户友好,高度模块化,易扩展性
5. 环境搭建
5.1 安装Tensorflow
CPU版本Tensorflow安装步骤 → \rightarrow →TensorFlow的安装(Anaconda+TensorFlow+PyCharm)。
5.2 安装opencv
打开命令窗口,输入pip install opencv-python
后回车,进行安装。等待一会,出现Successfully installed opencv-python-4.5.2.52
后表示安装成功!
安装成功后,使用如下所示的代码进行验证。
#导入cv模块
import cv2 as cv
#读取图像,支持 bmp、jpg、png、tiff 等常用格式
img = cv.imread(r"C:\Users\Administrator\Desktop\test.jpg")
#创建窗口并显示图像
cv.namedWindow("Image")
cv.imshow("Image",img)
cv.waitKey(0)
#释放窗口
cv2.destroyAllWindows()
运行上述程序,会将C:\Users\Administrator\Desktop\test.jpg
路径下的图片在窗口显示出来,说明opencv安装成功。
转载:https://blog.csdn.net/HUAI_BI_TONG/article/details/117002344