CS231n
计算机视觉历史回顾与介绍
第一课时:
深度神经网络:卷积神经网络
计算机视觉是跨学科的领域
NLP 自然语言处理
生物进化出眼睛
相机的出现
基础视觉皮层(处理视觉)
第二课时:
通过实验发现,视觉处理的第一步是对简单的形状结构处理
简单的边缘结构,边缘决定了结构
(论文)block world
CVPR,ICCV
分层的模型
感知分组
人脸检测,富士山相机的人脸检测-2006年
第三课时:
ImageNet(5000万张,2万个分类)
ImageNet 挑战赛(针对ImageNet的计算机视觉竞赛)
2012年卷积神经网络的运用,赢得了ImageNet挑战赛
特征加支持向量机的结构
MSRA(残差神经网络)
对深度学习起了很大的推动作用(GPU,Big Data)
数据驱动的图像分类方式
第四课时:
线性分类器
对不同场景具有鲁棒性
分类问题的复杂性
进邻算法分类器
k邻近,k变大图像分类变平滑,效果变好。
欧式距离,曼哈顿距离
分类器的泛化验证
第五课时:
输入一张图像,输出与10个类相对应的数值。
线性分类器,就是得到最合适的W和B(W是系数,B是独立的权重参数)
改变每一张图的大小,使他们变成同等大小,就可以转化成长度相同的列向量
最先进的方法是使用的方形图片
对权重矩阵W的理解,类似模式匹配
分类器对图片做了混合变成单个模型,所以会出现双头马,不同角度的汽车重合。
损失函数,对于一个确定的分类器W,在我们的测试中得到的结果有多坏。
对于汽车颜色细节识别,引入了神经网络。
线性分类器损失函数与最优化
第六课时:
多类SVN损失,SVN(向量机)
SVN损失函数的计算公式:$L_i=\sum_{j!=y_j}max(0,s_j-s_y_j+1)$,这里的1叫做安全系数
$L = 1/N\sum_{i=1}^{N}L_i$
正则化,正则化是权衡你的训练损失和你用于测试集的泛化损失
L2正则化考虑了X要素中的大部分东西,尽可能的展开w的权重
SVN和softmax分类器,softmax又叫逻辑斯蒂回归
softMax:$L_i=-log(\frac{e^{s_y_i}}{\sum_{j}e^{s_j}})$
第七课时:
SoftMax会考虑每一个样例点,SVN对离边界点近的样例点敏感,对离边界点远的样例点不敏感
线性分类损失可视化:http://vision.stanford.edu/teaching/cs231n-demos/linear-classify/
多维度的梯度
步长和权重的正则化参数lambda是需要关注的两个关键点。
mini-batch,取和GPU或者CPU内存匹配的大小的batch的数据来估测梯度。
SGD
while True:
data_batch = sample_training_data(data, 256) #sample 256 examples
weights_grad = evaluate_gradient(loss_fun,data_batch,weights)
weights += -step_size*weights_grad #perform prameter update
不同的学习速率导致了最终学习结果的好坏(想象成寻找大盆地的最低点)
反向传播与神经网络初步
第八课时:
计算图,反向传播算法
链式法则,将局部梯度和最后输出结果的梯度相乘
前向和反向花的时间基本上是一样的,通常反向慢一些。
BP的拆分力度,S门
对于最大值门,Max(x,y),反向传播时较小的梯度为0,较大的梯度是传播过来的梯度
乘法门的实现
class MultiplyGate(object):
def forward(x,y):
z = x*y;
self.x = x #must keep these around!
self.y = y
return z;
def backward(dz)
dx = self.y * dz;#[dz/dx*dL/dx]
dy = self.x * dz;#[dz/dy*dL/dz]
return [dx, dy]
第九课时:
本地梯度原本是标量现在是雅克比矩阵:表示X中每个元素对Z中每个元素的影响。
并不需要计算雅克比矩阵,层和层之间的交流是通过向量,除非是输出多重才用雅克比矩阵,我们最终输出是一个数
神经网络,汽车模型,隐藏层。
想要课件的可以把邮箱留下。不方便公开。
计算机视觉历史回顾与介绍
第一课时:
深度神经网络:卷积神经网络
计算机视觉是跨学科的领域
NLP 自然语言处理
生物进化出眼睛
相机的出现
基础视觉皮层(处理视觉)
第二课时:
通过实验发现,视觉处理的第一步是对简单的形状结构处理
简单的边缘结构,边缘决定了结构
(论文)block world
CVPR,ICCV
分层的模型
感知分组
人脸检测,富士山相机的人脸检测-2006年
第三课时:
ImageNet(5000万张,2万个分类)
ImageNet 挑战赛(针对ImageNet的计算机视觉竞赛)
2012年卷积神经网络的运用,赢得了ImageNet挑战赛
特征加支持向量机的结构
MSRA(残差神经网络)
对深度学习起了很大的推动作用(GPU,Big Data)
数据驱动的图像分类方式
第四课时:
线性分类器
对不同场景具有鲁棒性
分类问题的复杂性
进邻算法分类器
k邻近,k变大图像分类变平滑,效果变好。
欧式距离,曼哈顿距离
分类器的泛化验证
第五课时:
输入一张图像,输出与10个类相对应的数值。
线性分类器,就是得到最合适的W和B(W是系数,B是独立的权重参数)
改变每一张图的大小,使他们变成同等大小,就可以转化成长度相同的列向量
最先进的方法是使用的方形图片
对权重矩阵W的理解,类似模式匹配
分类器对图片做了混合变成单个模型,所以会出现双头马,不同角度的汽车重合。
损失函数,对于一个确定的分类器W,在我们的测试中得到的结果有多坏。
对于汽车颜色细节识别,引入了神经网络。
线性分类器损失函数与最优化
第六课时:
多类SVN损失,SVN(向量机)
SVN损失函数的计算公式:$L_i=\sum_{j!=y_j}max(0,s_j-s_y_j+1)$,这里的1叫做安全系数
$L = 1/N\sum_{i=1}^{N}L_i$
正则化,正则化是权衡你的训练损失和你用于测试集的泛化损失
L2正则化考虑了X要素中的大部分东西,尽可能的展开w的权重
SVN和softmax分类器,softmax又叫逻辑斯蒂回归
softMax:$L_i=-log(\frac{e^{s_y_i}}{\sum_{j}e^{s_j}})$
第七课时:
SoftMax会考虑每一个样例点,SVN对离边界点近的样例点敏感,对离边界点远的样例点不敏感
线性分类损失可视化:http://vision.stanford.edu/teaching/cs231n-demos/linear-classify/
多维度的梯度
步长和权重的正则化参数lambda是需要关注的两个关键点。
mini-batch,取和GPU或者CPU内存匹配的大小的batch的数据来估测梯度。
SGD
while True:
data_batch = sample_training_data(data, 256) #sample 256 examples
weights_grad = evaluate_gradient(loss_fun,data_batch,weights)
weights += -step_size*weights_grad #perform prameter update
不同的学习速率导致了最终学习结果的好坏(想象成寻找大盆地的最低点)
反向传播与神经网络初步
第八课时:
计算图,反向传播算法
链式法则,将局部梯度和最后输出结果的梯度相乘
前向和反向花的时间基本上是一样的,通常反向慢一些。
BP的拆分力度,S门
对于最大值门,Max(x,y),反向传播时较小的梯度为0,较大的梯度是传播过来的梯度
乘法门的实现
class MultiplyGate(object):
def forward(x,y):
z = x*y;
self.x = x #must keep these around!
self.y = y
return z;
def backward(dz)
dx = self.y * dz;#[dz/dx*dL/dx]
dy = self.x * dz;#[dz/dy*dL/dz]
return [dx, dy]
第九课时:
本地梯度原本是标量现在是雅克比矩阵:表示X中每个元素对Z中每个元素的影响。
并不需要计算雅克比矩阵,层和层之间的交流是通过向量,除非是输出多重才用雅克比矩阵,我们最终输出是一个数
神经网络,汽车模型,隐藏层。
import numpy as np
# sigmoid function
def nonlin(x,deriv=False):
if(deriv==True):
return x*(1-x)
return 1/(1+np.exp(-x))
# input dataset
X = np.array([ [0,0,1],
[0,1,1],
[1,0,1],
[1,1,1] ])
# output dataset
y = np.array([[0,0,1,1]]).T
# seed random numbers to make calculation
# deterministic (just a good practice)
np.random.seed(1)
# initialize weights randomly with mean 0
syn0 = 2*np.random.random((3,1)) - 1
for iter in xrange(10000):
# forward propagation
l0 = X
l1 = nonlin(np.dot(l0,syn0))
# how much did we miss?
l1_error = y - l1
# multiply how much we missed by the
# slope of the sigmoid at the values in l1
l1_delta = l1_error * nonlin(l1,True)
# update weights
syn0 += np.dot(l0.T,l1_delta)
print "Output After Training:"
print l1
http://python.jobbole.com/82758/
想要课件的可以把邮箱留下。不方便公开。