计算机视觉学习笔记(一)

首先要了解一下人工智能,机器学习和深度学习的关系:人工智能>机器学习>深度学习。

而设计程序的基本步骤为:1.收集数据并给定标签;2.设计分类器;3.测试。

所谓人工智能就是利用计算机来代替人力来完成一些需要大量劳动力或者高难度的任务,按照目前学习内容来说,多是利用神经网络来对图像进行一个处理,目前最受大众接受的图像处理方法,则是卷积神经网络(CNN)。

下面多是一些人工智能图像处理方面的一些知识点和发展过程。

计算机视觉,发展起来的日子并不长,早在2012年之前,深度学习一直没有得到重视,在2012年,深处美国的李飞飞提出了ImageNet数据集,呼吁全美大学生为数据集做标签,之后提出了一项相关比赛,而在比赛中,利用神经网络来进行比赛的参赛选手,不仅获得了冠军,并且罕见的拉开了冠军和亚军之间的分数差距,之后便推动了深度学习的发展,年仅三年,在2015年深度学习计算机视觉的判断结果就超过了人类视觉,随后在2017年,李飞飞停止了比赛,开始了其他方面的研究。

---------------------------------------------------------分割线--------------------------------------------------------------

在深度学习的发展过程中并不是一蹴而就,凭空就知道计算机视觉中的CNN是好用的,而是从简单的方式一步一步优化来的。而最早的图像处理方法叫做K近邻(周围什么多,则是什么)。以方块和三角两类点作为数据:

根据图中所示,在圆圈中三角的数量多于正方形,说明圆圈是三角的概率更大,因此就会将其判断为三角。他的基本流程是:1.计算已知类别数据集中的点与当前点的距离;2.按照距离进行排序;3.选取与当前点距离最小的K个点;4.确定前K个点所在类别出现的概率;5.返回前K个点出现频率最高的类别作为当前点的预测分类。

然而这种方法不太适用于计算机视觉方面,因为他是将全体像素点进行检测,不能区分主体和背景,因此分类效果并不好。

------------------------------------------------------------------------------------------------------------------------------

之后便逐步进行修改,主要引入的是高等代数中矩阵的内容。

首先介绍的便是线性函数,又叫做得分函数。通过计算每个类别中的得分,来进行分类。具体公式为f(x,W)=Wx+b,x是预处理后的像素点条(纵向矩阵),W为权重参数(横向矩阵),b是偏执参数。其中,有多少个类别,就有多少个W,经过计算后得出一个数,则是不同类别的得分。由于不同的情况,权重参数可能并不是时时刻刻都是最优的,因此引入了损失函数。

--------------------------------------------------------------------------------------------------------------------------------

损失函数基本公式为:    Li=\sum max(0,Sj-Si+1)  。其中Sj表示其他类别得分,Si表示正确类别,1是容错。当Li<0,Li=0,损失为0。当Li\rightarrow0时,损失越小,结果越准确。

但既然是数值计算,就有可能出现不同数据结果相同的情况。例如输入x[1,1,1,1],M1 w1=[1,0,0,0],M2 w2=[0.25,0.25,0.25,0.25],WT1=WT2=1。从这个例子中可以看出来,两个不同的类别的权重参数计算的结果是一样的,但是对比两个权重参数来说,w2对图像信息的提取更为全面,而w1更注重于一小部分,称之为过拟合。目前处理过拟合的方法多用以下两种:1.正则化惩罚项R(W);2.DROP-OUT。

正则化惩罚项的具体使用方法为:损失函数=数据损失+λ*正则化惩罚项,R(W)的具体数值为所有权重相加,λ的取值控制着过拟合程度,λ越大,过拟合程度越小,λ越小,过拟合程度越大。

DROP-OUT的具体使用方法为随机去掉部分神经元,每次训练都不同,来降低过拟合风险。

---------------------------------------------------------------------------------------------------------------------------------

在类别分类中,虽然计算出了得分值,但是我们更倾向于用概率来表示更贴近哪个类别,因此不得不提到一个东西——softmax分类器,它的作用便是将得分值转换为概率值。

 上图以猫,车和青蛙来演示转换过程。首先e^{x}来放大差距,由第一列转换为第二列,之后再对其进行归一化,即将其变成小数,限制在0~1之间。具体措施就是分别比上第二列总和,再对其求一次对数,Li=-log(scores) (随意规定底数即可),当概率越接近1,说明此类别的得分越大,Li的结果越接近0,损失越小。这种方法被叫做交叉熵损失函数

Ps:以上过程均是从输入一步一步往前走,称为前向传播,而利用损失函数优化权重参数时,是从前往后返回一组数值,称为反向传播。此处提到三个单元:加法门单元,MAX门单元,乘法门单元,写的时候忘了是什么了,先空在这里,想起来再补上。

---------------------------------------------------------------------------------------------------------------------------------

在程序中,还存在一种函数,叫做激活函数,具体作用没有细致了解明白,先不做讲解,只知目前常用激活函数有三种:1.sigmoid,2.Relu,3.Tanh。Sigmoid函数目前已经不用了,百分之九十多在用Relu。原因大致如下:

 Sigmoid函数中存在梯度消失的情况,当x过大或者过小的时候图像趋于平缓,梯度变化小。Relu函数好计算且不存在梯度消失。

-----------------------------------------------------分割线-------------------------------------------------------------------

以上内容本人根据观看B站视频自己所写,相关图片取自百度和B站UP主人工智能分享官的视频,侵告删。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想住在山里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值