计算机视觉基础入门课程(从算法到实战应用)

开课时间:1月1日正式开课,每周定时更新
开课时长:24个课时,12次课
  • 图像分类
  1. 神经网络原理
  2. 卷积神经网络介绍
  3. 利用caffe搭建深度网络做图像分类
图像分类
泛化能力
     1.图像特征:color,local shape,global  shape,texture.
       传统的特征方法:
            SITF(local shape用在图像分类/匹配,128维-64)
            HoG(用在检测,处理形状比较好32维)
            LBP(人脸)
            Harr(很多组滤波器,检测边缘比较强,处理形状比较好)
        简单的识别效果挺好 www.vlfeat.org/  提供代码进行检测
     2.支持向量机SVM
        CNN特征:学习出来的,通过大量的数据学习,会有很好的泛化能力
        通过神经网络学习出来的
神经网络做图像分类
  1.  神经网络的构成:参考机器学习内容
  2.  卷积滤波的计算,输出尺寸=(输入尺寸+2*pad-kernel_size)/步长+1
  3.  池化层(pooling layer)最大值池化:特征更加紧凑,同时具有位移不变性
  4.  全连接层:作为输出层
       常见损失函数:sigmoid, softmax, euclidean, contrastive, triplet loss
 
常见图像分类的卷积神经网络介绍(CNN)
  • AlexNet
5个卷积成,2个圈连接层
  • VGGNet
可以有11,13,16,19层
  • GoogleNet
  • ResNet
训练技巧,防止过拟合
1.数据增强(data augmentation):水平反转,随机裁剪和平移变换,颜色、关照变换
2.Dropout
3.L1,L2正则化项
4.Batch Normalization
 
 
 
 
 
 
 
 
 
 
 
 
 
 
[展开全文]
 
图像分类与深度卷积模型
图像分类
神经网络原理
卷积神经网络介绍
利用caffe搭建深度网络做图像分类
图像分类
泛化能力
     1.图像特征:color,local shape.global          shape,texture.
传统的特征方法:SITF(local shape用在图像分类/匹配,128维-64),HoG(用在检测,处理形状比较好32维),LBP(人脸),Harr(很多组滤波器,检测边缘比较强,处理形状比较好)简单的识别效果挺好 www.vlfeat.org/  提供代码进行检测
     2.支持向量机SVM
CNN特征:学习出来的,通过大量的数据学习,会有很好的泛化能力
通过神经网络学习出来的
神经网络做图像分类
神经网络的构成
卷积滤波的计算,输出尺寸=(输入尺寸+2*pad-kernel_size)/步长+1
池化层(pooling layer)最大值池化:特征更加紧凑,同时具有位移不变性
全连接层:作为输出层
常见损失函数:sigmoid,softma(多分类)x,euclidean,contrastive,triplet loss
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
[展开全文]

课时2

1.泛化能力是衡量图像分类的一个重要指标

2.图像分类三部曲:(1)提取特征(2)用训练集和对应标签训练一个分类器(3)做出预测

3.特征分为全局特征和局部特征,全局特征可以通过颜色,形状,局部特征可以通过纹理(比如人脸) SIFI特征,HOG特征(用于目标检测精确检测出目标形状)LBP(人脸)Harr(形状,边缘)。 不同的任务选取不同的特征检测。

3.SVM(支持向量机)

4.CNN特征 它是通过构造神经网络学习而来。

5.激励函数是用来模拟神经元运算的分线性函数,然后大量的叠加来解决复杂的问题。

6.线性卷积(线性) 输出尺寸=[(输入尺寸+2*填充单位)-卷积核大小]/步长+1

7.池化 :矩阵的压缩 有最大池化,平均池化等,有位移不变性,使得特征更紧凑

8.全连接层:对向量进行运算,做输出层

9.loss 交叉熵用于二分类,比如判断是不是背景;sofmax用于多分类;欧氏距离用做回归;对比损失函数,图像匹配检测。

[展开全文]

图像分类:

1. 目标

2. 挑战:光照变化、形变、尺度、类内变化

3 定义:  y=f(x)

4 预测函数指标:泛化能力

  训练集和标签

 如何提高泛化能力? 图像特征

5. 训练和测试流程

    输入图像-->提取特征--->SVM分类器--->标签输出

6. 手工图像特征:

      颜色、全局形状、局部形状、纹理

    

7. 图像特征:  SIFT、HoG、LBP、Harr

8 分类工具:SVM

       以Iris兰花分类为例

9 CNN特征:深度学习

     输入图像-->神经网络--->标签输出

10 卷积层可视化

     低层特征--》中层特征--》高层特征--》

[展开全文]

