七月在线公开课笔记-三十三-
七月在线公开课笔记(三十三)
人工智能—计算机视觉CV公开课(七月在线出品) - P18:基于Pytorch实战:手部姿势识别 - 七月在线-julyedu - BV17z4y167dq
啊啊。
嗯请问阁楼地的手势识别模型有哪些,哪些更常用于工业界啊,就是如果是做手势识别的话,还是建议和这个姿态估计一起做会好一些,就是从关键点的角度做会更合适一些,那我们待会儿就开始冲了。
对我们再过几分钟准时开始啊,呃大家之前学过深度学习吗,啊如果学过深度学习的同学呢也可以哦,扣个二二,我看一下啊,啊啊有同学学过好,那么大家想领取我们今天的一个ppt。
或者说我们的代码的同学都可以加一下我们的杨老师的微信啊,加一下我们杨老师的微信对,好,嗯那么我们就开始我们今天的直播啊,首先呢我们介绍一下啊,介绍一下我们今天直播的呃,就是说主题。
我们今天直播的主题呢是啊pad写的首部姿姿态识别,其实在课程中间呢,我们主要是介绍的呃,efficiennet网络以及我们的automata的一些具体的一些事件,然后呢。
我们今天的直播呢是由我们的七日战线和cs店共同开设的公开课,嗯确实这件呢是一家成立于很早啊,就是说姿态很就是相当于是资历很老的,成立于201415年的一个ai在线求职平台。
专注于人工智能的就是人才培训和企业服务,然后其实在现在现在的人才培养方面的讲师团队是超过300人的,军事由大厂的技术专家和国内外高校的博士组组成,总共的付费学员超过40万,课程的数量呢是500多门。
分别是入门的初级入门课,就业转型以及在线提升班,具备完善的课程体系,然后我们的交界线的企业服务方面呢均有军事,有嗯,就是我们的技术专家所领衔的企业微信的服务,然后企业微信的服务呢一些客户呢包括中国联通。
国家电网,广发银行以及广汽集团等等,嗯其实在现在的现在的一些课程呢,是不仅仅是包括ai的,也包括一些我们的自动驾驶相关的,如果各位同学感兴趣呢。
都是欢迎到我们的学在线的官网去打开我们的官网了解我们的课程,然后呢我是今天的直播的刘老师,然后我们就马上就开始我们今天的一个课程,然后大家如果想要领取我们今天的ppt以及我们的代码。
以及我们的具体的一些资料的同学,都可以,欢迎加一下我们的杨老师的微信,欢迎加一下我们的杨老师的微信。
好,我们继续嗯,我们今天的课程主要分为两三部分,第一部分呢是介绍一下efficient啊,这个地方呢这个手抖打打多打了一个f啊,多打了个f efficient,efficient是这个网络的一个介绍。
在我们的一个深度学习的一个模型的建模过程中呢,其实我们的模型它对我们的一个最终精度呢其实是影响非常大的,efficiennet呢是深度学习中继rent之后,又是一个非常非常重要的一个网络结构。
在这个网络结构呢一些现在是不仅仅是在我们的参数量,以及在我们的这个模型的运算运行速度上面,都是远超我们之前的网络的efficient,是呢它的一个就是说我们在之前的设计的一些网络结构呢。
可能都是由我们的人工来进行设置,但是呢我们的efficienage呢它在进行设置网络结构的时候呢,可能是加入了我们的一个网,就是说这种automa的这种搜索过程啊,加入了我们的automa这种搜索过程。
所以说呢我们的efficient在具体的一个模型的一个建模过程中啊,其实是比较就是说啊就是它的模型是比较接近的,那么什么是auto 0呢,这个地方给大家介绍一下,我们在具体的一个建模过程中呢。
其实我们是需可能是需要对我们的一个模型呢做一些相关的一个,就是说调调仓啊,以及我们的一些具体的一些就是模型能优化啊等等的这些步骤,但是呢我们的一个具体的一个这些步骤呢。
并不是所有的都是需要我们的一个就是我们的一个呃,就是嗯啊算法工程师所参与啊,因为我们的一个模型呢很有可能在做一个建模的过程中呢,是可以用我们的网络,或者说用我们的一个就是应用程序所替代啊。
在我们的一个具体的建模过程中呢,我们的一个网络模型可以或者说这个数据挖掘的一个工作呢,其实是可以完成,你分为以下一些步骤啊,比如说我们首先拿到我们的数据集之后呢,然后对我们的一个具体的数据集呢。
对它进行一个数据的预处理,然后对我们的一个具体的数据集呢,然后对它进行一个特征提取,然后对我们的数据集,接下来做一个我们的模型的训练,以及我们的模型的一个选择,然后最后做我们的一个模型的一个预测。
所以说呢我们的很多时候呢,我们的一个网络结构它并不是很单纯的,就是就是说需要人工参与我们这个网迭代过程中呢,有很多一些步骤呢是可以有人工参与的,但是呢我们也是还有就是说可以有一些部分呢。
是我们可以从我们的一个机器来进行代替的,机器来进行代替好,那么我们在这个地方呢,我们需要思考一点,就是说我们的算法工程师他能够完成什么,以及我们的具体的一些嗯步骤呢。
我们到底哪一些是可以使用机器来进行替代的,那么我们在一般情况下,我们的如上所示的这一部分,在我们的mr framework这部分,其实都是基本上可以有有我们的一个就是机器所替代的。
机器所替代的这一部分是我们可以用我们的机器所替代的,好,我们继续,那么autumn家具体能够做什么呢,其实奥特曼他能够做的一个事情是很多的,从我们的一个特征的一个产生。
以及我们的一个具体的一个网络结构的设计,以及我们的一个超参数的优化,这整体的一个过程啊,都是可以由我们的一个奥特曼啊所组成的啊,都是可以由我们的奥特曼组成组成的,那么奥特曼其实它的一个范围很广啊。
就是说主要是包括从我们的自动的数据分析,以及我们的一个自动特征工程,自动缩放,以及我们的自动正则化,自动特征选择,自动模型选择以及自动超参数优化的过程,都是可以由我们的automa完成好。
那么我们在做一个奥特能量的时候呢,其实嗯最为核心的是有一些方向啊,就是这个地方所写的主要是由我们的一个automata做一些特征产生,automata作为一个网络结构搜索,以及我们的模型调参好。
我们就先看一下automata在我们的一个特征特征产生啊,或者说特征构造的时候,他怎么做的,我们在做一个具体的特征工程的时候,其实其实呢我们是需要做一个自动特征挖掘的过程。
也就是说我们需要从我们已有的数据集里面挖掘出一些特征,然后构造一些特征,好啊,这个p t我把它保存一下啊,重新保存一下,稍等把它重新打开一份啊,好刚才显示的好像有点问题,好这个刚才没有显示出来啊。
我们重新打开一下,对我们的奥特曼,其实它刚才这个图没有显示出来,我就重新打开一下啊,这个ppt其实它有很多,主要是由我们的一个特征产生步骤,以及我们的一个网络结构搜索步骤,以及我们的原学习。
以及我们的自动特征工程啊,嗯我们在这个具体的一个数据产生特征的这一步骤呢,其实是需要从我们的一个具体数据里面自动的挖掘出新性特征,进行构造出一些特征。
那么这个地方呢就是需要我们自动的是否能够自动的对我们的数据集,它的特征做一个自动编码,然后帮助我们的一个模型呢进行自动训练,而且是能够做一个自动的一个特征的筛选。
这个过程中我们其实是可以依赖于我们的一个呃就是机器,或者说我们的automata的工具来进行的,那么这个地方的一个关键点,或者说比较核心的点就是如何去自动构造一些特征,因为我们的一个特征工程呢。
其实它本质上是就是说嗯是在构建设特征的时候呢,是需要有我们的一个具体的一个就是嗯嗯有一个想象的过程啊,有一个想象的过程嗯,而且呢是在这个想象的过程中呢,需要结合我们的一个业务。
那么如何去做一个特别的我们这种产生的产生了一些新的特征呢,这个具体的一个特征呢就是说我们需要做一个嗯具体的构造,这个构造呢其实是有两两类方法,两类方法,第一类方法呢就是我们在做一个特征构造的时候呢。
我们是去使用我们的一个构建一个神经网络,在这个神经网络里面呢,我们让这个神经网络主动的,或者说让它自动的去完成我们的一个特征的一个提取,以及我们特征的交叉,在这个我们的一个分之一里面呢。
我们的一个方法就是基于我们的一个网络结构呢,加入了一个embedding air,然后再这个embear就是对我们的一个输入的特征呢做了一个嵌入,做做了一个嵌入之后呢。
接下来就将我们的一个特征呢将它完成一个交叉,将它这个文本之间交叉,因为我们在构建一个特征的时候呢,其实是想要我们就是说能够构造出一些新的特征,构造出一些新的特征。
这些新的特征呢其实目标是对我们的一个原始图片呢进行一个组合,这个组合呢可能是基于我们的一个线性组合,也有可能是基于我们的其他类型的组合,这个过程呢就是说我们是定义了这个网络结构。
让这个网络结构自动的去做这些,做这些高级的交叉,这是第一个我们的dna的分支,第二个呢是基于我们这种搜索的一个分支,继续搜索的分支,这个搜索的分支呢就是说我们在进行搜索我们的特征组合的时候呢。
我们有了原始的一个特征组,就是原始我们假如包含了四个特征,abcd abcd,在这个地方呢,我们在进行构造特征的时候呢,我们希望是对我们的一个特征呢把它进行两两组合,或者说把它进行一个组合。
也就是我们的原始的特征有四个的情况下,我们需要从我们的一个特征里面进行一个筛选,进行筛选,比如说我们筛选得到最能够产生我们精度,就是说收益最大的组合是什么。
这个地方呢我们就会对我们的原始的一个特征空间站进行搜索,这个搜索的过程呢就是对我们的一个具体的一个空间,把它搜索我们的生产组合最原始的,假如说是对我们的特征a进行使用。
然后将我们的a特征a和我们特征例进行组合,更进一步的再加上我们的特征d对吧,然后再加上我们的特征c这个地方呢就是说我们的每个数字空间呢,其实它可以把它展开为一种类似于输入模型的这种结构,数模型的结构。
然后呢我们需要从这个数的结构里面呢进行筛选,得到我们的每个具体的一个就是说有效的特征的一个子集好,但是呢这个对具体的一个搜索过程呢,其实是需要有很多的一个呃搜索时间的,而且是需要确定一下我们的一个哦。
就是说评估指标的啊,那么奥特曼大家可以做什么,奥特曼还可以做我们的一个超仓库的一个搜索,这部分呢大家如果感兴趣呢,也可以下去看一下啊,就是说它可以自动的过做。
我们的各位这期也可以自动的做我们的一个参超单数的一个配置等等,而且呢可以做这个超参数的一个组合的调度,对哈哈,在我们做一个automata的时候呢,其实比较嗯就是说比较有用的啊。
可能现在比较有具体落地的呢,就是我们的一个嗯就是网络结构搜索,网络结构搜索,网络接受搜索在做什么呢,就是说我们的一个原始的神经网络,它其实是这个网络结构,其实是需要我们的这个人工来进行设计的。
那么在这个设计的过程中呢,其实是需要有很多的一些嗯就是专家知识,或者说领域知识来辅助我们的设计,而且呢这个设计的过程其实是非常繁琐的,也是需要反复进行我们的一个动态的验证的,那么我们的一个nt对吧。
我们的nas网络结构自动搜索的这个分支呢,其实主要的目的就是说我们不能经过我们的一个搜索空间,去确定我们的一个比较有效的一个就是说网络结构,那么这个地方呢它的一个目标呢就是我们在进行一个搜索的过程中呢。
去寻找到我们最优的一个top结构,或者说我们最优的一个配置,那时的一个核心点就是说我们首先确定一下我们每个网络结构,它所所组成的元素是什么,每个网络结构它所组成的元素是什么。
然后接下来呢我们再进行进一个就是说确定我们的一个搜索的策略,这个搜索的策略呢可以是我们的基于强化学习的,也可以基于我们这种就是说可微分的,或者说可求梯度的,我们的搜索的一个策略。
然后也需要确定一下我们的一个具体的一个精度的验证,经过验证的过程,这个经过验证呢就是说我们如何确定我们到底哪一种搜索过程是比较,就是哪一种网络结构是比较有效的呢,这个其实也是需要确定的。
就是我们的进度验证过程,那么在我们的一个具体的一个网络搜索的过程中呢,其实我们首先需要确定一下我们的这个卷积神经网络,或者说我们的任意一个网络结构,比如你想要做一个具体的一个我们的一个嗯。
就是基于我们cn的网络做我们的一个呃就是搜索的话,那么我们的一个常见的,卡了吗,呃应该大家其他同学卡了吗,其他同学卡了吗,我看一看啊,稍等一下,嗯没卡啊没卡没有没有啊,没有没有,好好好,应该是没有的啊。
我把这一页讲完,我们抽一下奖好不好,嗯我们把这些讲完,我重新再讲啊,对嗯,在我们的一个具体确定我们的一个网络结构的过程中呢,其实我们是有很多的一些基础层可以来进行一个设置的。
比如我们的卷积和它到底是有嗯1x11x7的卷积,还是7x1的卷积,还是由我们的puling呢,是有3x3的一个eng puling,还是我们的5x5的一个next putting,对吧。
嗯或者说我们在进行一个设计网络结构的时候,这些网络网络节点它是如何进行连接的,以及他们如何进行组成一个新的网络结构,这些呢都是可以来确定的,也就是说首先是我们的卷积神经网络的常见模块。
这个是需要确定的对吧,这是我们常见的,不管是在我们的rn还是在我们的vg网络里面,其实都是由我们的这些组所组成的所组成的,这是第一个,第二个呢就是说我们需要确定一下我们的网络搜索它的一个结构。
这个结构呢其实是可能是需要由我们的神经网络去做,就是说搜索得到的啊,搜索到的这个搜索过程呢,其实是需要有大量的一个计算的,需要有大量的一个计算的,为什么呢,因为这个结构其实它是产生的过程。
其实就是一个搜索的过程,我们我们假如使用哪个节点表表示我们的每一层的话,你会发现我们的节点与节点之中连接,它是有很多可能性的,有很多可能性的啊,就是说我们原始的节点把它进行连接到一起,不断的把它连接。
然后你会发现它其实有很多种可能性,那么我们在进行一个验证的过程中呢,其实这每一种可能性他都是需要进行验证的,每种可能性就是需要进行验证,好好我们继续啊,直接加微信就可以领取啊,直接加微信就可以领取啊。
好那么这个搜索的过程呢,其实你会发现它的一个网,就是说组成它其实是需要有大量的一个计算的,是需要有大量的计算的,因为这个计算过程呢其实是需要啊,你不服啊不服,待会儿再继续抽嗯,待会儿再继续抽啊。
我们就是说待会儿还有两次抽奖啊,还有两次抽个奖好吧,还有两次抽奖,不要不要着急不要着急啊,还有两次抽奖,杨老师的微信怎么加杨老师的微信,这个二维码能看到吗,这个二维码能看到吗,对这就是直接微信扫码。
微信扫码就可以加啊,微信扫码就可以加这个二维码,对好ok吧,你可以截一下图啊,截一下图,那么在这个网络结构的搜索过程中,你会发现其实它的一个搜索空间是非常大的,四个空间是非常大的。
也就是说我们的节点与节点它有很多种组成,就是说就是它的可能的边其实有有很多的,有很多的,所以说呢我们的一个具体的last算法,其实就是要需要确定我们的网络结构它到底是什么样的。
需要确定一下我们的网络结构到底是什么样的,那么一种常见的一个方法呢,就是说基于我们的可微的,就是说我们的一个网络结构的设计嗯,比较常见的就是我们的一个算法算法呢叫dos这个地方d a r t s大s。
在我们的这个具体的一个就是说搜索的过程中呢,其实我们的很多的一些参数,我们的很多的一些参数,比如我们的一个它的具体的一个我们的一个就是说这种离散的参数,比如我们的一个fter size啊。
我们的一个具体的一个嗯网络模型的深度啊,其实它都是一个就是说离散的值,这种离散的值上,其实我们是不可能就是说对它进行一个求导的,但是呢我们是不是能够用一种替代的方法来进行一个搜索,对啊。
这种搜索过程其实是计算量非常大的啊,就是说一般情况下只有大公司才玩得起来啊,只有大公司才玩得起来,但是呢其实我们是可以借助它的这种搜索过程来,就是说你也可以在自己的数据集上搜索。
你也可以在自己的数据集上搜索,这个也是可行的,这个也是可行的,因为现在的嗯,就是说这些网络结构其实它并不是说在一个很大很大数据机器上搜索,它可以在一个比较小的数据集上面。
比如我们现在比较常用的这个saf对吧,比较常用的safer,其实在safer上面搜索的网络结构,在其他处理器上的网络结构也都非常好,也都非常好,好我们就继续ppt啊,这个dh呢就是说它的一个呃。
就是说它的一个就是说主题,就是说我们在进行一个网络结构搜索的过程中呢,我们能不能是将这个搜索的过程,或者说我们在做一个具体的一个搜索空间尝试的过程中呢。
能不能利用我们的梯度下降来找到我们的一个最优的结果,我们之前的一个搜索呢,它其实是类似于调仓的过程,就是说类似于我们的greater search,或者说我们的这个利用强化学习来搜索我们的网络结构。
我们的一个具体的搜索过程中,我们想要用一个可微的方式来找到我们的结果,这个地方呢我们就是说在进行一个具体的网络结构的设计的过程中呢,我们先定义一下我们的网络结构,比如我们的节点0123。
然后这些这些节点之间是不是有边呢,这个地方我们是可以把我们的整体的结构呢,把它定义为一个有向无环图,定义为我们的有效互换图,这个地方呢我们有一些公式啊,大致给大家解释一下。
这个地方呢我们有我们的一个具体的一个o o呢,就代表了我们的具体的从我们的节点i到j之间是存在有一个边的,但是这个边呢具体是什么操作呢,我们是可以先把他带选啊,把它给可以带选。
这个地方呢我们在进行每个边的时候,每个边的一个就是说连接的时候,你会发现它有不同颜色对吧,这个颜色分别代表的是我们不同的操作,比如我们的卷积全连接,以及我们的puling对吧。
我们其实在做一个具体的一个连接边,连接我们节点的时候呢,是可以将我们的节点是使用所有的操作连接到一起,比如卷积全连接和pm把它都使用上,也就是说我们在这个地方,我们每个节点的一个连接是有三种。
我们的一个可行的,就是说三种带选项的,那么在这个地方呢,我们并不知道哪一种带选项是比较好的,我们先把它都连上,然后呢我们再进行一个具体的训练过程中呢,其实我们是将我加入了一个具体的一个参数。
加入了一个具体的参数,这个参数呢是一个可训练的参数,用来控制我们到底是去使用哪一种操作,也就是说我们在训练的过程中呢,你的一个可可选的边其实是越来越少的,可选的边是越来越少的。
那么这个操作其实如果你看到这个公式,你其实会发现它的一个具体的公式,跟我们的一个soft max其实是非常非常相似的,也就是说我们对我们的每条边都加了一个可选的参数。
对于我们的从我们的节点0~9点一这个连接的过程中,我们有三个选项,有三个选项在这个选项的过程中呢,其实我们去选择我们到底是哪个选项,它能够得到更好的一个结果,更好的结果。
这个结果呢其实是跟我们的一个正向转播,反向传播以及我们的求梯度相关的,所以说呢这个我们这边的选择,它是加了一个额外的参数,你可以理解就是说有多少条边,我们就多加了多少特多少个参数。
然后你通过我们的经验传播,反向传播去选择我们对应的边,那么这个具体的一个选择过程呢,其实是可以加入我们的一个梯度的一个求解的过程来完成,所以说我们的一个整体的一个网络结构搜索过程呢,是可以把它写为两个。
我们写写为一个公式啊,这个公式呢就是找到我们最优的一个参数,这个参数呢能够在我们的一个验证集上面,以及能够在我们的一个训练集上面取得最优的一个精度,取得我们的最优的精度。
所以呢我们的一个网络结构的一个迭代呢,其实就是在我们的一个训练过程中去确定了我们的网络模型,原始的参数,以及我们对应的就是说每一条边所对应的参数,然后就可以得到我们的一个网络结构了。
得到我们的网络结构好,那么如果你觉得这个网结构很复杂的,其实你会发现它在训练过程中是逐步,就是说相当于是缩减它的一个边的啊,相当于是最开始我们可选的边会很多,后来运到后来的我们这边就确定了。
我们边就确定了好,这个呢其实是一个叫做大的这个工作啊,大的这个工作呢也应该是谷歌做的,应该是谷歌做的好,我们接下来呢如果你想要自己来试验一下。
我们的这个就是说我们的这个automa呢其实也有一些其他的工具啊,我们可以来试验一下嗯,我这个地方呢给大家打开一个叫做autumn cs的这个库,auto cs的库,这个库呢其实也是使用的场景非常多啊。
我们这个地方呢就是说啊这个库其实是基于tensorflow的啊,基于tensorflow的,你在进进行定义的时候呢,就直接inbot我们的auto cs,然后呢对我们的网络模型呢。
这个地方只需要这样定义一下,首先定义我们的网络模型,定义我们的网络模型啊,这个地方就直接是一行代码定义了我们的网络模型,那么这个网络模型到底是内在的网络结构是怎么样的呢。
这个是去利用我们的一个autumn cs的库,它自动的去产生啊,自动的产生,我们并就并不需要你去人工进行设置,人工进行设置好,这个地方你会发现它具体的一个就是说如果要自动去搜索,它是可以自动搜索的。
当然我们也可以就是说设置我们的搜索过程,我们搜索过程呢就是说你可以设定一下他到底是基于什么网络结构,比如说像搜索的过程呢,就是基于我们的一个resonnet这个block来做搜索的。
这个其实也是可行的啊,这个也是可行的,也就是说我们可以设置一下我们具体的搜索结构是基于什么结构的,这个也是可行的,那么如这个地方这个案例呢,其实是基于我们的一个呃图像来的图像而言的。
那么对于我们的文本行不行呢,其实g对于文本而言其实也是可行的,如果你想要训练一个文本分类的一个案例,嗯,这个地方的一个案例呢是i m d b d b d b呢。
是一个就是嗯就是斯坦福的一个情感分析的这个数据集,在这个数据集里面呢,我们是需要对这个英文文本的一个情感,英文文本的一个情感做一个分析啊,英文本的情感做一个分析。
所以说呢其实它也是一个就是说非常常见的一个呃指纹数据集啊,那么对于这个数据集,它是一个文本啊,就是输入的都是一些文本,我们需要分两类啊,一一类是正向的情感,一类是我们的负向情感。
然后呢我们再进行一个定义网络结构的时候呢,仍然是很简单的,只需要一行代码就可以,一行代码就可以对,如果你想要就是说确定一下我们的网络结构,确定一下我们的网络结构的其实也是可以的啊。
就是说我们在这个网络结构的时候呢,你可以加入其对我们的一个输入的数据,把它对我们的输入的一个数据能加入这种unram的一个block嗯,我其实也是都可以的,也都是可以的好。
所以说呢如果你想要在自己的数据集上面搜索这个网络结构呢,其实也是可以利用这个autumn cs的那个库来使用的,就是说如果你不知道怎么搭建这个网络进网络结构啊,其实也是可以使用这个auto cs来做的。
这也是可行的,好我们继续讲到这个地方呢,就是有很可能有很多同学都已经手痒了,想自己试一下,其实可行的啊,其实是可行的好,然后呢我们再回到这个effici,efficient。
其实它的一个网络结构跟我们的一个具体的一个呃奥特曼amana,其实是强相关的,因为efficient它的一个具体的一个网络设计的,内在就是有我们的一个automa的这种思路啊。
内在就是有我们的automl的思路好,我们来看一下在我们的一个具体的一个图像的一个评价的过程中呢,其实我们如果是对于我们的图像分类做评价,那么我们最常见的这个数据集是我们的一个imagine imag。
英语简称呢,它是就是说是对我们的1000内图片呢作为一个具体的分类,然后评价我们的一个具体的准确率,对我们的图像分类呢,其实我们如果想要从模型评价呢,其实是有一些评价指标的。
比如我们想要对我们的模型进行评价呢,可以从我们的准确率进行评价对吧,准确率越高越好,参数量我们的参数量越小越好,以及我们的计算量,计算量越少越好,但是呢其实在这个地方,我们的参数量和我们的计算量。
它们并不是一个成正比的,参数量和计算的并不是成正比,以及我们的参数量越多,并不一定能够带来我们精度的增加,并不一定能够带来进入的增加,我们可以看一下这个例子。
对于我们的一个将我们说如果是将我们现有的一些神经网络,就是我们的图像分类的神经网络绘制得到这样一个图,我们的图的x轴是我们的参数量,就是参数量啊。
然后我们的y轴呢是我们的在训练上top one的一个准确率,然后你会发现呢我们的不同的网络结构,它在我们肯定是想要它参数量越少,但是它的精度越高,也就是越偏,我们的左上角是我们想要的这些网络对吧。
那么你会发现我们的网络结构呢其实并不一定是参数越高,它所得到的一个精度就一定是增高的,它在一定程度上呢会有这种线性关系,但是呢当我们的参数量增加到一定程度上呢,它已经是呢就是停滞不前了。
一定是停滞不前了,好那么在这个地方呢,这些网络结构其实是存在一些区别的,比如说这个dentient recent以及efficient,它是存在网络结构上是存在一定的区别的,好。
那么接下来呢就着重介绍一下这个efficient,在我们的一个具体的一个网络结构的设计的过程中呢,其实我们是可以从多个角度去设计我们的网络的,嗯主要的角度呢就是说我们的网络结构它如何进行变强呢。
也就是说它的精度如何增加呢,这个地方其实是可以从一些角度可以去思考的,比如我们去可以增加我们的一个网络模型,它的一个深度对吧,或者说增加我们网络模型它的一个宽度,或者说增加我们的输入的分辨率。
这个地方width,我们deth以及我们的就是说嗯resours对吧,我们的一个具体的一个就是深度宽度和我们的分辨率,当你在进行具体增加的时候,你会发现它的一个具体的一个网络模型的一个计算量。
lobs就是说我们的百万级别的负点数计算量其实也是增加的,那么我们的具体的增加其中一项其实所带来的准确率都有增加哈,增加我们刚才所讲的这个deep swiresolution。
其实都是对我们的精度都有增加的,但是我们现在问题就是说我们能不能把这三个把它结合到一起,把这三者的结合到一起,在我们的业务的研究里面呢,就是说我们将人生18。
把它就是说在我们的深度上面把它改变成我们的resident 50,其实是有很大的进度增加的,或者说我们在我们的图片的宽度将从我们的网络宽度啊,从rench 50到我们的wide rench 50。
其实也是有很大的进度增加的,所以说呢efficient它在具体的一个工作的过程中呢,就是思考我能不能将这三者将法将它结合起来,结合起来之后呢,能够取得一个更好的一个进度好。
所以说呢我们在这个具体的一个efficieng网络结构的设计的过程中呢,其实是想要对我们的一个网络网络的三个方面啊,网络三个方面,也就是说我们这个地方的dw和r做一个折中。
想让我们的模型呢最大化我们最终的一个精度,但是呢是想要我们的模型,它整体它的一个所使用到的显存,以及我们的计算量都是在一定的范围内的啊,在in的范围内的,所以说呢这个地方epp其实是一个优化的问题。
是优化问题最大化我们的精度,但是呢是需要在一定的一个受限范围内,才是能够做我们的一个具体的一个优化过程,那么我们的etration net他在做一个具体的一个搜索的过程中,它是怎么搜索的呢。
搜索过程呢其实你说他最开始是得到了一个business model,好,我们先看一下这个business model他怎么得到的啊,看一下这个business model怎么得到的这个分析呢。
其实它是将我们的这个deep ries in the resolution,三者呢就是说把它统一起来,统一起来,为什么呢,因为这个地方你会发现呢,这三者其实是有三个变量的,这3。7有三个变量的。
那么我们在做一个具体的搜索过程中的变量太多,其实这个搜索空间也会很大对吧,而且这个地方其实是一个数值类型的一个变量,数值类型的变量,那么对于这个数值类型的变量呢,其实在进行搜索的过程中呢。
它的空间会更大啊,很大很大,那么我们在搜索的过程中呢,并不就是说可能是需要先确定一下我们的具体的一个搜索过程,那么这个搜索的一个具体的一个deep ries and resolution。
到底怎么影响我们的模型的,一个就是说参数和速度啊,这个地方大致给大家解释一下啊,还是分到上面这个图y x呢是指我们的网络特征的维度大小,也就是我们的chinese特征的维度越大呢。
就是我们的一个具体的模型的表征能力会越强,然后我们的reduce呢其实是指的我们的输入的图像大小,分辨率越大呢,我们的一个具体的一个就是说特征提取的一个力度会更细,但是呢也会带来更大的一个计算量。
我们的dps呢其实也是指我们的网络模型的一个深度,就是说我们的层数,网络层数越深呢,我们的感受也会越大,但是呢我们的一个计算量也会越大好,所以现在我们在做一个具体的一个搜索网络模型搜索的时候呢。
其实是在我们的这三者之间做一个折中,三者之间做一个折中,在这个地方呢,efficient他为的是将这三者做的一个折中呢,他是提出了一个复合缩放的一个策略,也就是说将我们的dw和r分别定义为我们的阿尔法。
贝塔和伽马的一个具体的计算,然后呢我们的阿尔法贝塔伽马是做了一个受限制的啊,就是他们之间的相乘,阿尔法乘以贝塔的平方,乘以com的平方是约等于二,为什么这么做呢,因为我们的一个就是说将这样作为限制呢。
就是说你的一个具体的最终的一个计算量是受限制在一定范围内,那么有同学可能就会问到这个地方为什么是贝塔的平方和伽玛的平方,因为我们的一个神经网络,它的一个flops,也就是它的一个计算量。
一般情况下适合我们的宽度的平方成正比,以及我们的分辨率的平方成正比,所以说呢这个地方它是二次的啊,它是二次的好,那么为了我们具体的一个建模呢,这个地方其实他在做优化的时候呢。
最开始呢是在将我们的最终呢我最开始是教我们的一个三者呢,是做了一个折中的啊,三者是做了一个折中的,也就是说呢在我们的一个具体的网络模型的一个搜索的过程中呢。
我们是首先对我们的一个阿尔法贝塔和伽马做了一个greatest s,就做了一个网格搜索,网格搜索呢就是确定一下我们的阿尔贝塔和伽马,就是说基础的一个取值,这个取值呢也就是说先固定住我们的这个阶层啊。
就先固定住我们的历史啊,这个地方呢,然后呢我们的指数项啊,我们指数先固定一下,然后去通过规律测搜索得到我们的阿尔法和贝塔伽马搜索得到之后呢,我们就可以确定一下我们的一个基础的一个网络结构。
就是我们的一个efficient的b0 ,这个business的一个framework,这个搜索得到的呢,我们的一个阿尔法是取值为我们的一个1。2,我们贝塔取值为1。1,我们的伽马的取值为1。15。
然后得到这个基础的网络结构之后呢,然后再去动我们的指数下,再去动我们的指数项,什么意思呢,我们再翻到我们上一页,你就可以看到我们先搜索得到我们的这个business之后呢。
然后再去从我们的business去搜索得到我们的不同的网络结构,不同的网络结构,也就是说我们这个地方我们在进行修改的时候呢,我们阿尔法贝塔伽马已经确定了,然后呢再去搜索我们的指数项就行了。
通过我们缩放我们的指数项呢可以变路,就是说产生我们的网络结构的不同的版本,也比如说我们的非性在这b01 ,非性在这b1 b2 b3 ,一直到我们的b7 好。
这个呢就是说其实这个过程其实是加入了这个research能得到的,那么有同学可能就会问到老师,你刚才不是讲的有这种可唯的这种方法来做吗,口碑的方法来做吗,为什么没有用这种口味的方法来做呢。
因为原始的一个efficient,他是发现了我们的一个就是说网络模型的一个深度宽度,以及就是说它以及分辨率啊,三者是存在一定的规律的,也就是说原始的作者呢其实是发现了这三者是存在一定的规律的。
所以说呢他就去调整某种结构的时候呢,主动的去基于我们这三者三个参数来做调整,它并没有说完全是基于我们的这种可谓的那种,就是说呢这种大气的这种方法来调,不是的,那么通过这种方法呢。
它搜索得到的网络结构也是非常非常有效的啊,这篇文章呢最早是在2019年提出来的,在2019年的这篇文章,那最终惊动呢是比现有的网络模型都是高很多的,这篇文章在2019年啊。
他的effici的是b一的版本,在2019年提出来的时候上是比现有的版本都是高的,比现在的版本精度都是高的,那么我们再来看一看它的网络结构啊,它的网络结构呢其实是有不同的版本我们可以可供使用的啊。
比较常见的是我们的一个b就是b0 b1 b2 b3 ,然后呢更大的可能是就是说我们啊如果你gpu啊,就是说性能比较好啊,就是说它的容量比较大的话,可以使用一下,那么你会发现其实在我们定义网络结构的时候。
主要的就是从我们的wd对吧,我们的r好w嗯,就是我们的wives depth以及我们的分辨率啊,这三者,然后还有一个是我们dropout这个地方,就是我们的网络模型的drop的概率啊。
我们通过这三者再加上我们的dropout的概率,就可以确定得到我们的网络结构,就可以确定得到某种结构,所以说其实你会发现这个网络模型在定义的时候啊,并不是说是完全通过这个搜索的过程。
可能呢通过我们的一个先去确定一下我们的网络结构,再去通过确定我们的三者的一个具体取值,也是能够能够得到一个比较好的精度,那么我们的这个b1 b2 b3 b4 这些版本,他最终的精度是多少呢。
这个地方我们可以看一下啊,它分别对待对应的精度,就是我们的一个嗯肯定是模型越大,它的精度越高对吧,模型越大肯定精度越高,这个地方呢就是说如果是到b7 的情况下呢,它的一个精度,也就是说在配性的。
它的一个通关的进度已经是能够到84%了,这个是远远的都比这个efficient远远的比我们的renet,就是之前的一些网络模型是高很多的好,那么我们就来看一看,接下来看一看我们的这个一飞。
现在是它到底怎么进行使用呢,这个一飞现在到底怎么进行使用呢,我们来看一看啊,在这一页ppt,我们现在与非线在这呢,其实你如果是想要对它进行使用的话呢,其实是非常简单的,怎么说呢。
我们现在的ez现在他已经是在我们的一个呃官方的tensorflow里面,以及我们的python里面是有实现的,如果你想要直接使用我们的这个一飞,现在性能直接是从from tflow。
their cares,their obligation import,我们的efficient b0 ,这个就是我们的basic那个版本。
这个呢它是默认可以加载我们的在image类型上预训练的这个网络结构啊,可以与训练加载进来,然后加载进来之后呢,你如果想要让他做一个分类啊,比如这个地方我们有一张我们的一个呃猫的图片。
然后呢我们可以直接对它进行分类啊,直接对它进行分类,这个其实是可行的啊,是可行的,然后这个地方他是直接得到了正确答案啊,对好当然你如果是想要加载其他的网络结构呢,这个地方是直接可以下载的。
这个地方我们想要读取b一的话,也可以直接下载我们的网络结构,好,这是第一个,如果我们想要做一个迁移学习怎么办呢,其实我们在很多时候呢做一些现在的时候呢,并不是说想要直接使用它的网络结构。
我们想要做一个迁移学习,什么是迁移学习呢,就是说我们在基于我们的一费,现在是网络结构,我们能不能搭建一个能够用于我们自身的这个就是说数据集的一个,就是说网络,也就是说我们在搭建网络的时候呢。
我们去修改我们已有的efficiennet的网络结构,修改我们已有的efficiense的网络结构,在我们修改的过程中呢,我们只需要修改我们的一个input,if input。
这个input呢就是说我们的一个输入的一个图片的尺寸,输入到一个图片的尺寸呃,可以可视化中间的过程,或者说最优的网络结构吗,嗯这个地方efficient它已经是就是说计算出来的啊,就是说已经是确定了的。
这个地方的飞行器的网络结构,你可以理解就是别人研究者就是已有的谷歌的一些工作人员,他们的研究者已经训练好的确定的网络结构,我们再拿过来用对。
当然这个地方如果你问的问题是这个autumcs的这个autumn cares,他这个搜索的过程以及他最终的搜索的网络结构是可以也可以导出的,也可以导出的,也就是说当这个地方的alan care。
它是包含这个网络结构搜索的这个地方的e非静态技能,它是只有最终的网络结构啊,只有最终的网络结构好,那么如果我们想要将我们的efficiench把它用在我们的数据集上。
就是只需要修改它的一个输入以及最终的输出就行了啊,最终的输入以及最终的输出呃,输入的这个地方我们需要修改一下我们的image size,就是说我们输入的一个尺寸输出呢。
我们就需要修改一下我们最终的一个全连接的尺寸,当然这个地方你也可以加入一些其他的层,比如这个地方我们对我们的一个呃图片,它的一个具体的一个输出呢。
这个地方我们是设置了一个include top等于force,这个是什么意思呢,就是说我们的efficient我不需要读取,不需要加载它的一个全连接层,我只需要加载它的一个就是说卷积层就行了。
所以说这个地方我们的模型呢,它是只完成我们的一个卷积层的一个计算,然后呢对我们的后面的全连接层呢,我们可以自动的做一个定义,这个定义呢就是按照我们想要的类别数量呢,就是说定义即可。
想要的类别数量定义即可,然后就可以构建我们自自己的一个模型啊,这个模型结构其实其实你可以就是说修改中间的结构,对呃,有点像遗传算法,但是这个地方可以遗传算法嗯,其实遗传算法它也是一个呃启发式的仿生。
仿生的启发式的一个搜索,这个地方呢其实也有一些像遗传算法用在网络结构搜索的过程中,也有一些类似的工作,但是呢这些工作呢怎么说呢,现在啊可能还是就是说efficient它的一个效果会好一些。
嗯当然也有一些基于其他的,比如说基于这种规则算器啊,以及其他的网络结构的一些方法的搜索,这个网络结构搜索呢我刚才也讲了,它的关键点是什么呢,关键点是我们如何去减少我们的一个搜索的次数。
因为我们这个地方efficient它是固定住了一些参数啊,然后再去搜索,也就是说我们去good 4起的过程中呢,我们的搜索空间是非常少的,而且呢我们在最开始的设置我们的网络结构的过程中呢。
我是确定了我们改变这三者对吧,我们的一个wide steps in the resolution,改编成三者都是会对我们的一个精度有减小或者变大的一个趋势,我们现在的一个目标就是做这三者的一个组合。
其实说这个优化过程它也会考虑到我们的一个搜索空间的大小,所以说空间大小对,所以说它的应该是在做我们的一个具体的一个网络结构的时候呢,是有一定的设计的啊,这个搜索过程是有一定设计的。
并不是完完全全的一个纯的我们的一个就是啊,完全是这种基于大气的这种结构,或者基于预算项目的结构,不是的好,我们继续,那么对于我们的一个从业者来说呢,其实我们在做使用的时候呢。
我们并不是说我需要去看它的网络结构,我们最关心的就是说我们能不能把一些现在把它用起来好。
那么我们就看一下呢,这个地方我也写了一个代码,就是如何将我们的efficient,把它用在一个我们的手势识别的一个案例里面。
这个地方呢我们就是就这样一个案例啊,非常基础的一个手势分类的一个案例,就是说我们的手部姿态的啊,是不是带的这个地方呢,我们的一个数据集分别是对我们的一个就是说手部啊做了一个拍照。
有我们的一个就是说12345的这种姿态啊,或者说他还有这种嗯大拇指啊,以及我们朝向的一些呃,就是说这种类别啊总共是分十类啊,总共是分十类好,那么我们就看一看。
就是我如果用efficienness完成我们的这个案例,我们来怎么做,我们来看一下这个代码,也是用我们的一个嗯care是写的啊,你用care是写的好。
我们首先呢就是说读取我们的模型,我们的模型呢基本上按照分我们的一个实例分十类好。
然后接下来呢我们就需要读取我们的数据集,这个地方呢我们的处理集其实是非常小的啊,其实我们的数据集只有几百兆,所以说呢我们这个地方呢是将我们的一个数据集,是直接读到我们内存里面,直接读到我们内存里面。
当然这个地方我们在读取数据集的时候呢,也有一些其他的方法,比如就是说这个代码是直接把数据集全部读到内存里面,当然你也可以在边训练的时候呢,边读取编训练的时候边读取,这个都是可以的。
然后呢接下来对我们的数据集做一些可视化,这些都是我们的可视化的结果啊,都是我们的可视化的结果好,然后接下来我们做什么呢,我们需要把我们的一个标签。
把它作为一个具体的一个就是one hot表现作为one后,然后接下来呢我们对我们的数据集把它拆分成我们的一个训练部分,和我们的验证部分好,那么有同学可能就会说,老师我们在定义这个网络模型的时候。
能不能自己去做我们的一个网络结构的一个读定义呢,其实这个地方是可以的,你可以自己去定义我们的网络结构嗯,可以可以共享代码吗,可以的呃,大家待会可以加一下我们的杨老师的一个微信啊,加一下我们杨老师的微信。
杨老师呢就是会将我们的代码以及所有的资料都会发给大家啊,对比如说不管你中没中奖啊,都是可以加一下我们的杨老师,对特别是中奖的同学一定要加一下我们杨老师东西好,在定义网络结构的时候呢。
你可以尝试自己去定义这个卷积神经网络,你可以自己去定义,当然你自己定义的肯定没有,就是说通过这种efficienage搜索他得到的网址不好,所以说呢在这个网络结构的过程中呢,你也扛可以尝试。
就是说直接读取我们的efficient与英语好的这个网络模型,这个网络模型呢就是说你可以直接去修改一下它的一个,就是说就是说这种类别个数啊,就可以完成我们读取我们这种网络模型好。
然后接下来呢就是定义一下我们的一个在训练过程中,我们的一个模型保存的一些参数,比如说我们是不是要做art stop,以及我们去是是不是需要打印我们的日志,这些都可以来做一个具体的一个设置。
然后接下来直接做我们的一个fate就行了,直接做一个废纸这个地方,那我们就直接对我们的数据集呢将它直接做一个compare,这个compare呢就是说我们设置一下,我们最终的一个训练的一个损失是什么。
以及我们最终的一个就是说评价函数是什么,然后接下来就完成一个训练即可,接下来完成一个训练即可好,所以说这个代码其实也是非常简单,非常简单,就可以做一个我们的一个就是手部的一个姿态的一个识别,当然了。
如果有同学想如说想要做一些比较更加复杂的,比如我们在一个呃就是我打开一个视频啊,打开视频,假如说你想要做这种的呢,这种跟我们刚才所讲的一个例子其实是存在差异的啊,这种的一个手部姿态呢。
你会发现它在具体的一个识别我们的一个姿态的时候呢,它不仅仅是识别的类别啊,我们暂停一下啊,你会发现这个地方是有一些点的,是有些点的这个地方它是识别得到我们的一个手部的关键点,手部的关键点。
这个关键点呢你可以看到它其实是我们的一些骨骼关键点。
谷歌关键点,谷歌关键点,所以说呢这个地方我们的一个关键点呢看不到吗。
现在你刷新一下,应该是可以看到的,刚才可能卡了一下,还能卡了一下,好这个地方呢我们的你可以看到这些点,这有一个黑点啊,现在可以了啊,现在可以了嗯,对有延迟好,稍等大家一下,好这个地方呢。
它的一个模型就是比我们的一个就是刚才所定义的一个模型,会更加强大一些对吧,它其实是识识别到我们的一个指尖,我们的每一个骨骼的一些关键点,所以说呢这个任务其实并不并不能直接从我们的一个分类模型得到。
它其实是需要从我们这个关键点识别得到的,需要从我们的关键点模型得到的,所以说呢刚才在我们的直播之前,有同学问的,就是说这种股我们的一个手部的这种这个手势识别手术视频呢,现在他主要的一些网络呢。
仍然是就是说从我们的一个姿态估计的一些模型,就是人体姿态估计人体骨骼关键点的一些模型得到的,仍然是基于就是以这种关键点识别的网络型得到好,那么如果各位同学想学习,就是说这种基于谷歌关键点的这些模型呢。
或者这些案例呢也都是可以基于我们李飞现在模型展开的好,我们继续,那么在定义对网络模型的时候呢,有同学就是他他可能就会到的是,我假如说想要自己去看一看这个efficienge,它的一个网络结构行不行。
嗯这个当然是可以的,这个当然是可以的,就是如果你想要去看一下他的网络结构到底是怎么定义的呢,你可以去在我们的一个turn flow,它的官网探索它的官网啊,官方的有github,有infe。
现在这个具体的一个模型的实现,以及它的一些代码,如果你想要看一看它原始的代码实现啊,open pos工业上用的多吗,嗯这个看具体一些任务啊,open boss其实是蛮好的,还可以做这种人体原理检测啊。
关键点识别啊,以及我们的手势识别都是可以的,对ben boss他能够做的东西很多,但是现在呢工业上还是需要对这些模型做一个需要做一些部署吧,然后怎么说呢,看他有没有具体的一些部署的。
这种比较适合部署的工具以及部署的模型,就是比较轻量级的模型,它是不是有,如果是有比较轻量级的模式呢,可能是比较好的,对,据我了解就是如果是人脸方面,人脸关键点检测啊,open boss用到的不多。
如果是这种骨骼关键点识别了,open boss是有比较大的一个场景的好,那么我们接下来的时间呢就是给各位同学介绍一下。
我们在7月带线的一门课程叫做机器学习机器人,这个课程呢也是嗯,我看他有些加的代码,这个我看一下open boss。
ben boss,不管他是不是有c加加的这个地方就是我们的一个机器学习的模型,它基于python也可以把它导出为c加加。
对这个open boss也是做刚才这位同学说的open boss也是做这种关键点检测的啊,特别的是做我们的一个人体姿态的5g的on those,不管他到底是不是这一业家呢。
都是可以把它导出导导出我们才是二进制的,python都可以导出啊,利用一些工具都可以导出的啊。
所以这个不是问题,这个不是问题,好我们接下来呢给各位同学介绍一下,我们在契约在线开设的一门课程,叫做我们的一个机器人机器人。
我们的一个机器学习及姓名呢是涵盖了我们今天所讲的一些课程啊,而且呢我们的机器学习及姓名的一个具体的一些知识点呢,以及我们的大纲呢其实是非常干货的。
而我们将会从我们的一个python以及我们的基础的matt pol,那我们派出发逐步的讲解到我们的积极性原理和实战,也会讲解到我们的一个具体的一个深度学习,好这个深度学习的这一部分呢。
也会讲解到我们的网络模型的设计,以及我们的深度学习在我们的一个图像和文本上面的一些具体的应用,当然了,我们的一个机器机器人也会讲到一些具体的项目,比如我们如何用我们的余生的学习完成我们的社交性检测。
如何让我们的深度学习搭建一个文本的,一个就是说机器人这些呢都在我们的集训营里面都是有有讲到的啊,是基于这种实战的,比如说我们来看一看这种我们的一个项目支援项目,这些呢都是有一些就都是基于我们的深度学习。
和我们自己学习模型来展开的,而且都是有一些具体的一些企业落地的一些需求的,所以说呢如果各位同学想报名我们的一个机器学习机器人的同学呢,都可以在我们的就是说加一下我们的杨老师的微信啊。
加一下我们杨老师的微信,然后了解,而且呢今天晚上通过我们的直播间报名的同学呢都可以有价格优惠啊。
至少是优惠1000元,至少是优惠1000元,所以说呢各位同学如果是想要跟我们一起继续学习我们的机器人呢,或者说学习我们机器学习啊,都是可以来了解或者报名的啊,而且呢就是说如果你想要学习其他的课程。
因为我们的机器人呢就是说如果你报名之后呢,是直接送我们的一个vip嗯,年度vip的卡的,而且也是送我们的大数据继续赢和深度学习机械赢了,就说这些坑呢,就是如果你自己去买呢,肯定是要花很多钱的。
如果你直接报名我们运营的,这些都是有送的,而且呢它也是送我们的很多的基础课。
比如我们刚才给大家这个地方,就是vip里面的一些基础课。
在我们的集训里面都是送的啊,都是送的好,大家如果想要报名我们的集训营的同学呢,都是可以来。
就是说加一下加一下我们杨老师的微信啊,然后了解一下,好好大家对我们的这个今天所讲的一个内容,以及我们的一个课程介绍的课程有问题吗,如果有问题的同学呢,也可以在我们的一个评论区,然后打字和我沟通好。
好大家对我们的机械原因有什么问题吗。
或者说对我们今天所讲的内容有什么问题吗,好大家对我们今天所讲的课程有什么问题吗,对啊杨大侠说一次都没有啊,你直接加一下我们杨老师的微信,直接和他说吧,也就是说你抽了三次都没抽中,对。
让杨哥是送你一个对集训营是零基础也可以学吗,就是呃我们建议是有python的基础会比较好,因为我们讲的课程呢仍然是在这个预习阶段是有就是说python的,当然呢就是说如果你有基础的话,会学的更快。
对你有基础上会学的重要,我们是建议有python基础就可以学啊,建议有python基础题可以学,而且呢我们的机器人其实是可以做。
我们的一个就是说有有很多项目啊,都可以带着大家进行学习啊,对,我们今天报名我们的集训营呢是直接优惠我们的一个1000元的优惠,我们的1000元的对,而且我们的一个具体机型也都是。
就是说能够把很多参与我们集训的同学,都是能够找到一些比较好的一个offer的啊。
比较好的一个offer的对,所以说大家如果想要报名我们的集训营的同学呢,是可以就是说早点报名啊,早点报名,感兴趣感兴趣的同学们稍后再报名好,而且我们的机器人呢。
机器人呢很多同学都是就是说如果是嗯在我们的学习,那么有一个什么问题啊,都是由我们的很多的老师可以进行答疑的,不管你学习问题还是就业问题,都是可以来进行给大家进行辅导的,对有python基础是指什么基础。
就是说你用python能够写一些基础的代码,这个就是啊用python写一些基础的代码,这个基础是的啊,对大家对我们的课程以及对我们刚才给大家介绍的这个efficienage,这部分有什么问题吗。
对这个其实知识点其实很简单啊,如果你看不懂他的知识点的话,对有什么问题吗,怎么大家顶着我们的一个vip之后就不说话了呢,这个这样不好呀,对大家就是我们今天所讲的课程有什么问题吗,还没有领啊。
你加一下我们的杨老师的微信啊,呃学到很多啊,谢谢谢谢,嗯还没有领,问题就是什么大家多提一些问题啊,因为呃就是说给大家沟通的机会也不是很多,对大家多提一些问题,咳这个手势识别还有哪些方面可以做。
嗯我个人觉得这个你是你是想要说应用啊,还是说他的模型吗,如果是手势这种识别的应用呢,这个地方我们的一个呃vision transformer啊。
vision transformer我们在课程里面是在我们集训营里面是没有讲的,但是在我们的小课,就是说我们在之前的直播里面是讲过transformer,和这个a v i t模型的对。
呃手势识别如果是应用的话呢,其实主要是在我们的比如说这种手语识别,或者说我们在做一个具体的一个这个门禁里面,或者说这种具体的一些就说安防领域啊,其实都是有些应用的,但是如果你说模型而言。
模型其实现在呢我个人感觉还是拼这个标注数就会比较多,因为现在工业上啊,其实他在部署这个模型或者训练模型的时候,他不会用很复杂的模型,它肯定会考虑到我们的一个具体的一个预测速度啊,它的nancy等等的。
所以说呢它的一个模型不会用很复杂,嗯,嗯好老师,平时用到的一个手势识别的模型到底用哪些,这个道理就是说can就是说我们到底是直接做一个分类,还是做一个我们的一个就是说基于这种关键点的。
如果是基于这种关键点的,就比较建议用这个模型对,比较建议用谷歌的这个middle pie啊,middle pie这个它是支持二进制部署的。
对就单纯的手势识别提高识别准确率。
如果是单纯的手势识别提高啊,就是模型的一个准确点的话,我建议你去看,可以看基于这种internet internet来做也是可以的嗯,ser那次做也是可以的,感觉网络结构的设计很重要。
好的结果需要很多线性知识设计呃,为什么需要线线知识呢,因为现任知识可以减小我们的一个搜索空间,对新建知识能够减少我们的搜索空间。
所以说先验知识很重要,对呃有同学问到这个部分,这个部分可谓方法边节点之类的,可以用g n的一个优化优化搜索吗,嗯这个怎么说呢,你是把它想做视为一种图来做对吧,应该是有一些论文的,但是我暂时没有看到啊。
我在上面可能应该是有的,应该是有的,你是想把这个我们的节点与节点它的关系中基的基因建模对吧,应该也有,但是它整体的一个过程,其实我感觉就是和我们的一个这种口味的方法是差不多的,口味的方法是差不多的。
因为这个口味的方法其实本质就是将所有的结构啊都把它遍历一遍,然后从里面选择最合适最合适的啊,通过这个梯度的计算得到的嗯,前面的节点不同的连接,相当于是对结构优化结构定的在训练参数嗯,其实是这样的。
其实是这样的啊,automa啊,它在搜索的过程中呢,可以就是说对我们的一个网络结构去进行搜索,也可以不对我们的网络结构搜索就是搜索网络的一些超参数,这个都可以做,这个都可以做。
那么efficiennet呢它并不是基于我们这种可微搜索得到的,它并不是基于可谓搜索创造的,它其实在搜索的过程中呢,最重要的是在我们的一个网络的一个深度,宽度以及分辨率这三者的过程中做了一个搜索。
所以他并不是完完全全是基于可微做的,而不是做口碑做的,对就是说其实它是用到了这种网络搜索的这种思想,但并不是用口碑做的,大家还有问题吗,嗯好,那么大家如果想要领取我们今天的ppt代码以及数据的话。
都可以加一下我们杨老师的微信,对,如果大家想要就是领取我们的月卡。
以及了解我们继续学以及姓名的同学呢,也可以咨询一下我们的严老师,咨询一下我们的杨老师好,我们有录播的,如果想要看录播的,或者说你现在卡想看录播的呢,也可以加一下我们老师呃,automa好难啊。
其实是这样的,我刚才在ppt里面这个地方也写了一些应用领域啊,你可以关注一下,这个地方的应用领域,我个人感觉比较就是说有工业落地的啊,就是说中小型公司都能用上的,可能是这个我们的一个自动的特征生成。
这一部分是我们的中小型公司都能用的,因为搜索这个网络的话呢,可能是只有谷歌或者说阿里或者说这种facebook,可能他们玩的起来,但是如果是这种中小型的一些企业,其实也是可以用自动特征工程来做的。
因为这些自动控制特征工程的一些方法其实也是有落地的啊,不管是在tr这些任务上面,还是在其他任务上面,好大家还有问题吗,如果没有问题,我们今天的直播就结束,大家想领取我们的ppt以及我们的代码的话。
都可以加一下我们的杨老师,好的好好,大家没有问题的话,请扣个一好不好,我们再看一看还有多少同学还在,那么我们就结束我们的一个今天的直播,好,好谢谢大家,谢谢大家,好。
人工智能—计算机视觉CV公开课(七月在线出品) - P19:【公开课】从零实现人脸关键点模型的训练和部署——无二维码 - 七月在线-julyedu - BV17z4y167dq
对。大家能听到吗?我们稍等一下啊。对。我们8点钟准时开始。对,大家也可以在我们的一个直播间里面就是说进行提问啊。对,各位同学之前就是学过深度学习吗?如果学过学过深度学习的同学呢,可以扣个一好不好?
然后如果没有学过的话,也可以。嗯,之前有同学说啊学过。其他同学呢学过啊,这个学过肯定是比较好的对吧?肯定是有一定基础了。嗯。沟通对智慧学习哪一部分比较感兴趣呢?对啊。
其实深圳其实也有很多的一些其他的一些啊,就是各方各面的一些应用吧。所以说一方面是这个方向,另一方面我觉得也是看。就写一个应用。其他同学如果想回答的,也可以在我们的一个。就是聊天框里面打字啊,对。
我们就8点钟准时开始啊。嗯我们就稍等一下下啊,然后待会儿8点钟准时开始。我们今天所讲的主题是嗯比较基础的,但是呢我们也会运行一些这些代码给大家讲解一下啊,我们8点钟。开始。对,8点钟开始。好,嗯。
现在各位同学在我们直播间的有多少啊,可以扣个一好不好?然后我们马上就开始我们的一个课程啊。对。好,我们再稍等大家,稍等一分钟啊,一分钟我们就开始。8点啊对,我们8点钟开始的啊,马上就开始马上就开始啊。
好。嗯,那么我们今天所讲的主题呢是这个从零实现人脸观理点模型的训练和部署。我们这个讲解的内容呢仍然是以这个。就是记忆学习和这个深度学习所展开的。
所以说呢我们这个课程呢其实是非常适合嗯如果是想要学习这个积忆学习和想要学习深度学习的同学呢,我们这个课程是其实是非常适合的。那么我们这个今天的课程呢,就是大概是时间是我们的一个一个小时到一个半小时啊。
我们的一个具体的一个时间,是我们的一个小时到一个半小时。然后如果各位同学。在我们的一个学的过程中呢,有什么问题啊啊也可以直接在我们的评论区里面进行一个打字和沟通。然后嗯我是TI在线的刘老师。
然后我们就开始我们今天的一个课程。我们今天那个课程呢是分为四部分的一个知识点,然后再加上相关的一个代码实践进行展开的。我们的一个具体的一个知识点呢,首先会从深度学习的一个介绍开始。
然后再到我们的具体的一个深度学习的模型搭建基础。然后再到我们的一个模型的一个操参数,然后再到我们的一个模型的训练过程,嗯,基本上会讲解到我们的深度学习的一些基础知识,以及深度学习它的一些具体的一些啊。
就是说模型搭建的一些细节。当然我们也有具体的这个代码时践的环节,所以说大家啊千万不要就是说错过我们今天的一个任何一部分的内容。当然我们的一个课程讲解的过程中呢,我们也会也会给大家送出福利啊。
我们今天晚上呢给大家送出的福利,就是我们的一个契约在线的一个VIP的月卡。这个领取的方法呢,就是说大家在我们的一个嗯就是课程中间就是说一1一方面呢是积极发言。另一方面呢就是如果有就是说提问,我们会挑选。
点这个5位同学就是说送我们的1个VIP月卡。对,好,那么我们就开始我们今天的一个课程内容。首先呢我们来看一看深度学习的一个介绍啊,就是说我们其实本质还是需要给大家介绍一下深度学习的深度学习到底是什么?
我们就从这个深度学机这一部分开始啊。深度学习它到底是什么呢?这个很多同学可能在学习我们的深度学习的时候,可能觉得学习的一个路径啊,没有什么就是很好的一个路径。其实我们现在对我们现在而言呢。
就是我们现在的同学而言,其实我们学习这个深度学习,或者说学习我们的一个机极学习,其实都有很多的一些教材啊,D啊就是我们的deep learningM是我们的mer learning对吧?
那么在这个地方其实我们现在学习呃积极学习和学习深度学习呢,其实有很多的一些教材。嗯,当然也可以也有一些具体的一些呃视频啊和教程来学。但但是呢我是觉得嗯你如果是呃就是说完完全全从一些教材来学呢。
可能会呃比较就是说模糊啊,以及这个。学习的一个效果也不会特别好。所以说呢我们今天所讲解的一个嗯这个主线呢,就是首先给大家讲一下深度学习的深度学习具体的一些定义。然后呢,再看一看它的一个模型的一个搭建。
就是说如何从头搭建我们的一个模型,然后再去看它的一个案例。就是说整体而言呢就是分这三步走啊,就是说我们的一个案例。分成三步走。对,我们先看第一步啊,就是深度学习到底是什么。嗯,在我们定义深度学习。
或者说学习深度学习的定义的时候,嗯,你需要注意一点,就是说深度学习它原始的定义是有很多种类啊,有很多种种类种定义。我们这个地方呢是以其中的一种定义来做讲解。
深度学习呢是包含多层神经元的一个结构的一个记忆学习模型。它的整体的结构和人脑神经元的一个结构,有一点类似。深度学习呢它的一个特点是它是包含了多层市内源的这种结构。那么这是它的第一个特点。
第二个特点就是说深度学习其实它是一种积极学习的一个算法模型。我们在后面的一个P就是说这个可以从这个我们的这个维恩图可以看出来,深度学习它跟我们的一个机极学习在这个地方其实是有一个分支的。
最外层是我们的人工智能,里面是我们的记忆学习,再里面是我们的深度学习。这个地方呢你一定要弄清楚,就是我们的深度学习,其实它是一种我们的记忆学习的算法。或者说是一异学习的一个分支,一类分支。在这个地方呢。
就是说我们在学习我们的一个记忆学习的时候,它可能还有一些其他的一些生活模型。比如我们的数模型,我们的一个线性模型,比如逻辑回归,还有我们的SOAM。对吧还有我们的这种无间度的KNN。
还有我们的其他的一些模型。当然这里面还有我们的深度学习模型。这个地方的深度学习模型只是其中的一一种。也就是说在这里面有其他的一些模型。其他怎么写。对吧其他的模型在我们的日常生活中呢,也是非常常见的。
所以说我们在学习深度学习的时候,一方面呢,你要知道它是机器学习的一种分支,是以这种神经元的这种计算的一种特点来,就是说这种分支吧。然后呢,这是第一点。第二点呢。
就是说需要注意一下机器学习人工智能和深度学习的一个具体的范围。这个范围决定了他们各自的一个知识点吧。也就是说人工智能它是包含机器学习的,也包含其他一些分支。
机器学习算法或者机器学习这个领域是包含深度学习的,还有一些其他的一些模型分支。这个范围第一点大家要弄清楚。我们在学习这个记忆学习的时候,你可以去学习一些具体的一些模型。
比如在我们的一些具体的一些记忆学习的教材里面,比如像周志华的一些就是说这种细关书等等的,他会将这个具体的一些每个章节去讲解一个模型,对吧?每个章节去讲解一个模型。
那么深度学习呢可能是其就是说这种记忆学习教材里面的一个章节。所以说呢我们在学习这个嗯深度学习的时候,你可以先去学习一下记忆学习的一个基础。因为记忆学习它跟深度学习在很多知识点上是存在交叉的。
所以说你单独的将记忆学习和深度学习,把它嗯对立起来学习,其实是不对的。这是第一个注意事项。第二个呢就是说记忆学习和深度学习的一个学习方法,它是存在一定的一个差异的。
机器学习呢它可能我们会呃就是说会从这个模型的一个推导的原理它的定义,然后再到它的一个就是说具体收敛的证明这种逻辑来去学习。但是呢深度学习它跟这个不一样。深度学习呢其实它比较适合解决一些飞凸的一些问题。
也就是说很多的一些。就是说一些问题它是存不存在,或者说很难找到我们的一个最优解的这种问题。他可能只能找到我们的一个局部最优解。那么这个地方的一个深度学习和记忆学习的一个学习方法。前者记忆学习。
你可以偏向于理论的学习,后者深度学习呢可能去偏向于实践会更加好一点。对,这是两者记忆学习和深度学习学习的过程中给大家的一些建议。那么我们的深度学习它到底是什么呢?深度学习。它的一个特点是它是端到端的。
这个地方的端到端呢,其实在我们很多的一些具体的一些教材里面都写呃,就是说写写的写的非常非常清楚啊。这个地方的端到端就是我们的一个呃sorry啊,这个地呢方这个地方的端到端呢就是我们的inputs。
然后到我们的一个output的一个过程。这个输入端和我们的输出端。这个地方呢它是一个end to end。end to end的一过程,就是说是一个端到端的过程。从我们的输入到我们输出。
中间呢就直接通过我们的模型来完成一次性的一个计算。好。深度学习呢,它这个地方为什么叫端到端呢?你没同学知道的,也没同学知道这个地方为什么端到端是深度学习的一个特点呢?如果有同学知道的话。
可以把把这个你的一个看法打到我们的一个聊天框,对吧?然后第一个回答的同学也可以领取我们的1个VIP的月卡。这个地方的一个深度学器呢,它是从我们的一个输入端到我们的输出端,直接做一个相关的计算。
这是第一个点。第二点呢就是深度学习,它是一个有效的计算图。我们的每个节点在我们的一个全连接的网络。我们这个地方其实是显示的一个全连接的网络。在这个全连接的网络里面呢。
我们每个节点是一个具体的一个计算的过程。然后呢,这个计算的节点,它通过我们的一个输入。然后通过一个计算得到它的输出。那么这个地方你可以看到节点与节点之间其实是有一个有向的一个数据的一个流向的。
有向的数据的流向的。那么这个地方呢就是深度游体,它其实本质你可以将它的一个计算图把它绘制得到成一个这种可视化以下啊,然后你就可以得到这种有向图。图中的一个节点呢表示它的一个具体的一个计算过程。对。
这样个深度学习里面呢,其实它的一个具体的一个就是有这种输入层隐含层和我们的输出层。输入层呢是我们直接对我们的一个模型进行一个具体的一个输入,然后完成我们的一个就是说从原始的一个模型。
原始的数据输入到我们的节点里面。你可以把输入单独当做一层啊,然后呢隐含层隐含层就是说它是非输入层和我们的非输出层,就是中间层。输出层呢就是我们最终的一个输出结果。最终的输出结果就是我们将。
我们通过一些计算得到我们最终的输出结果。这个输出结果呢,你可以是让它输出我们的一个类别的概率值,以及我们的一个。数值的回归的一个数值结果,这个都可以。
我们这个地方所展示的就是一个典型的一个全连接的一个网络。那么什么是全连接网络呢?嗯,我们这个地方假如说这是我们的第一层,这是我们的第二层,这是第三层。
它的一个具体的一个层与层之间是有了有这个有向的一个数据流向的这是第一点。第二点呢就是说每个节点它的,比如说第二层的节点的一个输出是作为我们第三层节点的整体的一个输入的。对吧所以说这个地方大家可以看清楚。
这个地方我们其实本质是做一个具体的一个。嗯,就是说有一个映射的关系啊,嗯乐毅同学说,从输入间的文字嗯先经过转换成张量,然后到神经网络里面经过自动特征提取到输出的过程,然后分类和预测啊。对的。
对洛毅同学回答的很对啊,这个很很完备啊,很完备。对,可以待会儿呢可以加一下我们的杨老师领取一下我们的一个月卡啊。对,嗯,就是。嗯,待会会给大家。
就是说嗯就是说给出这个如何领取我们的一些福利的一些就是一些渠道啊。对。这个地方的N end呢其实它主要的是跟非深度学习的一些模型相比的。呃,非深度学习的模型呢就是说我们有了一个具体的一个输入。然后呢。
我们需要做一个预处理。嗯,就是说我们需要做一些预处理。比如说我们的一个缩放。或者说我们需要做一些特征工程。这个都是在我们的一个具体的一些非深度学习的模型里面是需要做的。然后呢,接下来再送到我们的模型。
然后再到一个输出。那么深度运行模型呢,它比较呃就是说它比较擅长了一点,就是说它是能够自动的做一个特征工程。嗯,他怎么做的呢?我们来看一看这个全连接的网络,以这个全连接网络举一个例子。
我们这个节点的一个输出是送到我们的下一节点的一个作为下一层节点的一个输入。那么在这个地方,我们的一个具体的一个输入输入的一个呃这个节点的一个输入,它来自于什么地方呢?来自于前面层所有节点的输出。
也就是说层与层之间的节点,它是全部连接到一起的,就是说这一层的节点和下一层的节点是全部连接到一起的,对吧?所以说这个地方它为什么叫全连接网络,就是这个地方其实是很。
就是说很生动形象的描述了他具体的一个节点连接过程。那么我们刚才其实就是说我们刚才所讲的这个全连接网络。其实它可以将我们的网络节点使用某种方法,或者说这个网络模型使用这种可视化的方法把它绘制绘制出来。
对吧其实这个地方其实。他这个是将我们的网络结构给它绘制出来。但是呢我们在进行一个具体的一个呃这个计算的时候,我们在写代码的时候,其实我们本质呢是需要使用一些。嗯。
就是说代码实现或者说使用一定的一些计算方法来表示我们的一个网络模型的。嗯,这个地方呢我们举一个非常简单的一个例子啊,就是我们以这个嗯就是单个神经元的一个输入输出作为举例。
我们这个地方呢假如说我们有三个输入X1X2以及我们的X3,然后对应的我们有3个权重W1W2W3。对吧神经元它怎么做计算的?就是说我们的X1乘以W1加上X2X2乘以W2,加上X3乘以W3,对吧?
然后再加上我们的B,这是我们的中间计算的一个结果,对吧?C然后呢我们最终的一个out是怎么得到的?out是通过一个肌肉函数,对吧?假如说我们的基础函数是用sigoidoid。
那么就对我们的Z通过一个具体的一个结偶函数,这是我们的单个生经元在做的一个具体的计算。其实你会发现它的一个具体的计算在计算什么?
计算就在我们的一个输入的一个向量和我们的一个输入的向量和我们的一个具体的一个权重的向量进行一个线性的一个计算,对吧?这个其实本质你可以很方便通过我们的一些举证乘法来完成,对吧?
那么如果我们想要对我们的一个具体的一个。嗯,我们的一个全程阶层,把它作为展示成或者写为一种积算的方法呢,比较推荐可以写成这种矩证相乘的这种形式。
我们的第一行呢是我们的一个第一个往就是说节点的一个具体的一个这个地方我们有5个神经元,5个神经元。我们具体的一个输入呢是我们的一个7个输入,7个输入。那么这个地方我呃我尝试的把这个图给大家画一下啊。
画一下,大家就能够明白。我们这个地方是有这个我们的一个5个神经元,对吧?12345,然后有7个输入,对吧?相当于是1234567。那么这个地方就是说每个输入是输入到所有的神经元的对吧?
这个地方我就画一个就行了啊。那么这个地方我们在进行一个进行矩阵相乘的时候,其实本质就是W1乘以我们的X1W2乘以X2对吧?以以此类推,这个相乘得到什么位置啊,得到我们这个位置的一个中间计算结果。
是我们的W和X进行相乘的。然后第二个我们的申经元的一个权重和我们的一个输入,以此类推进行计算,得到这个地方,这个就是我们矩证相乘进行得到的对吧?那么再加上我们的一个偏值偏值,对吧?
这个地方其实我们每个神经元一个对应的偏值,然后进行相乘就得到了我们的一个具体的一个输出。对吧具体的一个输出。好,这个呢就是我们的一个全新阶层,它的一个具体的实现。你如果是想要把它完整的所有条线。
你把它绘制一下。其实跟我们的一个计计算过程其实是一致的。我们在讲解这个地方,我想表达的意思就是我们在学习深度学习的时候,一方面你可以学习它的具体的定义。另一方面呢,你可以学习一下它的一个网络模型。
它怎么进行具体实现的。这个具体实现呢可能就会更加深一点。但是呢这个会帮助大家去了解具体的网络模型的一些原理,也会知道它具体的一个计算过程。好,那么在我们做深度学习的时候呢,其实还有一部分呢。
就是你要学习它具体的一些案例。嗯,其实深度学习呢它很能够做很多事情,比如人脸识别啊,车牌呃车辆检测啊,动物动物识别啊、红绿灯检测啊,以及文本翻译啊,客服对客服对话机器啊,对吧?
这个地方呢我们的一个具体的一个深度学习的一些案例,其实它能够完成的很多。这个地方举举的一些例子。前面四个呢是我们的CV方向的一个案例,后面两个呢是我们NRP方向的一个案例两个案例。
那么这这些案例有什么就是特点呢?或者说这6个案例,它有什么相同之处呢?有没有同学知道的?呃,如果有同学知道的话呢,可以就是说打字在我们的一个聊天框。对我看一看大家知不知道啊。我们以其中一个案例来举例啊。
我们的一个车牌识别。车牌识别呢就是说我们将阳。输入一个具体的一个车牌的照片,然后识别出这个车牌里面的具体的一些字符。对吧我们的一个这个是我们的车牌识别,就是说输入我们的一个车牌的一个照片。这个照片呢。
比如说他写的是什么基。A对吧ABC123对吧?是我们的一个照片,然后输出我们的具体的一些字符。那么这个地方呢,其实它输入的是我们的一个image。输出呢是我们的一个具体的文本,对吧?这个插牌识别呢。
你可以视为一种或者把它抽象为一种典型的这种。OCR的任务对吧?OCR的任务来后来完成。有同学说嗯,H乐玉同学说他都有标签。对,其实在这几类任务里面,它都是有标签的。但是我想我想要的答案可能不是这个答案。
我想要的答案其实这个地方深度学析它适合用来做什么?对,我们在学习深度学习的模型的时候,以及在学习机器学习模型的时候,经常会被问到深度学习适合用的什么场景。或者说我遇到一个问题的时候。
我怎么知道选择什么样的模型呢?这个其实是很多同学,特别初学者同学就是说。呃,会问到一个问题,我我问到一个问题,我怎么知道选择什么模型呢?那么我为什么遇到如图就PPT所示的这6个问题。
我就知道用深度学习模型呢?有标签肯定是呃就是说它至少是一个呃这种有监督机学习任务,对吧?当然也有一些无监督机忆学习任务,我们也可以用深度学习。这个地方我为什么在用我为什么在做这个客服对话机器人的时候。
我不能用机学机的算法。对呃,H洛毅同学回答的这个点非常好,就是它是能够自动提取特征的。我们这6个案例,其实它都是一个有监督的一个场景下,且我们很难去做一个特征工程的一个任务。呃。
比如说我们这个客服对话机器人,其实我们也可以通过一些特征去做一个抽象,或者说去提取出我们的一个对话的一些相关特征。但是呢这个特征可能是很难进行提取,或者说提取的过程呢,是需要耗费大量的一个时间的对吧?
在比如说我们的一个车牌识别这个地方它对于我们的一个图片,其实我们是很难提取它的一个图片的一个特征的。深度学习适合做什么呢?深度学习非常适合对做一些对人很简单。对人来说很简单。但是呢对机器来说很难的事情。
对,比如说我们的人来看这个红绿灯,看这个动物的时候,他就会显而易见的下意识的就反映出。对吧或者说得到它的结果。但是呢经济学习的模型其实它是很难做这种事情。所以说呢。
深度学习它比较适合用你在做一些显而易见的任务。但是呢这个任务呢我们很难去提取一些特征。这是深度学期比较适合做的一些场景。好,我们接下来看第二部分啊,这个模型搭建的一个基础。呃。
我们在搭建一个网络模型的时候,我们刚才在前面几页也给大家讲了,搭建一个网络模型。其实我们本质如果是一个深度学习模型的时候,其实我们本质就是由我们的一个具体的一个输入层。
我们的一个隐含层和我们的一个输出层,就是我们的三内层来组成,对吧?那么这个地方呢我们在搭建一个网络模型的时候呢,可能还是需要如果我们搭建是搭建的是一个卷积升经网络,那么我们可能是需要有这些具体的步骤。
首先呢我们确定一下我们的一个输入和输出,也就是说我们确定一下我们具体的网络模型,它的一个输入是什么,以及它对应的一个输出是什么?这个地方可能会确定我们具体的一个输入的维度和我们的一个输出的维度。
第二个我们就需要确定一下隐含层。比如说我们确定隐含层这个地方,假如我们使用的是我们的一个卷积层,那么在卷积层的时候呢,我们可以确定一下我们的卷积层,它的一个通道的一个数量。
以及可以确定一下我们的卷积盒的大小步长和我们填充这些字段,对吧?然后呢,通过这些字段之后呢,我们就可以确定一下我们的具体的一个卷接层的一些维度等等。好。
这是我们的搭建的一个卷积神经网络的一个具体的一些步骤。那么什么是卷积层呢?在我们学习一些具体的一些深度学习的时候,不管你学习任意的一些深度学习的框架,其实本质就在学习我们具体的一些层的使用。
最最基础的就是学习我们的层的使用。比如我们有什么。我们的这个激活函数层对吧?我们的计活函数,比如我们的sigoid。我露。对吧这是我们的计有函数层,这是我们的计础函数层。当然我们还有其他的层。
比如说我们的一个随时函数。BCE binary cross enpy或者说我们的CE对吧?我们的一个多分类的,或者说我们的MSE对吧?回归的。或者说我们的MAE等等等等。这是我们的一个。
就是说你可以理解它是一个我们的一个损失函数,或者说这个损失函数模块。还有一些,比如我们的卷积层。卷积对吧?我们有1D的卷积,2D的卷积,3D的,还有转置卷积对吧?等等。还有其他的。
比如说我们的全连接层对吧?或者说我们的规化的一些层。在我们的一些深度学习的框架里面,其实它都是按照我们的一个层来做我们的一个具体的一个数据。就是说这种。把这些功能啊把它划分到层里面,不同的层呢。
它可能解决的一个任务其实不一样的。那么我们刚才给大家介绍了一下卷积层。那么接下来呢我们啊刚才我们给大家介绍了一个全链阶层啊,那么接下来呢我们就给各位同学介绍一下这个卷积层。卷积层它在做什么呢?
其实卷积层它跟我们的一个数字图像处理里面的一个滤波器,其实本质上是一样的。我们通过一个滤波器,对我们的一个输入的一个二维的数据进行一个滤波,然后可以得到我们的一个输出结果。我们来看一个具体的一个案例。
就是我们。假如输入一个具体的一个7乘7的一个输入,然后我们设置一下我们的一个卷积盒的大小是3乘3,它的一个具体的步长是我们的2,也就是我们的每次滑动往右滑动,以及我们往下滑动的一个像素的一个个数。
那么我们如果是步长为二的情况下,我们输出的结果是3乘3。它的一个滑动就是我们首先在这个位置,然后往右滑动两格,在这个位置。然后又往右滑动两格,在这个位置。滑动完成之后,然后往下滑动两个,以此类推。
那么这是我们的一个步长为二的情况。当然,如果我们设置不长为默认的情况下,那就是默认是一,对吧?那么我们这个地方就是一个网页滑动。不断往有滑动。对吧。好,这是我们的卷积。
卷积呢其实它原始的是在我们的一个就是说原始的这种定义呢,是在我们的一个一维的这种持续数据嘛。就如说定义的。当然我们也可以把它推广到我们的一个二维的数据上,就是我们的二维的卷积。
这个地方呢我们先给大家看一个动态图啊,这个动态图。呃,我们在进行卷积的时候呢,我们可以设置我们的一个卷积盒的一个大小。卷积盒呢就是我们的这个地方的一个灰色的一个就是这个我们做在做一个具体的一个卷积。
在这个区域内将我们的一个对应的一个输入和我们的卷积盒进行一个计算。我们还有我们的一个步长和我们的填充步长呢就是我们在进行一个滑动的时候,在我们进行一个滑动的时候,我们的一个移动的一个像素的个数。
对吧这个地方或者说是移动的像素的一个单位,这个地方我们是移动一个单元格。还有一个是我们的填充,填充呢就是说我们在进行一个。具具体计算之前,我们可以将我们的一个具体的一个输路呢,把它四周填充为一个场数。
比如我们把它填充为一个具体为就是四周填充一圈我们的一个。就是。我们的一个就是说零对吧?这个地方填充为一呢,就是说它周围就是说有一圈单位一的,就是说这个地方周围一圈儿。就是填充了一个单位的一个常数。
常数呢,我们一般情情况下填充我们的零啊填充我们的零。当然我们的补偿如果设置不同的情况下。最终或者最直接的一个效果是什么?最直接效果就是我们的一个输出的维度和我们的输入的维度,它的一个改变。
我们的些输出的维度。对吧。在我们步长V一填充为0的情况下,以及我们步长V2填充为一的情况下,它得到的一个维度,输出的维度是相同的。对吧但是呢它的一个具体的一个计算流程其实是存在我们的一些个差异的。
那么我们就继续。在这个地方呢,我们在进行一个具体的一个计算的时候,非常关键的一个点就是我们能不能根据我们的一个输入的一个维度,然后去以及我们的一个对应对应的一个卷积盒。
以及我们的一个嗯对应的些参数去计算,得到我们的一个输出的一个维度。这个就是我们的一个核心的一个点,就是我们能不能根据我们的一个。就是卷对于卷积申经网络来说啊。
就是我们能不能根据我们的一个对应的输入的一个大小,我们的卷积的一个参数去计算得到我们的输出的大小。它是有一个对应的一个计算的公式的啊,就是我们的一个N。
加上2P减去F除以我们的scribeide加1N是我们的一个输入的一个尺寸。P呢是我们的padding是我们的填充的尺寸。为什么乘2呢?因为它是左右两边都填充了。
减去FF是我们的一个cural size。cur sense就是我们的一个卷积核的大小,卷积核的大小。然后stride是我们的步长,因为我们需要移动多少步,然后加上一这整体而言就是我们的这样一个操作啊。
整确而言就是这样子操作,就是N加上2P减去F除以str加一,这个是我们常见的一些面试题,或者说我们在计算这个卷积核它的一个维度变化的时候,就可以按照此种方法来进行。那么我们这个地方你怎么进行计算呢?
其实我们就给大家计算一下啊,比如这个地方我们的一个输入的一个维度是7乘7,我们的一个卷离核的大小是3乘3,也就是我们这个地方的一个N是我们的一个7。配的是我们的一对吧?2乘1减去FF是3。
除以strstr是一加上一对吧?我们的7加上2减3,再除以1加1,对吧?大家可以看一下它对应的一个输出维度是多少。所以说呢我们在进行学习一个对应的乘的时候,你就可以参考这种形式,把它的具体的一些嗯参数。
它如何去影响我们最终的输出的,可以把它进行一个就是说梳理出来。那么我们刚才所讲的呢,其实是一个二维的一个矩阵。在进行卷积的时候,它的一个对应的一个输出。但是呢在我们的现实生活中。
其实我们的一个具体的一个输入呢,它有可能不是不仅仅是一个二维的。他有些时候呢是我们有可能是我们的一个多维的。🎼是这里一个系的一个。我们的一个输入呢,其实。对于我们的常见的呃彩色图片呢。
它是1个RGB的这种颜色空间。也就是说它是一个三通道的三通道的。我们再进行一个,假如我们有一个图片,它是一个7乘7乘377是我们的一个输入的一个图片的高和宽三呢是它的一个通道数。那么在这个地方。
如果我们对这个输入进行一个卷积操作呢,它就不单纯的是对我们单个通道进行卷积呢,我们就需要对它输就是说多个通道同时进行卷积。我们这个地方这是第一个卷积核,这是第二个卷积核。
那么第一个卷积核它是怎么进行卷积呢?我们这个地方我们的一个输入的一个通道数是3,那么我们对应的这个。卷积核的一个通道数也是3,也就是我们这个地方的一个输入的纬度是7乘7乘3。
我们的卷积核的大小是3乘3乘3。是对应上的,这个是对应上的才是能够对应上啊。我们怎么决醒卷积呢?我们这个通道第第零个通道也就我们第一个通道的一个输入数据和我们的一个。卷积核的第一个通道进行相关的计算。
我们的第二个通道跟我们的卷积核的第二个通道进行计算。卷我们的第三个通道跟我们的卷积核的第三个通道进行计算。这个怎么计算的呢?这个卷积的操作其实本质就是在对它本质就是对我们的一个卷这个位置。
某个位置跟我们的卷积核的一个权重进行相乘,就元素级别的相乘,然后求和,然后直接上我们的偏值。所以说我们的一个具体的一个卷积的操作呢,在我们每次卷积的时候,假如说我们把PPT把它暂停啊。
我们把PPT把它暂停的时候,其实这个地方我们的一个。它是计算得到一个值。它是计算得到一个值,这个地方其实本质是我们的9个数值进行相乘,9个数值进行相乘,9个数值进行相乘,也就是27个数值进行相乘求和。
然后这些上我们的添置得到一个输出。得到一个输出。也就是说我们这个地方其实本质我们的一个7乘7乘3的一个输入。在我们的3乘3的一个卷积的一个3乘3乘3的卷积。卷积完成之后,它得到的是一个3乘3的一个输出。
它最终得到的是一个,就是说我们的一个相当于是一个二维的一个输出。如果我们想要让它得到一个多维的,其实这个地方的多维的是这样的一个含义。这个是我们的一个第一个卷积核。
也就是说我们这个地方的3乘3乘3的卷积核的输出,这个是我们第二个卷积核的得到的输出。这个地方其实本质我们这个地方的步长其实是2,对吧?它其实7乘7乘3的一个输入。在通过3乘3乘3的卷积之后。
其实得到的是一个3乘3的一个输出。如果我们的卷积号能够让它卷两次,对吧?那么我们得到的一个结果就是3乘3乘2。它的这样一个输出。所以说呢大家一定要理清楚我们的一个二维的卷积和我们的一个多维卷积。
多通道的卷集它的具体的过程啊,其实本质上都是类似的,都是类似的。我们刚才给大家讲了具体的一个卷积的一个操作。其实我们在日常生活中呢,我们可能不单纯的会讲,就是说会学到卷积。
我们可能会直接使用到某种类型的一个神经网络。比如说我们会使用到卷积神经网络,对吧?我们刚才在第一部分给大家讲介绍了这个全连接的一个。网络。那么我们这个地方呢再给大家介绍一个卷积神经网络。
卷辑式内网都在做什么呢?卷积升级网络,我们在进行一个具体的一个计算的过程中呢,它其实是。是将我们的一个卷积层和我们的一个全阶层进行一个有效组合得到的。所以说这个地方我们其实是本质是在做什么呢?
我们本质本质呢就是在搭建这个卷积神经网络。卷积神经网络呢,它的一个原理或者说它组成结构呢和我们的一个人的一个视网膜是非常类似的。我们的视网膜细胞呢也是可以它的观察的一个区域也是有限的。
就类似于我们的一个卷积核,它的一个就是说视野区域是有限的。我们的一个具体的这个视网膜细胞呢,它通过一定的一个具体的一些特征提取,然后逐步的汇汇聚到我们的一个神经元里面得到我们进行输出。
那么我们的卷积神经网络其实也是这样的。首先对于我们输入的数据呢,按照一定的一个卷积的操作进行特征提取,然后不断的进行特征提取。这个地方可能中间有一些其他的层,比如说我们的一个池花层。
来得到我们的一个就是对我们的一个数据集进行降维。然后呢,我们把最终呢如果是想要把它完完成我们的一个。嗯,就是说分类任务呢,我们其实本质是需要将它转变成一个一维的一个向量。
这个地方就是说我们在学习这个具体的一个。呃,网络模型的时候呢,你在学习每一层的时候,你需要知道它每一层它能够接受什么。比如我们的一个全年阶层,其实它本质接受到的就是一个向量的一个输。
那么我们这个地方其实卷积层它得到的不是一个向量,卷积层其实得到的是一个二维,或者是一个高维的一个。对应的一个输出。那么这个地方呢,我们如果是想要把它转成向量呢。我们会去会使用到一些方法。
比如直接把它通把它ft,把它展平,把它转变成一个一维,然后再输入到我们的全链阶层里。对吧?这个是我们的一个具体的一个就是卷积生经网络,就是先是卷积,然后再是全链阶层。这个卷积的过程中呢。
我们会以将它的一个池化层和计划函数层呢把它进行一个搭配。对吧所以说我们的一个卷积神经网络convolution neural network对吧?
这个地方呢convolution neural network简称C简称CNN它本质上就是由我们的一个什么由哪些组成呢?就是由我们的一个卷积。基函数这个地方的基偶函数呢,我们一般情况下用redo。
然后我们可以加上这种池化层。他们之间进行组合,然后再加上我们的全链阶层,得到我们的整体的一个分类的网络。这个就是我们的一个整体的一个嗯就是说卷积神经网络的一些组成结构。
当然你可以自己去啊就是随便去搭建这个网络,这个是没有什么限制的。一般情况下,卷积层是在全基层之前。好。我们再来看第三部分。既然我们搭建了这个网络,那么我们接下来就是需要对我们的一个模型进行一个训练。
对吧?所以说这个地方我们是需要知道我们的在训练深度学习的时候,是有哪些参数和哪些超参数的。这个地方我们首先看一下参数和我们的超参数,它有什么一些具体一些区别。参数呢是我们的一个模型。
它能够在我们的一个训练数据集中进行调整的一一个数值。其实这个地方的参数和超参数它本质上就是一些数值。比如说我们的一个W。这个W呢如果他能够从我们的一个数据集里面进行学习进行调整,那么它就是一个参数。
如果他从不能从我们的数据集里面进行调整,那么它就是一个超参数,对吧?那么就是人工进行设置的。所以说呢我们的一个具体的一个生存学习模型,它是怎么得到的呢?数据。再加上超参数。就得到我们最终的一个网络模型。
这个超参数有同学可能会说,老师,你怎么没在这里面写他的网络模型啊怎么样的?其实这个网络模型整体就是一个超参数。网络模型它的到底有多少层啊,每层用到的是什么?这些细节就是我们的超参数。所以说呢我们在进行。
具体的一个训练模型的时候,其实它一方面模型的精度是由数据决定的,另一方面呢也是由我们的超参数的取值所决定的。在我们的深度学习里面呢,比较常见的一些超单数是由这些。比如我们的学习率,损失函数的一些超单数。
们P样本的数量,就是我们的base sizedropboxs,我们的模型的深度卷积号的尺寸,这些都是我们的一个超参数。那么有同学可能就会问到,他说老师有这么多超单数,我怎么去去进行选择,怎么进行学习?
这个地方呢就是你可以去看哪些超单数,它会提高模型的一个建模能力。就是说哪些超参数它是提高模型的建模能力的。他如果提高的是模型的建模能力,那么他可能得到的一个精度就会上升。这是第一点。第二点呢。
就是说你也可以看一看哪些超参数它是能够提高模型的一个就是说过礼盒的这种能力的。所为啊提高模型或者缓解模型过滤盒的这种能力的。也就是说它可能会让你的一个模型呢更。
如就是说强迫模型去学习到这个数据及内在的一个分布。对,所以说呢我们的一个超单出的含义呢,一方面你可以去知道它的原理。另一方面呢,你也可以去知道在什么时候我们去需要调整它的。
这个地方举一个非常简单的例子啊,我们的学习率。这个也是非常非常常见的一个案例。在我们的一个具体的学习率的一个设置的过程中呢,我们可以让就是说它本质上学习率也是一个lening,对吧?它可以设置很多。
比如说0。01。0。1以及我们的0。5对吧?可以设置为很多的取值。那么到底设置哪一个学习率,对吧?是哪一个取值它是比较好的呢?这可能是没有什么就是说理论依据的。可能我们只能说呢它设的设置的不能过大。
也不能过小,对吧?如果是过小是为什么呢?我们在进行一个调整我们的参数的时候呢,这个学习率呢就是确定了我们的每次调整我们的一个模型。参数的时候,它的一个具体一个步长,对吧?如果是区对越小。
相当于是他学的更加精细,走的步子越越小。那么如果我们的一个具体的一个。每次迭代的时候,你的一个参数更新的步置越小的话,那么你就会发现我们是需要走很多步才能得到我们腾到我们的一个比较好的一个位置。
这个地方呢我们是调整我们的一个参数去。得到一个比较好的一个,相当于是目标函数啊,或者说去降低我们的对应的损失。我们的一个具体的一个更新。如果我们学习率设置比较小的情况下。
就相当于是每次调整的一个幅度也比较小,逐步逐步的去降低。当然如果我们设置的比较大的情况下,就是右边这种情况。如果设置的比较大的情况下,它更新的幅度也比较大,对吧?在这个位置。
它的一个更新的幅更新的方向是朝这边,它直接越过了我们的一个目标的位置,对吧?直接越过了。然后呢,如果到这个点的时候,它就方向呢就。朝向这边,那么在再更新的时候,也是直接跳过的我们的一个比较好的一个位置。
那么比较。这个地方的一个比较好的位置呢,我们就可以把它称作一个称作叫做这种局部的,就我们损失函数的一个局部最小值,对吧?局部最小值。我们在设置这个学习率的时候呢,它既不能设置太小太小了。
就是我们相当于是要更新一段很多次,也不能设置太大,太大呢你的模型就找不到或者收敛不到我们的一个局部最小值。所以说呢我们会把它设置的不大也不小,对吧?刚刚好,这个刚刚好呢,首先它走的一个步数不会很长。
也就是说走的一个步数呢不会。就是叠到这次数万不会很多,这是一方面。其其次呢。我们的一个具体的一个迭代的过程呢,它最终也会收敛到我们的一个最小值的位置。如果能够找到我们的一个局部最小值。
所以说我们的学序率的设置啊,它是就是很直观的给大家反映了一下啊,学序率它是一个超参数,它能够影响到我们的模型是不是收敛。然后我们再来看模型的训练过程啊,模型它怎么进行训练呢?
其实对于我们的深度学习模型而言,其实训练起来其实是非常简单的。我们在进行一个具体的一个计算的时候。我们有了一个思路。通过我们的全连阶层计算,得到我们的输出。这是我们的相当于是正向传播,对吧?
相当于是从第一层传到第二层,然后从第二层传到第三层正向传播。在这个传播过程中呢,每一层可能的一个具体的一些计算细节是不一样的。比如有些层是用来做我们的一个全连接层的一个计算。
有些层呢是用来当做我们的一个计划函数,有些层呢也是用来做我们的一个规划,对吧?层与层之间它的一个具体的一个用途是不一样。其次呢。我们的一个具体的层,它可能并不是说是这种。无环的,它有可能是有有环的。
比如说像RN。所以说呢我们在具体的学这个网络层的时候,你可能是需要注意一下这个层它的数据的流向,以它具体的一个计算过程。这是我们的一个正向传播。在正向传播完成之后呢,其实本质就有了一个输出。
一个output这个out boost呢可能是跟我们的一个最终的一个标签相隔的比较近,或者说跟我们的一个。标签相隔的比较远,这个都有可能。那么我们在进行一个模型的训练的过程中。
其实我们本质是需要去衡量我们的一个。模型它的一个性能的,也就是它的一个就是精度。那么我们就通过我们的一个存传函数去比较一下我们的一个。输出结果和我们的一个就是说真实标签的一个差异性。
比如说这个地方我们用这个信息商,或者说我们的1个MNC其中呢衡量一下我们的一个模型的输入结果和我们的一个真实表现的差异些。计算得到这个损失之后,那么我们就可以。通过这个损失去进行调整我们模型的一个参数。
对吧?那么这个地方呢,对于深度原件模型而言,比较常见的方法就是说我们通过这种随机梯度下降。也就是说我们每次呢每个步骤呢去通过。我们的一个计算梯度的过程。然后逐步的去更新我们的一个模型的一个参数。
它是一个迭代的过程。也就是说我们去计算一下我们的一个损失函数和我们的参数的一个偏导。这个偏导呢就是说我们如在朝着哪个方向走,我们的一个损失函数,它能够降低的越快。对吧那么我们再朝着这个方向去走呗。
然后以此去更新我们的模型的一个参数。这个地方的阿尔法就是我们的学习率,这个地方的阿尔法就是我们的学习率。好,这个梯度下降呢,它其实本质就是在求偏导,然后通过这个导数去做一个参数更新的过程。
那么我们用这个图来演示一下,对于我们的一个输入呢,首先我们网络参数呢在这个位置,那么我们的一个输出呢也可以计算得到,通过这种传播可以计算得到。那么我们可以进而呢计算得到当前位置下。
我们的一个损失和我们的一个参数,它的一个对应的一个导数的信息。我们通过这个导数信息呢去更新模型的一个参数。更新完成之后呢,我们也可以再次正向传播。正向传播之后,我们的一个梯度信息发生了改变。在这个位置。
我们又使用新的一个梯度信息,再去更新我们的一个某个模型的参数。分析完善之后再做进行传播,然后计算得到梯度,再次进行更新,逐步到我们的一个相当于是局部最小值。在这个局部最小值的位置,我们的一个损失函数。
它求解得到的一个梯度就是零的,对吧?梯度就是零了。好,那么这个网络模型整体的一个训练过程,就是如如图所示的啊。它其实本质呢是按照我们的这种迭代的过程来进行训练。点亮的过程进行训练。
也就是我们每次呢是需要对我们数据级呢选择一定的一些样本。这个样本呢它是有我们的数据集和我们的标签的。好,那么我们对这个数据集呢。这个地方为什么要选择P个样本呢?K个样本我们为什么不用所有的样本呢?
我们一般情况下就是说会把我们的一个网络模型呢叫做minib。gras就是说mini batchHHGD这个mini batch呢SG呢就是说它其实是一个随机批随机一批一批的。那么为什么要随机一批一批呢?
这个地方我们假如说原始的样本是6000张图片,我们可能会让128个样本作为一批次去训练一次质向传播,一次反向传播。为什么要把它划划分成P呢?我们为什么不直接用6000张,或者说用一张呢?
它其实是有一定的一些原原因?就是说做了一些折中。如果我们用所有的样本完成我们的一个真向传播计团损失,然后更新梯度。那么我们其实是得到了整体的数据级的一个梯度的更新方向。
这个地方其实它可能这个方向是比较准确的对吧?整体的方向是比较准确的,但是它会存在一个缺点,就是说一个是时间复杂度。我们如果是用整所有的数据集来做一次正向传播,这个周期很长。
对吧其次你的一个整体的一个梯录,它虽然很准确,那么它就缺少了它的一个随机性。在深度学习里面,其实随机性是非常重要的。好,这是设为什么不能设置为所有的样本。如果设置为一行不行?如果设置为一呢。
其实也有些大部分情况下也不行。当然有一些场景可能设置唯一可以啊。一般情况下,我们的bech size呢就是我们的一个K样本,K的取值呢是大于一的。比如2啊4啊8,为什么呢?
也就是说这个地方我们假设我们的样本它存在一些错误标签。那么在这个地方,如果base size为一的情况下,那么我们的一个梯度信息呢就完全是错的,对吧?如果是大我们base size大于一的时候。
我们很有可能就是会将我们的一个梯度的一个错误信息进行修正,对吧?这个呢可能会就是说对我们的一精度呢也会比较好。其次呢我们的一个每次从我们的6000张图片里面,假如说筛选32张进行正向传播和反向传播。
那么其实这个地方就有一定的随机性,对吧?那么这个随机性其实对我们的模型精度呢整体也是比较好的。那么我们整体的一个网络模型的一个训练流程呢就是这样的啊,就是这样的。我们对于我们的输入的数据呢。
首先对它进行一个随机,就是说把它进行打散,把它进行打散,随机排序,然后执行我们这里面的一个for的过程,就是这里面的for,就是按照我们的一个数据集,把它进行采样。这个地方采样是一个无放回的采样。
就是说。按照 batchch的一个组合,把它进行一个采样。采样完成之后呢,做一次正向传播,进行损失,进行梯度进行参除更新。这个for其实本质就是对我们的所有数据级进行训练。
这个for假如说所有的数据集是6000个,那么我们训练一就是这个for执行完成之后,它就是对我们的6000个样本都进行了一次训练。然后我们里面的里面的一次是32。
也就说我们的betch batchtch大小的一个样本。对,然后做一个具体的一个主流训练。然后这最外层也有一个for对吧?这最外层也有一个for。这最外层一个fo呢,它是我们的一个epo。
一后就是说我们在进行一个计算的时候,我们需要对我们的数据机迭代多少次,迭代多少次。那么这个呢其实就是一个方双重的一否课件我们待会儿会有领取方法的啊,课件我们待会儿有领取方法的对。好。
我们待会一下等一下啊。我们就这个是我们的一个嗯就是梯度的一个更新的过程。那么我们接下来就看一看我们的一个代码的实践,对吧?你只学了这个理论的话,你没有实实践的话,我们的一个具肯定也是不行的。
那么我们来看一看我们这个地方呢深度学习的一个具体实践呢,我们非常推荐大家可以用pito来进行实践一下。拍to呢是一个非常非常方便的一个深度学习的一个框架。嗯。
它是基在我们这个地方呢是以这个呃python环境下来进行实践的啊。pyto系呢它其实可以从我们的python的一个list数据及创建这个tensor。pyyto的tensor呢就是这个多维的一个矩阵。
就是说不管是二维的。多维的都是在python里面叫做tensor,我们可以从一个list史里面创建我们的tensor,当然也可以从我们的long派里面创建我们的tensor。对,这个都是可以的。
当然我们的一个拍y器的使用呢,跟我们的一个long派使用起来其实是非常类似的。我们也可以创建这种权唯一的一个矩阵,或者说我们的随机矩阵都可以的。好,那么我们的pa断里它还还有一个优点。
就是说它可以很方便的使用我们的1个GPU。我们在呃日常生活中呢,就是说你可以去呃就是说我们的代码呢可以运行在我们的1个CPU上。当然呢也可以运行在我们的1个GPU上。GPU呢它是很就是说很方便。
或者说很直接可以。呃,可以完成一些矩证的一些计算。那么我们刚才也给大家看到,其实本质我们的一些。嗯,就是。这这种全连阶层卷积层,其实本质就是一些线性代数这种举分运算。所以说我们的一个具体的一些排头技能。
它能够使。就是说用到GPU,而且呢将这个GPU一些计算呢,直接假如说你用peto这个底层的计算呢,那么你就不用担心。与tenflow的主要主要区别是什么?呃,和tenflow现在而言没有什么区别。
就是说现在到就是说tenflow2出来之后,基本上没有什么区别。它各自就是说就是侧重点会不一样吧。嗯然后你相当于是一个安卓和IOS就是相当于是两个流派吧,你可以这样理解。
但是呢它整体的一些细节其实整体上都是类似的。拍错型的创建tensor呢,其实我们很方便的,就可以通过这种索引来进行复制,或者说把它进行一个维度的拼接。我们把上面的这个矩阵把它进行拼接。
按照我们的某个维度进行拼接,就可以得到我们的一个新的一个tensor,对吧?这个其实是非常非常方便,以及非常常见的这个操作。好,那么我们继续。在这个地方呢,我们在进行一个具体一个操作的过程中呢。
嗯我们其实是需要对我们的一个具体的一个网络模型,把它进行一个就是说理解的。呃,或者说对我们拍东西的一些一些具体的一些操作来进行理解的。呃,这个地方呢我们就是说你需要理解一下拍to西的这个函数的一个语法。
它的一个参就是说这个函数在做什么。当然,拍头几台一个优点就是说它其实能够自动的帮我们求七度。就是它的一个球这种偏倒啊,其实是很方便的。我们来看一个例子啊。我们X呢等于一个嗯22乘2的一个tensor。
第一行是12,第二行是34,这是X。然后呢,我们对于X把它加上二等于Y,就是我们下面的Y是3456。对Y呢进行Y乘以Y乘3。Y乘Y乘33乘3乘3得2744乘4乘3等于48,以此类推,得到我们的这个Z。
然后对Z求命Z求命,就是说这四个取值对它进行求均值,然后得到64。5。这是我们的Z,对吧?所以说我们的Z是等于就是说它怎么从X转换得到的呢?Z是等于我们的1个0。25乘以X,就是说X加2的平方乘3。
这是我们的Z从X转变的对吧?我们将我们的Z写为X的公式是这样的。那么我们可以求一个对我们的。这种啊这个sorry啊,这个地方是outt,out是写为X的公式就是0。25乘以X平方乘3。
那么如果我们想要对我们的一个Z进行呃对我们的X进行求偏导,我们对我们的out进行back word out进行back word,然后可以打印它的 gradientds。
这个地方打印来的规定就是我们的一个X,它在求偏导之后。就是说这对X球偏倒之后,然后得到了一个具体的记录信息。这个梯度信息呢就是它的一个具体的计算,就会涉及到我们的一个嗯就是高等代数里面的对吧?
这个地方能求偏的,就是0。25乘以3再乘2再乘以X加2。大家可以按照我们这个地方,就是说可以就是求偏到平线,你可以算一下0。25乘3乘以2乘以X加2。对你可以看一下,其实本质上就可以得到我们的一个啊。
这个地方我可你写一下啊。さ。0。5乘3乘2对吧?这个地方是1。1。5对吧?这个前面是1。5乘以X加2X呢是我们的1234,这个地方就是1加2乘以1。5。对吧4。5。12加2乘以15对吧?6。
所以说呢就是说具体的一个求偏导,大家可以下去,这个基基本上就是我们的一个高等代数,以及我们的一个高等数学啊。就是说我们的一个高层数学里面学到一个内容。那么我们就继续我们接下来呢看一看我们的一个理合函数。
理合函数呢就是我们先创建一个这种散点图。这个散点图呢就是说哎它的X轴呢是我们的一个从0到10所产生的一个就是等等差数列。然后呢,我们让我们的一个Y呢等于-3X加上4-3X加上4。
然后呢为了增加我们的一个难度呢,我们加在我们的Y的一个计算过程中呢,让它加入了一个就是说一个噪音加入一个噪音。这个噪音呢是从我们-2到2产生的一个随机的一个整数。好,我们加上去之后。
然后整体的一个数据呢就展就是展示是这样的啊,是一个三点图,我们的XY。对吧那么这个地方我们想要这个是候们一个样本就是X是输入Y是它的输出。我们想要找到一些直线去拟合得到我们的一个就是说去拟合这个趋势。
那么这个地方呢,我们其实本质在进行拟合的时候,我们就需要定义我们的W和B对吧?定义我们WW就是我们的一个在高中这种我们的一个函数里面的K,对吧?就是我们的斜率WB我们首先把它初始化为一。
然后呢将我们的数据集把它从派把它转成tensor。然后呢计就是说计算一下我们的一个MSE这个地方的MSE呢就是我们的预测结果和真实标签的一个差异性。预测结果和真线标签的差异性,就是说我们的就是误差。
然后呢我们可以先做一次真向传播,对于我们的输入数据以及我们的一个W进行相乘,然后再加上我们的B,然后可以得到我们的这个预测结果。预测结果和我们的真实结果进行一个计算MSE计算误差。对吧得到我们的误差。
那么我们可以进行一个迭代。这个迭代呢就是说这样。我们对于我们的一个输入的一个数据呢。把它迭代20次迭代20次,每次呢就是做一次真向传播计算损失,通过损失进行一个反向的一个求梯度。然后呢。
每个具体的一个参数,根据的这个梯度来进行一个参数的更新。这就是我们的一个具体的一个迭代的过程,就是深度学习其实本质就是真向传播计算损失,求梯度进根据这个梯度进行更新模型的一个参数。好。
我们可以帮大家运行一下啊,我们从头运行一下。这个运行的代码呢只需要配置一下嗯python和pythtor系的一个嗯就是说环境即可啊,python和pyto系的环境即可。嗯。这个他现在啊好了,现在好了啊。
我们就从这开始进行啊。先创建我们的数据。然后做一次我们的这项传播。我们的一个误差是21。好,我们首先呢将我们的一个学习率呢,这个地方的5我们把它设置的很小,我们学习率让它设置的很小。我们来看一看。
别个20字。你们来看一看这个损失呢,我们是把它打印出来了,损失不断进行下降。但是呢这个下降的幅度过于小了,对吧?0。000810。0079逐步的在我们的一个万分位上进行一个改变,对吧?
我们些蓄率设置的太小的时候,我们的一个迭代。可能就是说它的一个梯度信息其实计算的准确的。但是呢我们的学序率呢相当于是这个走的一个步子太小了。我们每次这个loss呢,它逐步更改的一个幅度。
或者说这个参数更新的一个幅度呢是太小了,对吧?我们的一个损失也会改变的很小。那么这是我们的学序率比较小的一种场景。而说我们把学序率设置的很大,设置成5的情况下,我们再来看一下。那一个损失是吧。
21149、21149、21、122、148是不是在不断震荡对吧?不断震荡。那么我们的los呢,它也没有,就是说没有找到一个局部的一个比较好的一个值。二十几肯定是不是一个局部最小值啊。
这个lose它取值为二十几,肯定不是一个局部最小值。那么我们把它取值为0。05看看。好,我们取这个0。05的时候,你会发现我们nse呢它是不断进行下降的,然后收敛到我们的1个1。33。
对吧收敛到一个比较小的一个数值。也就是说我们的学习率它不能设置太大,也不能设置太小,对吧?太小走的就是说迭代的一个次数,它会就是说更新的一个不不长会很很小很小,太大呢就会波动,不收敛。
那么我们让这个训练好的一个。就是说。W和B那 one就是说来再来画一条直线,这条直线就是我们的一个所绘制的一个。通过我们的数据,拟盒得到了我们的这个执行。是。
其实跟我们的原始数据及整体的一个分布的规律其实是比较一致的必较一致的对吧?好。那么这是一个非常简单的这种现性现性的一个数字回归啊。对,那么我们待会儿呢也会把这个代码分享给大家。然后呢。
如果我们想要自己去实现一下我们的全连阶层呢,其实也很简单。全链阶阶层其实本质就是有一个矩阵,就我们的W以及我们的一个偏执,做我们的B,对吧?W就是我们的一个输入的维度到输出的维度的一个转变。
那么这个地方我们就可以手动去定义我们的两个全阶层,然后手动的去完成我们的两个全阶层的一个正向传播。对吧那么这个电源传播呢就是我们手动要去计算写一下我们的一个参数,如何跟我们的输入做一个具体的计算。
然后做一个re路计函数,然后得到我们的输出。当然这个地方我们其实是用一个比较大的数据集来进行训练的。所以说它是需要分成拜起的。所以说它的一个dmo其实是有双重的一个复性化。
最外层的是我们的一个epoke,就是对我们的数据集整体迭代了多少次,里面的一个fo呢是我们的bet批量的。批量的对我们的数据集批量的做一次批量的做我们的一个质向传播,计算损失。计算梯度跟参数更新。
这里面的货是对我们的一批一批的样本做的。好,我们继续。那么我们如果是想要对我们的就是说模型进行训练呢,你可以手动去实现我们的全年阶层,这个就是手动实现的啊。就是如果你了解到了,掌握了全年阶层。
它的具体的计算,其实本质就是一个举胜的乘法。当然如果你不想去做的话,就是不想去啊就是了解它的原理。你也可以用这个全阶层比较简洁的实现。就是说在我们的一个。这个深度学习的模模型里面或者深度学习的框架里面。
其实他很多时候都提供了这个全链阶层。在这个地方,我们这个pat的NN点liner就是实现了我们的全连阶层啊全连阶层。好,我们继续。这个呢就是我们的一个全连接的一个网络。
当然我们也可以手动去得到就是说完成我们的一个卷积的一个操作。我们的一个二维的一个输,就是说输入数据,然后通过我们的卷积。这个卷积呢其实本质就是我们的一个滑动窗口滑动窗口。
对我们对于我们输入的X和我们的K,其实本质就是在我们具体的做一个乘法。然后求和。这个计算。对,所以说这个地方如果我们有了多个输入的一个输候。我们的一个输入的一个通道数是多个的时候。
我们的卷积盒也要有多稳,就是说也是多通道的。然后。跟他每个通道对应上,然后进行卷积,然后得到一个输出。这个地方其实大家一定要就是说理解一下我们的一个对应的一个具体的实现。好。
如果我们想要就是说手动去实现一下我们的卷积神经网络,其实本质你就将我们的一个具体的一个卷积的操作,然后实现一下就行了。当然如果你想要在拍特里面去实现一下我们的一个卷积神经网络,其实也是很简单的。
很简单的这个地方在我们的里面呢,我们的一个2D的一个卷积叫NN点DD啊这个地方我们的一个具体的一个计算。它是就是说一个卷积层一个卷积对吧?
常见的这种这种卷积网络里面然后这个flatten flatten就是将这个具体的一个输入的一个数据,它如果是多维的,我们把它转变成一个一维的。这个地方的lineer是我们的一个全阶层。
基础函数全新阶层技础函数全新阶层。那么我们来看一看这个维度的变化,它是怎么进行变化的。我们的一个数位数据是1乘以1乘28乘28,这个地方呢1乘以1乘28乘28,它是什么维度呢?
这个其实也是有一应定的一些说法的啊。这个地方呢我们的说的维度其实是按照这个NCHW来进行组织的N是我们的一个be size。这是我们的一个P样本的个数。C呢是我们的china,就是我们的就是通道数。
H和W呢就是我们输入它的一个维度。这他是按照这样这种维度进行组织的啊。也就是说第一一个样本,一个通道28乘28的一个具体的一个输入的维度。通过我们的第一层的卷积,我们第一层的卷积,这个地方参数是什么?
输入的通道数是一,输出的通道数是6。对吧所以说这个地方其实我们的对应的一个具体的一个。它的一个输出的一个结果,通道数是6对吧?那么这个地方其实我们也可以写一下这个地方我们的一个卷积盒。
这部分它到底有多少个参数呢?它的参数量就是一个它的克勒 size是5对吧?那么它就是5乘5乘1对吧?或者说是1乘以1乘5。啊,1乘5乘51乘5乘5的一个输入。因为它的通道数在对应上。
然后这个地方有66是我们总共有多少个卷积核啊,对吧?就是它这个地方是它的参数。然后还有偏。有这就是我们的这一层,它到底有多少个参数量。就以说如果你能够把我们的参数和一个。就是说输有数据。
它的一个维度的转变过程,以及它的参数量,你能够就是很方便的计算得到的时候。那么你就是真的对这个深度学息就比较熟悉了。对吧这个输入的一个维度,你也可以按照上述的方法来进行一个计算啊。
这是我们的一个卷积神经网络。那么最后一点时间呢,我们给大家讲一个案例啊,就是说我们从头搭建一个就是说用卷积群体网络来实现一个人脸关键点检测的一个案例。人脸关键点呢。
其实它这个地方的一个demo呢是其实是比较简单啊。就是说我们对于输入的一张人脸呢,我们需要识别出它的一个左眼、右眼鼻子和嘴巴的具体的位置。嗯,这个地方的位置呢其实本质是一个坐标的信息。
本质是一个坐标的信息。所以说我们原始输入的数据呢,它的标签是8列。八列。XY每个坐标是由2个XY所确定的。所以说我们的这个任务其实是需要输出我们的一个8列8列。好。那么我们怎么构建我们的网络模型呢?
其实我们来看一看啊,我们就是核心的看到这个地方。这个地方我们对于我们的输入数据,我们先不管它是多少的啊,我们就是输入通道是一,输出通道是6,输入通道是6,输出通道是16,输入通道是16,输出通道是32。
所以说在搭建这个远距神经网络的时候,你一定要将我们的通道数能够能够把它对应上输出的通道是什么?输出。输入的通动是什么?输入输入的通统是什么?然后这个地方呢flatten,它在做什么呢?我们回到这个地方。
Ftten。假如说我们原始的一个输入的维度是1乘以16乘5乘5,这个地方呢每个样本是1个16乘5乘5的一个维度,我们需要把它转转成一维的,怎么转成一维的呢?它就是把它拉平呢,把它从多维。
把它相当于是把它转成个一维的,16乘5乘5就等于400。把它转变成了1个400位的。所以说这个flat呢其实就是相当于是一个拉平的这个操作。然后接下来将我们的拉平之后的一个维度。
把它通过一个全连阶层得到我们最终的输出。对吧这就是我们的一个很典型的一个基非常非常基础的这个卷积神经网络,完成我们的一个就是说。关键点检测这个地方的关键点检测,我们其实直接是由我们全连接才能完成的。好。
那么我们这个地方就是我们的一个定义的模型。那么我们怎么进行训练呢?其实训练的过程其实非常简单。对于我们的输入数据呢,我们就是需要把它做一个小小的转变。对它对应的把它数据级的一个标签。
它标签是呃一个具体的数值,它可能是一个从0到96的一个数值,是一个坐标显性啊。我们需要把它的具体的一个标签呢,把它转变成0到1之间,把它转变成从0到1之间,转变完成之后呢。
然后从partto里面的一个data load,然后把它转变成我们的一个单个样本的读取到我们的多个样本读取的过程。好,然后接下来的过程就是和我们之前是一样的。对于我们的一个data load。
它就是读取批量的样本。对批量的样本做我们的对项传播,计算损失,计算我们的一个梯度进行参数更新。这就是我们非常非常非常直接的。或者说仍然是这种流程啊,仍然是我们的这个流程。对,好。那么我们继续。
那么当我们。当我们就是说运行完成之后呢,我们可以将我们的一个样本来做一个可视化啊,做一个可视化。我们就是说预测一下我们的一个样本,它的关键点识别的准不准啊。我们这个地方用一些案例。
比如说这个地方我们是用这个王冰冰的图像,对吧?然后来做一个预测。这个地方其实我们的一个模型其实是识别的很准的对吧?识别的很准的对。然后我们接下来呢,我就本地。将我们的一个模型呢,我已经是把它部署到了。
就是说我的一个笔记本上面啊,我们这个notebook其实是给大家演示了这个训练过程和我们的验证过程。但是呢没有我们的部署过程,对吧?那么我们能不能把它在我们的一个机器上面部署一下呢?当然可以啊,对吧?
我们来看一看。我们先给大家演示一下这个效果。稍等一下啊。他们跑一下。
对。这个地方啊我卡了。🎼对,大家可以看到吗?这个地方其实就是呃这是我的摄像头啊,它是实时的去检测的个人人。🎼知到我的一个就是眼睛和这个具体的一个坐标信息啊。当然这个地方可能有一点点的误差啊。
有一点点的误差。好,我先把这个关了,然后我再找一张网络的一个图像,然后再试一下。这个就忘了,我先把这个关了啊,再找一个网图,我再来试一下。
稍等一下。嗯,之前我找的一个网图。那稍等我一下啊,找个网图开了斯。
对嗯,这个就。
哎呦,我就不能出镜了,要不然他就识别不到我识别不到这个图片。
对,这个地方大致是识别的很准确的啊。这边可能有一点点误差。这个。有一定误差,这个也能够理解啊。对。哦。我们就把这个程序给暂停了啊,然后讲一讲这个程序怎么怎么。
我这个地方其实是在这个mac上面做部署的。当然如果是想把这个程序把它迁移到其他的一些模型里面,其实啊迁移到其他设备的上面,其实本质上是一样的。首先定义我们的模型,这个模型就是我们刚才训练这个模型。
对吧卷积层卷积层,我们的一个GO我们的一个具体的一个全体阶层。然后呢,我们这个地方其实我们是将我们的一个权重是把它保存下来的。然后呢,这个地方是直接把它进行load,load进来。
就是说这个权重直接把它load进来,把它加载进来的啊。然后这个地方我们是首先怎么进行一个部署呢?我们首先。利用我们的一个open C来做我们的一个人脸的一个检测。
这个地地方我们open C它有一个人脸检测的一个就具体的一个就是啊就是说这个呃模型啊,我们暂且不去追究它的模型是什么。这个地方怎么进行检测的呢?就是说它不断的去捕获我们的摄像头的信号。
对于摄像头的每一张图片,就是每一帧的图片,然后把它进行转变成我们的一个灰度图,然后完成一个检人脸检测的一个过程。对于检测得到的结果呢,不断的就是说进行这个具体的一个关键点检测。
这个关键点检测就是本质是一个正向传播。我们利于我们的输入的一个图片,把它转变成一个我们想要的维度,然后把它做一个正向传播就行。这样同步完成之后呢,然后再将我们的一个检测得到的关键点在我们的原始图片上面。
把它绘制出来,这个就是一个非常简单的一个操作,对吧?我们这个地方就是在我们的一个本地的摄像头完成了一个具体的一个部署啊,这个可能就是一个非常非常简单的一个部署,对吧?
好,那么这个就是我们的今天所给大家讲的那个代码,然后我们继续。虽然说这个代码呢很简单,但是如果大家自己从头写呢,可能是需要一费点时间的。当然大家在待会课后呢。
也可以将我们的代码自己从头拿到之后自己运行一下啊,也都是可以成功运行的。
那么有同学可能就会问到,就是说学习记忆学习哦和学习深度学习是不是就这么简单呢?呃,一方面呢你如果是有一定基础的话呢,可能学的会稍微快一点。呃。
另一方面呢就是说还是建议你按照这个具体的一个就是说应用和一些流程的进行学会比较快一点啊,就是说可能也是需要大家需要大家掌握一些具体的一些工具的一个使用。比如说我们这节课就是使用这个paal型来完成的。
当然你使用tenflow来完成,也可以,这个也是可以的。那么有同学可能假如自己去学习这个深度学习会有一些问题,或者说嗯学的没有人指导啊,或者说没有学习资料。这个地方呢我们给大家推荐一门课程啊。
也是我们技术在线和CSDN嗯就是说联合做的一门课程,就是我们的一个记忆学习集训营。在我们这个集训营里面呢,我们其实是给大会给大家讲解到我们的一个记忆学习的原理。记忆学习的实践。
以及深度学习的原理和深度学习的实践的。而且这个集训营里面呢也会提供这个GPU的一个云平台,可供大家来进行一个学习。而且嗯这个里面呢也会包含一些具体的一些实训项目。就是说大家在学习的过程中呢。
也会嗯就是说收获很多的。那么这个集训营呢,现在也是在我们的一个报名中,报名中啊,就是说现在是开到我们的第1六期的。然后如果大家想要就是说咨询,或者说想要了解我们的集训人的呢。
也可以就是说加一下我们的杨老师的微信。当然领取我们今天的一个课程的资料,以及我们课程代码的这个就是说这个渠道啊,也是加一下我们的杨老师的微信。然后大家对我们今天的课程有什么问题吗?
我们今天其实给大家准备了5个VIP的一个就是说福利啊。这个哎嗨洛伊同学以及我们的阿里巴巴同学,嗯,这两位同学都是就是肯定是能够领取到我们的VIP福利的。你可以呃加一下我们的杨老师吧。对。
然后大家想要领取我们的一个课件啊代码的,都是可以加一下我们的杨老师的。然后这个机器学习机训营呢,其实它现在并不是说只单纯的讲一些原理,也有一些具体一些课程的一些实践项目啊。
比如说呃我们的一些比较实操的一些过程。比如这种嗯行为方向的一个车道性检测,或者说AP方向的这个智能问答机器人,或者说这种推荐系统的一些项目都是比较干货的啊。
就是说也是带着有老师带着家带着大家从头来完成的。所以说呢如果大家想要持续的学习,或者深入学习,跟着案例学,跟着老师学呢都可以嗯就是说报名我们的一个机器学习机训营。对。对。好。嗯。
大家对我们的一个具体的一个就是说课程有什么问题吗?所今天所讲解的一些知识点有什么问题吗?有问题的话可以提供我们还有一些福利VIP对,也是可以送到大家。对。还有同学有问题吗?对我们今天的一个课程内容。
我们送活的呢是我们的7月在线的VIP月卡啊,对,也是非常非常有价值的。可以学要我们的小课和使用我们的一个云平台。对。大家有什么问题吗?好,大家如果想要领取我们的课件代码的。
一定要加一下我们的杨老师的微信啊,或者说想要继续嗯就是深入了解我们的课程的同学呢,也可以加一下我们的杨老师的微信。对。好,我再给大家就是说再嗯给大家几分钟。对,大家如果有问题的话,可以及时提问。好,嗯。
大家如果觉得今天学的内容没什么问题的话,可以扣个一好吗?对。就就是觉得什么大家都懂了,然后就想着拿着代码自己跑一下,对吧?然后大家也可以扣个一,对吧?我也看看大家是不是真的懂的。已经有同学扣到一了。好。
行,那么我们今天的一个直播就到这儿结束啊。然后大家如果要想领取我们的一个代码的同学呢,一定要加一下我们的杨老师的微信。好。那么我们今天的一个直播就到此结束了。
我们的一个机忆学习集训营呢现在正在火火热招生招生中啊,如果大家想要深入学习记忆学习和深度学习的一些知识点,都是可以来报名的。好的,谢谢大家。
人工智能—计算机视觉CV公开课(七月在线出品) - P2:工业级的视频版权检测算法 - 七月在线-julyedu - BV17z4y167dq
。
Yeah。好的,看来我们的呃视频和声音都是OK的。那么我们就呃差不多可以开始了。我们今天呢其实是呃企业在线举办的一次呃技术直播课,对吧?它其实我呃找到我讲的,其实这个内容是工业级视频版分解决的算法。
这个主题呢可能呃呃就是说呃之前大家在呃企业在线啊在我们机构上的一些课不太一样。就是这个讲解的是其实是一个解决方案,是一个比较就是特定场景的一个解决方案。对,那么我们在这个在这个一个小时的直播课程中呢。
我想给大家讲的是一个完整的一个解决的一个方案。它不是一个简单的一个例子。
那么我们今天的一个课程总共分为这五大部分的。第一个我们首先来定义一下视频版权任务的一个就是它到底这个问题到底是呃需要解决什么问题,以及它到底是要去做什么事。第二个呢,我们就是说讲一些基础知识。
主要是讲图像特征以第以这个图像局部特征以及图像全局特征两种特征,就是说给大家讲解一下,第三个呢就是讲图像版权解测算法。那么我们在讲完图像特征之后呢,其实我想给大家延伸一下,就讲一下呃图像版权检测算法。
就是两给定两张图片,然后判断它是不是相似的,对吧?那么为什么要讲图像版权解测算法呢?其实这其实为后面第四部分做铺垫的,就是我们第四部分讲的是视频版权解测算法,对吧?我们这个呃地方呢。
我主要是以视频这个呃多媒体的。呃,除音频部分的来做一个版权检测。就是说我们在做版权检测的时候是不考虑音频的。所以说在做视频版权的时候呢,其实是可以把这个视频版权的问题。
把它抽象成一个呃多帧的图像版权的一个检测,对吧?那么我们在第四部分也会讲到视频版权的解释方法。那么第五部分呢,我们会扩展讲一下图像检索和视频检索。我们今天的课程的内容总共应该是在50分钟到1个小时左右。
那么我们在课程中讲解的过程中呢,如果大家有疑问呢,可以直接在我们的呃聊天讨论框哦进行互动。
那么我们首先来看第一部分这个视频版权检测。我们首先来定一下视频版权检测这个任务是什么,以及它要解决什么问题。
呃,视频版的检色呢,它这个是就是说一定背景的,就是视频版的检色学学术名称叫video duplicatelic text。它是随着互联网嗯就是说移动互联网的发展和智能手机的普及。
短视频已经成为重要的信息传媒媒介,也给也带来了大量对版权视频的一个侵权行为。那么这个在这个其实写的是一个短视频。那么其实这个地方侵权的视频不一定是短视频,有可能是长视频,对吧?这个它就是有一个。
这个短视频对这长视频进行一个侵权。那么他这个侵权的行为一般是包括这个包括相同的视频画面,或者说包括相同的视频片段,或者说包括相同的视频的声音。对,那么这个地方呢我主要是给大家讲。
从视觉角度来解决这个版权检测的。那么我们就不讲这个音频的部分。那么我们这个。需要我们做的这个就是呃本本版田讲一下这个任务背景就是说为了保护视频公司和原创者的收益,需要自动化的对。
针对短视频的侵权进行检测来嗯这个侵权的视频可能经过多种符合变化。那么大家如果嗯在自己玩抖音或者说玩B站的时候呢,其实大家在上传这个自己作品的时候呢。其实后台也在进行了一个版权检测,对吧?
那其实假如说你上传的一个视频是呃和其他上传的一个视频是呃比较重复的,或者说是直接从某一段视频进行摘取得到的。它有可能是提示你。对,那么这个地方呢,我们怎么把它抽象一下,就是我们待检测的一个短视频。
我们把它叫做query。然后我们是有一个视频库,然后每个视频库里面呢有很多refer的视频。那么我们想要找到就是说定义这个问题,就是针对我们一个query的一个短视频。
我们是不是在视频库里面能够找到一个它可能侵权的一个长视频。那么其实侵权的视频它不不仅仅嗯是直接的这个呃把它裁剪,它可能还有很多的一些变化。比如说我插入一个模板。
比如说对这个视频做一个插入一些文字插入这个logo插入水印或者小动画,还可以对这个视频进行一个降至,比如说嗯模糊啊,丢帧啊对比度啊,分辨率啊,这些都是一个操作,还可以做一个裁剪,对吧?
我们把它这个边框进行裁剪,还可以做一个混剪,就是把视频把它做一个拼接,还可以做一些画中画,刚板变换速度变换的,还可以做一些综合变化,对吧?那么这都是呃就是说视频版分检测的一个难点。
就是我们侵权的一些视频,它往往和我们原始的视频都是呃有一定的变化,它不一定是完全一样的。那么这个地方呢我列举的是现有的一些学术的数据集。比如最开始的CC web video。
一直到最后的这个SVD这个是呃抖音的一个短视频的一个数据集。就是现在的呃视频百年年的还是一个比较活跃的学术任务。对,如果大家想就是说发论文,这这是这个里面发论文呢还是呃就是说有一定的工作可以做。
因为这个呃抖音的这个SVD这个呃数据集呢,应该是2019年呃下下旬就是说下半年才出来的。所以如果大家感兴趣呢话,可以去刷一刷这个数据。那么大家可以看到,就是说这所有的版权检测的一些学术数据级呢。
都是由query video,就是说待检索的一个。短视频或者待机上的视频和一些视频库里面的一些视频,对吧?它这个呃学术数据集呢会针对你这个queed radio嗯,就是说标它到底是有跟他呃匹配上的。
就是说是相同内容的一个呃refer里面的短refer你面视频,还有一些就是说这个正样本就是说和queed能够匹配上的一个视频negative pair呢就是副样本。
就是说跟这个queed radio匹配不上的个是对吧?然后还有一些其他的一些统一信息对。那么我这个地方呢大家可以很直观的感受一下,这个应该是呃从这个VCDBVCDB这个数据集来给大家举了一个例子。
就是其实呃右边的呢这个就是我们carry的就是说侵权的一个。画面,那么左边呢就是我们原始视频库里面对吧?大家可以看到,其实这个侵权的一个呃视频的每一帧,它可能是经过一个复杂变换的对吧?
有可能是呃截取模糊,还有一些翻转,对吧?还有一些加了字幕,对吧?所以说呃其实视频版权它是一个非常复杂的,它并不是一个很单纯的一个呃图像检索。那么呃这个这个页呢,其实讲解的是这个呃。
SVD就是抖音这个数据集,其实抖音这个数据集呢和上面这个呃数据集就是说SSCVCDB这个视频版权检索的数据集不太一样,对吧?那么这个地方大家看到就VCDB这个数据集里面,画面基本上是相同的。
我们就可以判定判断这两个视频是呃一也就是说完全是侵权的对吧?但是在这个抖音这个场景,比如说抖音短视频对吧?这个场景下面其实不是这样的,大家可以看到,就是说呃。这个query的一个视频和这个。
就是说和他一个正样本的一个视频,就是说这个是和它完全一模一样的。就是说匹配上的refer视频是就是说这两个是就是匹配上的对吧?那么其实还有一些。很复杂的场景。比如说这个cur视频,它有可能是呃。
多种多样的对吧?有可能在我们抖音的短视频短视频里面,它还可以自动加一个黑边,对吧?那么这个地方这是一个正理,就是说我们que视频可以找到一些和reque视频对应上的refer的视频,对吧?
那么还有一些反利。比如说我们这个que视频,它找到的有可能是找到这种也是撒渔网的对吧?这quere视频是个撒鱼网的动作。但是这个找出来的是一个它的反利,对吧?这两个视频,它并不是一个。哦。
就是说侵权的对。对,那么这种找出来的就是它这个反应。对,所以说在呃抖音这个短视频这个呃视频版权检测的这个数据器里面,它是更加复杂的。因为我们这个呃移动自媒体上面的一些呃短视频呢,它是多种多样的。
而且就是说每个用户他在上传这个短视频呢有一定的模模仿的一个行为。比如说这个扎头发的对吧?即使是扎都是扎头发一样的动作。但是他扎扎的这个头发的,就是说样式不一样。
所以说呃你很有可能就是说让你的剪索模型判断错误。所以说视频版权检测呢是一个比较复杂的一个任务,而且是一个就是说嗯还是在发展的一个学术任务吧,学术方向。
那么我们这个其实我们这个呃赛题呢不是这个赛题,就是我们这个讲解的一个内容呢,其其实是以我去年参加了1个CCFBDCI上面的一个爱奇艺视频版身检测这个比赛来给大家讲解。
因为我们要讲解一个具体的呃一个就是解决流程。那么这个解集流程应该是具体到一个特定的一个数据集上的。那么我们这个地方呢,我们刚才也给大家花了一两分钟讲解抖音这个场景,对吧?抖音它其实是用户短视频。
那么在这个下面这个地方呢,其实是一个。
爱奇艺这个呃应该是一个综艺,对吧?综艺类型的一个视频网站。那么。大家可以看到,就是说。待会可以给大家看一个案例啊,就是总以下面的一个版就是说侵权的视频可能不太一样。
那么这个比赛呢其实是在2019年下半年举办的CCF上面的一个比赛。嗯,那么这个比赛的任务就是根据cry的侵权视频,要在我们的视频库里面找到对应的refer视频,且对应他们的时间轴,这个是什么意思呢?
就是说根据我们的cur视频,要找到视频库里面refer的视频,且他们之间cur里面。这个时间段侵权的这个这个一个片的这个橙色部分要在refer视频里面的时间轴要对应上。
也就是说我们要确定query与re的关系,以及que视频里面的Q startq end以及refer视频里面的rs。对吧所以说这个载题可能是就是这个任务可能是更加具体的。
它不仅是要找到你que视频或rere视频的对应关系,而且要找到它们之间的时间轴的对应,对吧?然后呢,去年我也参加到过这个比赛,也是最终获得了第五名的成绩。那么我们首先给大家看一个案例啊。
就是说这个数语集这个比赛里面的一个案例。对,那么呃这右边呢这个小一点的视频呢,就是这个侵权的视频。这个就是呃大家可以看到就是说。这个侵权的视频它的尺寸比较小,这个原始的视频原始的视频应该也是正常比。
对它的是稍微清晰一点。而且这个侵权的视频,这个右边的这个视频它是。呃,就是说经过一定裁剪的对吧?这个边框对吧?大家可以看到这个边框适合这个原始的视频,就是说作为一定的裁剪,而且。
这个两个视频它们之间的水有一定的水印的差别,对吧?这个地方原始的视频加了一个爱奇艺的水印,右边的呢这个嗯侵权的视频呢,它是没有一个呃水印的,而且这个侵权视频它是。
从这个原始视频里面的某一个时间段开始的对,这个地方应该是11胖都是有原因的。而且刚才在采访的时候,人就说了,张妮说,甭管怎么样,我是个灵活的pa。重点一下有什么灵活?那么大家可以看到。
就是说这个赛题其实是比较难的。就是说你要对应好这个时间轴,我们来回到PPT。你就是要在Q视频里面,到底是从哪个地方,哪一个时间开始侵权的,你一定要对应上。
就是说你Q4大轴和QN以及RS大招RN的都要把它找对。啊,不好意思啊,把视频就那个视频声音稍微有点大,后续我们不会再看那个视频。对。
那么我们刚才讲解的。呃哦,不好意思,我就不不不放那个视频了,不放那个视频。哦,那么我们刚才其实讲解了那个赛题的任务,对吧?那么我们再来看一看一些基础知识,就是图像特征。
呃,那么如果大家对就是说计算机视觉或者说图像有一定了解的话呢,那么就是说也会知道就是说图像有两类特征。第一类是。图像的局部特征。第二类是图像的全局特征。嗯,局部特征呢就是图像内的关图像里面的关键点。
比如说图像的角点,它的一个嗯就是说极值点一些,比如说sft点嗯,就是说ORB这种关键点。那么关键点呢这种局部特征呢,它的个数是不固定的,也就是说它的一个。个数。
比如说是N这个N的个数呢可能是呃在不同的图像上面是不固定的。比如说在这个图像上是100个关键点。呃,在其他的呃图像上呢可能是呃就是说200个关键点,对吧?这是一个局部特征。
那么呃这个左边呢就是说这个是比如说这个原始的这个呃图像,我们提取这个的关键点呢?这个地方它这个关键点提其实提取到的这些就说比较突出的一些位置,比如说这个眼球鼻子对吧?
而且一些头发上面那么还有一类特征呢是图像的全局特征,图像的全局特征呢一般是图图像的整体的统计信息,或者说图像的整体的一些语特征,那么图像的全局特征和图像的局部特征有什么区别呢?
图像的局部特征它是维度的不固定的。比如说我们这个是提取到了N个关键点,那么每个关键点的维度是128维,那么我们总共提取到的一个局部特征的一个维度是N乘1128的一个取阵,那么如果是使用全局全局特征。
这个时候呢,假设我们的全局特征的维度是512维。那么我们这个地方图像的一个。全局特征就是1乘512的这个向量,对吧?那么右边呢是我们提取了这张图片的一个颜色直方图。
RGB的颜色直方图来进行一个就是说统计。那么就是说颜色直放图,它是直接统计的这个图像的一个RGB值,对吧?这个地方是RGB0到R5,对吧?每个像素每个像素值的一个统计的信息统计个数。呃。
那么其实在我们的其实在天性上面也有一些呃视觉的一些,比如说也有一个图像分类和图像检索的班。如果大家就是说感兴趣的话呢,可以去就是说深入呃学习一下。对我们在这个PPT里面呢,会只说只是给大家初步讲解一下。
那么我们再来看一个局部特征和全全局特征有对比啊呃那么局部特征它其实是关注特征的一个局部信息,比如说常见的re或者说ORB这种关键点。那么局部特征有什么优点呢?局部特征它有它是有一些优点的。
比如说局部特征,它其实关注的是图像的局部信息是这个局部信息是具有尺度不变性的。就是说我们不管是翻转,怎么翻转这个图片怎么旋转这个图片,它的这些关键点都是不受旋旋转图像的一些变化或者颜色变化的影响,对吧?
那么局部特征它是这个就是尺度不变性,就是说不管是你怎么变化,我都有一定的几率是呃这个关键点依然是关键点。那么局部特征它有什么优点,有什么缺点呢?局部特征它的缺点就是它提取的特征点的个数。
关键点的个数是不固定的,而且是很容易受到文字影响的,大家可以思考一下,为什么会受到文字影响。呃。就说文字啊,特别是我们这个数字图像上面的文字都是一些。它的边缘信息,比如说我们这个呃字体。
这就是说我们PPT上面这些文字,你如果用shift提这个关键点,它肯肯定会提到这个文字上面。因为文字一般都是边缘信息比较强的一些去域,它很容易都就是成为关键点。所以说在呃局部特征的时候呢。
它很容易受到这种文字影响,那么全局特征它和局部特征相比呢,它是关注特征的全一个图像的全局信息。比如说颜色直方图或者说图像在呃NN里面的 map,那么全局特征它有什么优点呢?全局特征。
它其实是关注图像的全局的信息,而且特征的维度是固定的对吧?那么不管是你的图像的大小是怎么样的,你只要把它resize到固定的尺寸。那么我们得到CN的特征都是。固定的对吧?
那么就是说全局特征它的维度是固定的,但是全局特征有什么缺点呢?全局特征其实它是对尺度是有一定敏敏感的。比如说我们这个图像,你把它旋转90度,你去提取到的特征就变了,对吧?虽然说在我们CNN里面。
其实你把它旋转90度,它仍然可以进行正确的分类,但是你把它旋转90度,你提取之后的特征是变的呃,大家可以设想一下,比如说我们有一个矩阵,你把它求一个。呃,就是说旋转一下怎么说呢?就是求一个点大T,对吧?
其实你把这个矩阵呃,应该叫transpo转制,对吧?你一个举阵把它转制之后,其实它的这个就变了,对吧?所以说这个全值特,它其实还是有一定缺点。就是说对这种图像的一个尺度变化。
特别对旋转的一些变化是嗯就是比较敏感。那么这就是这图像的两类特征。
那么我们刚才其实讲解的图像的全局特征和局部特征。那么我们接下来就看一下。我们假如我们知道了全局特征局部特征之后,我们再怎么把做一个图像版权检测算法。
呃,那么图像版权检测算法呢,其实就是判断两张图,两张图片是不是包含有相同的像素。那么图像版权检测,或者说叫呃imimage呃copyright detection或者叫image duplicatelic detection。
它其实是相似图像检索任务的延伸,它是以图像之间是否存在相似的像素区域为判定标准,就是说判断两个图片里面是不是有共同的像素的区域。但是图片版权检测其实是一个比较难的一个任务。这个地方我举了一个例子啊。
比如说这左边的是一只萨摩耶,右边是一只萨摩耶,对吧?大家就是说如果是用关键关键点来匹配呢,其实因为萨摩耶这种这种狗其实是长得都比较像的对吧?那么你如果用关键点匹配,其实。
就很容易把这种呃就是说它其实不是一张图片的一些呃,就是说呃呃怎么说呢?就是把它这两张图片就不把它匹配上了。那么其实这两张图片其实就是不是一张图片,或者说它不是一种感情点,就是说。不是一个版权。
就是说图像版权的一个案例,对吧?那么图像版权呢其实呃有很多种判定标准。比如说你是不是包括有相同的物体,是不是包括很多相同的像素,是不是包括很多可匹配的关键点,对吧?所以说嗯这个地方图像版权颜色。
我们是以常见的一些就是很通用的一个呃定义,就是说他们两张图片的相似度是不是很高。我们把它判定为图像的版权。嗯,就是说他们是不是相似的。
因为这个判定标准其实是和我们刚才这个大家如果还记得那个声音比较大的视频,就爱奇艺那个呃两个段视频的时候,其实大家可以就是说很清楚的就是说。我看到就是说这两假如说两个视频他们是。
重复的那么他们的画面一定是重复的对吧?那么我们就只需要关注这两个画就是说两个视频,他们的画面内容就是说他们的视频帧它的内容是不是相似的就够了。所以说在这个视频版权检测里面的任务过程中呢。
我们是可以把这个视频版权检测,把它抽象成每一帧就是每一帧画面是不是相似,或者说每一帧画面是不是就说重复,他们之间是不是有版权问题的。那么其实NRP它其实呃不不是就是图像检索。
它其实是一个基于图像内容检索的这种。但是图像检索它其实是比较难的。呃,因为图像比如说这个左边的蒙娜尼莎的一张一个画像,它其实它有很多种变换。比如说光照尺度视角遮挡背景,对吧?其实这个其实和我们。
呃,这个日常生活中的一些变变换,或者说在视频版权检测里面,我们刚才在PPT开头的那些呃图像变换都是比较类似的。而且图像检索它是一个基于内容检索,比如说我们右边的这个?其实这两张都是可能是同一张图,对吧?
但是假如这是一张图照相机拍的图,这是一个就是说无人机,或者说拍的这种视角变换的一个图。那么其实这种他们的内容是相似的,对吧?但是但是他们的画面的主体是不相似的,对吧?而且下面这张图。
比如说这两一个狗一个人,他们的就是说假设他们的外形比较相似,对吧?但是他们是就是说肯定不是一个就是说不是一张图片,对吧?所以说图像检索是一个非常难的一个任务。
而且是是需要基于图像内容进行一个检索的一个任务。那么如果大家对这个图像检索想要进行深入的了解的话呢。
可以去看这个现在是1块钱。这个对。1块钱这个课因这个课其实讲的其实非常嗯清晰啊,他会把这个卷积层的一些操作啊,以及卷积层呃,就是说怎么提特征啊,然后最终讲了一些还讲了一个局部特征的一个案例。
就是说s加磁带的一个模型。对。我们再继续。我们刚才其实讲到的呃,图像检索是一个它是基于图像内容的一个检索的任务。那么图像检索还是什么?它其实也可以称为一个算法,对吧?但是图像检索还是也是一个工程的问题。
那么这个地方呢,我是截取了图像检索的一个流程,对吧?比如说。我们这个地方呢,我们有一张查询的图像,我们怎么通过图像检索的系统来判断这个系统,就是说图像库里面有没有和它相似的图像呢?
那其实是有一定的流程的。我们首先要把这个。待查清的图像,机器应该预处理。我们然后进行一个特征的提取。比如说我们提取这个CN特征,或者提取这个颜色直放图的特征。提取完之后呢,然后。放在这儿。
然后我们也把图像,我们现有图像库里面的图像依次做一个预处以后特征提取,然后把我们待查清图像的特征和我们图像库里面特征进行一个相似度比对,对吧?然后进行一个相似度的一个检索。最终或者通通过一个索引。
或者是说是一个二次重排,最终得到一个检索结果。所以说图像检索,它其实是一个算法,也但是也是一个工程上的问题。视嗯图片版权简论呢,我们这个地方给大家讲,就是说举个例子,就是说很简单的就是说。
基于一个磁带的一个思路,就是b words。那么如果大家在个NRP对NRP比较熟悉呢,那么b words其实最早出现在NRP里面,对吧?那么磁带的模型呢。
就是说假这个呃假如说如果用磁带的方法来判断两个图片是不是嗯相同的,那么比就是说这样的做的,如果两张图是相同的。那么它们之间的相似度肯定是大于0。9的,或者说很高接近于一对吧?假如说两张图它是相同的。
那么它们之间相似值肯定是大于0。9。那么我们反过来就是说如果两张图它们的相似度是大于0。9的。那么我们是不是可以判断它们是相同的图像。对吧那么磁带呢其实是这样一个思路。呃。
那么我们刚才其实给大家讲了讲解了一个图像的局部特征。那么局部特征呢,其实它是呃我们可以回到这个,就是图像的局部特征,它可以做一个一一映射,对吧?假如说这两个狗的。
就是两个萨摩耶的一个关键点可以进行一个匹配,对吧?那么我们假如说这个匹配点的个数是大于,比如说有很多点是匹配上的,那么我们就可以认定这两个图,他们是有很多局部特征是被匹配上的,对吧?
我们他们的局部的的关键点,如果能匹配,就是说呃能匹配上50个,能匹配上100个,那么我们就认为这两图是一样的,对吧?那么类似的我们也可以用在这个呃图像版权检测上,就是说假如两张图它们之间的。
关键你能能够匹配。就是匹配的个数非常多。那么我们就认为他们是有相似的。那么但是就是说呃如果直接让两张图一一进行关键点匹配,是非常耗时耗耗力的一个过程。一个比较简单的方法就是先将我们的关键点进行一个聚类。
然后把关键点映射到相同的维度。那么就是呃这个其实就一个磁带的思路。首先把我们的图片呢提取一个局部特征。局部特征之后呢,然后进行对关键点进行一个聚类。进行了聚类之后呢。
然后把所有的关键点映射到我们磁带的模型之后,然后进行一个相似的计算。那么磁带呢它呃就是一个把我们。所有的局部特征映射到相同的维度。对,那么这个也是在嗯图像版权检测里面是比较基础的一个思路。
那么刚才我们花了很长时间讲解图像版权检测的一个流程。那么我们接下来给大家讲一讲,就是说视频版权检测的一个算法,对吧?
那么我们再回到回到这个CCF这个赛题上面,这个比赛上面CCF爱奇艺视频版去年它这个赛题,它这个赛题想它的载题背景就是考察经过复合变换的短视频。关联到长视频的算法的效果。其中不仅要找到短视频对应的长视频。
而且要计算出对应的时间段。也就是说,根据我们的queary短视频,要找到原始的长视频refer,而且要计算出他们的时间对应关系,也就是要找到que视频的Q start和QN以及rs RN,对吧?
那么在这个赛题过程中呢,其实要包括要做以下这个几步。首先因为我们原始的一个数据是。一个呃视频的数据。那么我们在这做的过程中呢,首先要对这个视频进行一个,可能要把它进行一个抽帧。
就是把那个视频把它变成一个图片。第二个呢。我们需要对这个图视频做一个特征计算,或者说对这个视频帧来做一个特嗯特征计算。而且我也可以提取一些指纹。比如说这个皮哈西,对吧?
还有一个呢就是这个赛题它考察了视频相似检索或者相关算法以及技术方案。而且在这个赛题的过程中呢,其实它呃考察了这个算法的精度,也考也也需要考察这个算法的一个并并发和实施的能力。所以说这个赛题。
其实是比较偏向于呃工业的一个呃赛题。那么我在参加完这个赛题之后呢,也将这个呃我们今天讲解的这个思路呢也顺利呃就是说在我们公司的一个数据集上,公司的业务上顺利就是说呃呃上线的。
所以说这个在工业界上的一些视频版权检测呢,就是说也是按照我们今天讲解的一个思路完成的。那么我们再回过头来,就是说再把我们呃就是说下一期的一个任务给大家重复一遍,就是说。好,嗯。
我们赛题任务就是根据我们的queer短视频找到对应的refer长视频,而且要找到queer视频中Q star和Q and对应。到refer视频里面的rsstarRN,对吧?
那么这个地方其实是一个视频对应关系,以及时间轴对应关系,对吧?那么我们可以把这个赛题任务分成两个子任务。第一个任务呢就是视频对应关系,就是我们需要根据queer视频找到对应的refer视频。
这个任务呢就是一个视频检索的一个任务,对吧?如果大家就是有图像检索的一个呃背景之个,其实视频检索就比较。简单的对吧?直是直接把它抽帧,然后把它转换成一个图像检索的任务就够了。
第二个任务呢可能就稍微复杂一点,就是你需要对应时间轴,就是你。要使用Qstar的和QN的。或者说你要计算出QstarQN的以及rsstar R这四个时间。这四个时间其实是你需要计算的。
就是说通过一定的关系或者说计算得出来。所以并没有就是说一些先验知识。这是两个子任务。第一个是视频的搜索或者视频的对应任务。第二个任务是视频时间轴对应任务。那么我第一个这个两个任务呢。
就可以把它分开解决是吧?分成两个子任务。呃,在这个解决这两个子任务之前,我们首先要做什么工作呢?我们首先要做一个视频抽帧。对嗯。那么什么是视频抽帧呢?我们如果大家如如果大家对这个视频有一定了解的话呢。
可能对这个。图视频帧这个帧这个概念不会陌生。其实视频帧是一个比较基础的概念。比如说我们任何一个视频,比如说我们在B站看一个视频,它是这个视频可以看成很多画面。就是说拼接到一起的一个效果,对吧?
比如说这个视频是呃每秒是60FPS就是表示这个视频每秒是60帧的。那么我们这个赛季任务第一个任务是视频检索的任务,视频对应关系。那么我们就是首先要抽帧,对吧?你如果不抽帧的话。
你很难就是说把这个任务使用图像检索的方法进去。而且你如果视频不抽帧的话,你呃就是说。有些关键信息你是找不到的。那么我们接下来也会讲解一下怎么抽帧。那么你抽帧的话。
就是把一个视频原始的文件把它抽成不同的不定数量的一个。图像文件,那么这个地方就需要遇到一个问题,就是我抽什么针以及怎么抽帧。那么其实视频的帧其实是有一定的嗯。规律的或者说有一定压缩算法在里面。
那么视频的帧它总共可以分为三类I帧P帧和B帧以。那么I这个是视频的关键帧啊,视频的关键帧就是说视频呃帧里面就是信息量比较大的一些帧。比如说I帧P帧B帧。那么在这里面三个三种关键帧里面呢。
I帧是最为重要的。I帧一般就是这个视频帧里面最为清晰,或者说没有经过任何压缩的一个视频帧。那么我们在如果。嗯,大家在这个。B站上传过自己的一个视频的时候。就是说视频的一个封面一般是选选择了我们这个I帧。
对,视频封面的一个选择一般是选择了我们这个I帧。因为它是没有经过任何压缩的。还有一种抽帧方法呢,是这个不抽关键帧,而是抽这个场景转换的帧。场景转换呢,可能大家就是说还是不好意思,还是要把那个视频放一。
我会把那个声音关掉。长镜转换大家可以看到,这是一个镜头。对,这个前后有一个是镜头的转换,有个画面的转换,大家没有看到这这有转换的一个场景跳下来坐下来。就是它相当于是摄像头,不同摄像头一个场景。
所以说这是一个场景帧,就是说它是呃。就是说他不是通过这个关键帧的方式啊来抽取的,他是通过这个时间的转换,就是不同时不同镜头,它把它拼接到一起的这种呃抽帧的方法。你这个抽帧的方法呢。
可以通过这个嗯前后帧的一个相似度的一个计算来计行得到。就是说呃他们之间就是说这个帧到底是不是长景转换。还有一类抽帧方法呢,就是一个均匀抽针方法,就是我们直接把这个每一秒的每一秒的图片把它全部抽出来。
就是说每一秒,比如说说60帧又是FB。那么我们每一秒就是说把它抽10针,就是说。6六帧抽一抽一张抽一张出来,就是我们把呃这个图像这个视频把它每秒按秒抽帧进行均匀抽针,这就是三种视频抽帧方法。
第一种是关键帧,第二种是长景转换针,第三种是均匀均匀抽帧。那么我们再回过头来看第一我们这个第一个子任,它是一个视频检索或者视频对应关系。那么视频对应关系其实是一个。视命检索任务对吧?
那么这个抽针就非常非常关键了。因为我们如果把这个针抽错了,那么你就找不到这个对应关系了,你就通过这个query找不到re。那么我们怎么抽针呢?其实我也实验过很多抽针方法。
我基本上把这所有的抽针方法都试验过一遍。但是最后发现还是这个关键帧是最有效的,特别是I帧是最有效的。为什么说I帧是最有效的呢。首先I帧是不需要。没有任何压缩的,它癌帧是没有任何压缩信息的。
就是说你抽出来它就是非常最清晰的一个状态。那么其次呢,I帧它其实是比较少的。比如说一根长度60秒的视频,它总共有16个I帧。
84个P帧或者184个B帧这个地方我是随便找了1个60秒的短视频来进行一个抽帧的。所以说大家可以到,就是说I帧恰其实是数量最少的,但是它的信息量最大的。所以说在这个视频对应的这个子人物里面。
其实抽I帧是比较合适。那么第二个就是需要讲到的就是说我们抽完针之后,我们怎么提取图像的特征。可以大致的解释一下吗?嗯我们刚才就是。强景转换轴针怎么定位到转换的地方呢?呃,其实这个是这样的意思。
。有如我们我不知道这个他这个速度应该可以。哦,这个这个软件我不知道这个速度怎么调啊,就是场景转换针直接可以通过前一帧和后余帧,它们之间的颜色直放图的差异来进行判定它是不是场景转换针。
假如说前一帧和后余帧它的。就是说颜色直放图差异特别大,那么我们就可以判定它为场景转换者。比如说这大家可以看到,就是说。
这个呃观众拍手之前和后这一针它们之间的相似度是差异很大的,它的距离很大。那么我们就把这一针定义为长景走换者。呃,这就是这个场景转换针的一个定义啊。对,如果呃还有一些背景知识没有讲的。
就是不管是这个I帧或场景转换针,还有一些均匀抽针的方法,在我们这个都有一些库直接可以调的。对,在这个FM里面嗯,就是说直接可以调客在讲解完之后呢,我们会把这个一些资料会呃列在这个PPT上面。
如果大家后续想自己学习呢,可以就是说深入学习一下我们的客户的资料。呃,我在做做这个因为这个视频版权,其实我也是去年年初才刚开始接触。我就是结束之前,我也不知道这些信息。
我也是慢慢的就是说通过网上的一些查资料,然后慢慢的就是说参加这个比赛,然后把在我们的公司里面也把这个业务给上线了。所以说呃就是说在做这个过程中呢,我也不知道最开始我也不知道IP这是什么意思。
我最开始连FPS都不知道什么意思,也是慢慢的自己查,而且就看到很多资料。我们再来。关键帧其关键帧其实呃。更就是说关键帧其实更更简单的。其实关键帧其实是图像压缩,就视频压缩算法,它已经固定就是规定好了。
哪些帧是关键帧,它其实在这个视频的一个头头部信息它已经规定好了。哪些关键帧,哪些帧就是关键帧。对你也不需要就是说你你就是理解成它这个视频任何视频文件,它的一个信息就都给定出了它的视频,哪些帧是关键帧。
对,所以说视频的关键帧它其实是有一个压缩算法在里面,就是哪些帧它是经过压缩的。它就不是关键帧了,来其实针它没有压缩,它就是关键帧。对,那么我们刚才讲了视频的抽帧的方法,对吧?
那么我们接下来就就回到就是说我们抽帧完成之后怎么进行一个图片的特征提取,那么其实在上面的呃基础知识,我们讲解的图像的局部特征和全局特征,对吧?那么我们在怎么提取图像的特征呢?对吧?
那么我们为什么要提特征呢?其实这个题特征的这个步骤,其实是想要。计算图像的相似度,对吧?因为我们query视频和reer视频的图像的尺寸是不一样的。所以说你如果不提取呃一个图像采料。
你是没办法比较它们之间的相似度的。具体来说呢,就是要计算cry视频里面的关键帧和refer视频里面的关键帧的相似度,对吧?那么我们在前面也给大家讲到,图像的特征是分可以分为两类的,一类是全局特征。
第二类是局部特征,全局特征是可以把图像成抽成一个整体的一个特征,比如说它抽取成512的自N的特征。那么局部特征呢,它是提取图像的关键点的特征。比如图像的角点s的关键点。
那么右边呢这个老图呢就是呃一些图像的一个特征。比如说提取CN的特征,提取关键点的特征,提取颜色特征,提取图片的一个哈系特征,对吧?那么图我们在做一些呃如果大家对深度学习。
特别是计算机领域的深度学习有一定了解的话呢,那么其实CN特征是非常有效的。它在一定程度上是可以完全代替这个关键点信息的对吧?那么提取CN特征的时候呢,我们是需要入使用一些预训练模型的。
比如说在imaginess主集上进行预训练的一些,比如说resiness18或者是VGG模型,对吧?那么在提取CN特征的时候呢,也有一些细节是需要注意的,就是我们。这个图像的尺寸对吧?
你到底是呃怎么进行一个数据变换呢?比如说你到底是把它resize到512乘512,还是把它resize到2256乘256,对吧?这个图像的尺度变化或者是尺寸面是需需要注意的。
而且针对于这个爱奇艺视频百分底测这个任务呢,其实。
嗯。我们可以往前翻一下。
就是这个视频版权任务这个里面,其实query视频和reer视频它有一些变化,对吧?有的地方它是变模糊了,有的地方它是呃。呃,尺度变了。所以说在呃提取一个特征的时候呢,也要考虑到这些。也要考虑到这些。
Yeah。而且我们在这个提的时候呢,而且是需要注意到这个ping层的。ping层呢,如果大家也就是说对图像检索有一定了解呢?其实ing层也是比较重要的。
我们在图像在图像分类比如说s8里面呢一般是用这或吧?那么其实在图像检索的时候呢,一般是用max pulling或者用这种rem这种ing的方法。对呃,如果大家就是说不太了解的话呢。
我们后续也会给大家在课后在这个PPT后面也会给大家讲解一下,就是说这几种ing的区别。那么为什么不用这个me pullinging呢?大家可以思考一下,就是说在图像检索用一下ing有m pulling。
嗯,有效就是说平均池换没有最大磁缓有效,为什么呢?其实这是就是说是呃最开始大家直接直就是说一一些研究人员直接是用这个规机机提提取一个模型。但是他就是说刚开始的时候那一个名铺,对吧?
假如我们直接把这个名铺换成这个max pulling最大值换,它效果会好很多,为什么呢?因为平均尺化它是。就是说有对这个卷积层的特征,按照就是说应的区域做一个平均取一个平均值,对吧?
但是最大池环它是在这个区域取了一个最大值,对吧?对于一个图像检索任务,它往往是需要关注到这个一些关键的一些像素信息,对吧?比如说一个角点的信息,比如说一个就是线条很深的一些位置信息。
所以说max pulling最大池环,它可以把一些关键的一些信息更好的保留下来。那那么如果用me pulling那种方没有max效,这就是呃在图像检索以及视频版权的检测任务里面呢。
用满mex pulling比较有效的一个方法。那么我们在讲完视频抽帧以及图像的特征提取之后呢,我们再回过头到任务一里面。任务一就是acqueer视频refer视频的对应关系,对吧?
有了我们这些前面的一些基础知识,我们就怎么做呢?很简单,只需要把我们的queer视频refer视频,进行一个相同的抽帧,然后使用图片的关键帧来进行一个检索的过程,具体步骤如下。
首先呢对que的关键que视频提取关联帧,然后用这个resson18或者说VG的网络提取一个卷积层的特征,或者说全连或者说这个全连接层的特征,然后进行一个L2正则化。
这个正则化呢就是把它呃规划到相同的欧式距离以内。对re first视频呢也是相同的操作,提取这个关键帧,然后提取到呃resson18里面的卷积层的特征进行个L2正则化。
第一步进行一个refershque视频关键帧抽针以及特征提取,以及rere视频里面的关键帧抽帧和特征提取操作。第二步呢就是针对我们que里面的每que视频的每一个关键帧,利用它提取到的特征。
在我们refer视频里面进行一个关键帧的一个嗯特征相似度计算,而且选选择相似度,top100的一个refer的关键帧做一个待选的一个结果。然后对top100的关键帧进行待选的。
我们这个地方是卡了一个阈值的。比如说我们用可以用这个cosline距离对吧?点击,然后计算一个相似度,比如说我们相似度大于0。9,我们就认为这两个关键帧可能是相似的。第三步,当我们计算得到了一。哦。
比如说我们这个取了top100的结果,对吧?但是这个top100可能包括了很多refer视频。我们怎么找到哪一个refer视频是和我们que视频正确对应的呢?那么我们怎么我们这个地方呢是直接加加了一个。
规则筛选。比如说我们针对同一个reque视频,我们将该视频关键帧搜索的的refer视频进行筛选。就是说利用refer视频,就是说在top100结果里面出现次数最多的一个refer视频。进行一个筛选。
而且加入了一个关键帧相似度2个。过嗯过滤规则可以就是说过滤到queer视频,它对应到里个refsh视频。对,也就是说在top100里面出现次数最多的reresh视频。
以及top100里面出现相似度最高的refer视频。用这两个规则把它卡一下就够了。这些就是完成第一个任务,就是说que视频refer视频的对应关系。
那么第二个任务就是que视频和refer视频里面的时间轴对应,对吧?这个对应其实就更加。困难了那这个其实就。呃,我就开始做了这个写了很多版本的代码,但是就是说这个呃过程呢是慢慢思考的到的。对。
而且这个query视频和re发视频的时间轴对应的关系呢其实是。呃,就是说没有比较好的一些解决方法吧,或者说都是一些强规则或者是业务逻辑来写的。我们给大家讲解一下啊。哦。
任务二是针对针针对que视频来找到refer视频里面的时间轴对应关系,对吧?那么在任务一里面,我们其实已经完成了que视频和refer视频的对应关系,而且找到了一些关键帧的对应关系。
比如说在reque视频里面的一些关键帧或refer视频里面的关键帧,它们是对应上的。这里面呢我们是。假设que视频的。
我们假设que视频的呃QN减1关键帧和QN关键帧分别对应quere视频的RM减1和RM的关键帧。我们直接这个地方。就是我们通过queer视频找到了我们的re视频。
而且我们的QN减一的关键帧是对应到IM减一关键帧。QNQN关键帧是对应到IM关键帧,对吧?现在我们需要找到Qstar和QN以及rsstar RN的4个值。对,就是说我们现在有这个对应关系。
我们需要找到Q starQN等以及2 starRN。我们现在只有这个对应关系怎么找呢?这个地方呢是会用到这个嗯找的步骤呢,会用到一些鲜验知识。就是说quere视频和ref视频它是包含相同的视频范围。
所以说它的关键帧也是相似的。也就是说,视频的裁剪和拼接并不会影响关键帧的相对位置。也就是说,在quere视频里面。这个帧是关联帧。那么在referresh视频里面,它很有可能也是关联帧。
所以说这是一个业务知识。就是说在这个呃综艺类的。版权视频版权的一个呃。就是说有版权问题的一个视频,他一般都是有这个规则,就是说他们的关键帧是对应上。也就是说,对于quere视频来说,Q呃。
也就是说对于que视频里面来说,quere视频里面的关键帧在refer视频里面,一般是关键帧。还还有一种特理,就是说在queer视频里面的Qstar和QN的一般都是关键帧。这个是一个先验知识啊。
就是任何视频的开头的帧和最终的结尾的帧一定是关键帧,这是一个。就是说就是硬性知识,就是说任何视频的最开始的帧和结束的帧一定是关键帧。这个大家可以理解吧,就是说Q4大招Q22QN的一般都是关联帧。
这个可以大家可以理解吧,为什么呢?哦,你可以放稍微放到前面。
大家看到这个地方,就是说我们橙色部分呢是这个。呃,侵权的部分就是说我们把refer频的一部分把它裁剪出来,然后。这个成次部分是裁剪出来的。
然后和其他的一些视频把它造就是说背景或者说有影响的视频把它拼接到一起。拼接到一起的时候呢,假如说这个QstarQN对应的Sstar点RN对吧?这是个对应关系。假如我们的QstarQN在这个原始的视频。
就是说star点N不是关键帧,在经过裁剪之后,这个QstarQN一定是关键。大家可以体会一下,就是说在经过这个裁剪之后,这个。在refer视频里面的这个画面,在quel视频里面就变成了关键。
因为这个裁剪的或者拼接裁剪加上拼接这个操作会影响到我们这个视频算法的压缩。它会把这个。Q4大招QN的这个位置,把它转换成一个关键灯。这也是一个针对于这个数据集的分析得到的一个规律。对。而且还有规定的。
就是针对这个任务,其实是有一定的呃速度比的。就是说quere视频和refer视频的速度一般是1比1或者1比1。2。这也是比是说这个任务下的呃一个比。那么一般的期权视频,一般只要不是一些B站的鬼畜视频。
这个速度比一般是1比1的。那么我们就是说怎么解决呢?就是说针对上面就是说我们前面分析到的一些训验知识,我们可以推断出以下结论。假如我们的QN减1和RM减1是匹配的。
我们是不是以及我们的QN和M可以是匹配的。我们是不是可以推断QN减2对应到refer里面的。关系它的位置呢怎么对应呢?假如我们的视频的速度是1比1的。
我们QN减2在于fer视频里面的关键帧的位置就是RM减1减去QN减1减QN减2就是。哦,我们Q2视频往前推一个时间段,然后对应到我们refer视频里面,往前推一个时间段。就是这个思路。
假如说我们速度是1比1。2呢,就是类似的。就是我们把RM减1这个时间骤,时间位置减去1。2乘以这个QN减1减去QN减2对吧?这样可以体现体会一下这个呃过程。
就是说我们一不断是假如说这个QN减1和RM减一是对应的,也且QN和RM是对应的,那么我们可以。用这个queer视频里面的这一个时间推断推测一下,在如fer视频里面。
这个地方是不是可能是呃有一个呃对应的关系。对,这就是一个时间轴的一个对应。而且这个时间轴的对应的其实是就是这样一个逻辑,就是说我们。这个是匹配上的关键点,对吧?我们往前推。
可以推到Qstar和QNRstar这个地方呢往后推就可以推到Q and和RN,对吧?这个就是我们这个时间轴对应的这个逻辑。那么针对这个问题呢,其实还有一些难点,就是我们通过que的关键帧。
可能是找不到语说的。对吧而且即使我们找到了通过query管理能找到的reffer,但是可能是定位到了错误的位置。而还有一些情况呢,就是我们对于拼接的que视频,它很有可能拼接的位置不是I。对。呃。
在这个解决方案的过程中呢,我也给大家列举了呃前几名的这个地方我分享的是初赛第四名。就是我最开始我这个PPT讲解这个思路。如果大家对其他的参赛选手的思路,想要深入的学习的话呢。
也可以就是说课后把这几个链接好阅读一下。那么在这个地方呢,我想给大家讲一点,就是说所有的去这是优胜选手思路都是类似的,都是先进行视频检索,然后进行实间轴对应。但是区别就在于不同的选手。
不同参赛度可能使用到的图片的特征抽取方法是不同的,以及图像的检索方法是不同。我们这个地方呢会呃讲解两个获胜人的,就是第一名和第二名的初步。嗯,就是说和我今天讲解的这个方法有什么区别啊。
第一名衡向数据也是一个初创的一个就是说创业公司。它的做法呢是用VGG的潜层责人,再加上高斯的rem的一个嗯就是说。这是一个池化层。我们在前面讲到这个max,对吧?也有一个rem,直接加上一个近似搜索。
这个地方呢和我的作者区别就是这个近似缩索其实在我解题的时候呢,也加入了这个近似搜索。对我们待待会儿也为也会给大家讲的什么是近似搜索啊。嗯,大家不要着急。那么嗯我们针对这个赛题,针对这个解决方案。
其实我最开始听他答辩的时候,其实有两个疑问。第一个,为什么要用浅层的卷积特征,为什么不用深层的卷积特征,对吧?我我做的时候呢,其实是提取到res18嗯最后的卷积层的特征?这个地方呢。
它是使用的VG的浅层的卷积特征,这是过往的一个区别。第二个呢是为什么这种rem,为什么不用直接的me point或者是m point。
那么为什么用浅层特征呢?浅层特征其实更适合这个版权检测的。版权检测呢其实是针对这个像素的一个呃。就是说它基本上是对这个画面进行完全完全的一个裁剪。那么如果用浅层,它的人呢会保留更多的原始像素的信息信息。
那么。特别是版权检测任务啊,用浅层的深度学习的,就是说卷积神经网囊的浅层的任是肯定有效的。第二个是为什么要用rem而不直接使用meput或者max pulling呢?rem它其实也是一种石化层。
它只不过是将特征进行区域聚合,它是对裁剪各项堵报嘛。我们给大家讲解一个例子,大家可以就会懂。我们假如这上面这张图是原始的一个rere视频,我们把它进行一个裁剪,再加上一个裁剪得到这个地方。
就是说上下左右都裁剪了,对吧?那么。大家如果计如果用这个CN特征计算这两个图片的一个像似度,它不会很高。但是如果加了rem之后呢,它们的像似度就会变成很高。rem到底是什么呢?就是这个思路。
假如rem呢它就是一个手动的对特征特征进行一个划窗的一个聚合的。我们直接讲解最右边这个复杂的情况。比如说我们这个地方把一个。嗯。😊,图片的一个feature map分成4份。总共就是说分成4分,对吧?
我们也是一个类似的滑窗操作,在这个地方在个部分取一个区域再划窗一下,取一个区域,再划窗一下,取一个区域,再划窗一个区域。大家有没有看到这个这个操作其实是和我们卷积操作是比较类似的。
但是这个操作它其实是这个对有一些区域是重复采样的。对吧针对这个视频版权这个载体,它是这样的采样方法,它是让我们的模型,或者说对这个视频对这个什么画面正更靠中间的一个。一个位置的像素更加就是说。
注并就是说它的一个就是相当于这个位置,它的一个特征的,就是它的数值出现多次。就是最终它的一个重要性会更大一些。对,那么大家也很清楚的看到,就是说原始的图片,假如说我们用这种rem的方法。
它最终的特征就是说在这一个位置。就是说特征就是说特别重要。类似的。那么为为什么用rem呢?大家就是说也就是说应该能了解吧。就是因为这原始的视频它是加入了裁剪的过程。那么如果我们加入了remax之后呢。
我们这个图像的特征就主要提取到中间的这些项素。对,所以说因为mac呢也会对这个视频的裁剪会更加鲁邦。
呃,那么讲解第二个呃,第二名的博音视情,博音视觉也是一个创业公司啊,他这个解决方法和和第一名也不太一样,和我的解决方法也不太一样。他是用视频的局部算子和视视频的一个描述算子来做的。
那么这个公司呢其实是对视频压缩视频检索,是做的比较深的一个公司啊,他也就是说参参与了视频,就是说一些国际规则的一些制定。所以说他做的方法是比较高层次的,而且比较有水准的。呃。
那么这个他的一个解决方法其实使用了深度局部特征。哦,这个可能大家哎突然想到哎深度学习不就是全局特征吗?怎么突然冒出了一个深度局部特征的。
这是嗯近两年来发展的一个比较前沿的一个知识点。它只是使用深度学习的1个CN的face map来提取的一个局部关键点并行编码。也就是说它深度它是使用深度学习一个feature map。
就是用嗯CN的网络提取特征,然后进行一个提取的局部特征。因为我们原始的CN特征是非常有效的。对吧那么但是CN特征它是有一些缺陷的,就是CN特征它是不具备尺度。CN特征是并不具备尺度不变性啊。
这个地方我提提到第二次,就是说任何图片经过旋转平移,颜色变换之后。它的1个CNN的特征就是这个图片经过颜色变换之后,它的提取到的1个CNN特征是会变的。对,但是我们。
假如把这个CNN特征是再提取到了一个局部特征,就是说在这个CNNfeature map里面再提取一个局部的一个的关键点。那么这个关键点就既继承了这个CNN的一个强大的一个特征的抽象能力。
又有了局部特征的一个尺度不变性。对,这就是深度局部特征的一个呃优点。那么如果大家对这个深度局部特征,你感兴趣呢。
可以阅读一下这个呃这应该是骨骼发表的一个比较典型的DELF这个深度征深度局部特征非常非常有效。那么深度局部特征和shift特征,就是传统的图像的局部特征,相比它有什么优点?首先它的精度是更高的。
因为它使用了CNN的。这个特征抽检的方法,而且它可以用使用GPUB行计算,它的计算速度是比这个shiftft是快嗯,几十倍甚至上百倍的。对。哦,那么在讲解前面的一些解决方案的时候呢。
其实我不管是讲解自己的解决方案,还是讲解第一名和第二名的解决方案都。忘记或者说特意没有给大家讲解一个知识点,就是。图像的一个检索或者相似的计算。那么呃像图像的一个检索。
其实本质就有就是我们检在检索视频有一个特征。到我们的视频库里面的图嗯特征库里面进行计算一个相似度,对吧?那就是本质就是一个哦向量搜索的一个过程。那么像量样的搜索本质有很多种方法解决方法。
比如说那种KNN或者用暴力检索,用KD trade用哈西法,用PQ量化,或者说用ANN进行检索,对吧?这都是图像检索一些工程上,或者说一些特征压缩方面的一些知识点。如果大家感兴趣呢,可以仔细阅读一下。
下面这是蚂蚁金服,他们发,就是说在植物写知乎上写的一篇嗯。呃,对,知乎上写的一篇这个。好,博客如果大家感兴趣呢,可以就是说来看一下。因为这个图像的一些视频,就是图像的一个特征压缩是非常非常重要的。
而且因为篇幅原因啊,由于时间原因,我们没没办法展开讲。这个如果展开讲的话呢,就还需二三十分钟给大家直己讲清楚。我就跟大家总结一下,如果大家想要用这个图像的一个呃特征的压缩或者加速。就是说如果是想要精度。
而且数据量比较小的,那么你可以用这KN就是说用这种金牌。就是用就是说暴力检索,这种KN呢,它是适合数据量比较小,而且是你玩召回率想百分之百召回的,可以用KN。那么你假假如想追求速度,那么你就要牺牲精度。
对吧?那么你可以用这种近似近似检索。近似检索呢它是比较适用于千万级或者是说。一级的这种特征的压缩。那么它就是先对这个特征进行一个压缩,把它进行一个KT tree,或者说做一个聚类之后再进行一个检索。
那么它就是牺升的一定进度,它是嗯就是说召回率是偏低一点。对,这是一个总结,也是如果大家对视频就是说对特征压缩有一个就是如果想深入学习的是吧,可以阅读一下我们上一页PPT给的一个链接啊。
我们这个这也不会展开讲。呃,P还是就是。图像嗯这种图像的一个呃怎么说呢?这种哈西怎么说?图像指纹吧,应该都叫图像指纹。图像指纹它有什么缺点呢?图像指纹。OK给大家看了图像指纹。
任何图像的一个像素的变换都会影响图像指纹。图像指纹只适合找纯一样的图。比如说玩完一模一样的图,它是适合图像指纹。但是假如说这个图片,比如说这个地方你加了一个水印,比如说做了一个裁剪操作。
图像指纹是完全变了。所以说图像指纹并不适合这种基于内容的一个图像检索。图像指纹可能做一个图像过滤。比如说判断这个是不是有两张完全一模一样的图像,可以用图像指纹。
它的一特点也是就是说它完全图像指纹最终可以印就是说编码成一个呃,应该是编码成一个字符串,对吧?所以说。嗯,所以说比较友好。如果比你说呃常规的检测方法,常规检测方法。
比如说用这个PP或者说NNN这种里面的,就是说呃HNSW都比较有效。对在在这个做这个比赛的时候呢,我是用HNSW这种近似的呃这种方法。如果我建议你先后续阅读一下这个链接啊。
因为我这个真的来不及展开讲这个里面有很多种特征颜缩方法。也是不不不是很复杂不是很复杂。不是很复杂,你就是说基本上花半个小时绝对能看懂。
Yeah。嗯,那么我们在呃我今天的主要的内容就这么多。那么我们再扩展讲一下嗯一些图像检索视频检索。其实图像检索视频检索。我们刚才讲的是一个视频版权检测的任务,也就是一个以图搜图或者说这个任务。
那么其实还有其他的一些检索方式,就是说我们通通过一个视频的类别,或者说通通过一个关键词来检索。
或者说通过一段文本来进行检索,或者说通过一个画面,或者说以图se图的方式,对吧?我们刚才讲的讲解的是第三种方式。那么第一种方式就是一个类别检索。第二种方式是一个文本检索。比如说我们这边给了一个例子。
比如说呃给定一个文本,英文文本,我们需要找出。正确的例子以及不正确的例子,对吧?所以说呃,现在是主要的是第二类任务是比较火热的。因为第二类任务是就是说更有通用性的。就比如说我们在百度的搜索引擎里面。
对吧嗯就。就是说主要的是第二类。还有一类呢就是就是说你比较这种第二类任文的解析方法呢,就是它是使用比如说这个地方我是举这个what to video vector这种这个论文里面进的。
就是他把这个文本用what to vector的方法映射到一个相链空间,再把图像映射到一个相同空间。也就是说把文本和图像映射到相同的一个特征空间内。然后假如我们有了一个文本之后。
再到这个相同的图像空间内进行一个调整搜索就够了。对。哦,这是一个比较前沿的,就是说基于呃文本的一个就是文本内容来搜图的一个方法。我们再总结一下,就是说我们今天分享了一个呃视频版权检测的问题的解决方案。
那么我们今天讲解的一个是3000个视频的,就是说这个赛题是3000视频的。假如说是3000个视频呢,它总共是8万I帧20万P帧。
假如说我们视就是个比赛的一个任务把它转成10万个视频假如说如果10万个视频,那么我们就有300万癌帧以及1000万个P帧,那么我们再怎么做?可能解决方法就不一样了。
因为数据量级就也就是说在不同的精度和速度它是需要有一个折中的一个吹top针。也就是说在不同的数据量级下面,这个精度和速度是有一个折中的,特别是在特征压缩的情况下。还有一个嗯需要注意的是。
如果我们怎么百分百确定que视频和refer视频是匹配上的对吧?这个就也是一个嗯需要思考的地。第二个呢就是暴力思索近近嗯就是近近似思索分别适用什么场景,分别有什么优缺点?我们就像PPT也给大家讲过了。
对吧?第三个呢就是说本次分享的视频版权检测任务,只是针对于视频的一个任务,它并没有考虑音频的部分。假如我们通过音频呢进行个版权检测,就需要通过一个音频的一个特征。比如说音频的一些指纹来进行检测。
那么如何对这个音频进行一个版权检测呢?这有一些其他的一些难点。比如说一个调音,对吧?比如我们把的声音进行一个变换,或者说做这个鬼畜的声音,对吧?B一站还不是很多鬼畜的视频了。那么这种这种声音变换之后。
怎么进行版版权检测呢?也是一个比较新颖的特征。你比如说比较新颖的方向吧。对,那么我们呃一些阅读链接呢,我们也放在这个地方。嗯,客户呢应该是会把这个PPT分享给主教,然会也分享给大家。
对呃,如果大家有问题呢,可以就是说再给大家就是说几分钟再聊天吧。PPT你加一下我们的微信群,我们微信群或者说我们的一些公众号吧,会有吧。视频如何确定相似的差异之处。这个我没有理解到你的。
你说的是什么意思?如果用shiftft用的图像检索里面,shiftft用的图像检索一般是用这种磁带的方法。
是用的这种磁带的方本,就是把所有的shift特征做为一个聚类,然后把所有的局部特征映射到这个类里面。因为我们假如说把因为我们shift特征它是这种局部特征,对吧?我们它它就是每个图片。
它包括不同的shift个数。比如说有的图片包括100个特征点,一个图片,包括200个特征,那么我们把它作为一个聚类之后,我们把所不管是任何数量的shift特征,都可以映射到我们聚类之后的这几几类里面。
那么就可以把它转换成一个有呃相同维度的一个,对吧?这就是一个。嗯。嗯,对。怎么加取?嗯。嗯,关注一下我们嗯这个机构的7月在线,你直接搜7月在线的微信号公众号就可以有一些加群。目前CV算法还好就业嘛。
老师没有经验制。呃,CV算法,我只能说呃,因为我现在在大厂工作,所以我建议你能去大厂就去大厂好不好就业是比较难就业的。因为现在我说实话,CV其实是比较。不需要算法工程师的一行,因为很多算法都是固定的。
你只需要工程化。所以说很多公司并不需要很多的一些C位的算法和算法工程师。对。嗯,剧类信息是不同关键点的坐标方法。呃,我这个地方后后面会把后面这个略读链接把这个磁带的一个方法写上了。对你如果真的感兴趣呢。
直接搜这个磁带模型,磁带模型,然后加上shiftft就有很多的一些弄。你可以就后续看一下。be all words, be all words and hold个 shift。再附这关键词就个对嗯。
大家还有问题吗?对,如果大家嗯没有问题呢,我们今天就到此结束了。嗯,后续呢如果大家关注一下我们的公众号,然后就可以领到我们的一些后续的资料和的分享。好的。呃,我们再稍等2分钟,如果大家还有问题呢。
可以直接打字啊。如果稍等到9点15,如果大家还就是说没有问题呢,我们就到此结束。
呃,是做CV以后转目标检测怎么样?目标检测现在有一些成熟的模型,比如说现在比较基础的SSDEU了。我会做些运,那师傅先入坑心,可以啊,你也可以入坑啊。这个CV的话如何入制目标检测。
你就学一些目标检测的任务一些基础的模型,或者说生日的模型呗。嗯嗯,就是说你就继续继续按照那个思路走呗。对。我找一下那个公众号啊。呃,大家应该是能看到这个二维码吧,这个是我们直播的一个分享的二维码。对。
嗯,就是说直接扫码这个,然后加客服就可以进去。
后续的。PPT能发群里吗?我不知道,待会儿呃就是说会分享给嗯助教的,然后助教再发送。大家如果想要加群的呢,可以就是说扫一下这个版维。呃,我看来大家就是说暂时没有问题啊。
那么我们今天的呃就是直播内容就到此结束了。
谢谢大家,再见。😊。
人工智能—计算机视觉CV公开课(七月在线出品) - P20:项目实战-精灵宝可梦识别 - 七月在线-julyedu - BV17z4y167dq
啊啊。
我们今天那个直播呢就是讲解我们的一个嗯,计算机视觉领域的一些任务,比如我们如何完成一个图像的聚类,以及我们如何使用我们的一个cn来完成我们的一个图像的一个分类。
然后我们今天的这个课程,这个具体的一个课件以及我们的一个代码都是公开的啊,免费领取的,大家只要加一下我们杨老师的微信啊,就可以获取我们的相关的一些资料,好。
然后呢我们首先呢来看我们的第一部分是我们的图像特征提取,然后第二部分呢是我们的一个无监督的模型,came in做聚类,第三部分呢是我们的cn分类,然后我们这最后呢是我们的一个知识点展望啊,好我们继续。
然后呢我们首先来看我们的第一部分,第一部分这个第一部分呢就是我们的一个呃就是图像特征提取。
图像呢它是一个非常很典型的一个非结构化的一个数据,在图像里面呢,我们具体的在做一个具体的一个数据集的一个描述的时候呢,其实我们是需要对我们的一个具体的一个头像,把它进行一个特征的提取。
也就是说我们需要通过一个具体的一个特征来描述,我们具体的一个图像,这个呢可能是需要我们再进行一个处理的过程中呢需要做的啊,需要做的这个可能是需要我们在处理的过程中需要做的,这是第一点。
第二点呢就是我们需要在我们的一个编码的过程中呢,是对我们的一个图像特征呢进行一个有效的编码,这个编码呢可能也是需要跟我们的一个基础的一个数据,其实是强相关的,强相关的好,对于我们的图像而言呢。
其实我们需要关注我们的图像特征,它如何进行提取,以及我们的具体的一个图像,它如何跟我们的一些具体的任务相结合,也就是我们这个地方我们的一个图像特征如何进行提取。
以及我们的图像的一个具体的一个任务如何进行结合,那么这部分呢可能就是需要你了解到我们现实生活中,我们的一些具体的图像特征,它到底是有哪些图像特征。
以及我们的具体的一个就是我们的一个呃图视觉类型的一个任务,它到底有哪些任务,然后将将我们的一个具体的一个两者进行结合,在我们的一个基础而言,对于对于我们的一个初学者而言,其实比较适合学习的呢。
就是我们的一个就是图像分类,以及我们的一个图像检索,图像分类和推动解锁,对于此类任务呢,其实是就是说比较简单的,比较简单的,就是我们是通过我们的一个具体的一个图像特征的一个提取。
然后完成我们的一个分类的一个操作好,然后我们继续在这个地方呢,我们的一个分类和我们的一个具体的一个检索呢,其实本质都是用到了我们的一个具体的一个就是说提取的图像的特征。
然后完成我们的一个图像特征的一个具体的一个映射,整体的过程就是这样的好,但是呢对于我们的一个图像而言呢,其实它是存在千变万化的一个区别的,就是我们的一个图像,它可能是包含了不同不同角度。
不同场景以及我们不同,就是说在有遮挡啊,以及相关的一些情况下的一些具体的一些形态,我们在对于同一个图像来做一个具体的一个就是呃处理的时候,即使是相同的一个图像。
也就是即使是相同的一个蒙娜丽莎的这个具体的一个人物呢,我们再做一个呃,就是就是他的一个所获得的一个照片呢,其实都相差蛮大的,相差蛮大的,好,我们继续,然后呢或者说相同的或者是说比较相似的图像。
可能在做一个处理的时候呢,可能相差也是蛮大的,相差蛮大,对好,那么我们继续嗯具体而言呢。
就是说我们的一个就是嗯在对于图像特征而言呢,我们可以把它就是嗯把它划分为两类特征啊,一类是我们的一个全局特征,另一类是我们的一个局部特征,全局特征呢是从我们的一个整体的一个角度去关注。
我们的一个图片的整体的一些细节,局部特征呢我们是关注到我们的一些细节的一些关键点,谢谢关心点啊,然后呢我们的一个具体的一个数据,对我们的数据集而言啊,其实全局特征它可能是基于我们的图片整体而言的。
那么我们在做一个具体的一个特征提取的时候呢,这是两类啊,这是两类,一类是我们的全局,一类是我们的局部,一类是我们的全局,一类是我们的局部好,然后我们继续,然后对于我们的图像特征。
把它图像特征提取完成之后,我们还可以做什么呢,我们可以对我们的一个图像特征呢,把它作用在我们的图像特征的一些检索任务,也就是我们对我们的图像特征呢把它做一个相似的嗯,图像检索。
或者说我们的一个相同的图像检索,这个都是可行的,那么我们可以看一下右边的这个例子,对于我们的一个具体的一个就是啊我们的一个图像特征而言,我们可以提取它的一个深度学习的一个特征。
或者说可以提取我们的一个局部的一个特征,局部特征,然后呢这个地方我们再做一个具体的一个操作的过程中呢,其实如果是对于提取我们的全局特征呢,我们就是可以使用颜色颜色这张图,或者说我们的一个具体的一个嗯。
就是嗯我们的一个就是啊in cn的一个卷积特征,然后提取它的特征,如果是局部特征呢,我们就可以通过我们的一个关键点匹配啊。
然后提取一个局部特征好呃今天的课后练习。
今天课后有练习代码吗,嗯有的啊。
大家可以嗯加一下我们的一个呃就是p p t,加一下我们的杨老师的微信,然后就是可以来做一个具体的一个呃领取我们的代码好。
那么对于我们的一个图像特征提取呢,其实有很多啊,这个我们就展如果展开讲呢,就是说你在用到一个具体的任务上面,你可能就是用到我们的一个具体的一个特征,嗯,我们的一个具体的一个特征呢。
其实呃不同任务下面就是我们在进行一个我们的一个呃使用的时候呢,我们使用到的一个特征是不一样的,比如说你的分类任务,然后再加上我们的一个检索任务,或者说我们的一些物体检测任务。
其实是我们的一个其他的一些任务,这个都是有区别的啊,如果大家感兴趣呢,也可以先去了解一下。
那么我们首先来看一下我们的一个具体的一个,就是说嗯这个一类特征叫图片哈希值,这边阿c值呢,就是说我们将一个具体的一个嗯图片呢把它转变成一个字符串,转变成一个哈希值的一个情况啊,转变成一个哈希值的情况。
在这个哈希值的里面呢,就是说我们是使用我们的一个具体的一个图片呢,将它的一个具体的一个图片,把它转成一个字符串的形式,也就是用一个类似于这种md 5的这种哈希的一个形式啊,类似于我们这种md 5的。
把它转变成一个哈希的这种形式,将我们的一个图片把它转变成一个进场的一个字符串,那么图片哈希值呢其实呃在很多的一些场景下面,都是有具体的一个应用的啊,都是有具体应用的。
比如说在我们寻找这个图片的一个呃重涂的时候,或者说我们手机嗯,或者说我们的百度百度网盘,他们在寻找这个图片的一些重复情况的话呢,都是可以从我们的一个图变化值来做图片哈,希值的一个具体计算过程呢。
其实它是首先将我们的一个图片把它进行一个缩小,然后呢将我们的缩小之后的图片,比如说我们把图片把它缩小到8x8的一个尺寸,然后在对我们的一个8x8的一个尺寸的一个图片呢,把它进行一个具体的一个特征提取。
做一个特征,这个特征呢你可以理解就是一个啊把它原始的像素啊,就是视为具体的一些特征,然后呢再把我们的一个具体的一个内容呢转成一个字符串的形式,这个字符字符串的形式呢就是一个定长的定场的图片哈。
希值呢它的一个优点就是它能够将我们的一个具体的一个数据集,将它转变成我们的一个定长的字符串,而且这个字符串呢是可以很方便的存储在我们的一个,就是说数据库中间的啊,存储在我们的数据库中间的。
而且带来的一个计算资源呢也是比较小的啊,就是也是非常方便的,但是呢图片哈希值的一个缺点就在于它其实是嗯对图片的一个内容啊。
是啊强相关的,这里的特征值指的是计算什么特征嗯。
这个特征呢你可以理解,就是说我们把一个图片把它转变成缩放到8x8的一个尺寸,然后使用它的一个像素值,它的rgb的一个像素值,这个地方的特征就是它像素原始的像素点啊,原始的像素点对。
就是直接把它作为我们的一个特征嗯,怎么进行转化的呢,可以这样,你可以这样认为我们原始的是一个8x8的一个矩阵,我们把每个矩阵呢是将它的一个节点做一个判断,它是不是大于128的,是不是大于128的。
就是说每个像素值我们是把它做一个判断,做一个判断是不是大于我们的一个128,然后呢,我们就是将我们的一个图片,把它转变成一个8x8的一个布尔类型的一个矩阵,然后更进一步的可以把它转变成我们的字符串。
对这个地方呢是直接对我们的一个原始的一个像素啊,原始的一个像素做到原始的一个像素做的,所以说呢其实它是非常方便嗯,就是说是对我们的原始的一个啊图片啊,它是直接提取它的像素级别的,像素级别好,我们继续啊。
然后呢这个地方的一个图片的一个像素呢,其实它是呃这种操作呢其实是有一定的一些优点,也有它对应的一些缺点啊,首先呢对于对于我们的这个图片的一个哈希值呢,其实它产生的一个结果是一个定场的。
所以说它是比较方便存储的数据库,但是呢它的一个具体的一个缺点,就是它是会改变任意对我们图片的一些改变,都会改变我们最终的哈希值,所以说呢它可能存在啊,就是说像不同的图片只是改变影响改变一小一点的图片。
也会带会带来它的哈希值有较大的变化,或者说不同的图片内容不相同的图片,但是呢它的哈希值存在相同的情况。
这个都是存在的,第二类呢是我们的颜色直方图,颜色直方图呢就是我们在做一个具体的一个嗯嗯计算的过程中呢,我们去统计一下我们的颜色,它整体的一个分布的情况,分布的情况嗯,可以看右边这个这张图啊。
就很很清楚的,这张图在统计的过程中呢,其实我们本质上是对我们的输入的一个所有的像素啊,所有的一个像素做一个计算,计算什么呢,就是计算他的一个次数,计算一个次数,我们x轴呢是我们的一个0~25的一个取值。
y轴呢就是对应的像素点的一个出现次数的一个统计好,那么在这个地方呢,就是说我们统计的分别统计了我们的一个rgb 3通道的,也就是说我们可以统统计得到不同颜色空间。
不同颜色空间我们的一个具体的一个呃就是啊这种分布,然后呢分别得到三条曲线,那么这个rgb的这个颜色直方图呢,其实它是一种全局的全局特征,你可以看到它其实这个地方统计得到的是一个整体的一个分部信息。
统计得到的是一个整体的一个分部信息对吧,然后呢它并不会关注我们的一个具体的一个像素点,它的一个位置啊,他不会统计位置,他只会统计,就是说举个例子,这个地方rgb分别取值为50的情况下。
所对应的像素点的个数是多少,对他是不统计位置的,他是不统计位置的,所以说呢颜色直方图它是能够抵抗嗯,就是说图片的一个旋转和平移的,因为它对位置并不是很敏感,但是呢它的一个缺点。
就是说他其实对颜色变化是比较敏感的,也就是我们对于一张图片,如果将它的一个颜色做了一个变换之后呢,你会发现它的一个颜色直方图就有较大的一个变化,较大的一个变化,所以说这是颜色直方图它的一个优点。
它的一个缺点啊,颜色正方图是不统计位置的啊,只是统计具体的一个次数,具体一个次数好,我们继续,这然后呢我们接下来看一看这个无间度模型k means,k means呢其实在我们的日常生活中。
那应该是呃所有的同学都会接触到啊,就是说其实是一种非常非常有效的这种无监督聚类算法,那我们看一看key means呢,其实它是一种无监督的一个距离算法,在这个算法过程中呢也是呃非常非常普及的。
非常非常普及的一类算法,在这个算法过程中呢,我们是根据我们的一个数据呢把它组成为不同的一个组,不同一个组,然后呢将我们的一个数据做一个聚类啊,不断的聚成不同的一些组,came in的一个聚类过程呢。
它是这样的,首先呢我们选择k个点作为我们的初始之心,然后呢去根据我们的这个地方,这个地方这是步骤一step 1,在这个step一的时候呢,其实它是做了一个随机的筛选啊。
随机筛选这个地方的k个k是我们提前选择的,这是我们提前选择的,然后呢我们其实是随机选择kg这个地方也并不是说完完全全纯随机啊,他也是按照了一定的一个采样啊,按照某种采样采样得到我们的最开始的知心。
然后呢根据我们的一个数据点呢,将我们的一个数据分派分派到我们的最近的一个执行,然后完成了得到k个two,然后更进一步呢,就是说有了这k个促之后呢,然后去对我们的醋做一个样本的一个平均计算。
得到了新的聚类中心,然后重复我们的第二步和第三步,直至我们的我们的距离中心不会发生变化,这个就是我们的一个k means,他的一个具体的一个就是啊他的一个就是训练过程啊,然后呢在kinds而言。
对于km而言,其实它是一种无监督的五监督的一种算法,而且呢它是不需要嗯,就是说我们有标签的,不需要我们有标签的嗯,然后呢,但是呢kim是我们需要设置我们的一个具体的一个k的一个取值的。
也就是说这个key是我们的一个相应的一个,就是说你可以理解就是我们的一个嗯超参数啊,一个超参数好,我们更进一步更进一步来看一看,那么除了k means之外,有没有其他的一些距离算法呢,当然有。
比如说有基于这种密度的d b d b skin的一些距离算法,也是都是可以来做的啊。
然后呢我们首先来使用一下我们的kenings。
来完成我们的一个具体的一个实验啊,我们就是将我们的一些代码从头给大家写起的啊,从头给大家写写啊。
我们新建一个notebook,新建应该都出不了,好呃,在这个notebook里面呢,我们就是从头完成我们的一些代码,从头完成我们的代码,我们首先呢是就是说看一看我们的数据集在哪。
我们的数据集呢其实是在一个叫做呃,我们待会会把数据集都给大家啊,就是说下载好啊,以及把这些课件啊以及数据集都直接给到大家的啊,大家不用担心,我们看一看我们的一个宝可梦,它的一个位置点的时间去。
对这是我们的宝可梦的一个文件夹,这个文件夹下面都是一些宝可梦的一些照片,好,这是数据集,然后呢我们将这个数据集的一个位置呢,把它定义为我们的一个具体的变量,好。
我们把它叫做一个data pass的这个变量,然后接下来呢导入我们的一些具体的一些库嗯,比如我们的浪漫呀,pendas啊,以及cv t啊,这些我们都是可以导入进来的,好,然后接下来我们做一件事。
就是说统计一下我们的数据集里面到底有多少张图片,我们用globe这个库来做统计,统计一下我们的数据集下面多少张照片,好我把这个全屏一下啊,然后这个地方它就是做一个匹配嘛。
好这个就是他统计得到的一些具体的照片。
然后呢我们将这个具体的一个文件路径啊,就是所谓的照片路径呢,我们把它复制为叫做一个pass的一个list好,然后呢我们的原始数据集里面其实是存在一些啊,就是非这种就是常规的格式的图片。
就是它有可能是包含s vg的啊,我们是做一个筛选,这个地方我们是不想读取s vg的好。
然后接下来是读取完成之后的,我们的筛选之后的应该都变成路径好,然后接下来呢有同学可能就问的,就是说我们对于这个图片的一个哈希值。
我们怎么做一个计算呢,我们这个地方就是用image hush这个库,1米计划是这个不难做一个计算,这个库呢其实它非可以非常方便的搭配我们的披露这个库。
来做一个使用啊,我们首先呢来使用我们的一个批斗来试一下啊。
我们读取我们的一张图片对吧,这个披露呢就是可以很方便地读取我们的单张图片好,那么如果是搭配我们的页面进行时呢。
就是我们的页面进行直接对我们的传入的一个图片。
常用的一个p的读取的一个图片进行一个计算,这个就是我们计算的之后的一个ai,它是一个true force的一个零一矩阵,然后呢我们对于这个零一矩阵呢。
把它直接可以转成转成我们的16进制的16进制的字符串,这个呢就是我们转换之后的一个图片的哈希值图片的哈希值好,那么如果大家感兴趣呢,大家也可以下去啊,啊拿着任意一张图片啊。
任意一张图片都可以用相同的代码啊,这样产生得到类似的结果,那么更进一步呢,假如说我们想要计算我们的一个图片的一个颜色,直方图呢这个地方我们如果是计算颜色,直方图呢非常推荐嗯。
使用我们的一个open cv来做啊,因为open cv它内置已经是有这个具体的一个颜色直方图的实现,嘿嘿嘿,当然也有同学说老师我直接用这个狼派来做行不行啊,用狼派来做也可以啊,也可以,这个都可以啊。
啊只不过呢就是看个人的一个习惯啊,个人个人的一个习惯好,我们首先当中open cv读取我们的一张图片,这这个图片呢我们就是读取我们的这个pass它的第一张,然后呢我们读取它的灰度图,多通道的也可以吗。
这个地方的就是我们就是一个多通道的图片啊。
这个地方它就是一个彩色的图片,这就是一个多通道的对吧。
我们仍然是直接把它转变成了一个哈希值啊,所以说他并不会就是说在不在意它是多通道的还是单通道的话,这个都行的,这个都行的,100个通道的,100个通道的话,你可以参考它类似的一个做法。
你可以参考它类似的做法。
这个地方其实嗯,你可以看到它原始的就是转变成一个应该是一个8x8的一个矩阵,这个地方的一个图片哈,希值他应该是做了一个相当于是做了一个灰度的一个替换,什么意思呢,他可能是做了rgb,把它转变成三通道。
再把它转变成我们单通道的一个操作,对如果是100通道的话,是不是也是可以参考这个操作呢,对吧,将我们的一个通道相当于是求一个灰度的,求一个灰度图,然后再做就行了,好我们继续。
那么如果是嗯使用我们的一个open cv呢,就是c v two mm read啊,就是读取我们的图片,读取完成之后呢,这是我们的一个lapg式的啊,lp格式的一个具体的一个图片。
那么在我们的open cv里面呢,我们就直接可以用c v区我们的call嗯,这个hist来读取并计算我们的一个图片的颜色,正方图好,还有一些具体的一些参数啊。
我们就给大家写一下开始需要统计的像素的开始是指一些它的结束的取值,好这个地方还有一个参数是我们的范围啊,好这样呢就是统计得到了我们的具体的一个颜色直方图,它的统计信息啊,如果你看的不太清楚的话。
我给你把它flatten一下,这个地方就是每个像素它对应的一个出现的次数,出现的次数好,那么我们可以将这个把它赋值为得到我们的l area,然后呢我们对我们的ario可以做一个可视化,对吧。
我们的一个原子直方图,这就是单条曲线的单调曲线,如果你想要统计多条曲线的话呢,其实也很简单也很简单啊,这个地方我们就是做这样一个操作啊,我们对于我们原始的图片,把它读取它的彩色的啊,这个地方是彩色的。
我们可以把它的一个尺寸呢把它打印出来,这个地方是彩色的啊,然后呢我们就去统计每个通道的那个通道的,比如我们先统计我们的一个呃第一个通道,然后呢再去通通,就我们第二通道的,然后再统就先通道对吧。
这样就是可以统计三个通道的对,然后我们再把三通道的都给它绘制出来,好你会发现这个就是我们的三通道的啊,三通道的一个颜色直方图,好,我们继续,那么对于我们的一个具体的一个聚类呢。
其实你可以直接对我们的一个颜色这方图对我们对它进行聚类,当然也可以直接对我们的一个结构化的数据进行距离啊,嗯这个地方的一些聚类算法呢,其实是嗯它是需要对我们的数据集,就是说它是特征比较规整的情况下。
才是需要做剧烈才能做军队啊,因为它是涉及到这个具体的距离距离计算在这个地方呢,如果我们是将图片把它转变成颜色直方图之后呢,嗯我们也可以通过原色直方图,然后完成图像的一个绝对。
但是这个地方我们并不并不建议这么做,因为我们的颜色直方图可能并不是一个很好的图片的特征啊,我们接下来呢就是嗯推而求其次,嗯,使用我们的这个精灵宝可梦,就是说这些宠物小精灵的一些特性。
它的一个结构化的数据集,我们来看看能不能对于这个结构化的数据进来完成之类,好在这个地方呢我们就是采用我们的一些这个具体的,这是每个精灵小精灵它的一些属性啊,我们采采用我们这些表格。
比如说我们这个地方选择小精灵的一个attack列,difference点,以及我们的hp列,以及它sped speed脸啊,四列就相当于是小小精灵的四个四四个属性啊,四个属性。
然后呢利用我们的四个属性来完成我们的一个车队,那么怎么做呢,在我们的一个sk的里面其实也是很简单的,from我们的sk呢,第二我们的cluster,imports,我们的一个具体的一个cument对吧。
这就是我们的chemise,然后呢这个地方我们需要对我们的kim做一个实例化,cameans,我们的具体的一个相当于是n我们的clusters,就是我们的聚类个数啊,我们聚类个数位数。
我们这个地方设置它是四,然后定实例化完成之后呢,就可以完成一个之类的,我对我们的km对它进行feet feat传入的就是我们的一个数据传入,接触数据啊,这样就具备完成了,非常简单非常简单。
data 2相当于是标签吗,这个地方不是标签啊,这个地方是这样的嗯,我们的原始数据集它有一些是字符串类型的,有一些呢是这个啊数值类型的,有一些是布尔类型的对吧。
呃我们这个地方呢就是我们data 2呢是筛选的一些列,来做我们的一个区域,它是没有标签的,是无标签的,我们是筛选的一些列,比如说这个地方有四列来完成距离啊,就是说我们筛选的系列来做聚类,他不是标签啊。
他是不是标签好,当我们聚类完成之后呢,我们就可以通过我们的这个聚类的一个嗯,对我们的数据集来进行达标的,比如说我们可以对我们的数据集做一个predict。
利用我们的cam对我们数据集做一个predict传入我们的数据集,然后这个地方它输出的就是我们的一个就是类比啊。
这个地方我们需要聚类四类,所以说它输出的是0123对吧。
这些具体的数值好,那么大家就是感兴趣的话呢,你可以去嗯看一看我们的具体的这个剧类的效果,它是怎么样的啊,至于效果是怎么样的好,那么有同学可能就是我们的嗯,对这个data 2相当于是我们的具体的特征啊。
那么我们在这个地方呢,就是有同学可能就会问到我们的一个具体的一个n clusters,这是我们的聚类个数,或者说我们的类别数,他如何进行选择呢,这个地方呢在我们的这个k means里面呢。
其实是有一个叫做肘部法的一个就是说嗯具体的一个理论,在我们的一个具体的一个迭代过程中呢,我们是可以将我们的一个具体的一个一个一个加进类别个数呢,做一个循环,也就是做一个实验。
我们类别个数呢相从二到我们的一个20,然后不断进行尝试,不断进行尝试啊,也就是说我们写一个for循环,在这个for循环内部呢,每个设置不同的我们的距离个数,然后去记录一下我们的这个具体的一些呃。
这个地方是for啊,具体的记录一下我们的这个嗯聚类的一些变量,这个变量呢我们是可以通过我们的一个聚类,它的一个内奸距离啊,内间距离,或者说我们的在嗯距离算法里面呢。
我们叫这个m s e将这个取值给它记录下来,好我们存储一个list,把我们的迭代过程中呢,不同的聚类下面的一个list把它存储下来,存储下来之后呢,你会发现就是说这个地方的一个参数就是我们的一个mm。
然后呢在这个地方呢我们是在进行一个具体的一个具体的过程中呢,随着我们的一个类别个数逐步增加的话,我们的一个就是说样本它们之间的一个距离,就是说与它类别公中心的一个距离会越来越小。
也就是它的距离会越来越小,那么我们可以绘制一个图,绘制一个图,将我们的这个形态呢给他展示一下,这个呢在我们的一个具体的一些机器学习的理论里面,就是可以通过一个肘部法来做我们的一个类别个数的一个筛选。
这个地方我们相当于是有一个肘关节在我们的这个位置,它的一个相当于是它的一个距离的一个变化,趋势逐步降低的逐步降低的,所以说呢我们这个地方可以就是推荐将我们的一个具体的k means。
他的一个类别个数能设置成六,是指乘六,或者说设置成七都是合适的,在这个位置啊,是有了一个关节,一个关节点好,这个具体的操作就是说我们设置不同的一个聚类,然后呢在我们的一个聚类的一个不同的设置的情况下呢。
通过改变我们类别个数,记录一下我们的样本与我们的,就是说类比每个样本和它的具体中心那个距离啊,就是记录他的ss好,这部分有问题吗,同学们如果没有问题的话,我们就继续啊,如果没有问题,我们就继续啊。
好如果没有问题,我们扣个一好不好,如果我没有问题的话,我们扣个一,然后继续啊,好没问题是吧,然后我们就继续啊,我们就继续,然后呢我们接下来就看一看,我们就是说深度学习的一些特征。
我们能不能用深度学习的特征来完成我们的一个特征提取,以及具体的一些剧类啊。
我们首先来看一看我们的ppt。
深度学习呢其实在我们的日常生活中呢,其实有很多的一些应用的啊,嗯它的一个具体的一个操作呢,其实是堆叠我们的一个多层,来使用我们的一个多层来完成一个特征提取,并完成一个具体的一个建模的过程啊。
呃这个地方呢我们可以先使用我们的一个呃,就是给大家介绍一下我们的一个嗯这个卷积神经网络,具体神经网络呢我们在做一个具体的一个操作的过程中呢,我们是使用我们的一个卷积来提取我们的图像的一个特征。
图像呢是以这种二维矩阵的一个形式输入到我们的一个嗯,就是神经网络里面,然后呢我们是通过这个二维的卷积提取我们的图像的特征,在这个地方呢你可以看到我们这个地方是我们的输入的一个图像,我们的input。
然后这个地方的灰的灰色部分呢就是我们对应的一个卷积,然后与这个输入的图像对应的位置完成一个相应的一个计算,这个地方的一个计算呢就是基于元素级别的一个相乘,然后进行相加,然后得到我们的一个结果。
你会看到啊,这个地方是我们相乘相加得到的结果好,我们继续,那么我们的一个具体的卷积操作呢,其实就是有的一个卷积核,然后和我们的一个原始输入进行一个卷积,然后得到我们的一个输出。
大家看一下这个动态图就能够懂啊,看一下我们这个动态图就应该懂。
然后这个卷积呢其实他在做什么呢,这个地方的卷积其实本质就是在做一个提取图像特征的这个操作,如果我们的一个卷积核设置为不同的一个参数的情况下,我们提取得到的一个特征其实是不一样的。
比如说我们输入这个具体的一幅花的情况下,我们设置不同的卷积和我们提取得到的这个花的这种形态啊,因为它的边缘信息啊都是存在有区别存在有区别的好,那么我们在做一个特征提取的时候呢。
其实就是可以通过我们这个卷积核来完成一个具体的一个特征提取。
那么这个地方呢我们的卷积层其实本质上它是在做什么呢,卷积层其实本质它是通过我们的一个嗯,就是说仍然是这种正向传播的这种过程,但是呢卷积层其实它是在这个计算的一个过程中呢。
你可以视为一种替代全连接层的一种做法,它是在这个全连接层的一个计算过程中呢,将我们的一个忘神经元的一个节点呢,它的连接啊做了一个下载样子,那么我们的一个具体的卷积呢。
它不仅仅是可以在我们的一个二维的数据上进行卷积,而且呢是可以在我们的一个多通道上面进行卷积,多通道上面进行卷积啊,这个地方我们输入的一个数据呢是7x7x3的一个数据,三是它的一个通道数。
然后呢我们可以使用一个3x3x3的一个具体的一个卷积核进行卷,积,这个地方的一个每个卷积核它有三个通道和我们的一个输入的数据,每个通道进行对应上啊进行卷积,然后得到一个输出。
然后呢我们的这个卷积核不断进行滑动,就可以得到我们的对应的一个输出啊,对应的一个输出,好我们继续,这是我们的一个多核,或者是我们的一个多维卷积的过程,多维卷积的过程。
然后呢我们的一个卷积呢其实他在做什么呢,其实卷积它本质就是在做一个特征提取以及特征的一个,转换的一个操作啊,特征提取以及特征转换的一个操作,这个地方呢就是我们输入原始的图片。
假如说是256x256x3的一个维度,它的维度的变化呢可能是转变成128x128x30,然后再转变成56x56x60,就是说它的维度啊,我们浓缩画横线的部分是它的一个通道数,通道数是逐步增加的。
所以说呢我们的一个卷积和它的一个卷积层呢,其实输入的一个数据啊是n典型的是一个三通道的,是一个三通道的这种情况好,那么我们的一个卷积层呢不仅仅是可以用来提取特征,我们还可以搭配我们的一个石化层。
然后完成我们的一个具体的一个特征提取,搭配我们的一个池化层,再完成一个具体的一个特征提取,然后呢我们再做一个具体的一个特征提取的过程中呢,池化层这个地方我们有这个mean po和我们的一个max。
它分别做的一个操作是不一样的啊,next play呢就是求我们的对应位置的一个最大值,然后将他的信息进行保留好,那么通过我们的卷积层,我们的池化层之后把它进行搭配呢,就可以得到我们的常见的卷积神经网络。
常见的网络结构整体的形式就是类似于这样的啊,他的一个形式呢就是由我们的一个具体的一个输入的数据呢,嗯它是通过我们的一个卷积层,我们的一个磁化层以及我们的全连接层搭配,得到我们的常见的一个卷积。
卷积卷积和它的一个选取有必要做筛选吗,需要嗯类似于参数嗯,嗯寻求的方法来寻找吗,呃这个地方卷积核的一个选选择的话,其实是看它到底是参数还是超参数呃,这两部分的优化其实是不一样的,参数我们是可以不用管它。
就是直接让它在我们的一个数据集里面进行训练就可以得到,如果是超参数的话,我们就可能是需要人工来进行一些尝试,然后做一个挑强啊,这两者是有区别的啊,两者是有区别的,对看它到底是参数还是超参数。
然后呢我们再做一个具体的一个卷积的过程中呢,其实我们并不是说直接使用我们的一个呃就是嗯自己搭一个网络模型,我们可能会借助已有的一个预训练的模型来做的一个特征提取,也就是说现在在我们的这个互联网上面呢。
有很多一些预训练的一些模型,或者说已经是定义好的一些网络模型,这些网络模型呢我们可以拿过来啊,直接进行使用,而且呢效果都会比较好,效果都会比较好。
我们继续,那么我们来看一看我们如何去使用我们的一个title,来搭建我们的一个报的模型,以及使用我们的python写完成我们的一个特征提取好。
我们首先呢来都需要我们的一个python ch的一些具体的一些模块啊,就是深度学习的python的框架下面,然后呢我们定义一个网络模型,这个网络模型呢是基于我们的resonnet。
18的这个网络模型是基于现在18的,也就是说我们加载一个基于我们的一个原来是在18的网络模型,然后呢去修改它最终的一个选项阶层,修改它最终的全连接层,也就是说它最终呢我们是将他的全连接层的给它剔除掉了。
给他剔除掉了,也就是说我们在这个地方只是使只是使用到我们的一个recent 18,它对应的一个卷积层的一个数据,卷积层的余数值在提取的这个卷积层数据之后呢,我们就是完成我们的一个特征提取。
特征提取这一部分就是我们定义模型,这一部分就是我们定义模型好,那么为了方便批量读取我们的数据集呢,我们是建议将我们的一个代码呢写成这种data set这种形式,也就是说我们需要对我们的数据集呢。
把它完成这个相快速的这种批量的读取啊,我们是需要写一个data set,在在这个data set里面呢,我们是完成我们的单个样本的一个具体读取啊。
好我们看一下这个代码怎么写,对这是我们的dataset 2的一个定义,嗯这个地方我复制错了啊,在这,然后呢定义好大家在这之后呢,然后可以定义一下我们data loader。
就是说我们读取图片的时候到底是多少张,每一次每一个批次啵啵啵啵,这个地方我们将最上面我们读取的图片呢把它送到电台section里面,只进行整体的把它进行resize,然后做一个规矩化。
然后呢设置我们的整体的批量读取图片是十张图片作为一个b,然后我们就可以做一个提取图形特征的一个操作,我们就是对于我们所有的图片呢,将我们的所有的图片通过我们的模型完成一次正向传播,完成一次正向传播。
在这个真相传播的过程中呢,我们就是读取我们的一个图片,它的一个数据,然后送到模型里面,然后提取图片,提取图片它的一个特征,然后将这个图片的特征将它进行保留下来,保留下来啊。
这个地方我们是把它存储到我们的一个历史里面的,好我们继续,我们可以将这部分代码运行一下,好这部分代码呢,它的运行呢如果我们指定运行的设备是在我们的一个gpu上面。
它就是会利用我们的一个gpu完成一个特征提取,好这部分代码运行稍微需要一定的时间啊,对于我们的每批次的图片完成一次这样传播,然后记录一下它的一个具体的特征,好我们这部分代码已经运行完了啊。
因为这个地方我是直接是呃在gpu上面运行的,如果你是在cpu上面呢,你就直接把这个地方改成cpu就行了啊,改成cpu就行了,好我们接下来呢对于我们图提取得到的图片呢。
它的特征呢也把它做一个聚类来做做一下啊,我们将我们所有地区的图片呢把它做一个归一化,做完归一化之后呢,也送到我们的一个km里面,然后完成一个剧烈啊,这个地方我们也是写了一个for循环来试试。
或者说记录一下它对应的这个不同类别设置,下面我们came in的一个距离好,但是呢这个地方你会发现呢,其实呃我们的一个k means呢它的一个迭代速度啊,这个迭代速度就是很慢的。
因为我们这个地方其实嗯特征提取它的一个维度啊。
每一张图片在我们的一个预训练模型提取之后的特征呢。
它的一个维度就是一个512的维度,512的维度啊,就是维度比较大,所以说它的一个剧内的一个速度啊也会比较慢,好我们这个剧队的一个已经完成了,然后呢我们仍然是类似使用我们这种走步法的这种形式。
来看一看我们的一个具体的一个形态啊,这个地方呢我们仍还没有看出我们的心态啊,这个地方的肘部并没有很明显的出现好,那么为了加速我们的一个距离啊,我们是使用这个mini batch k means。
mini bek,means kens和mini bek呢其实都是非常类似的,但是mini bk minds的,但是就相当于是对我们的这个bh的剧内,对在做剧烈的时候呢,是那种批量的样本做啊。
所以说它是这种迭代的迭代的距离啊,他可能并不是最优的,但是呢它的距离速度会更快一些啊,我们来试试对mini become in,它的聚类的速度会快很多,好我们再来看一下这个mini bet kends。
它的距离效果对吧,在这个地方很明显的有一个就是说肘手肘的位置啊,手肘的位置,也就是说在我们的类别个数为11的时候,你会发现这个mini bet chemist,其实它的距离的一个距离不。
它是有一定波动的啊,这就表明它其实本身啊,嗯这个聚类这个聚类的过程是有一定的随机性的,好我们可以再改大一点啊,比如说我们这个地方在做came in的时候,我们也可以设置它的epoke啊。
在设置我们的mini bek means聚类的时候,它可以设置它的一个mammax litters啊,就是它对应的迭代次数啊,我们把这个可以改大一点啊,改为400,我们再来试一下。
嗯这个仍然是距离速度也是蛮快的啊,距离完成之后呢,我们再来看一看这个图啊,是不是会更加好看一点,好这个图呢仍然是有一定的波动性啊,但整体而言呢是在我们的就是说11和12的这个位置。
是发生了这个肘部的变化,总部的变化好,这是我们的一个对我们的一个呃cn的特征呢,来完成我们的一个区域内的过程,然后呢我们接下来就是用我们的cn完成一个图片分类的过程,首先呢对于我们的数据集而言。
其实我们首先呢是需要对我们的数据集构建一个标签的标签,这个标签呢就是我们对于我们的图片而言,一张图片它是有一个对应的标签的,这个标签呢就是它对应的类别,对应类别我们是以他所属的类别作为它的标签。
与他所属的类别作为他的标签。
然后呢这个标签呢并不是直接能够送到模型训练的,因为这个地方的标签它是一个字符串类型的,那么我们需要把它转变成我们的一个应酬类型,这个地方呢我们是直接用我们的pendence factory。
把它转变成我们的label encode的形式好,然后这是我们转变之后的啊,这就是它是能使用数值来代替它的字符串,一个类别是一个文件夹下面吗,对的啊,一个类别放在一个文件夹下面的啊,对的对的好。
然后呢这个地方你会发现我们的数据集,它的一个呃这种样本的一个顺序其实是有序的有序的对吧嗯,那么为了我们训练它是有一定的随机性的啊,我们是将我们的数据集把它打乱一下,打断一下,就是说所有的样子啊。
从头把它打断一下好,然后我们继续,然后接下来我们就需要做什么呢,我们就需要做我们的一个具体的一个模型的训练,cn的训练,sn的训练呢其实是很简单的一件事情,这是我们需要定义我们的一个训练的函数。
以及我们的验证函数,在训练函数里面我们需要做什么呢,我们的训练函数的代码是怎么写的,这样写的,在我们的训练函数里面传入我们data loader,我们的model以及我们的损失函数。
以及我们的优化器这个地方,我们对于我们的训练函数不断地读取我们的一个样本,然后完成我们的一个正向传播。
我们的一个具体的一个嗯损失的一个计算,以及我们的一个精度的计算过程,这个就是我们的一个训练过程,那么如果有的训练过程呢,就是需要还需要有一个验证过程,验证过程呢它就是没有反向传播的。
他只有做我们的一个正向传播的过程,只有做我们的正向作用的过程,也就是这个地方是没有这两步的啊,没有这两步的对。
但你可以对比一下啊,可以对比一下好,那么我们继续,当我们定义好了我们的一个训练过程和我们的验证过程之后呢,然后接下来我们就可以构建我们的data load。
我们data logo呢我们需要将我们的数据集把它拆分为两部分。
拆分为两部分,一部分呢是我们的训练题,一部分是我们的验证题,一部分是我们的训练集啊,我们用5000张图片做我们的训练集,用我们剩余的最后的1000张图片做我们的验证值,好然后定义好我们的logo。
然后呢这个地方我们想要是做一个分类,所以说呢我们的分类的模型呢其实是需要修改一下的,我们的分类模型呢我们是嗯这个地方是做150分内,150分类,所以说呢我们是将我们的一个全连接网络啊,哦sorry啊。
这个地方是将卷积网络的全连接层把它修改一下,它最终的一个全连接层啊,最终呢分类的一个输出是150类,好,这是我们的定义网络,然后接下来就是我们的一个模型的训练的啊。
我们仍然是定义我们的这种训练的一些设备,然后将它转变成我们的一个制作扩大的模式,然后接下来就是我们的一个训练啊,训练呢就是说定义我们的损失函数,我们的优化器,然后每十个epoke啊,十个epoch。
每个ebook可能完成我们的一个训练,然后计算我们的验证集的进度啊,就是整体的这个过程,我们来看一看它的一个训练啊,这是我们的一个训练集,它的一个整体的进度,它是不断的整体的一个进度是不断增加的啊。
在这个地方打印的每十个我们的一个batch打印一下,我们这个呃就是平均的训练集的一个精度。
对我们在训练完第一个e破口之后,我们的验证节的精度是0。027,也就是2%,好我们来看一下我们训练的第一第二个poke之后,它的一个进度,它的精度呢是这就是说提高到0。009啊,就相当于是快到10%了。
然后逐步训练呢,我们的这个进度是能够到80%甚至到90%啊,这个整体呢就是我们的一个卷积神经网络的一个训练过程,它的一个针对的训练过程好,我们先让他训练啊,待会我们再回过头来看一看它的一个结果啊。
看一看进度到什么位置的啊,我们就继续我们的ppt内容,我们接下来看一看我们的这个知识点的一个总结和展望啊,对于我们的一个图片而言,其实卷积神经网络其实它是一个非常有用的一个有人的模型。
还是比较适合用在图像领域的,cn呢其实本质是可以视为提取图片特征的一个操作,是可以提取特征,然后完成建模的这个操作,所以说呢cnn也是我们在做这个呃计算机视觉领域啊,必须要掌握的一个知识点。
那么如果是学习cn呢,需要关注的一个点,就是说我们如何将cn如将它用在我们的时间序列的任务上面,或者说如何将cn加入这种长序列的数据建模的这些信息,这些呢可能是在我们的cn的一些具体的一些发展过程中啊。
是需要解决的好,然后呢,我们接下来呢就是说可以给大家介绍一下我们的相关的一些课程啊,以及一些其他的福利啊,有同学说cnn加htm啊,这个其实也是可行的,cnn加s t m其实也是可行的。
它可以就是说捕捉我们的长信息,好我们接下来给大家再提一个问题啊,就是说cn它还可以做什么,我们这个地方呢cnn还可以做什么,这一期他还可以做什么,然后呢我们选择三位同学啊,三位同学送出我们的一个呃。
具体的奖项呢是我们的一个嗯异步社区的三本纸质书啊,大家可以回答一下啊,回答一下,就是我们的cn到底还能够做什么,对大家可以回答一下啊,回答一下,然后我们选择最先回答的同学,三位同学啊。
对cnn还可以做什么呢,有没有同学想回答的啊,送我们的纸质书啊,送我们纸质书,对,有没有同学想回答的啊,有没有同学想回答的好,然后如果想回答的同学,可以在我们的一个弹幕聊天区里面进行一个发言。
好我们继续啊,然后呢,在我们现在呢在我们的系列在线和异步社区呢一起是有一个课程呢,叫做机器学习集训营,在这个机器语音里面呢,其实我们会讲解到很多的一些机器学习和深度学习相关的一些知识点。
而且在这个集训营里面呢,我们其实会提供一些gp的云平台给大家进行使用,这个机器人呢是包含的记忆学习原理和深度学习原理,以及我们的深度学习的一些具体实践的过程,所以说如果有同学觉得今天的课程学得还不过瘾。
也可以继续去报名我们的一个机器学习集训营,来完成我们的深入的学习啊,有同学说到了啊,这个呃分割呃,回归预测分类啊,我们的这三位同学啊,我们的嗯最先回答的分割,回归预测和分类啊。
这三位同学可以加一下我们的一个杨老师啊,或者说在我们的群里面加一下我们的助教啊,然后呢可以领取我们的由异步社区送出的三本纸质书,好,然后呢我们的这个机器学习机器人。
它也是涵盖我们今天所讲解的所有的知识点的。
如果大家感兴趣的,也可以,就是说啊就是啊就是说你嗯了解一下啊,我们今天的一个课程的一个福利呢,就是说前三位回到我们的一个呃问题的同学啊,送我们的一部社区的直书一本。
然后如果大家想要在我们的一个群里面加入我们的社群,和我们的老师,助教老师以及我进行一个深入的沟通呢,也可以加一下我们的助教老师,然后拉大家进群啊,我们有学习群,然后呢我们今天的一个具体的一个课件。
以及我们的代码呢都是可以来做一个领取的啊,今天所有的课件代码都是可以做进去的,然后呢我们今天的一个啊也有一个优惠啊,就是说大家今天报名我们的机器学习即兴,那可以直降3000元,直降3000元。
也就是我们的一个价格呢是到了我们就直降3000元啊,是非常非常优优惠的一个力度,如果大家想要报名我们的机器人呢,也可以直接联系我们的助教老师报名啊,这个3000元的优惠呢并不是每天都有啊,只是这几天有。
所以说如果大家感兴趣的话呢,你也可以直接去联系我们的助教老师好。
我们来看一看我们的一个精度啊,这个精度呢是逐步增加到了cn的一个模型,去年的十个亿po之后,它的一个分类精度已经是到了65%,0。65已经是很高的好。
那么我们今天的所有的课件代码以及一些资料呢,都是可以通过我们的助理老师来领取的啊,如果大家想要领取的话呢,也可以嗯加一下我们的杨老师的微信,我们的机器学习集训营呢。
在我们的异步社区和我们的企业在线的官网都是上线的,机器学习机器人的涵盖,我们的机器学习和深度学习相关的一些面试点和知识点,也是非常非常接地气,非常适合同学们深入学习的一个课程啊。
这个机器人呢他的一个学习周期是三个,就是说三个月到半年的一个时间,所以说就是说如果大家想要系统学习机器学习了,这个课程是非常非常推荐大家的,好标签数据是啥样的。
标签数据就是我们将文件夹把它提取,作为我们的标签,这个地方的文件夹提取得到的就是它的标签,对好大家对我们今天的一个课程有什么问题吗,对,大家对我们今天的课程有什么问题吗。
这个其实整体的内容还是比较简单的对吧,好那么大家如果想要报名我们的集星云的同学呢,也可以加,就是说在我们的群里面私聊我们的助教老师啊。
好大家有问题吗,各位同学对我们今天所讲的内容有问题吗。
对我们今天的一个集训营的报名呢其实是有优惠活动的,大家如果想要继续学习或者深入学习的同学呢,一定不要错过好,标签数据和虚拟数据的通道可以不一致吗,可以的,可以的,我们的标签就是一个数值。
标签就是一个数值,我们输入的数据是一个图片调和,两者是可以不一致的,是可以不一致的,对,好大家还有问题吗,好那么我们今天的一个直播呢就到这儿,然后各位同学想要领取我们的代码课件及相关资料呢。
都可以加一下我们杨老师的微信,或者说跟我们杨老师仔细啊,就是说了解一下我们的集训营的一些细节,它的集训营上什么课,以及他的具体的大纲,都可以从我们的杨老师的地方,杨老师的微信啊领取,好的。
那么我们今天的直播就到此结束。
人工智能—计算机视觉CV公开课(七月在线出品) - P21:22.3.10实时情绪识别实战-模型训练与部署 - 七月在线-julyedu - BV17z4y167dq
🎼,好,我们就。开始啊,首先呢我们来先来介绍一下企业在线。企约在线呢是一家成立于2015年的人工智能在线直教平台,然后专注于这个人工智能时代的人才培养和企业服务。呃,在人才培养方面呢。
讲师团队已经累计超过了300人,均由大厂的技术专家和国内外的高校博士组成。总付费学员超过40万课程数量500多门,分别为这个出入门课转信及训营以及提升班。嗯,在企业服务呢。
契约在线也是与嗯各个公司签订了企业对信的一些合作。好,那么如果大家想要在我们的官网上面找到一些其他的课程呢,也可以在浏览器里面输入企约在线,或者说直接输入它的域域名就行。那么我们在这个讲课的过程中呢。
我们也会在呃就是呃第一部分结束呢也会做抽奖啊,也会做抽奖。然后就是说抽我们的10个VIP月卡,然后抽我们的呃三本书,好吧,然后这个书直接是送给大家啊,送给大家。然后就是说从这四本里面随机选择一本。好。
我们就继续啊,开始了啊开始了。对,已经开始了啊。好,那么我们就先开始我们的一个第一部分呃,深度学习的一个介绍。呃,在我们学习深度学习的时候,我们到底在学习什么呢?呃。
首先呢我们需要对深度学习进行一个定义。呃,深度学习我们在学习的时候呢,它它的一个定义是包含了多层神经元的一个结构。因为是人脑的一个神经元的一个结构类似。这个地方我们关注的是一个结构结构的一个信息。
什么是结构呢,也就是你可以理解,就是说我们的一个网络模型,它整体的一个从输入到输出的一个网络结构。在我们讲到深度学习的时候,我们就不可不避免的会就是说给各位同学介绍到这个机器学习。
那么我们在学习深度学习的时候和在学习机器学习的时候,两者有什么区别呢?也就是说我们的初学者经常会问问问到一个问题,就是啊我学习机忆学习还是学习深度学习。或者说我到底怎么进行学习,其实是这样的啊。
这两者其实是呃不可割裂的一就是说两就是说两部分是不可割裂开的。深度学习呢它是机忆学习的一个分支,特别是以神经元计算的这一类分支。
那么我们如果是将人工智能机器学习和认度学习的三部分给大家画一个这种呃就是说整体的一个维恩图的话。人工智能是最大的范围。然后接下来里面是这个我们的机器学习深度学习。所以说对于我们的初学者而言。
就是你可以先去学习机忆学习,然后再去学习深度学习。呃,特别是初学者啊,你不要一上来就学习,甚至去学习。其实对你的一个学习。呃,你这没声音吗?呃,有声音吧,其他同学有声音吗?对,其他同学有声音吗?
有声音的同学可以扣个一。对,呃,如果你没有声音的话,你可以先刷新一下你的网页吧。对,应该是有声音的啊,应该是有声音的。好,所以说呢我们在学习的时候呢,你应该先去学习积极学习,然后再去学习深度学习。
你不要一上来就学习深度学习。其实这不是一种很好的现象。但是呢其实呃我们现在的一些教材啊或和一些课程,其实都是在讲解机在讲解深度学习的时候呢,他会先把积极学习的一些基础给大家讲一下。所以说你也不用担心。
对呃,有同学说到啊,从线性回归开始学,可以的。你先先从线性回归,线性逻辑回归,然后学其实也是可行的。这个地方呢就是希望各位同学在学习的时候呢,一定要注意这个范围。
人工智能机器学习和深度学习的一个具体的知识点的一个范围。你不要把它割裂开。在我们的一个具体的机器学习里面呢,其实它包含了很多的一些非深度学习的一些方法。比如说数模型。间性模型比如对吧?我们的逻辑回归。
或者说我们的naso。然后呢,还有我们还有我们的这种基成学习等等的一些方法。它其实都是我们记忆学习里面重要的组成部分。也就是我们在学习的时候啊,你不要把两者对等起来,这两者是不对等的。
而且你在学习的时候,你不要对立起来,就是说我只学习深度学习,不学习机器学习行不行?其实不行的啊不行的。那么我们在学习的时候,一方面呢,我是建议大家可以先学习一下机机器学习,然后再去学习一下深度学习。
那么这两者的一个方法,学习方法有什么不同呢?其实是有较大的不同的。机器学习的一些模呃学习呢其实比较关注于这个模型,它整整体的一个原理,以及它的一个就是说具体的一个模型在构造的过程中。
它如何进行构造这个模型,以及这个模型如何进行泛化的,也就是它具体的精度的评价。但是呢我们在深度学习的时候,我们学的是什么呢?深度学习其实更加关注于这个网络结构以及这个网络结构的一个优化过程。也就是说。
他更加关注于我们的一个模型如何搭建的,以及我们的一个模型如何进行训练的。与我们的一个继续学习相比。继续学习的一个流程呢就是说我们先有一个data。然后呢,对它进行特征特征工程。然后呢,再构建一个模型。
然后呢,做预测。但是呢对于我们的深度学习而言呢,其实它。并不是上述的一个流程。深度学习呢它可以自动的做特征工程。也就是说这个地方我们是直接有我们的一个model。它不需要额外的一些特征工程的一个操作。
所以说这个地方我们只渗度学习是一个端到端的一个计算。也就是说我们从我们的输入。Yeah。然后通过我们的深度学习模型,就可以直接到我们的一个输出。这个地方的一个端到端。
就是说从我们的输入端到我们的输出端端到端的在我们的一个深度学习里面啊,其实它的一个特征啊是自动来进行学习的。我们待会儿也会介绍啊,对于我们的卷积里面它怎么来自动提取的一个特征呢?这是第一点。
深度学习是一个端到端的过程。第二点呢,深度学习它是一个有效的一个计算图。什么是有向的呢?也就是我们在学习这个数据结构的时候呢,我们会学到这个图这个结构。有声音的啊有声音的,呃,你可以刷新一下啊。
有声音的啊。对你可以刷新一下,刷新一下应该就有声音。什么是图呢?也就是说我们的一个图是由节点和这个边所组成的。节点和编则组成的。那么这个边呢其实它是一个有向的,也就是说它它是有个具体方向的。
在深度学习里面呢,我们的网络结构是可以使用这个有向图来进行表示,也就是我们的节点表示这个具体的计算过程。这个边呢表示这个数据的一个流向。那么我们可以看这样一个。全连接的一个网络,它是由我们的三层所组成。
分别是我们的输入层、银行层和我们的输入层。这是一个全连接网络啊全连接网络。在我们的一个教材里面就是。经常会被用到。那么全连接网络呢就是由全连接层所构成,对吧?这是第一层,这是第二层。
全连接层它在做什么呢?也就是它在做我们的一个节点与节点之间的全部连接,也就是我们的输入层的所有的节点与我们的输出与我们的隐藏层的节点全部连接到一起。对吧我们可以看这个箭头。
那么我们的节就是说层单独一层内啊,就是说输入层和输入层内部的节点,这个两个是没有连接到一起的。它的一个全部连接呢表明的是我们的这一层和下一层的节点全部连接到一起。这个是我们的第一个节点。
它的一个连接过程。以此类推,我们的是第二个节点,也是全部连接到一起。我们在做输入层的时候呢,它的一个输入的数据就是我们原始的输入啊。输入层的一个呃就是说数据呢,它就直接是将我们原始的一个输入输入。
直接将它输出给我们的下一层。那么我们的隐含层呢,它就是接受到接受到我们前面所有前面一层的输入,然后完成一个计算,然后再做输出给下一层的节点。所以说这个地方我们其实是由输入层隐航层和输出层所组成。
隐航层呢我们可以有多层。隐含层我们也可以有多层,也就是输入层直接直接是我们这个输入数据的。输出层呢就是我们最终的结果输出的隐含层呢可以有多层,就是它是一个中间的一个计算节点。
这是我们深度学习的一个非常典型的或者说非常基础的一个全连接网络。那么我们在学习的过程中,你肯定会学习到这个嗯全连接网络。但是深度学习是不是我们学习到这个网络结构就足够了呢?不是的。
学习深度学习呢其实还是需要学习它的一个计算过程。什么意思呢?我们在学习深度学习的时候,其实我们一方面是需要搭建这个网络模型。也就是说我们用一些。具体的代码,比如说你用py to。或者说用cas。
或者说用tens flow,你用这些。深度学习的框架的代码去搭建这个模型。这是你需要必备的一个技能。技能。一第二个技能呢,你需要知道它原理它具体怎么计算的。也就是说它具体在里面是。
到底是用什么样的一个计算过程?比如说是举证乘法呀,还是我们的一个。就是池化操作啊,还是一个激活函数的操作。也就是这个一方面你要搭建这个模型,你会搭。另一方面呢它的具体的计算过程。你要知道。
如果这两部分你都知道的话,那么你就是一个合格的一个从业者。不然呢你就是只知道他的一个理论,你不知道怎么计算的。我们可以举一个例子啊,在我们的深度学习里面呢,其实呃我们的一个。
我们就以举这个神经元的一个例子啊。神经元呢它有多个输入。然后呢,这个神经员它将我们多个输入的一个数据呢进行一个汇总,然后通过我们的一个机有函数。得到我们的一个输出。
这个神经元呢它单个神经元的一个计算过程呢,其实是可以写成我们的一个就是我们输入和我们的一个权重进行一个加线求和的一个过程。也就是我们有我们的X1X2X3X4的一个输入。我们这个地方呢是X1乘以W1。
加上X2乘以W2,加上X3乘以W3,再加上X4乘以W4,对吧?然后再加上一个偏值B,然后整体呢把它通过我们的一个。呃,这个机偶函数得到我们的一个输出。那么你会发现这个计算过程呢。
其实类似于我们的一个行业式的一个乘法,也就是我们的一个举证乘法,对吧?那么这个地方我们的一个。一个输入跟我们的一个神经元进行我们的一个取证乘法,得到我们的一个中间计算结果。再加上我们的偏值。
得到我们的输出。输出呢再通过我们的基偶函数得到最终的输出。也就是这个一行是我们的一个神经元的一个具体的一个权重,对吧?一个神经元的一个权重。那么第二行就是我们的第二个神经元的一个权重。
这个地方呢我们我想表达的意思是我们的是这个全连接层呢,它具体就是由我们的一个举证乘法来实现的。也就是我们这个地方有一个具体的一个输入。和我们的具体的一个全连阶层的一个。
就是神经元的一个参数进行我们的矩证乘法,然后完成了我们的整个的计算过程。好,那么我们为什么要学习到这种程度呢?也就是我们为什么要学习到这个具体的呃就是呃这个全年阶层怎么计算的呢?呃。
因为这一部分其实也是我我们现在的从业者必备的一个过程,也就是你不仅仅是需要使用这些深度学习的框架,你也需要去自己。有可能去搭建一些层,这些层呢可能是我们没有见过的,或者说我们现在的框架里面没有内置的。
那么你就可需要去自己熟悉。所以说这个计算过程你是需要知道的。好,嗯我我们待会儿呢也会有具体的一个计算过程啊,再给大家看一看。那么深度学习它到底能够用在什么一些场景上面呢?
深度学习它其实它用在的一个场景其实是非常多的。比如我们的人脸识别啊,车牌识别啊,这个动物识别好,这个红绿灯检测啊,或者说文本翻译啊,或者说这个克服对话机器人啊,这些都是可以用来深度学习来做。呃。
那么有同学可能就会问到,老师这个地方我们的机器学习能不能用在这些场景上面呢。其实机器学习它也能够用在这些场景上面。但是呢它可能。就是说具体的一个精度并没有深度学习高。举个例子啊。
现在呢我们的一些人脸识别的一些模型呢,基本上都是基于这种深度学习的方法。机器学习的方法呢,它的精度就是说肯定会低很多的,肯定会低很多的。好,那么我们这个地方前面四种都是我们的图像类型的一个数据。
后面两种呢是我们的这个文本类型的一个数据。深度学习呢它比较适合用在这种非结构化的数据。非结构化的数据啊,就是说我们的一个输入呢,它是不定常的。以及它是不规整的。也就是说。
我们在这个地方图片呢文本呢它是很难用这种行列这种我们的表格形式进行存储。表格的形式表格的形式呢就是我们这种结构化的啊结构化的数据。结构化的数据呢,我们就比较适合用机器学习。非结构化的数据。
也就是我们的这种文本啊、图像啊以及语音啊,它就比较适合使用我们这种啊深度学习。那么大家还知道哪些常应用也比较适合永深的学习呢?也可以打字告诉我。我们现在呃呃就是说回答我们问题的同学。
可以直接送我们7车在线的这个VIP月卡的啊。对,大家就是说前10名回答的同学啊,我们就就是送我们的一个具体的一个月卡。呃。有同学说这个预测股价异常检测。嗯,对,这个是的啊。但是股价呢其实呃怎么说呢?
股价其实现在还是用这种机器学习比较多,股价预测其实这种还是使用这种机器学习比较多。时间序列。嗯,对对对,时间序列是的呃,自动驾驶语音识别。对障碍物识别。这个是的。是的。
抓取抓取这个我没有理解是什么聊天机器人啊,好。那么我们手就是我们这几位同学啊,呃就是前十名的同学啊,我先我已经截图了啊,就前十名回答的同学可以领取我们的汽车在线的一个月卡。呃。
我们的月卡其实是很实惠的啊,我给你找一下我们的月卡的一个介绍。
我们的一个月卡其实是能够学100多门我们的一个小课的。这个小课,你只要就是说是免费送的。我们今天只要在我们的直播间回答问题的同学都可以免费送的啊。然后是直接可以看这些课的啊,免费可以看。好。
那么待会儿呢也会呃就是说呃就是说领取到我们的,就是说我待会有一个截图啊,一个截图给大家。然后就是说这些同学是领取到我们的月卡的同学,然后呢就可以加一下我们的一个客服的一个微信啊,就可以领取我们的月卡。
月卡有GPU吗?嗯,月卡是呃应该没有吧。对你可以去这个官网上看一下啊,我呃我不太确定啊,因为我不太确定月卡是呃VIP年度会员是有的,但是我不确定月卡有没有啊。对。
好。嗯,我先把这前十位同学给呃就是说截一下图啊。一位两位。好。
好,我们继续。啊哦从这儿看啊,这几位同学啊呃我们的661015同学650650309啊,以及循序渐进以及684597呃,以及思考同学荣米同学啊,以及这个微信用户,手机用户呃。
手机用户以及lo啰啰啰同学啊,这几位同学可以加一下我们的呃客服微信啊,我们的这个微信呢是这样加的啊。
在这儿可以加一下这个微信啊,直接扫码,或者说通过这个呃加微信,加这个微信啊,就可以领取我们的月卡。好,待会儿呢我们也会继续抽奖啊,待会儿我们也会继续抽奖啊,不用担心。对,大家可以截一下图啊。
可以截一下图,加一下我们的杨老师的微信。😊,好啊,我们就继续啊我们继续。那么刚才大家可以这个地方可以截一下图啊,因为加微信的话,嗯就是说这就是领取我们的VIP月卡。然后呢。
我们接下来呢就看一看一看我们是不是能够手动实现一下我们的一个全连阶层。其实手手动实现呢其实是呃不不是很难的啊。在我们的一个具体的一个全连接层而言呢。
其实它本质上就是我们的一个呃就是节点与节点的一个全部连接的过程。我们刚才也介绍了这个全阶层呢,其实它本质就是我们的一个矩阵乘法来实现。这个地方呢我们就可以直接定义我们的一个具体的一些就是我们的一个。
权重以及我们的偏执W和B,然后完模拟我们的一个矩证乘法,对吧?那么我们怎么模拟呢?其实本质上我们就是定义我们的一些具体的层。我们这个地方呢是使用这个M listM list。
它是一个手写数字的一个图像的一个数据集。原始的一个数据集呢是1个28乘28的一个像素。呃,类别呢是从0到9,也就是总共是10类,类别是从0到9啊,总共1类。
然后呢我们就用这个数据集来完成我们的一个全连阶层的一个搭建。我们首先呢来需要确定一个点,就是我们需要确定一下我们的一个网络的一个整体的一个结构。我们网络的一个结构是怎么样的呢?
我们的网络的结构其实是由我们的一个。输入层,我们的隐行层。以及我们的输出层三内层所组成的。这个地方呢我们的输入层它原始的输入呢是这个矩阵的形式,对吧?原始的输入是矩阵的形式。
矩阵呢就是说它是由我们的28乘28的一个规度图所。作为我们的输入。但是呢我们也知道这个全连阶层,其实它本质上是就是说是一个一维的,就是它是需要输入我们的一个数据呢,是一维的数据。
所以说我们这个地方呢是需要将我们的一个输入层,把它转为我们的一个一维的数据。也就是说把我们的原始的1个2D的数据,把它转成我们的一个一维的啊,相当于是把它拉平了。然后呢。
我们接下来就是构建我们的一个全链阶层。全链阶层呢我们首先呢。需要确定一下我们的这个维度,也就是我们的一个输入的维度。以及我们的一个输出的维度。也就是我们这个地方输入的一个维度呢是784维。
那么我们的输入出的维度呢是多少维呢?我们输出的维度,对吧?我们这个地方输入的一个维度是784维。那么我们的输出的维度,就是由我们的一个隐藏层,它的具体的神经元的个数所决定的对吧?
那么我们结合我们刚才所讲的一个矩阵乘法。其实我们在进行一个定义我们的一个全新阶层的时候呢,其实就是定义为我们的一个具体的一个这样的一个矩阵。这个矩阵呢就是我们的一个输入的一个维度。
乘以我们的一个就是隐含层节点的一个维度。这个地方我们的n input,这个就是我们的输入层的一个维度,也就是我们的784维。然后呢。
我们的lumm hiddens这个 hiddendden呢就是我们的1个200256位,对吧?我们这个地方的256就表明我们的一个神经元是有256个。然后呢。
我们这个是我们的一个偏执所组成的我们的一个指针。那么与此相同呢,或者与此对等的是我们拥有256个神经元,我们也有一个对应的256个,我们的一个偏子,对吧?我们这个也是定义了一个我们的一个。呃,列向量。
然后呢类似的这是我们的第一层啊,这是我们的第一层。然后呢,我们有我们的第二层。第二层呢就是由我们的一个从隐含层转变成我们的输出层的过程。我们的输出层呢。
其实是由我们的一个最终的输出呢是输出了我们的一个类别的一个对应的概率值,也就是我们想要输出的呢是10个我们的浮点数。这10个浮点数呢对应于我们每个类别的一个概率。对吧那么我们的一个具体的一个输出。
我们的这个地方,从我们隐藏层到我们输出层的一个全连接层呢,就是由我们的256维到10维的一个转变。也就是我们最终的输出层呢是由10个我们的生经元素组成的。256乘以10,然后呢,我们对应的也有一个偏值。
好,那么我们当我们定义了我们具体的一个我们全连阶层之后呢,我们接下来只需要进行我们的一个具体的一个计算即可。具体的一个计算呢就是说我们有的我们的一个输入将它拉平,对吧?
原始的是我们的一个呃输入呢可能是我们的一个多维。比如说28乘28的一个维度,我们需要把它展平,把它展平到784维。然后接下来就通过我们定义的定义得到的这个我们的全连阶层的一个参数进行一个举证乘分。
这个地方的一个at for就是我们的一个举证乘法啊,举阵乘法。相乘之后,然后再加上我们的偏执,对吧?这个地方的一个乘法其实本质上就是这样100乘以784。这个地方的100呢是我们的样本个数。
样本个数啊本质上就是我们的一个be size。我们本质上就是我们的b size,然后呢和我们的784乘以256维的一个矩阵进行举证乘法,对吧?
在我们的这个呃就是高等数学和我们的一个先性代数里面就会讲到它最终输出的结果就是100乘以256,对吧?100乘以256,然后这个地方的100呢,如果你是输入的是一个样本。那么它对应的输出。
就是我们的一乘以256。那么我们接下来是第二个全新阶层。第二个全新阶层呢就是100乘以256乘以我们的R以与我们的256乘以10的一个矩阵进行相乘。最终呢将它的一个维度转变成10为。好。
所以说呢如果我们自动的去搭建这个我们的一个网络模型呢,或者说使用我们的一个矩阵去搭建我们的一个网络模型呢,其实是非常简单的,只需要使用我们的一个矩阵乘法,就可以实现我们的一个就是全新阶层。嗯,好。
我们继续。然后我们接下来呢就看一看我们的一个网络模型,它在进行一个训练的过程中,它如何进行更新的啊,我们也会讲解一个情绪识别的一个例子。呃,在我们搭建这个网络模型的时候呢。
其实我们是需要关注我们的一个模型,它的一个训练过程的。什么意思呢?我们对一个深度学习啊,其实它是就是说我们在一个具体的任务里面呢,我们是需要有一个我们的objective方式,对吧?我们有一个目标函数。
那么这个目标函数呢,其实就是用来衡量我们的一个具体的一个模型,它的预测结果和我们的一个真实标签的一个差异性。有了我们的一个具体的一个目标函数之后呢,我们接下来就可以基于用目标函数。
去优化我们的模型的参数。在我们的深度学习里面呢,其实它本质上是使用了这个随机梯度下降这个过程来优化我们的一个模型参数的。这个地方呢就是深度学习,它本质上是一种就是它的优化过程啊。
就是说我们的一个优化参数的过程。它是使用随机梯度下降,随机梯度下降。然后呢,这个随机梯度下降是什么意思呢?Yeah。我们首先呢初始化我们的一个参数W,然后呢逐不断的重复我们计算我们下面的过程。
这个下面的过程怎么进行重复的呢?我们需要根据我们的一个目标函数和我们的一个参数计算我们的一个偏导,就是求偏导的一个一个含义啊。有的我们的目标函数之后,我们计算一下我们的一个对应的参数的一个偏导。
有了这个片导之后呢,这个片导其实就是我们对应的参数,它对应的一个梯度的信息啊。然后呢我们就基于我们的一个梯度信息呢完成我们的一个具体的一个参数的一个更新过程啊。对。
所以说这个地方其实我们的一个呃就是呃它是一个随机记录下角的。因为这个地方我们并没有就是说是使用呃,就是说限定于具体的一些样本。好,这个地方并没有限定具体的样本。就是说我们这个地方是不断重复的。
可能选择一部分样本做我们的一个梯度的更新。那么我们在进行更新的过程当中呢,我们可以看这个例子啊。我们的X轴呢是我们的一个网络参数。X轴呢是我们的网络参数,这个地方呢我们就是Y轴呢是我们的一个损失。
有了我们的一个网络参数和我们的一个具体的一个损失之后呢,我们接下来怎么更新我们的一个呃就是参数呢?我们我们的目标是更新我们的网络参数,与取得我们最小的损失。那么我们怎么更新啊。
我们是沿着我们的一个梯度的一个方向更新它其实。或者说沿着我们梯度的方向进行更新我们的参数啊,它是下降最快的对吧?我们就求了当前位置情况下,我们的一个损失所对应的一个梯度信息。
有了这个梯度信息呢去更新我们模型的参数,不断去更新。然后就可以得到我们的一个局部最优的一个位置,局部最优的位置。也就是说我们有了一个梯度信息,基于这个梯度信息,然后去更新我们模型的一个参数。
那么有同学可能就会问到,老师,我在学习深度学习的时候,一定要把这一部分学会吗?就是说我们的一个参数的一个梯度的一个计算,我们是需要掌握的吗?其实你我是建议大家你呃可以掌握。
但是你如果这部分就是说你对这个求偏导啊,就是说你觉得它有一点点难以理解,其实也okK啊。因为在深度学习里面,其实它已经帮我们定义好了啊,就是说这些具体的一些计算过程啊。
特别是我们在这个具体的一一个呃深度学习框架里面,其实它已经是帮我们定义好了这个就是说梯度的计算过程。
我们接下来呢就是以这个pytor这个深度学习的框架啊,然后来看一看它怎么来完成我们的一个呃就是梯度的一个计算的啊。pytor呢它是一个就是由facebook呃所提出的一个深度学习的框架。
现在呢也是用的范围非常广。然后呢,我们来看一看呢具体的一个计算过程啊。哦,大家如果想要领取我们的代码的同学呢,也可以嗯直接就是说找我们的一个就是呃其实在线的老师啊。
或者说待会儿呢也可以加一下我们杨老师的微信。我们首先呢定义了一个tensor,在pyyto里面呢,它的一个具体的一个基础的一个嗯电量呢就是我们的一个tensor。
这个tensor呢和我们的一个具体的一个。就是呃这个long派的ND area其实本质上一样的啊,这个地方和我们的ND area本质是一样的。然后呢。
我们的一个具体的一个呃tensor呢最原始我们构建的是一个12341234这样的一个2乘2的一个维度,这是我们的原始的X,我们对X呢进行一个叫2,把它每个元素进行了一加2得到3456,得到3456。
然后接下来我们对于我们的这个。X加2等于YX加2等于我们的Y了。然后呢,我们对于我们的Y呢进行Y乘Y乘3Y乘Y乘3,然后得到我们的ZY乘Y乘以3,得到我们ZZ呢就是我们的这个274875108,对吧?
3乘3乘34乘4乘3对吧?5乘5乘3,然后呢,我们的Z呢对它求命等于等于我们的alt,怎么求命呢?就是对它四个取值进行一个求均值,得到我们的altoutt呢?就是64。5,这个就是我们的al。然后呢。
我们怎么计算我们的一个梯度呢?在我们的一个patth里面呢,其实它只是只用一行就可以了。out out的一个back word就可以就是说求解得到我们的out对于我们前面变量的一个偏导。
因为它具体的一个梯度信息。这个backward直接就可以完成我们的一个梯度的一个计算。比如说我们outt它相对于X的一个偏导,就等于我们的如下的这个计算过程。因为我们的一个alt。
其实它可以写为我们原始由X的一个计算过程,对吧?我们的outt等于0。25乘以X加2的平方乘3,0。25是我们的命得到的X加2是等于我们的Y,对吧?Y乘Y乘3,本质上就是X加2的平方乘3。
那么我们就可以以此得到我们的具体的一个梯度信息,对吧?就求偏导偏导呢这个地方大家也可以计算一下,这个地方本质上就是0。25乘以3乘2乘以X加2。然后呢,我们将X代入进去。
就可以得到X的一个具体的一个梯度形式。好,那么有了我们的一个具体的这样的一个例子呢,我们就能不能手写一个我们的一个呃随习气度下降的这个思路呢?
APP在哪里下载APP你可以在嗯应用商店直接在应用商店里面搜索契味在线就可以搜索得到的。我们继续啊,然后呢我们接下来就是使用我们的一个随机梯度下降呢,我们先做一个小demo。
就是我们做一个我们的一个礼合函数的一个例子。我们首先呢产生我们的一些数据,这些数据呢就是由我们的long派的一个具体的一个呃就是呃这个数据集所产生的。
我们产生的一个数据集呢是Y等于-3X加4Y等于-3X加4的,我们的这样一些散点啊,很明显的就是这样的一条直线可以离合得到。然后呢,我们就是想要做一件事情,我们想要想要去得到一条函得到一条直线啊。
去能够将我们的这些点呢能不能串起来。也就是完成我们一个回归的一个任务。完成我们的一个数值回归的任务。我们怎么完成呢?我们首先呢定义两个参数,一个是我们的W,一个是我们的B。
也就是我们的一个相当于是我们的在初中和高中所学的对吧?1元2次方程。好,然后呢我们就去优化我们的W和B的一个取值。我们首先呢是将我们的原始数据呢,从我们的一个呃long派呢把它转成tensor的格式。
这这个呢就是说从long padpyython环节下long pad的格式,把它转成pyythr的tenor的格式。然后呢,接下来我们需要定义我们的具体的一个损失函数。我们的损失函数。
这个地方我们的一个任务呢是我们的一个回归的任务,对吧?我们就用MSE作为我们的一个损失函数,然后呢,我们的正向传播怎么写,正向传播就是输入的数据乘以我们的W加上B对吧?这个就是得到我们的输出。
我们正向传播就是这么简单。然后呢,我们怎么计算我们的损失啊,就是我们的一个正向传播的结果和我们的真实的标签计算它的MSE就得到它的一个具体的一个误差。然后呢,我们怎么更新我们的参数啊,其实也很简单。
我们这个地方呢就是使用如下的一种形式来做一个更新啊。我们对我们的一个输入的数据呢,我们这两行我们先啊先挑过啊,我们先挑过,我们先先看下面的。对于我们的输入数据呢,和我们的W和B进行一次均向传播。
得到我们的输出。输出呢和我们的一个真实标签计算损失。计算损失之后呢,对它进行一个梯度求导,求解得到我们的W和B对应的一个偏导。以此呢我们就是。这个具体的由我们的梯度信息去更新我们的一个参数,对吧?
这个就是我们的一个随机季度下降,对吧?每次得到我们的一个梯度信息,然后乘以一个学习率,乘以一个学习率。那么前面这两个到为什么要这么写呢?因为我们的拍tor呢,它是一个梯度累积的一个过程。
它对于这个变量呢,它是累积梯度的。你再进行back word的时候,其实它是会将你的一个具体的一个梯度的信息呢,把它累积到一起。你back word一次和back word两次,它的一个结果是不一样的。
所以说这个地方我们本质上相当于是把我们的W和B重新定义一下,本质上和我们的一个梯度清空梯度清空的一个操作是一样的啊。那么有了我们的这样的一个训练过程,我们整体呢是相当于是训练20次。
就可以得到我们的一个一条直线。这条直线呢就是和我们的所有的散点基本上是连在一起了。对吧这就是我们训练的过程。好。那么有同学可能就会问到,老师这个地方的一个随机季度下降。
是不是就是在所有的代码里面我们都可以这样写呃,是可以的。你在所有的深度学习代码里代码里面你都可以参考这么写。但是呢。我们这个地方的一个写法是纯手写的,就是说自己获取梯度,然后自己去更新模型的一个参数。
其实有一些更好的方法啊,我们待会儿也会讲。那么我们有了这个具体的一个梯度信息之后呢,我们就可以去更新我们的一个模型的一个参数。以此呢来取得我们最优的一个就是说模型的一个精度。
或者说取得一个最小的一个误差的一个情况。对,然后呢我们在进行训练过程中呢,我们刚才给大家看了,我们有一个学习率是0。05,对吧?这是我们的n rate学习率。Then enrich。
这个学习率呢它其实是一个超参数,它需要去进行一个呃人工设置,需要进行一个人工设置。然后呢,我们在进行人工设置的时候呢,它的一个具体的一个取值呢也会影响到我们模型的一个精度。
如果我们的一个区序率设置的过小呢,它的一个具体的一个更新过程呢就会很慢很慢。相当于是它需要迭代多次才能找到我们的一个最低的一个位置,就是损失最小的一个位置。当然我们的UP区呢也不能设置的太大。
如果设置的太大的话,它就是会直接跳过我们的一个最优的一个位置。对吧它就不断进行震荡。所以说我们的一个续序率呢,它是需要设置的不大不小才比较好。也就是我们这种情况好。
那么大家在下去拿到我们的代码的时之后呢,你也可以去自行的修改一下我们的区续率。你可以修改它为0。0001,或者说是0。1。你可以看一下它具体的一个损失的一个波动情况。好。
那么这一部分呢就是我们的一个具体的一个呃就是模型的一个优化过程啊,就是基于我们的一个模型的一个题的一个计算,然后进行我们的一个参数的更新。对,那么我们在这个地方我们嗯举一个小小的一个问。
就是说一个提问啊,我们这个地方除了用MSE之外,我们还能不能用其他的一些损失函数?有没有同学知道的?对,有同学知道的,有同学知道的话也可以进行一个回答啊。然。
我们这个地方也是抽我们的10个我们的VIP月卡。然后我们这个地方呢抽10个VIP月卡和三本书吧。我三本书。对。啊,先回答先回答的三位同学啊,我们就哦送书好不好?
这个手机用户513513672同学以及罗罗罗罗同学啊,这两位同学其实回答的准确一些。交叉熵交叉熵是不行的,交叉熵是用来分类的对。对,这三位同学啊这三位同学还有这个呃手机用户661015同学啊。
这三位同学就可以啊加一下我们的杨老师的微信,或者说直接联系我们。就是说你之前已经加过我们其实在线的任意一位老师,就可以领取我们的书。对这三位同学。对吧所以说我们的一个损失函数呢也不是说随便设置的。
它跟我们的一个任务啊其实是相关的对。好,我们继续啊。我们接下来呢就给大家介绍一个就是说使用我们的一个深度学习来完成我们的一个情绪呃识别的一个例子。
这个情绪识别呢我们嗯具体而言呢是使用这个卷积神经网络来做我们的一个情绪识别。
那么什么是卷积神经网络呢?卷积神经网络呢简称CNN它的一个原理呢和这个生物的一个视觉其实是非常类似的。也就是我们的一个视觉的一个细胞呢,它所观察的一个区域是有限的。我们在进行卷积的过程中呢。
我们的一个卷积,有卷积核。它在我们对应的一个区域的位置呢,完成我们的一个计算,得到我们的输出。也就是这个地方的一个卷积呢,你可以理解就是滤波器。铝波器或者说你。更加简单的理解。
你可以把它理解为我们的这种电源检测的一些。就是说具体的一些特征提取器。我们的卷积传接网络呢具具体而言,就是使用我们的卷积层提取我们的一个图图片的一个特征。
然后呢再通过我们的池化层和我们的全接层得到我们这动的输出。这个地方我们的网络呢也是由我们的输入层、输出层,以及我们的隐含层所组成的。只不过呢这个地方具体的一些计算过程啊,它可能不仅仅是由全连接层所组成。
也有可能是有一些其他的操作。所以说使用卷积神经网络的一个关键点呢,在于你使用这个卷积来提取这个图像的一个特征。好,我们继续我们接下来去看一看我们如何一步一步用就是说去搭建我们的卷积神经网络的。
那么我们在搭建这个网络模型的时候呢,有同学可能就会问到老师呃,我在具体的一个呃使用这个深度学习的时候,我经常就是说会被这些代码所困扰。我觉得这个代码学习起来很很难,我学习不会,嗯。
其实你也不用过于担心啊,就是说对于初学者而言,其实你学习起来是有一定的成本的。你对于初学者而言,其实学习起来其实是有一定的一个成本的。去呃这个其实是肯定会有的。
也就是我们在具体的一个解决一个任务的时候啊。我们肯定就是说最开始是有数据。你需要去构建一个模型,对吧?这个你是需要你是需要做的。你是需要使用一些工具。to啊tenflow啊去完成这个构建模型的过程。
但是呢在构建这个模型的过程中呢,你是需要用模型去读取数据。就是说你需要。用模型对数据做一个正向传播的对吧?所以说我们这个地方呢是需要读取数据的。这一步呢可能就会让很多同学啊就遇到。就是说卡壳了。
就是在于这一步,我不知道怎么读取数据,我也不知道怎么处理数据。第一步是读取数据,第二步呢是我们的定义模型。第三步呢是训练模型。Yeah。啊,tra摸很多同学呢在第一步就卡壳了,我不知道怎么读取数据。
这一个呢其实是很多同学啊,特别是初学者而言,经常会遇到的一个问题。读取数据呢这个其实是需要与我们的具体的一些框架跟跟它相关联的啊,我们的这个数据读取呢。你需要学习什么呢?第一个呢。
你我非常建议大家可以学习一下pinndas。这个呢penus可以做一些结构化的数据去读取。其次呢你如果是学习这个图像的话呢,你就学习一下,在我们的torrch里面呢,有这个toration。这个库。
tortuation这个库呢就可以就是说很方便的帮助你来完成一个数据集的读取啊。我们接下来去看一看我们如何用这个tortuation来构建我们的数据集的读取。好,就上面的代码啊,我们先不讲这个导入的。
都是导入的这个一大堆乱七八糟的东西,对吧?我们先不讲,我们先看下面。我们在这个数据集里面呢,其实这个数据集啊,它是由我们的几类情感所组成的对吧?我们数据集呢其实我已经是帮它放到我们的一个文件夹下面了。
嗯,我这个文件夹暂是。卡卡住了啊,我们先不看这个文件夹呢是有一个训练集,以有链练级。然后呢,在训练集里面呢是有这这样的几个子文件夹。这每个子文件夹下面就是存放的具体的一些图片。
也就是说我们这个地方它的一个数据器呢,是直接按照文件夹进行分文件夹进行存储的。每个文件夹下面存放的是一类我们的一个具体的一个图片。然后呢,如果我们的数据集是以我们的一个就是。文件夹来进行存储的话呢。
我们就可以直接使用这个toation里面的一个image floaterimage floater这样的一个操作。image float float它是怎么操作呢?
image float它是一个内置的数据集,内置的一个数据集。这个数据集呢会将我们的一个每个子文件夹,每个子文件夹下面的一个数据呢当做一类,每个子文件夹下面的一个数据呢当做一类。好。
这个地方如果你的数据夹啊原始的数据集是按照子文件夹进行存储的。那么你就直接使用这个imageflower就可了。这个地方呢我们还需要对我们的数据集做一个数据的一个操作,叫做transform。
transform呢它原始的一个含义啊叫做一个转换的一个操作。转换的操作。这个转换呢就是说我们可以对数据集对它进行一些。比如说数据的一个灰度的转换,或者说把它做一个翻转旋转。
对吧这个转换呢可以做一个数据的一个。相同尺寸同尺寸的一个规划,也可以做我们的数据扩增的一些方法。好,有了我们的一个transform之后呢。
这个地方的一个transform它是搭配我们的一个da set来进行使用的。我们来看一看啊。
这个下面就是我们的一个数据集,它在通过我们定义的一个d set之后,它所得到的一些样本,对吧?这些样本呢其实是千奇百怪的,为什么呢?因为是加入了我们的这个数据的一个扩增操作,对吧?
我们这个地方是有随机的一个翻转,以及我们的随机的一旋转操作的。
好。这个地方呢是我们的一个data set,从我们的image floater定义的da set。然后呢,我们从data set呢就可以定义我们的一个da loader。
从我们data set呢可以定义我们dta loader。这个data data load呢就是我们的批量样本的读取,也就是我们这个地方需要设置我们的一个bench size。
H sizeize是我们的一个批量样本的读取。好。然后呢,我们接下来就是。可以定义一下我们的具体的一个设备,看一看我们的设备到底有没有GPU对吧?我们这个地方呢是可以有GPU的。如果有GPU的话。
可以从这个tokuIis available可以检测它是不是有GPU。好,那么接下来是我们的关键的一些步骤。我们搭建这个网络模型。这个网络模型呢,其实你可以自行的去用全连接层做我们的一个搭建。
当然也可以使用我们的一个卷积层做搭建。呃,在我们的一个情绪识别的任务里面呢,其实它它的一个输入呢是我们的一个图片,也就是说输入的是一个矩阵。
我们刚才也讲了,就是说。我们对于我们的输入的是这种矩阵类型的情况下呢,我们如果是使用卷积神经网络来建模,它的精度会比全民阶层。单独只使用全新阶层它的一个信度会更好一些。好。
那么我们在进行一个使用的过程中呢,我们怎么去搭建我们的一个网络模型呢?
这个网络模型的一个搭建呢,你可以看到,其实它是是分为两个函数。不有两个函数,这两个函数分别是从哪儿得到的呢?我们可以看一下啊。这两个函数呢你哇呃这两个函数其实它是继承于这个我们预定的一个类,对吧?
这个类呢它是又从我们的topy toch里面的module这个模块继承得的。也就是说我们这个地方其实是定义了我们的一个。模型这个模型呢我们是将我们的一个pa系的这个模块呢。
把它在它的初始化的一个函数里面,以及它的一个这样传播的函数里面呢,把它重写了。就是相当于是重载了我们的这两个函数。这这两个函数里面分别做什么呢?我们在这个初处方函数里面,我们是需要定义我们的一些参数的。
定义我们的一个参数的这个参数呢就是说我们具体的每一层,它具体的一个就是参数的信息。当然在我们的patle里面啊,就是说很多的一些计算呢都是可以用这个矩阵来完成的。但是不推荐这么做。
我们可以有一些具体的一些全连接层,或者说有我们的一个卷积层来可以直接使用。比如我们在这个patle里面呢,如果你想要定义我们的一个全连接层,你可以直接使用这个N点linner。这个就是一个全连接词。
它就不需要你去显示的去定义这个我们的一个参数的信息啊,对吧?就非常方便。这个地方就是说输入的是512维,输出的就是我们的类别类别个数的一个维度。那么前面的就是我们定义的一个卷积层。这个卷积层呢。
我们这个里面又可以把它由多层次组成。比如说我们卷积层是由我们的2D卷积,再加上我们的baization再搭配我们的机偶函数来组成。也就是说我们的一个网络模型,你可以自行的进行搭配啊,这个是没有什么。
就是说呃就是呃就是说一定按照我们的这个搭配方式来搭配的这种强制要求没有的,你按照这个维度能对得上,它计算不出错。你这样搭建就行。但是呢我们的一个卷积神经网络呢,它推荐的就是说先是卷积层。
然后再是全连阶层。所以说我们的一个网络模型结构其实是先是由我们的一个卷积层所组成的。然后接下来呢是由我们的一个全连阶层所组成的。对,也就是说卷积层在前,全连接层在后。然后呢,这个是我们的定义的一个参数。
那么我们将我们的一个定义的一些层来以及它对应的参数呢,直接跟我们的一个输入来完成我们的一个计算就行了,对吧?我们的一个计算呢就是输入我们的XB的这个tensor来完成一个计算。比如说先是卷积。
然后再加上我们的一个池化,再加上我们的bedoization。在这个计算的过程中呢,你也可以自行的去定义它的一个数据传输。
比如这个地方我们就是手动的去实现了我们的一个类似于残插网络的一个short pass的一个操作,对吧?相当于是我们的一个。手动的去嗯做了一个锁pa。
将我们的输出结果和它的一个上一次和它的一个具具体一个计算过程啊,就是说计算过程的之后的一层和它当前的一个就是输入再进行拼接,然后得到我们的一个输出。这个是在我们的残长网络里面的s pass的一个操作。
这个其实是就是说你定义了层之后,你也可以去定义这些具体的一些层,它们之间的一个计算逻辑,以及它的一个数据的一个逻辑,这个都是可行的啊。然后呢,当我们定义完我们的一个数据集,以及定义完模型之后呢。
然后接下来我们就可以去训练我们的模型了,对吧?我们的模型的一个训练呢,其实本质上和我们之前的一个讲解的过程是一致的,对吧?我们在训练的过程中呢,本质上还是做我们的一个真相传播,计算损失。
然后由我们的损失呢计算我们的一个具体的一个。梯度信息,然后呢根据我们的一个梯度信息呢去完成参数的更新。但是呢你会发现在这个地方,它并没有直接的去出现我们的一个梯度的一个信息的过程。为什么呢?
因为这个地方我们是由这个optimizer,它代替了我们的一个梯度的一个计算过程啊。也就是说在这个optimizer内部,它可以帮助我们去计算这个梯度。什么意思呢?我们举一个例子啊,大家就能够清楚。
Yes。我们在这个案例下面呢,其实是这样。我们定义了我们两个我们的全连阶层,对吧?我们全连阶层是由我们的矩阵所定义的全连阶层。然后呢,这个地方的W1B1是我们的第一个全连阶层。
W2B2是我们第二个全连阶层。这个四个就是我们的具体的一个网络模型的参数。我们可以将我们的参数呢直接传入我们的一个pyor里面的一个opim,它的一个具体的一个优化器。这个地方的优化器呢。
我们是以SGD来做我们的优化器。然后我们传入我们的需要训练的我们的模型的一个参数的信息,以及它的一个对应的学序率。然后呢。我们的网络模型。
它就是说自动的去基于我们的一个就是说我们的优化器呢自动的去计算它对应的参数的一个梯度。比如说这个地方你需要计算我们的W1B1W2B2,它的具体的一个梯度信息。
然后呢再去根根据你的学习率去更新我们的一个参数。所以说在这个地方,如果你使用这个optimizer,它是没有直接看到这个梯度的啊。也就是说这个地方它是有这个。Optimize or the step。
这个地方的step就是完成一个参数更新的过程。backward仍然是一个梯度计算,但是我们的一个参数更新呢是在我们的一个optimizer的一个step过程来做的。好。
那么类似的我们的这个情绪识别的代码也是一样的。我们的optimizer进行一个step就完成我们的一个参数的更新。这个地方的zero gradients呢就是说把我们的当前的。
具体的一个梯度的信息呢把它清除掉。因为嗯这在拍性里面,它的一个梯度信息啊是不会自动清除的,它是累计的一个过程。Oh。那么当我们的模型这样训练完成之后呢,我们可以在我们的一个模型。
在它的一个验证级上面看一看它模型的一个精度啊。我们验证级的一个精度,这个地方是我们的一个验证级的一个具体的一个精度的一个走势。它是不断的进行一个上升的啊,不断的进行一个上升的。好。
那么大家如果是想要自的自己的去训练我们的一个数据,训练我们上述的一个过程呢,也是非常非常建议大家可以自己自己拿到代码之后来训练的啊。如果你能够把完整的把我们刚才的这两份代码给吃透呢。
基本上你就可以将我们的一个就是呃这个pattor它深深度学习的一个基础啊,是能够打打牢的。那么如果我们是想要将我们的一个情绪识别的一个模型把它部署一下,怎么办呢?其实部署其实也很简单。呃。
假如说我们想要用摄像头来做呢,我这个地方摄像头它坏了啊,但是我我已经是将代码写好了。呃,我们假如说想要在这些呃嗯就是手机啊,或者说在我们的一些呃场景下面,假如说想要部署一下我们的模型怎么做呢?
其实很简单,对于我们的模型部署呢,其实本质上就是做一个具体的一个真向传播就行。我们首先呢需要检测到人脸,对吧?我们这个表现识别肯定是基于人脸做的。那么我们需要检测到人脸。检测到人脸之后呢。
然后去做一个正向传播。正向传播就是说识别到我们的人脸的一个区域,然后呢基于我们的人脸区域呢,将它做一个正向传播就行了。也就是如果你想要把一个模型部署呢,其实本质上只需要计算我们的一个模型的正向传播过程。
只需要计算我们的一个模型的这项转播过程。好,那么我们再回到我们之前的代码。那么我们再来回顾一下这个具体的一个过程啊,首先是定义我们的数据集,对吧?从我们的data load定义我们的数据集。
定义完数据集之后呢,接下来去定义我们的模型。对吧模型呢你可以定义很复杂,也可以定义的很简单,这个都是可以啊,都是可以行的。只要是它能够完成这个具体的一个计算过程即可。然后呢,定义了我们模型之后呢。
然后接下来去定义我们的一个具体的一个训练过程。训练过程的代码基本上都大同小异啊,就是做针项传播计算损失,然后跟计算梯度,然后完成我们的参数更新。这个具体的一个计算过程其实是大同小异的。好。
那么以上呢就是就是说我们使用我们的一个全接神经网络,完成我们的一个情绪识别的一个代码的实现。好,大家对这一部分有什么问题吗?如果有问题的话,可以提出来哦。嗯。
就是说我们现在提问的同学也可以领取我们的7月在线的1个VIP月卡。
对,现在提问的同学啊,也是可以领取我们的缺对性的VIP月考的啊。前十位同学前十0位同学。
对。好,大家有问题吗?如果有问题可以及时提出来啊,及时提出来提出来的提问的同学都有都有都有我们的月卡赠送。好。那么我们再来回顾一下我们的深度学习,它到底是就是说一些具它的模型的训练过程啊。
模型的训练过程其实是很简单的。嗯。呃,有同学说请求问嗯ten用的是嗯model点fit和pre,是不是把深度学习做的过于黑箱子。嗯,其实是这样的啊,这位同学可能就对深度学习有一定的一一个理解。
可以再再介绍一下参数吗?我先把这个这位同学呃参数这个地方其实是这样的啊。Yeah。看一看这个。这就是一层。这个其实是我们有一个函数得到的这个地方你可以视为多层啊,也可以视为单层。在这个里面。
其实它里面是内置了我们的一些具体的一些参数的。比如这个地方我们是由pyto里面的1个2D卷积,对吧?假如说你对它这个地方你不太了解的话。No。哦。嗯,我这个地方应该是看能不能搜出来啊。这个一层的话。
其实它是有具具体的一些参数的。就是说它这可训练的一个参数其实是在这里面有的啊。如果我们打开这个pyer系的一个官方文档的话,呃,因为我现在没有FQ啊,打不开它的官方文档。它这个地方具体的一个。
comogniution2D它是一个二位卷机。对吧二维剪辑一般用于二维图像来做的,然后它里面其实是有我们的卷积核,也是我们的偏置具体的参数。也如说不同层,我们的参数不一样。然后呢。
这个地方具体我们的输入的通道数,输出的通道数,以及我们的cur size。对吧这是我们具体的一些。每一层的一些细节。对。cs size不应该是二维的吗?这个地方它是inch,如果是inch的话。
就是一个正就是我们的矩形的,就是我们正方形的。你可以传二维的,你可以传入我们的juep。对。呃,全阶层在哪啊?全阶层我们来看一看。这个地方的全年阶层就是这个地方。
我们的这个lineer就是我们的全年阶层了。ner就是我们的全权阶层了。对。以lininux的函数为例,我如何写自己的一个矩阵,并替换掉官方的lininux进行无缝连接。
你可你就可以自定义我们的这个你自定义我们的这个啊一个class,你可以把这个就是说你把你把你的一个正向传播的,或者你自定义的一层使用这样的一种方式初始化做正向传播。
然后将它从我们的一个嗯点model里面做一个继承就行了。就是说你想要自定一层的话,你就参考这样的一个写法。然后就可以替代。对,输入的一个维度是怎么定义的?数据输入的一个维度,这个地方上面是有定义好的。
我们输入的一个维度,每张图片的一个维度是1乘48乘48。对,1乘48乘48。tens photo和pyytor怎么进行选择呢?这个地方是这样的啊。
Torflow or pattern。tenflow呢现在是发展到2点2点几版本啊,最新的应该是2。62。7。tencle现在它是内置了cas。刚才有同学介说到了啊。
K2和三次foow里面有非常函数和predict函数。这个地方的一个fit函数predict函数,其实它内置的就是我们刚才所讲的一个流程。f呢它就是包含一个正向传播。计算损失。求梯度。
更新参数啊更新参数prediction呢就只有我们的一个正向科目的过程。就是你在使用的过程中,其实你也不是说把它当做黑箱,它内置已经是实现了我们这些就是说过程的。你我们在使用的过程中呢,其实。
就是说它主要是语法的区别啊,我我个人理解就是一些使用的一些操作的区别,就是他帮你把这些具体的一个过程呢帮你实现好了,并不是说完全是黑箱的个过程。你怎么进行选择呢?penorflow和pyy呃。
如果是初学者而言,你可以学这个我是比较建议这个学习排拖的。出去的言是拍头器比较好的。如果你想要在这个嗯工业键里面用,可能tenflow会比较多一点。对。tensorflowlow会多一点。
还有同学问到这个tensorflow的一点版本和2点版本兼容吗?这两者不兼容的这两者是不兼容的。这两个这两个是不兼容的,这版本是版tenflow,它的版本与版本之间是非常割裂的,就是版本之间是不兼容。
那么你怎么进行选择呢?就是说。呃,看你做什么一个领域。你如果是做。视觉的或者说做NRP的。那么你可能是选择tensflow2会多一点。如果你是做推荐系统的。😡,推荐系统的啊。
如果是说做推荐系统的recommend system,那么你就是用tensorflow一会多一点。在公司内部啊,这个我是在说在公司内部是这样的,因因为这个tensflow一它是基于这种静态图的。
它的一个模型。它的一个训练过程以及它的预测过程会快一些。但是呢在对于这个使用的一个。就是说用法上面就是写起来会更难一些。对。这个呢就是说看你学什么。如果你学这个推荐系统的话,可能这个t一会更多一点。
模型太大,怎么局部保存呢?你可以将我们的一个具体的一个参数将它取出来。就是说这每一层。你可以将每一层的一个参数给它取出来。局部保存这一层你可以把它参数给它保存下来。每一层分分层把它一个参数保存下来。
这个就是的对你可以局部保存啊,这个都行的。对,好,大家还有问题吗?
那么我们接下来呢就给各位同学嗯推荐一下我们的在机在线。现在就是说开开设的一门课程啊,叫做机器学习集训营。我们机器学习集训营呢是涵盖了我们今天所讲解的所有的内容。
而且呢也是涵盖了我们的机器学习的重要的知识点。我们的机器学习集训营呢是提供了我们的GPU的云平台的,也就是说报名了我们的机器学习集训营的同学呢可以免费的使用我们的GPU我们的集训营呢。
我们给大家看一看我们的一个官网啊,然后在我们的机械在线。然后通过我们的在职提升班这个地方可以啊呃就业转型营啊,可以找到我们机器营机机器学习集训营。我们的集训营呢现在是开设到第17期。
然后它具体的一个课程啊,我们可以看一看呃这个集训营它是从我们的一个呃机器学习的一个基础开始讲起的,也就是从我们的python开始python开始啊,从python呢最开始的一个使用。
再到机忆学习的一个基础。再到机器学习的一个实战。这个地方的实战部分呢是使用这个呃机忆学习和pyython环境下的一个深度学习来实战的。然后呢也会讲解到这个深度学习的一些原理。
然后呢也会讲解到具体的深度学习的一些具体的一些应用。在这个我们的集训营里面呢,我们不仅仅是会讲解到具体的一些知识点模型,也会呢带着大家做一些具体的一些实操。比如说使用深度学习呢完成这个赤道性检测。
以及使用深度学习呢完成这个智能问答机器人以及使用深度学习呢,构建这种商品的一个推荐,以及使用深度学习呢做这种新人虫识别这种具体的一些项目。那么在这些呢都是在我们的机器云里面呢。
我们是给大家就是说带来的这些学习过程。我们的机器云呢现在是就是说学习周期啊是蛮就是说非常完备的。从最开始的我们的机器学习的一些基础,然后再到深度学习的基础,再到深度学习的落地。然后呢,我们今天报名。
我们机器云呢也是有我们的优惠的啊。
我们报名集训呢有两种方式。第一种呢是第一个套餐是价值1万呃,就是说我们的学费呢是12100,它是包含两年的1个GPU的使用权,再加上赠送我们的大数据集训和这个渗度学集训。
这个是就是说在我们的机器学习集训营的基础上,再赠送我们的大数集其型营和渗透学集训营。这个呢就是说是12000的一个价格。在我们今天呢其实还可以优惠啊,就是说我们可以在我们的价格基础上呢。
再优惠1000元。就是说如果在我们今天晚上0点之前报名的同学可以再优惠1000元。第二第二个套餐呢是单独购买我们机器营,就是9499。这个呢是一年的1个VIP的一个使用,以及我们的GPU的使用。
就不赠送我们不赠送我们的大数据器营和这个渗透集器。这个呢就看各位同学自自行的一个选择啊,自行的选择。如果各位同学今天晚上我们12点呃晚上12点之前购买呢,可以再优惠1000元。对。
好,呃,然后呢大家如果对基训营有什么问题的话呢,也可以加一下我们的杨老师的微信。对,加一下我们杨老师的微信也可以可以的。好,大家还有问题吗?还有问题吗?我们机或者说对我们的集训还有什么想要咨询的问题吗?
对。😊,我们都可以提出来哦。对。呃,以上呢就是我们今天的一个课程内容啊。对,大家如就是说领取到我们的一个就是说今天中奖的同学呢,都可以加一下我们杨老师的微信啊。特别是我们今天就是说中了月卡的同学。
以及我们的这个呃具体的一个呃就是说送书的同学呢都可以加一下我们杨老师的微信,想要代码。呃,想要代码的可以啊。你加一下我们杨老师的微信,或者说直接就是说从微信里面问你之前加的7约在线的老师。
任意一位7约在线的老师都可以。这个我们的PPT和代码都可以发给大家的啊,PPT和代码都可以放给大家的对。好,大家还有问题吗?还有问题吗?对,对我们的集器营,也就是说还有问题吗?也可以就是说提问啊。
大家有问题吗?好。
呃,如果没有问题,我们今天的一个直播就到这儿了。大家就是说如果是想要购买我们的集器云的同学呢,现在一定不要忘记,就是说从我们的官网可以下单啊,官网可以下单。对,也就是说这个其实是非常优惠的价格的。
好,大家还有问题吗?还有问题吗?对,大家如果想要领取我们的代码,或者说我们的课件的同学,以及我们的VIP月卡的同学啊,都可以加一下我们杨老师的微信,或者说直接私聊我们任意一位就在线的老师的微信都可以。
好,大家还有问题吗?如果没有问题,我们今天的一个直播就到这儿了。大家如果是任何的问题都可以提问啊,任何的问题都可以提问的对。我再稍等大家一两分钟啊。好,那么我们ARP的有吗?
呃,NRP的在我们的集训营里面是有NRP的一些实战的。
在我们机器云里面,这些实战项目里面有NRP的对话机器人,就是基于NRP的。对。大家直接想要领取我们的代码的同学,可以直接加。就是说你之前的老师,就是其实在线的任意一位老师的微信就行的啊。好。
大家还有问题吗?
好。语言自动对话。对的对的,很多的一些应用和这个项目的。好。大家还有问题吗?如果没有问题,我们今天的一个直播就到这儿了。嗯,对,可以实现与实现语理解。对的。好。那么我们今天的一个直播就到这儿了。
大家如果想要领取我们的代码的同学,可以直接问一下我们的这个任意一位学在线的老师啊,都可以的啊。好的,那么我们今天的一个直播就到这了。嗯,谢谢各位同学谢谢各位同学。
这门课程包含吗?包含的我们的机器人是包含我们的这个智能问答机器人的,以及包含这些实训项目啊都包含的。这个就是说我们网页上的内容都是包含的。
对,大家如果想要了解的话呢,也可以直接呃就是说咨询我们的汽车在线的任意一位客服老师。对。
好。那么我们今天的一个直播就到这儿了啊,大家如果后续有什么问题的话呢,也可以呃啥课来着?机器学习集训营机器学习集训营。对。
好。好的,大家如果想要购买的话,今天晚上还有优惠啊,今天晚上还有优惠好。😊,那么我们今天的一个直播就到这儿结束啦,谢谢各位同学,谢谢各位同学。😊。