挑战:光照,形变,大小尺度,类内变化
分类任务:y=f(x)
f是预测函数,x是图像特征。需要训练这样的f分类框架。
为了提供模型的泛化能力,需要对图像的特征进行很好的刻画。训练集应该尽可能多的包含样本不同形态,不能以RGB图像扔进网络,而是图像特征。

**手工设计的特征:**
全局特征:颜色、形状(把形状扣出来,加一个PCA的降维);
局部特征:shape context、纹理(很多目标有均匀分布的纹理,gabor对纹理特征提取)
**SIFT特征**:局部特征,128维,计算一个小的图像区域,分成4×4的16个格,每个格子计算一个8维的梯度vector,然后将16个vector拼成一个128的特征。主要用于**图像分类**、**图像匹配**。
**Hog特征**:可以很好地捕捉目标的形状,用于**检测**、**目标跟踪**。
**LBP特征**:对局部区域进行编码,用于**人脸分类**。
**Harr特征**:多个滤波器,对不同部分有不同相位。

[展开全文]
  • 图像特征
SIFT特征:局部特征,128维,计算小的图像区域,把该区域分为4*4=16个小区域,每个区域里是8维的特征的向量(图像分类、图像匹配)
HoG特征(目标检测):擅长处理目标的形状,因此一般用目标检测、目标追踪
LBP特征(人脸识别):将局部特征进行编码,对于人脸分类,实际使用的是一些关键部位(区域),LBP擅长捕捉这些区域的响应
Harr特征:由不同的滤波器组成,处理不同的特征,比如A对竖直的边缘的检测效果好,B对横平的边缘检测好,C对连续变化的边缘检测好,D则对斜侧边缘检测好(对形状敏感)
 
 
  • 卷积之后的图片大小:输出尺寸 = (输入尺寸+2*pad-kernel_size)/stride+1        pad是指填充
 
  • 池化层(pooling layer):最大值池化和平均值池化,可以使特征表达更加紧凑,同时具有位移不变性
 
  • 损失函数,不同损失函数对应不同的任务
sigmoid_cross_entropy_loss(交叉熵损失函数)
使用sigmoid函数作为输出层
其损失函数为            
常用于二分类问题
 
 
softmax_loss(softmax损失函数)
使用softmax作为输出层
其损失函数
常用于多分类问题
 
euclidean_loss(欧式距离损失函数)
[展开全文]

三大任务:

识别,检测(recogniaztion+localization),分割,其难度逐渐提升)

应用:

1.目标追踪

2.视频分割(对于无人驾驶十分重要)

3.图像风格迁移(GAN),直播换脸(CycleGan)

4.视频生成(lstm,预测未来,股票预测,可以先预测来分割以减少计算量)

lstm(hochreiter,97)是rnn(williams,89)的改进版

视觉识别演进:HOG、DPM ->AlexNet(RCNN,8layers) -> VGG(RCNN, 16layers) ->ResNet(Faster RCNN, 101layers)

主流深度学习平台:TensorFlow,caffe,Pytorch

图像识别:Alexnet,VGGnet,GoogleNet,RestNet,DenseNet

目标检测:

Fast-rcnn,faster-rcnn,Yolo,Retina-Net

图像分割:

FCN,Mask-Rcnn

目标跟踪:

GOTURN,ECO

图像生成:

GAN,WGAN(可以考虑让静态图片动起来)

光流:FlowNet(辅助性很强的工作)

视频分割:Segnet(无人驾驶基础)

[展开全文]

import numpy as np

import matplotlib.pyplot as plt

from sklearn import svm, datasets

# 导入数据集

iris = datasets.load_iris()

X = iris.data

y = iris.target

h = .02 # 网格中的步长

# 创建支持向量机实例,并拟合出数据

C = 1.0 # SVM正则化参数

svc = svm.SVC(kernel='linear', C=C).fit(X, y) # 线性核

rbf_svc = svm.SVC(kernel='rbf', gamma=0.7, C=C).fit(X, y) # 径向基核

poly_svc = svm.SVC(kernel='poly', degree=3, C=C).fit(X, y) # 多项式核

lin_svc = svm.LinearSVC(C=C).fit(X, y) #线性核

# 创建网格,以绘制图像

x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1

y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1

xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))

# 图的标题

titles = ['SVC with linear kernel', 'LinearSVC (linear kernel)', 'SVC with RBF kernel', 'SVC with polynomial (degree 3) kernel']

 

for i, clf in enumerate((svc, lin_svc, rbf_svc, poly_svc)):

# 绘出决策边界,不同的区域分配不同的颜色

plt.subplot(2, 2, i + 1) # 创建一个2行2列的图,并以第i个图为当前图

plt.subplots_adjust(wspace=0.4, hspace=0.4) # 设置子图间隔

Z = clf.predict(np.c_[xx.ravel(), yy.ravel()]) #将xx和yy中的元素组成一对对坐标,作为支持向量机的输入,返回一个array

# 把分类结果绘制出来

Z = Z.reshape(xx.shape) #(220, 280)

plt.contourf(xx, yy, Z, cmap=plt.cm.Paired, alpha=0.8) #使用等高线的函数将不同的区域绘制出来

# 将训练数据以离散点的形式绘制出来

plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Paired)

plt.xlabel('Sepal length')

plt.ylabel('Sepal width')

plt.xlim(xx.min(), xx.max())

plt.ylim(yy.min(), yy.max())

plt.xticks(())

plt.yticks(())

plt.title(titles[i])

plt.show()

[展开全文]

图像分类

挑战:

1)光照变化

2)形变

3)尺度变化

4)类内变化

f为训练的model,y为输出的标签(不应该是预测值吗?)

训练集要尽量多的包含样本的不同形态。图像不能直接以RGB的形式扔进模型,需要用图像特征来描述图像。

手工设计特征

1、全局特征:

1)颜色。颜色直方图。

2)形状(把形状抠出来,加一个PCA的降维)。

2、局部特征:

1)shape context

2)纹理(很多时候目标有均匀分布的纹理,gabor对纹理特征提取)

SIFT特征:局部特征。一般是128维,他会计算一个小的图像区域,这个小的图像区域分成了4*4的16个格,每个格子里面会计算一个8维的一个梯度的wicter。然后把16个wicter拼成一个128的一个特征,来作为对这块区域的描述。主要用于图像分类和图像匹配任务。

Hog特征:主要用在检测里面,Hog对于处理目标的形状非常好,能精确捕捉目标的形状。检测、目标跟踪。

LBP特征:对一块局部的区域进行编码,用于人脸分类效果很好。

Harr特征:有多个滤波器,对于不同部分有不同相应。

神经网络由神经元组成,神经元用激活函数来描述。

卷积神经网络网络:

卷积层+池化层+全连接层

损失函数反向传导调整参数。

[展开全文]

计算机三大任务

1)识别

现在已经往更专业的方向做

计算机视觉更精细的识别,如工业上更多特定的目标识别:车牌识别、人脸识别(表情识别)。

2)目标检测=识别+定位

对于学术界来说是一个有趣的方向,因为非常有用但又比较难做。

给定一张图像,我们需要把我们感兴趣的前景目标检测出来,并贴上类别标签。

应用:

行人检测。在一个智能摄像头的终端,我需要把摄像头中的所有行人检测出来,用处:如果摄像头中的行人的人流量非常大,就可以把摄像头里面的人群给估计出来,对于将来可能发生的异常事件,起到一个预警作用。

车辆检测。通过检测道路中的车辆,就可以估计车辆的个数,来实时监控道路车辆的密度,对于疏散城市交通也是非常有帮助的。

3)图像分割

a、图像语义分割

给定一张图片,要想将整个图片割成一块一块独立的个体。我要知道哪些地方是前景哪些地方是背景,目标是什么。

b、个体的分割=检测+分割

不仅要区分不同的目标,还要知道目标在那个位置。

[展开全文]

图像分类具有的挑战?

a. 光照的变化

b. 形变

c. 类内变化

如何用数学的方法描述图像的分类?

常用的损失函数softmax

网络的泛化能力?

1. 制作合适的训练集(数据太重要了)

图像特征的提取?

深度方法vs传统方法

    a. 颜色直方图(全局特征)

    b. 形状特征(全局特征)

    c. 局部特征

    d. 纹理特征

传统的图像特征?

SIFT 一般是128维的

HOG 一般使用在检测里面,对形状描述比较好

LBP 用于人脸

Harr 角点特征,对于处理形状比较敏感的任务比较有用

svm的原理?

常用的激活函数?

基本的神经网络-》卷积神经网络?

常见的损失函数?

       最重要的是siamese网络contrastive loss

[展开全文]

图像分类具有的挑战?

a. 光照的变化

b. 形变

c. 类内变化

如何用数学的方法描述图像的分类?

常用的损失函数softmax

网络的泛化能力?

1. 制作合适的训练集(数据太重要了)

图像特征的提取?

深度方法vs传统方法

    a. 颜色直方图(全局特征)

    b. 形状特征(全局特征)

    c. 局部特征

    d. 纹理特征

传统的图像特征?

SIFT 一般是128维的

HOG 一般使用在检测里面,对形状描述比较好

LBP 用于人脸

Harr 角点特征,对于处理形状比较敏感的任务比较有用

svm的原理?

常用的激活函数?

基本的神经网络-》卷积神经网络?

常见的损失函数?

       最重要的是siamese网络contrastive loss

[展开全文]

AlexNet : 5 个卷积层 2 个全连接层

VGGNet : 层数更多, feature map 维度不断在增加尺寸在减少

GoogleNet : 使用了1*1的卷积,用来降维

    average pooling

ResNet : 使用残差模块,突破了深度极限

 

训练技巧 - 预处理:

1. 数据增强(Data augumentation):

水平翻转, 随机裁剪, 平移变换, 颜色光照变化

训练技巧 - 防止过拟合:

2. Droupt 

其他技巧:

1. 正则化

2. batch Normalization

 

caffe :

主要的组成部分 Blob layer Net

 

[展开全文]

三大任务:

识别,检测(recogniaztion+localization),分割,其难度逐渐提升)

应用:

1.目标追踪

2.视频分割(对于无人驾驶十分重要)

3.图像风格迁移(GAN),直播换脸(CycleGan)

4.视频生成(lstm,预测未来,股票预测,可以先预测来分割以减少计算量)

lstm(hochreiter,97)是rnn(williams,89)的改进版

视觉识别演进:HOG、DPM ->AlexNet(RCNN,8layers) -> VGG(RCNN, 16layers) ->ResNet(Faster RCNN, 101layers)

主流深度学习平台:TensorFlow,caffe,Pytorch

图像识别:Alexnet,VGGnet,GoogleNet,RestNet,DenseNet

目标检测:

Fast-rcnn,faster-rcnn,Yolo,Retina-Net

图像分割:

FCN,Mask-Rcnn

目标跟踪:

GOTURN,ECO

图像生成:

GAN,WGAN(可以考虑让静态图片动起来)

光流:FlowNet(辅助性很强的工作)

视频分割:Segnet(无人驾驶基础)

[展开全文]

图像分类:

挑战:1、光照条件;

2、形变;

3、同一类的多种展现形式。

定义:基于误差最小化构建分类函数模型,然后使用模型预测。

如何评价分类器的好坏:泛化能力

如何提高泛化能力:通过特征描述图像。

三部曲:a)提取特征;b)根据数据和标签训练分类器;c)预测分类。

图片特征:

全局特征:颜色直方图,形状;

局部特征:某个部位;

纹理特征:经过滤波得到纹理。

例如:sift(局部特征)、hog(检测)、LBP(人脸识别)、harr

分类器:svm间隔最大化

更好的特征:CNN特征

原因:学习出来的CNN特征具有更好的泛化能力,具有平移、尺度、旋转等不变性,鲁棒性比较好。

如何学习CNN特征:构建神经网络。

构建卷及网络:激活函数;卷基层(底层特征、中层以及高层);池化层;全连接层;损失函数

误差反传:正传计算出损失;反向传播误差,计算梯度和更新参数。

[展开全文]
模型泛化能力
遮挡、尺度、旋转、位移不变性
颜色直方图
全局轮廓特征
局部轮廓特征
滤波器 纹理信息
神经网络:
神经元:激励函数Sigmoid ReLU
卷积:
输出 = ( 输入 + 2 * pad - kernel_size )/ stride + 1
pad:填充
池化:特征更加紧凑,位移不变性 maxpooling
全连接层:网络最后
损失函数:交叉熵、SOFTMAX、欧式距离、 
 
[展开全文]

1 图像特征:SIFT,HoG,LBP,Harr
2 卷积神经网络可以自动提取图像特征,效果要比传统方法好很多
3 卷积神经网络包括:卷积层,激活层,池化层,全连接层
4 损失函数:交叉熵损失函数、Softmax损失函数、欧式距离损失函数、对比损失函数、Triplet loss

[展开全文]

计算机视觉任务分类:
1 图像识别
2 目标检测
3 图像语义分割-->个体分割=检测+分割
4 目标跟踪
5 视频分割
6 图像风格迁移
7 生成对抗网络
8 视频生成

深度学习:
1 CNN-->VGGNet,GoogleNet,ResNet,DenseNet
2 RNN-->LSTM
3 框架-->Torch,TensorFlow,Caffe

[展开全文]

三大任务:识别,检测,分割

识别:分类识别,车牌识别,人脸识别

目标检测(分类+定位):行人检测,车辆检测

分割:语义分割,个体分割(检测+分割)

其他:视觉目标跟踪,视频分割,GAN,视频生成etc.

[展开全文]

进入小组观看课程

以下为该课程相关学习小组,您可以选择任意小组加入学习课程并交流