七月在线公开课笔记-三十二-
七月在线公开课笔记(三十二)
人工智能—计算机视觉CV公开课(七月在线出品) - P13:Yolo后时代之目标检测的发展方向2021.5.23 - 七月在线-julyedu - BV17z4y167dq
嗯,我们正式开始喽。今天主要和大家闲聊的一些是关于目标检测借优lo大神退役之后的一些事情。所以我给的这个今天的课题呢标了一个名称叫做优了后时代。
好。呃,如果说只要是接触过CV的同学,我敢说基本上每个人都或多或少听过这四个字母youoYOLOyou onlyly look once。可以说,在目标检测这个领域。
优lo是我们根本就没有办法绕过去的一座大山。而且通过呃优lo它也诞生了很多很多。呃,让人津津乐道的一些故事。在学术领域呢,我们还有darknet。从最开始的大概net1953一直到后面的各种变形。
因么大家现在看到这个页面。我们这儿注意,如果你去看右面的这张图。如果吸金同学估计呢会发现上面挂的是优loV3。现在呈现在大家面前的三个图标是老师从右下角。
这个网站上面直接扒出来的右下角这个网站呢是优lo的官方网站。okK它现在已经停止了更新。但是。
我们看看为什么。先看一下这个其貌不扬的。小个子老师ok。嗯,这位大神呢可以说是优乐之父。他一手开创了目标检测的一个崭新的阶段。我一个崭新的阶段。在优鲁出院之前,目标检测主要是以RCN家族为代表。两阶段。
但是拥了之后呢。一阶段的开始横空出世。呃,可以说从优lo出现的时呃之后,呃,目标检测在实时这一个进程当中才得到了真正的体现。但是很可惜的。大家看啊,2020年2月20号的时候。这个日子里面就两数字。
一个21个0。在这一天的上午9点。我们的大神发了一个twitter。就是说发了一个微博。永远的退出了。计算机视觉领域的研究。为什么呢?如果大家去他的推特上面看的话。
你会发现他是说呃因为我不想看到我的一些研究成果呢,被用于被应用于军事领域。大家都知道这个美国他们在军事领域,他们用了很多AI技术,他们在做什么,这些大家都知道,我们呢也不好做过多的评判。
但是我们的大神呢他备受良心谴责呀,所以说他是干脆,哎,我很有个性,毅然决然的退出了计算机视觉圈儿。O。但是呢这个事情呢,当时在整个AI界可以说是特别特别的轰动哦特别特别轰动。
如同一个驻玛扎弹一样丢了进来。大家在想,这如果说大神退出了,谁还会再继续引领计算机视觉,一往无前的往前走呢?当然了。大家更关心的是,优lo从此会不会彻底结束?嗯,会不会彻底的结束?哎,过了不多久。
突然出现了一个优oV4。当时我们第一眼看到UoV4的时候,很多新人都在想,哎,难道我们大神又回归了吗?这么有关性的大神说走就走。浪子回头金不换。结果是没想到是由一个俄罗斯学者。和我们中国台湾的两位学者。
他们联合出来了一个优乐V4。又过了不多久,我印象是大概就两个月之后吧。又出现了一个优肉威武。哦,既有V4,又有V5。所以说当时大家想。到底CV姐发生了什么事儿了?发生了些什么事情?这么说。
我们先回对回来,大家看到了这个页面啊,这个页面呢是论文的官方标题,用V的官方标题。这个俄罗斯学者呢。当时他抛出了他的代码,同时也公开了他的论文。他的这个也得到了嗯优lo大神的点赞。可以说。
这一部分得到了右罗大家的收肯。而至于优乐V5。这么说,优乐V5是另外一个大神,okK另外一个大神,他搞的优乐V5仅仅在优乐V斯两会之后,这个大神呢也非常传奇。
这位大神呢是常年就是在呃get up上面就是维护这个优乐呃这个这个整个优乐社区的。他写的那个优lo的那个版本,可以说是在get help上面得到了最多的点赞,或者是最多收藏。
优乐V5呢它在优乐V4出现两个月之后。他重新开发立版拍touch。ok拍拍到去的它也增加了一些比较呃一些比较新呃新的一些。可以说我们叫小tck。比方说它可以自动的识别我们这个毛框的大小okK等等。
很可惜,优乐V5并没有出论文。但是毋庸置疑啊,用乐V5的性能是非常非常的棒的。
只不过是两位大神互相各有不服。大家看啊这个页面特别有意思。😊,呃,如果在最下面的时候,你看最下面有个链接,我把这个链接放在这这个地方。那么这个链接呢上面显示了V4的大神和V5的大神,他们互相打嘴炮。
他是一个博客,他们互相拿嘴泡。你看。😊,嗯,俄罗斯学者呢他说UV5呢不严谨。因为你根本就没有一个非常科学的论文抛出来。他很不服气。因为仅仅在两个月之后嘛,第五个版本出现了。啊,当然了,微博的学大神就说。
哎,我这个性能又比你好怎么怎么样,他们就开始互相的打着嘴炮。当然了,作为我们这种吃瓜群众来说呢,二位都是大神都是非常非常厉害的学者。O他们的这个成就呢可以说是呃对我们来说有很多很多的福利。
至少我们可以用他们的这这个程序。他们的程序说句实话,如果你去仔细看的话,写的非常非常的赞。当然了,今天呢我想跟大家闲聊的不是V4,到底是V4好呢,还是到底是V5好呢?
或者是到底是V4才是真正的优o还是V5才是真正的优lo。今天我们呃的注意力并不放在此啊。因为我们都知道,不管是V4还是V5啊,都不是最开始的优乐支付。哎,他做的成绩了。但是呢这两个版本都非常棒。
可以说在工业界。V4V5都很香OK都很香。但是今天呢我们更多的会把目光放在这个呃学就是这个算法上面。我们从算法的层面来看一看。我们能从中学到什么?可以这么说。V5它的程序在工业界非常非常的像。
它的性能非常非常的棒。但很可惜他没有论文面试。所以说我们今天会以优loV4的论文来给大家聊一聊,为什么这么做呢?因为优oV4的论文,它有另外一个名字叫做。目标检测调参手册。通过这个调三手册。
我们就可以知道很多很多关于目标检测上面的一些很多的一些新的方法。
非常非常的香。OK闲话少说,我们来看一下。这儿呢有一副总结。因为不管是。呃,任何一个目标检测器。哦,呃这句话不能不不是很严谨,我们只能说只要是跟毛框 anchorker相关的目标检测器。
可以说我们都绕不过这幅图。所以我的话啊,凡是跟毛框相关的目标检测器,我们都绕不过这幅图。我们来看一下,在这个图上面的。嗯,我们有两个大框吧,一个是紫色的框,一个是。
绿色的框紫色的框呢通常人们会叫做双阶段检测器,绿色的框叫做单阶段检测器。OK但是不管是多少个阶段的检测器,它无非就是我们会有一些相同的部分。比如说我们都有输入,当然,这句也是句废话,你没有输入。
你不给网络喂一些东西,你要最后最后它生成什么东西的,对吧?我们的输入,就是我们的呃一些图片或者是视频都可以。那么除此之外呢,我们还有back boom股价网络,所谓的股价网络,其实就是你喜欢的CNN。
从最早的,比如说alexnet。VGG一直到现在的呃各种desnet系列等等。那么这个back boom,它的目的就是说我去研究研究唉这个图像上的一些特征,就是我们英文说的features。O。
除此之外,下一步都有nck。OK当然了这个nck有时候我们会把n back boom合在一起。再往下再往下,你看啊有一个叫dance prediction和ss prediction。哎。
这就就显现出来了双阶段检测器和单阶段检测器的不同。其实啊他们的不同就一句话来可以概括,你是否需要候选区域先粗略的塞一遍,然后再细细的看一遍。如果是需要的话,你就是双阶道检测器。如果你不需要的话。
那么我们就说我只看一遍即可。这叫单阶段检测器。O。😊,好。嗯。这个呢也给大家呃显列出来了很多很多的各种各样的不同的。比如说呃输入的方法,还有股价网络的一些呃就是比较经典的一些模型。
还有neck部分、head部分等等等等。我们今天聊的是优lo后时代,所以说我们从优o V3来开始入手。毕竟这个U了V3。是优lo支父的最后的绝唱。当然我也特别希望月乐呃月乐之父有一天他重回CVG啊。
当然这个我说了不算,这个必须是人家大神说了算。好。咱来看一下。优了V3的一个大概的模型。好。呃,从左上。从左上一直到。右侧这是它的整个的一个框架。那我们可以看到。最左面。三通道。红绿蓝三通道。
这是我们的图像一直到最右面,最右边的输出呢,哎小物体、中物体、大物体。等等。然后中间这是它的红色的光,是它的基本的backackbone骨架网络。然后从这儿分开。如果说小物体呢就在小物体的上面,哎。
我做预测,如果是中等物体,我就在中等物体上面做预测,否则我就在大物体上面做预测。但是话说回来了,我们如何去定义小物体、中等物体和大物体?毕竟这个大中与小呢,它是相对而言,对吧?比方说。
我认为我自己身高很高,但是我要是放姚明面前,那我就是个小矬子,对不对?所以说这个小中大它是个相对而言的事情。如何定义呢?我们稍后会在我们的欢灯片当中跟大家聊一聊。好,我们继续看。这个图像呢是悠6V4。
它官方论文上面的一个性能图。我们可以看到绿色这条线。绿色的条线就是用了V4。而蓝色的这条线呢就是U了V3,哎,优乐V4会比优乐V3提升了非常非常的高OK提升了非常非常高。
如果说它跟efficion net相比。OK如果跟一非现代相比。他的性能也非常非常的棒。如果是这么说的话,我们来看一看他是怎么做的。哎。😊,优6V4呢它的总结一下。
它的股价网络是用的CSP当时net53。注意啊,CSP。和drknet53CSP是它的前缀。大配量的53呢是优乐V3的5价网络。它本身是一个非常成熟的网络,而CSP呢它是一个处理方法。
可以说是它是一个单时量的无相的一变形。好。然后nac的股呃nac股价呃应该叫。脖子。O。😊,用的是SPP和PAN。呃,比如唉有个同学问为什么同一个算法,比方说优乐V4上面有4个点,这个表示什么呢?啊?
这个没有表示表示什么?它只是就是说哎我取4个点还帮你好看。比如有有也可以取三个点,像优乐V3,只是帮你看一下,仅此而已,没有什么特殊含义。好,哎,忘了提一点,它优oV4的hat部分,它还是基于UoV3。
那么我们就来看一下优oV4的整体框架图。6了V4,它遵循我们最开始聊的目标检测器的框架,那么它有4个部分,我们这里分别用红框1234给大家标识出来。首先是最左侧的红字,用输入端。okK这个输入端呢。
它这个地方的创新主要是训练时对输入端的一个改进。比如说包括呃数据增强的方式,SAT及对抗训练等等。我们稍后给大家聊,紧接下来backbone。ok大家共通不加网络,那么这就是CSP的大时现的53。呃。
如果大家对这个CSP系列不是特别了解的话,呃,我建议大家去7月在线的官网有一个叫呃。目标检测那些事儿,从马斯拉CN到UV4。在那个课程里面,我们详细的给大家介绍CSP呃,CSPnO好,我们继续。呃。
第三部分nck。目标检测网络会在backbone和最后的输入输出层predction之间插入一些层。啊,这个地方呢我们可以看到,比方说你看这个地方SPP。SPV模块还有PAN加FPN的一些结构等等。
我们一会儿会跟大家仔细的聊一下里面的细节。那么最后一部分就是预测了。如果你这么看的话,你会发现U乐V4的这个预测的这个方式,它和优乐V3的预测方式基本上相同。当然了。
它会改进一些训练时的损失函数损失函数。那么今天这个呢也是我们今天会跟大家想要的一些重点。好。那咱们就从最开始第一部分来聊输入端。输入端呢我们都知道所谓输入就是各种各样的原始图片。可以是彩色,也可以黑白。
只不过我们多数用彩色图片来代替。那么我们可以说呃最开始呢如果说你不做任何的处理,把V图片直接丢进去。你会你一点问题都没有,注意啊,一点问题都没有。但是我们会做一些数据增广。为什么这么说呢?
比方说你的图片OK你的图片它的内部分布不均匀,什么意思呢?举个例子啊。可能我们今天出去旅游,哎,我们拍了一堆很多很多的美照,结果会发现。有的同学,比如说女女孩子,他们喜欢拍自拍,那么在她的手机照相里面。
你会发现人物的就是比较大的人物,他的显示的会非常的多。那么另外一个朋友她照了一些照片,比如说他照了很多是风景照,那你会发现在他的照片当中,绝大部分头像呢都是比较呃看着比较小的人物。那么这个大大头像。
小头像。它的分布就很不均匀。那么这是一种,又或者是说我们做多类预测OK多类预测很可能。比如说我们呃预测牛马羊,你会发现牛群、马群、羊群非常非常的多。但是你又同时想预测牧羊犬。
你会发现牧羊犬的照片又非常非常少,就等等等等。呃,诸如此类吧。那么优乐V4它使用的方法。叫马赛克mo赛。注意啊,这个不是咱们想的那个马赛克啊,虽然写法是一样的啊。他采取了马赛特的方式。
他是参考了2019年底提出的cardt mixed数据增强的方式。你看这个就是car mix。2019年car mix它是怎么做呢?它是哎我把一些图像我直接叠在一起。
那么这样的话就会发现在我的一个大图像当中会出现一个小的图像。这样我们就哎同时获得了呃一首先是获得了一个新的照片。第同时我们还获得了一个。小的图像。但是cardt mix呢它只使用了两张图片进行拼接。
2020年出现的马赛克的方式,这种数据增强的方式呢,它采用了4张图片。他是这么做的,他可以随机缩访,随机裁剪,随机排布。就是说一切都是随机的一切随缘。okK一切随缘。为什么我们要进行马赛克数据增强呢?
比如说我们在平时训练项目中呢,就是就是刚才老师给大家举个例子,小目标的这个AP值,它一般会比中等的目标。大体的目标低很多OK低很多。你比方说我们常用的QQ数据集验。
它的里面也会包含很多很多大量的小的目标。但是呢如果你去看它小的目标分布非常不均匀,okK非常不均匀。那么这就是我们为什么要采取数据增广的方式?好,说到这儿啊,我们也一直跟大家聊这个小图像。
中等图像大图像。所以我们呃不能这么说,我们应该说小目标、中等目标和大目标。那么问题来了,如何定义大中小目标?这是我们比较感兴趣的问题。对吧。好。😊,我们来看一个。呃,标准的定义吧。那么在这个图像上面呢。
是给出了大中小目标的一个非常明确的定义。嗯,首先来说这个。大中小的目标呢,它的分布不均匀。呃,我记得在coco数据集上,小目标的比重好像达到了是大概是C1。4%。41。4%。
它的数量比中等目标和大的目标都要多得多。OK都要多的多。但是有个问题啊,如果你去发现一般的你的手机,比如说我们发一下手机相册,你会发现。你的小目标的图像和大目标中等目标的图像来说,它的比例又会稍微下降。
所以说一般我们互相平衡。下面这个表上面呢给大家明确列出来了什么是小目标?如果说你的这个矩型就是它的这个矩型框,哎,我们label的矩型框,它的范围是在32乘以32这个范围之内。
这32个像素乘以32个像素这个像素这个范围之内,我们统一认为是小目标。那换而言之,如果是32乘以32的平方像素到96乘以96的平方像素之间呢,我们把它认为是中等目标O中等目标。
如果说是96乘以96比这个平方像素还大。那么我们就认为是大目标。那么这个就是如何区分大中小目标。注意啊,我这道说的是目标,而不是图像。因为在图像当中,它会有很多很多的不各种各样的不同的目标。O。😊。
那么说到这儿呢,替大家总结一下。这个优乐V4的这这三位大神呢,他们采用了这个马赛克的数据自强方式,他们呢主要有几个优点。第一个优点啊。丰富数据集,这也是为什么我们把它叫做数据增强,又人把它叫做数据增广。
你想咱们这个地方,我随机使用4张照片就这么拼接。那么随机拼接随机缩放,同时随机丰咐。那么这样的话,你4张照片你会生成很多很多不一样的照片。可以说我大大丰富了检测数据集。更重要的是呢。
由于我们出现了随机缩放,可以说我们增加了很多小的目标。这样的话让网络的乳巴性更好。嗯,有过工程经验的同学,大家肯定有就是时常遇到这个问题,一般那么标检测器。我识别大目标。
中等目标非常容易识别小目标比较难。如果你小目标哎我数量更多的话,那么这样的话是非常有利的这是第一。第二个优点啊。哎,我看唉。第二个优点是关于这个GPU。它可以减少GPU的使用。
当然有的朋友朋友可能说这个随机缩放。随机缩放的普通的数据增强也可以做到。只不过一般我们呃就是这样的话是原则也是这么说的。他说哎我一般的呢很多人只有1个GPU。OK那么我们如果使用马赛克增强训练的时候。
就可以直接计算4张图片的数据。那么这样的话,如果你用mini batch的时候,你这个 batchch大小不需要很大。我1个GPU就可以达到比较好的效果。
ok那么这个是马赛克的一个为什么使用和它使用哪些优点?O那么到目前为止呢,就跟大家聊完这个呃第一部分输入端用了V4,哎,它采取的一些新的方式。O。😊,呃,给大家插句话。大家看到这个表。
这个table one并不存在优乐维斯的这个呃论文当中。这个表呢它是存在于另外一篇论文。这个论文我给大家打在这个地方,你看augmentation for small object detection。
为给大家打在这个地方。如果感兴趣的同学,你可以去搜一下这篇论文。然后它那个里面会有更加详细的这个关于大通小红标的解释。当然了,如果大家不愿意搜论文或者是比较难以找到的话,你也可以到我们7月在线的官网。
嗯,在我们的第八期就业班里面,我们也给大家提到了为什么如何定义大中小目标。好,我们继续。那么呢下一步的话题呢就是到了我们的股价网络。OK我们就到了我们的无价网络。
首先说我们的股价网络是CSP系列下的到数net53。那么从这个名字上面,我们可以我们就可以知道。从名字上来说呢,dark deck53它本身就是用了V3的国价网络。
只不过是它又是用了呃2019年CSPnet经验,它所产生的新的backbone。如果我们来看呢。这个backbone这个股价网络结构,它大概包含了5个CSP模块。大家可以说啊。一。😊,2。🤢,呃。
345。注意啊,这个12345,这个是我们帮大家数的,后面这个CSP1代表是重复一次CSP2重复两次,是他大概大概是这个意思啊。它不是说CSP8就是用了第8个CSP不是它总共用了5个CSP模块。呃。
每个CSP唉,有个同学问CSP的全称是啥?CSP的全称嗯,我给大家搜一下啊。我印象是层级金字塔网络。大概讲我给大家看下全称CIPnet。哦,他应该这么叫。
cros stage partial network跨阶段呃。不放了,我给大家打在我们的这个聊天页面,它叫crod stage partial network。好。呃,我们继续聊。
股价网络当中呢包含了5个CSP模块,而每个CSP模块,它的前面的卷积和的大小都是3乘以3。O那么这么做是为了可以起到起到下采样的作用。O。cross是跨阶段的意思啊,跨就是cross跨的意思。
stage阶段。其实这个如果大家的这个英文就是某一个单词英文,如果不呃忘了什么含义的话,你可以呃有道或者是百度搜一下它的意思啊。O我们继续续聊。那么CSPnet呢。嗯。它的输入图像。
你看我们默认是608乘以608乘以3OK然后我每1个CSP。我们都会有一个卷积核3乘以3。那么通过5个输入的变化,它们就可以变成。从608开始变,608到这儿304152。76。38一直到最后的19。
经过54CSP模块得到的大小是19乘以19的特征图。呃,注意啊,我看有个同学他一直在问老师,A老师cross是什么意思呢?parts是网络的是部分不关全的吗?是是这样的啊,呃。
CSPnet呢是2021年呃2不对,2020年横空出世的一个新的系呃CPCENN系列。这个呢说来话长,它已是一个非常大的话题。呃,我个人建议就是如果不大理解的同学呢。
你可以去看一下那个呃7月在线的有一门课叫做目标检测那些年呃目标检测那些事儿,从muscarCN到UV4。在里面我们专门有一节课的时间,会专门讲股价网络。专门讲股价网络。
那么那个课程里面会很详细的讲一下什么是CSPnet。那么在呃就我们在那个CV小班第八期的里面,那个里面会更详细的讲解,同时还会带着大家手动录代码。O。呃,由于今天我们这个时间有限。
所以我只能给大家大概的过一下CSPnet。呃,因V4采用的是CSCSP的一个想法,只不过是它把它作用在了do时net53上面。OK我们可以跟大家简单聊一下CSPnet。😊。
CSPnet它主要是从网络结构设计的角度来解决推理中计算量很大的问题。我记得当年2020年我读到那篇文章的时候,他的作者他好像是这么说的。嗯,他说我认为推理计算过高的问题呢。
是由于呃这个网络优化中梯度信息的重复所导致。所以说哎当时那个作者他就这么说,我用CSP的模块,我把基础层的特征映射。哎,我分成两部分。换句话说,就是说我把我最开始的输入的特征图feature max。
哎,我直接人为分成两部分,然后通过跨阶段的层次结构将它们合并一部分我往下应用到那个。各种的转接层里面,另外一部分我先保持住,我不做任何工作。我等到前面那部分工作完之后,然后我再把保留的那部分,哎。
我跟他进行合并。他大概意思就就是呃大概意思就是这样子了。它主要有三个方面的优点,优点,一它增强了CN的学习能力。同时。在轻量化的时候保持准确性,注意啊,轻量化是我们现在一个非常火的话题。
这个最后我们在呃今天的最后的一个时光,我们会也会跟大家聊一聊如何轻量化网络。第二个优点,它可以降低计算瓶颈。第三个优点,它可以降低内存内存成本。Okay。那么。除此之外呢。优乐V斯的股价网络。
它还采取了很多很多的一些小的方法。大家看啊这个地方啊我们给大家打出的是drop block。okd block。呃,直接翻译过来呢,就是说我大块大块的丢。drop block它的前身是drop out。
而drop out唉它这个很简单,我们用一句话就可以帮大家解释清楚drop out的方法是我去随机删除减小神经元的数量,使网络变得更加简单。为什么这么做呢?因为。
学者发现在我的学习模型的就是模型学习的时候,它会发生过拟和现象。什么叫做固拟和现象呢?就是说。我的网络在学习这些训练数据的时候。学习的非常非常的好。为什么学习非常的好呢?
因为他把我训练数据当中所有的特征全部印记了下来。但是大家千万注意。这个地方的特征有好有坏,对意啊?有好有坏。好的特征你记住了,没问题。你比方说大熊猫的特征是什么?黑白对不对?熊猫眼儿等等。
但是他如果把一些不好的特征也记住了,比如说他把大熊猫背后的那些呃背景的一些特征也记住了。那么。当他去预测到测试数据仪像的时候,我们会发现这个时候在测试数据仪像的性能就很烂了。因为不好的数据机。
我也不好的系统我也记住了,这叫做固体和现象。为了缓解这种现象,最开始哎我们就招泡的方法,随机删除减小时金元数量。哎,这样的话我们随随机的丢弃一些信息。但是呢。呃,lucky说呢。
所以就采取随机的方式使部分适合吗?对,就是说我随机丢。哎,是这样的话呃就会不要让我们的网络那么敏感,别全部记住了。但是注意啊。招报呃招报了出来以后会适当的减轻过敏和现象。但是呢我们也会发现。
比如说jo block,他就说呃其实很多卷积层对这种随机丢弃并不十分敏感。为什么这么说呢?大家想卷积层通常是三层联用哪三层?第一,卷积层?第二。呃,激活。第三,石化前面两个卷基激活都好办。
但问题出现在石化层上面,因为石化层本身就是对相邻氮源起作用。你比方说你哪怕你随便丢弃。但是我卷积层仍然也可以从相应的机构单元当中学习到相同的信息。我给大家说的再明确一点,比如说你随机丢弃。
很可能你丢弃的就是你本来人家石化层就要丢弃的那部分。那么这样的话,可以说呃你随机丢弃效果并没有达到你真正想要的效果。那除此之外呢。呃,那我们会发现啊,drop out呢在全连接层上的效果非常好。
但是在卷积层上的效果并不好。那怎么解决这个办法呢?你看石化层当面呃石化层上面说,你既然你随机丢弃一些点和我石化层丢弃的点有可能重合。那这样吧,我不给你随机危险了。我全都不要了。我把整段整段全部丢弃。
这种的感觉呢就特别像是呃。我给孩子洗完澡。我倒洗呃洗澡水的时候,我把孩子也倒了,他有时候这种感觉。okK那么这个就是joaw block。呃,当然了。
招 blocklock呢它把整个局部区域直接删减丢气,它这个效果确实会比招泡的效果更好。O。呃,好。那么到目前为止。我们就跟大家聊了一下第二阶段的话题。okK第一阶段数端,我们是说优6V4呢。
它采取了一些。方式,比如说我们刚才聊的马赛克数据增网方式。在这块呢,股价网络上面呢,我们跟大家聊了,哎,因瑞维斯他采取了CSP系的大数价的53,可以说是对大数量的53的一个增强。那么除此之外。
drop block就比drop out哎也进行了增强。那么在下面个阶段当中呢,它会不会有更加新的东西?好,我们来看一下。呃,首先那有个同学问CSP和rackVGG是不是一样的东西不不一样。
这两个东西不一样。呃。我们聊到这儿呢,我们再再往下一阶段聊。第三个阶段就是nap阶段。OK那个阶段。我们来看一下啊,nck阶段。优6V4它采取了一个叫做SPP的结构。STP的全称叫做。呃。
空间金字塔石化OK空间金字塔石化。哎,就是这个地方你看。空间、金字塔石化网络结构。哎,这个是在做什么呢?我们来看一下。呃,我不知道大家有没有这种印象,就是在最开始接触CN的时候。
一般我们会对输入图像进行一个标准化的配置。比方说我们会说哎请把输入图像全部resite成224乘以24。因当然你也可以说是其他的一个呃其他的一个大小啊,比如说是128乘以96都可以。为什么这么做呢?😡。
大家知道啊我们现在其实很多的这个呃这个设备,比如说呃佳能R6。还有比如说呃索尼的A73呃。是要1730,还是174就等等,他们都可以进行4K5K甚至。更好的设备啊,8K的设计。
但是我们的图像呢就是如果就用在CN上是24乘以24这么小的像素,那为什么这么做呢?首先有两点原因啊,第一点原因。如果你的图像尺寸过大,你记录了更加丰富的信息,但是同时也造就了。哎。
同时也造就了计算机内存的极大消耗。因为计算量非常非常的大。啊,当然了。对于我们来说,很多细节不需要,因为目标检测我们只需要找到目标。在哪就写,又或者是说我们对目标做了一个定位,对吧?至于目标里面的细节。
你看这个比如说女生的这个头发丝儿有多么多么清晰。在脸的这个地方呢不care,但是注意啊,我这还有个但是。对于不同的图像。如果你说这一批测试图像大小不一样。你必须把它resize成一个大小一样的。
这样才可以。OK为什么要resize呢?我们刚才说了是为了降计算量,但是为什么必须resize成大小一样的?我们来看。呃。我们先这么说吧。😡,为什么要把它变成。大小一样的呢,是因为。呃,O。稍等一下啊。
好,为什么要把它3成大小降呢?是因为我们在最后一层。通过卷积。一直石化,一直到最后的时候,我们的图像需要尺寸一样,因为fish map需要固定。如果你最开始现现的图像大小都不一样。
那么再往下一步一步一步,你会发现你的fisher map是大小不一样的。为了统一最后的fisher map。的,这个尺寸,所以我们要求大小一样。ok但是如果说res大小不一样怎么办?我们有方法。
比如说我们可以对大小图像进行裁剪,或者是缩放等等一系列操作,把它变成统一的尺寸。但是这样的会降低检测的精度,ok降低检测精度。所以说我们这个地方有一个空间精字大尺量的方法。
这个算法的优势在于我们构建网络的时候,可以输入任意大小的图片,而不需要提前经过什么裁剪缩放呀等预处理操作。O我们不需要这么做了。呃,怎么做呢?我们来往下看。好,我们再往下看如何操作。
我们来看当我们输入一张图片的时候,我们可以利用不同大小的刻度。你比方说这些图片,我们在上面对图片进行划分,我们可以对图像进行。唉,你看我先进行这个呃石6等份。宽和高各成4份,我也可以进行二等份。
当然我最后我不进行划分,我把它尺寸完全保留下来。那么这样经过各种各样不同的划分呢,比如说最开始四等分划分,我们会把图像分成16块,注意这个数字16块。第二次划分,我们把它划分成4块,16加4等于20。
最后整个图像,我们当做一块,我们就可以得到了21块图像。然后呢,我们可以在这21块区域当中,哎,我们对每一个块都提取一个特征。也就是说最后我们就会出现1个21位的特征,它是向量O21位的特试向量。
当然你也可以采取就是其他这个尺寸啊,都可以。呃,这样的话呢呃如果我们是假设它的都是16乘以16,那么最后我们所得到特征图就是16乘以16。OK那么这个就是空间金字塔,它的一个方法。
它可以使得任意大小特征图,都能够转化成固定大小的特征向量。那么除此之外呢,下一个是PAN。OKPN但这PAN呢都是一个呃很老的一个话题了啊。嗯,这个PN我们它是怎么作用呢?它也是一个金字塔的一个构造。
我们先看。这是一张图像。okK我们的输入图像输入图像当中,我们一次一次的定义它的卷积。OK一次一次的定义卷积。这是我们做了一个下采样的过程。当然了,我们知道为什么这么做呢?因为在下采样的过程当中。
所谓的下采样,注意啊,我们可以用尺袜层进行唉设计。我们会发现在不同的这个层上面,比如说。在这一层和最后面这一层上面,它所含的语义信息是不一样的。如果你把CN它中间每一层全部可视化。
你会发现在比较浅的层上面,唉,我上面会有有很多很多的这个比较低级的语液。比如说形状黑白颜色等等。但是如果在比较深的层上面,我们就会发现很多高级的语义,对吧?换而言之,如果你对目标进行训练的时候。
你最好在各每理论上来讲,你最好在每一层上面都进行预测。O每一层上面都进行做注意啊,这只是说从理论上面,当然我们实际上没有没有这个必要,只需要在中间的某些层上面进行预测就可。那么我们先通过下采样。
然后上采样恢复。同时千万注意上采样恢复的时候,我们是把上采样所恢复的和之前下采样同一。级别的我们进行相融合。这样做的目的呢是我们不希望有过多的信息损失。okK当然了,乐V4呢它会增加一些。呃。
这个娱乐V4呢它会增加一些稍微的变化啊,它会把中间融合部分从直接相加,变成了这个conagation。conation的意思就是说我把这个信息进行。你看本来是相加是一层,但是我把两个信息我不相加。
我完整的保留在这个地方。这样的话我的信息就会有更多的保存。O这就是呃PN它的这个一个改进的PN。呃,有一个同学问这个PN是最早时n戴尔提出的吗?呃,这个我有点遗忘,这个我们可以往回去搜一下,好吧。好。
我们继续看。那么聊完这儿呢,就跟大家聊完了优乐贝斯在n部分,它所做的一些呃改进。这个之后我们还有一些方案,比如说。这个时候呢就要跟大家聊一下各种模改IOU。
ok这一块呢是作用在preddiction最后的预测上面的。那么在p定ction上面呢。我们是这么说的?首先如果你要做目标检测的话,那么对于目标检测来说。
大家都知道目标检测的核心就是它的损失函数los function而损失函数的定义就是定EIOU那IOU呢非常简单,对吧?IV的全称呢是叫做呃。交集和并结O交集和并结I intersection。
Iin就是说你看啊我们首先这张图像上面蓝色的框是我们的gr truth关 truth的意思就是说我们人工标记的。然后黄色的框,黄色的框代表这个是我们预测出来的一个框。那么如何去评价预测框好坏。
我们用LOU来标示哎lucky和呃这个roy说叫做胶并笔。哎,这个发译很好,胶并笔。对,我们通过IOU来得到最优的框。我们来看交集。蓝色的人工标注的框和黄色的交集。
那么这个重合的部分就代表说哎目前你这个框有多少的是检测出来是对的对吧?那么同时还有一个并结,并级就是说两个矩星框,整个的这个面积。最大面积。我们把交集除以并结,那么这个就叫做IOUOK这个叫做IU。
那么通过我最大化IOU你看啊,如何最大化IOU呢?从分子上面,我们可以把分子变大,分子变大,意思就是说让这两个框重合的越多越好。那么这样的话,你这个约会越来越大。重温越用越好。同时。
如果你的病节就是分母越来越小。哎,如果说他们两两个的这个呃共同部分越来越小。那么也就是说我们的IOU越来越高,对吧?那么这个也是我们的这个呃IOU的lot这个是如何控制。但是大家想过一个问题没?
大家想过一个问题没IOU真的很靠谱吗?哎真的很靠谱吗?当然,这个问题可能提出的有点突兀。如果IOU不靠谱,那么我们为什么还用这个IU来表示呢?当然我们也会发现啊,IOU这个东西呢是一个非常非常。呃。
可以说是一个非常非常经典的一个问题。但是我们为什么说IOU它有时候减会不靠谱呢?我们给大家看第一个状态。比如说我们现在呢我们的黄色的预测框。它的位置。会出现在我蓝色框之外。哎。
我我可以说我在最开始我网络学习的时候,我训练的并不是很准。没没问题吧,在最开始确实有可能不准,只不过是之后呢,我是希望让黄色的框和蓝色的框越来越接近越好。那么这是我的一个希望,如何达到这个希望呢?
就是我们刚才说的用IOU来控制。但是你看现在。在这个时候,我们的黄色框和蓝色框,他们俩压根就没有相交。可以说分子为0,那么这个时候你IO基段下面就是0。对吧IU等于零的话。
你根本就没有办法反映两个框的远近。你比方说我的IOU现在在这个地方和我的黄色的框呃。好,我用。黄色的框,比如说我的黄色的框在这个地方。哎,请问这两个黄色光,哪就是绿绿色光,哪个更好,无从判断都很烂。
怎么好呢?我不知道,因为房产证它都是0,那么这是第一个问题。好,我们再看第二个问题。再来看这两个情况。呃,如果你在最开始说我这个呃黄色的框可能跑到外面了。那是最早的时候。
但由一也有一种可能在某一个状态下面,你看黄色的预测框和蓝色的这个人工标注的框,它们都是有一定重叠的。状态二的重叠是这个样子,状态三的重叠是大概是这个样子。那么在此时非常非常有意思的是,哎。
你的IOU计算都一样。分子除以分母都一样。也就是说状态2的IOU和状态三的IOU为一个值。那么这个时候请问哪个状态更好?哎,我的状态二应该是像状态三努力呢,还是说状态三状态二努力呢?注意啊。
在此我们根本没有办法来对此进行区分,无法判断,对吧?我没有办法判断,所以说在这种情况下面,IOU它就会出现一些问题。如何进行改进的?2019年的时候出现了一个叫做GIOU我跟大家聊一下GIOU。
你看啊什么叫做GLU呢?他的意思是说,哎,我现你现在不是说你有两个框吗?蓝色的人工高筑框和黄色的预测框,我们不用简单LOU了。我在你IOU的基础上面,我减去另外一个东西,我们来看。
这个地方呢涉及到第三个概念叫做最小外接矩型。就是我们这个地方看到的C最小外接矩型就是说哎你这个。最小的外接矩形红色的框。那么这最小的一个封闭形状或者是外接矩形C我们可以用C把这两个框哎都包含在内,对吧?
都包含在内。然后我们就可以去计算C中没有覆盖蓝色框和黄色框的面积。换句话说,就是这个蓝色区域,就是蓝色区域。O蓝色区域。我们可以用LU减去这个蓝色区域,那么这个就是GLUOKGLOU那么GLU的方式呢。
它其实会。呃,单纯的缓解IU的这个不靠谱。注意啊,我并没有说他把之前的问题完全解决,它只是缓解。为什么这么说呢?我给大家再看一个样子,大家来看啊。我们目前呢还是有三个状态,注意状态一、状态二和状态3。
在这三个状态当中,蓝色框还是我们的人工标注框。但是恰恰在此时,你去看黄色框,黄色框它装到了蓝色框的肚子内,对吧?三个状态,请问这三个状态哪个状态是最好的?O哪个状态是最好的?
状态123都是预测框在目标框内部,同时预测框大小还一致。那么这个时候你算出来的GIUU的值是完全相同,OK完全相同。那么这个时候你的GLU。就相当于变成了你的哎呦呦,对不对?
我根本没有办法区分这个相对的问题。所以说GRU只单纯的缓解,它并没有完全解决。OK2020年的时候呢呃在。计算机视觉三大体会之一。
ch保AI有一位大神提出了DLU lostOKDLU我们来看DLU lost。DLU呢它是这么说的。我们先放下IU,我们不要想那么多,我们想一想。
如何在现实生活当中你确第一页这个回归就是lot function的好坏。OK我们去定义一下。我们看怎么定义的啊。其实两个不就两个框吗,这两个框,一个是预测框,一个是人工标注的框。
我们最终的想法就是说你的预测框越接近人工标注框越好。如果你完全重叠一模一样,那最这是最完美的,对不对?所以说注意我们的词儿。第一个重叠,第二个完美重叠。什么叫做完美的?重叠比较好理解。
第一个要做重叠的面积,如果重叠面积一模一样,唉,这样是最好的。什么叫做完美重叠呢?完美的定义是第一。如果说你这两个中心点的距离越好,比如说你蓝色的框的中心点在这儿。黄色的框的中心点在眉间这儿。
如果说你这两个中心点的距离越接近越好,所谓的越接近,最接近的情况下就是同心框,对吧?两个点同心框,那么这样是最好的。这叫中心点距列。除此之外,我希望你的这个长宽比也越越来越好。
所以说给大家总结一下一个好的目标宽的回归函数。呃,一般来说希望考虑三个比较重要的几个因素。第一,重建面积。重一般就越大越好。第二,两个框的中心点距离,这两个框的中心点距离越接近越好。那么如果变成同星光。
那是最好的。第三,它们的长宽比越接近越好。对吧那么这个就是一个好的目标矿同学来说。所以说这个时候呢DIV的作者呢就会想。呃,我们是如何去把这两个就是把这两个就刚才我们所说的三个东西来一起来考虑呢?哎。
这么做吧,首先第一,我们把目标这个问题简化成。第一。呃,有个有个有个同学问呃,后面这个这个是具体什么意思啊?不着急啊,要要给大家说。我们来给重新捋一下啊,刚才的三个型要素重新面积,重新点距离和长宽比。
呃,我们先说前面的吧,重新面积和中点距离,我们换句话说,或者说换一个方面进行考虑。第一,我们如何最小化预测光和目标框之间的规划距离。第二,如何在预测光和目标框重叠的时候,让它回归的更加准确。
我们看一下DIU loss,就是大家现在在看到的这个问题。那么DIOU loss呢,它考虑了重叠的面积,你看就是重叠的面积和中心点的距离。那么当目标框与预测框fo裹的时候。我们可以直接度量这个角度。
这样的话我们就可以使DIU捞出量呃更快。如果你看一下公式的话,它首先它也是个IOU它减去后面这部分OK它减去后面这部分。首先。B。😡,和BGT。B。😡,就是bing box,注意啊。
BG就是boning box就是那个矩形框。然后带GT的意思是呢,GT代表ground truth。所谓的BGT就是说。呃,我人工标注框的中心点OK这个是BGT的意思。单独这个B呢是代表我预测框。
就是我黄色这个框的中心点。也就是说这两个是两个中心点。前面这个柔注意啊,这个不是P,这个是柔。柔代表的是我计算两个中心点。的欧式距离。就是计算这个距离,这是我上面这部分的意思。OK上面这部分的意思。
而这个C的意思是什么呢?C的意思是它代表是能够同时包含预测框和。呃,人工标注的真实框的最小B8距离,就是这个你看。就是这个。首先这个大C注意啊,大写的C是这个呃红色的框,这是我的最小外接矩型。
然后这个小写的C呢是代表这个对角线,注意啊是白色的这个对角线的距离,是这个小写的C。那么这个就是这个公式的含义。但是你注意到老师给你讲公式的时候,其实我有一个地方给忽略了。我们讲了重叠面积。
可以用对角线的长度来表示。我们讲了两个点之间的距离,可以用分子肉平方来表示。但是我们并没有聊长宽比。对不对?我们并没有聊长宽比,重复一下好的目标检测光的回归函数需要考虑三个重要的几个因素。第一。
重叠面积C的平方。第二,两个框中心点的距离肉的平方。但是我们没有考虑第三个长宽比。呃,给大家再看一个例子啊。像这种情况。像种情况。那么在这种情况当中呢。嗯,在这种情况当中,我的矩形框。
蓝色的是我的人工标注,黄色的是我的预测框。大哎,你看好巧不巧,我的这个距离,这个两个中心点的距离完全一样。同时我三个黄色的预测框的面积也完全一样。那么在此我们有了CI呃。
不在此我们的DLU相当于又失效了。OK它又失效了,为什么这么说呢?它是这个情况,这三个状态,我算出来的DLU完全相同。我又没办法评价好坏了。那么我们再聊一聊第三步长宽比呃,当然了。
这个长宽比呢就已经不再是DIOU上面的了,它是另外一个话题叫做CIOU你看啊。这个好像跟大家聊了一个就是说呃如何一个做研究的一个感觉啊。从最开始的IOU我们找一下IU的一些问题。
然后一点的客服出现GLU,然后再一点的客服发现还有问题,我们在客服问题到了DLU。但是还有第三个问题,我们就到了CIU。
OK那么这个就是CLU的公式。你看前面这些就是DLU对吧?前面这就是DLU但是它又多了一个这个东西叫做FB。这个东西呢它就是。CIU新加的一个影响因子,而它的表示就是说我希望考虑预测框和目标框的长宽比。
OK长宽比。呃。阿尔法呢是一个系数。学习的系数V用来表示长方比的相似性。呃,如果你看这个的话,就是这块。派方分之4,这是一个常数。然后这个呢是长宽比W代表宽H代表呃高。
就是它的长GT代表我们的光 truths,就是我们之前看到的蓝色框,也就是说它的长宽比,你光处的长宽比,哎,你算一个角度,同时你预测光的长宽比,你也算一个角度,我希望你这两个角度越接近越好。
那么这个就是V的含义。O给V的含义。唉,有的同学问这个V的公式好复杂呀,为什么要设计这个样子呢?呃,是这个东西确实看起来越来越复杂,但没有办法,这个就是为了克服我们之前讲的IOU它所出现的一些不足。
当然了呃由于今天时间有限的,只能跟大家聊一聊它的一个大概的设计过程。如果大家想看一下,就是我们具体的这个呃它是怎么样实现的。尤其在代码中足够实现的呢。
这个只能到我们这个呃7月在线的CV小班CV8第8期CV小班第八期,我们来会有老师直接带着大家进去录代码。呃,右下角的这个二维码呢,大家可以直接扫就可以直接进入啊。好,我们继续看这个地方呢。
我们帮大家总结了一下。帮大家总结一下。从最开始的IOU的lo,它主要考虑了检测框和目标框的纯叠面积。这是最开始的IOU的 loss。在IOU的基础上面,我们设计出了GIUU的老。
它的呃它是解决了一个边界框不重合时候的问题。但是如果两个边界框,哎预测框装到了呃人工标注的框的内部的时候,GL loss失效了。所以这个时候我们出现了DL loss。我们可以考虑边界框中心点的距离信息。
但是由于我们在这个地方我们又没有学习这个呃长宽点,所以我们又设计出了CLU。呃,有个同学问老师这个IOU中心点的距离,长宽比三个损失权是就怎么定?注意啊,这个是网络自动学习的,不是我们定的。
它是自动学习出来的。呃。除此之外呢,在这个。因乐微信当中。他最后又采取了一个极大值抑制。极大值抑智呢NMS这个想必大家应该很熟了。呃,它的主它的主要解决的问题是,比如说我们在这个预测的时候。
我们对毛框预测,你会发现毛框它会有很很多很多比较不错的毛框。你比方说我们现在这个框,它。画出了一个摩托车。哎,这个时候如果我的这个摩托车的这个框,我稍微向上偏一个像素,向下向左向右各偏宜一个像素。
你能说我没标准吗?你很难说吧,对不对?所以说这个时候就即便你设了一个阈值。你说哎只要大于这个阈值,那么它的这个呃预测性能就非常好。可以这么做,但问题是。你会发现一个好的模型。
它检测出来会有很多很多的毛光都大于你这个阈值,除非你把预值设成机。那你会发现好多又找不到了。所以这个时候哎我们我们就可以做。我们找一个最大的呃分数的毛框,哎,我们把它当做最后的毛框。
这个就是非极大值抑制NMSOK呃,当然了,这个NMS呢在优乐V斯上面它还会出现了,就是说呃。呃。作者呢用了1个DIU的NMS,它并没有用CIO的NMS就是你看这个。这个。左侧看到的图像是CIU的los。
直接加上NNMS,但是右侧呢都呃做了一个是DIOU的NNMS为什么这么说呢?你看啊。呃,我们仔细的看一下这个地方,你仔细看这个地方有两辆摩托车,对不对?呃,大家看啊。这儿有一个类似于这是一个黑色的。
应该是邮箱吧,黑色的邮箱这儿一个摩托车旁边有一个橙色的摩托车。由于你只仅仅只用了飞机大值抑志的话,你会发现这两个摩托车。由于它离得特别近。
所以它会把两个合并成一个当做就两个毛框合并成一个毛框来做一个预测。但是问题是我们希望是每一个摩托车都有一个这个都有一个这个毛框来进行表示。因为你本身是两个嘛。
所以说这个地方用的DIU的NMSODIO的NMS。呃,V4的这个DIOU的NMS会比V3的牛逼,为什么呢?你看图上可以直观的看看,就是刚才老师说的这个两个摩托车离得相邻非常近。
但是优乐V4的非极大机制的方法去准确的找出来。但是优乐V3呢。或者说你仅仅只有NMS,你会发现这两个由于离得太近,我用了一个毛框留下来,另外一个毛框直接丢掉了。好。呃。
那么到这儿呢就跟大家聊完了关于这个优乐V4的主要特征。当然了,我也有个同学问这个DIV的NMS大概原理是什么?怎么说呢?这个特别特别的复杂,呃简简单单用一两句话很难给你概括。在这样的老师只能帮你告诉你。
用这个方法可以得到一个更好的一个效果。呃,当然了我知道就是我们的同学呢会对这个里面的原理想搞清楚啊,所以我建议大家去。扫描我们的二维码。
去这个地方看一下我们的一个关于呃这个呃目标检测一个更详细更深入的讲解。OK更深入的讲解在里面会有老师带着你专门去录代码。好,那么说到这儿呢。就不得不说啊。呃,悠悠V4。和优loV5。
他们的性能已经在目标检测得到了一个非常非常大的质的飞跃。那么我们之后还能去做什么呢?我们之后还能做什么?这么想。目标检测未来的发展方向是什么?当然,我不敢在这里面妄自菲薄,拖大说,哎。
我对这个呃未癌就怎么说,我看特别准,你就你就走这下路吧。这个人感觉这个好像由于这种压宝的成分了啊,我们不能这么说,当然了,我们只能说到目前阶段为止,在学术界和工业界,我们主要会走哪些路子。
首先来说路子有很多,都每一条路都非常非常好。但是呢在这儿我给大家列两条路子。这两条路子呢我个人认为注意啊,仅代表个人言论。这两条路子我个人认为是非常非常发展前景的第一条路子。
叫做aner free based object加 detection。我们目标检测刚才聊的优o系列和很多很多的,比如说各种CNN的那种家族,他们都是基于某框。他们的想法非常简单。
我先人为的定义一些毛框。然后我去想办法让毛框我人为地的毛光去无限的接近于我真实的。呃,真实的人工标准的那个木具型框,这是很好的想法。但问题是你会发现在实操过程当中会有很多很多的没有用的毛框。
就是说这个毛框里面并没有我们想找的目标,会有大量的这种毛框存在。而有目标的那些毛框,相反,它的数量会非常非常的少。呃,有有个同学问那个讲马赛克的那篇论文地址可以再发一下吗?不着急啊。
同学最后我会把老师今天讲的这个课件发给到我们的后台工作人员。呃,大家可以问我们的后代工作人员,问小七问他去要一下我们的课件。好吧。呃,今天的这个讲解也会抛在我们的这个官网上面就公开课。
大家也可以去呃计算视业公开课,那个免费再看,okK免费重新看。好,我们继续聊。刚才聊到了毛框的这个方法的一些弊病。所以说现阶段我印象大概是从19年18年年底、19年左右的时候出现了。另外一条崭新的路子。
我不利用毛光物来检测,我利用关键点来检测,这是一个方案。那么。呃,第二个方案呢就是。我就基于现在的效果非常非常棒的目标检测。等各种方法。我们去对它进行模型压缩。什么是模型压缩呢?比方说。
我们现在在你的呃英瑞达的一个很牛的那个,比如说呃呃GTS3090上面,哎,我们训练好了,训练好了一个UV5的模型。那么这个时候你会发现你的模型效果非常的棒。我们很喜欢效果非常的棒。
但是它的模型大小非常的大。也就是说它的计算量会非常的大。如果说你想把这个移植到你的手机里,又或者说移植到你的移动设备上。比如你今天弄了无人车或者是无人机。你会发现,如果你直接完美移植的话。
在那种比较呃我们的移动平台上面,他们的算力没有那么大。那么这个时候它就会过热,甚至阶段的缓慢。那么这个怎么办呢?墨西亚索。OK这两条路子呢我个人认为是未来的两个方向方向。
那么我们今天一个一个给大家大致的介绍一下。首先第一条路子叫做anor free based object加 detection。说句实话。虽然叫做anor free based,我不想利用毛光。
它利用什么呢?利用关键点。哎,聊到这个关键点关键点这块呢,其月在线曾经也当然也是有老师就是有有我讲另外一堂课叫做关点检测。大家感兴趣的话可以去那看一看。当然在这个CV小白9业8里面。
我们也会跟大家聊一下关键点检测。OK我们来看我们可以这么做,你不就是想找那个人的位置嘛,对吧?那么我干脆我去直接找人的一些关键点。OK关键点。你比方说。人的脖子、手肘。脚踝、膝盖等等。当然有同学也说。
老师,你这样的话,不就变成了人体自带估计了吗?对不对?那么好,我不找这么麻烦,我也可以找其他我人为定义的一些观点。怎么第一,我们待会再说,在这儿我要给大家普及一个概念。如果你去找关键点的话。
你不管是做人体自带估计,还是做目标检测。你所找的这个点,你最后找出来的那个东西,不叫做fishature map。CAN和目标检测我们找的是特征图fishature map在这个地方。
我们把它叫做热力图heat map。意图的意思是什么?它是说你看啊,比方说我。现在我找的是人的脖子,你可以看到本身是一张彩色的图像,但是我最后出现的黑 map是一个浅蓝色的图像。然后在浅蓝色的图像上面。
哎中间好像有黄色,有红色。一个高亮点显示。当然我们道高亮点显示的就是脖子处hit map它上面的每一个像素所代表的值,分别代表你想找的这个关键点,在该像素这个位置上的。概率值。概率值就比方说。
我现在鼠标的这个红色的这个点,这个地方会不会出现你的脖子呢?我不知道,我只说告诉你一个值,它这个值是多少?当然我用颜色来表示蓝色表示。呃,蓝色其实就代表在这些区域呢啊基本上概率为0。
然后越亮的地方越就越代表在此处出现你想找的这个关键点。它的概率是最大,比如说红色就代表在这个地方是完美体现。OK那么这个就是概率图的意思。呃,当然了,我们现在用一个人体自态估计的这力图帮大家展现的出来。
那么如果你想做目标检测,其实我们完全没有必要把所有的观点全部找出来,挺浪费时间的,没有必要。我们怎么找呢?2018年的时候。安克尔菲的鼻祖出现了。他们叫做corronnet。那么从这个名字上面讲。
我们也知道它叫做拐点。你看你不就是想找一个目标检测框嘛?这不是个目标检测框,对不对?那么这个时候我用左上角的点和右上角右右下角的点,哎,我是不是就可以直接合成一个点测框?没毛病吧,两个点。
只要你不在同一条线上,我又可以确定一个框。你看两个点,我确定一个框,两个点,哎,我又确定一个框。那么这个就叫做cornernet。okK这个叫做cornet。没毛病是吧?当然了,我其实我们也知道啊。
呃最开始一大概是18年左右的时候,对,就18年年底好像是反正18年吧,它出现了corronnet,但是当时候并没有掀起多大波澜,为什么?因为corronnet虽然出现了。但是它的精度真的很不好。
跟优lo相比,那简直没法比,真的没法比。我们只能说这个地方提出了一个新的思路,仅此而已。OK。呃,呃我问大家一个问题啊。哎。😊,哎,这个时候有个同学问老师,你刚才反复提到找关键点。
这个点一般只能选择拐点吗?这个问题非常的好,这个问题非常的好。首先我回答这个点你可以选择任意一个点,没没有必要是拐点。我这只是说在最开始出现corronnet的时候。
就是最开始出现aggger free based object detection的时候,我们有了拐点。因为通两个拐点来确定这个矩形框,这是最开始的啊。当然你没有必要这么做。好,我们一会儿会给大家呈现。
我现在问大家一个问题。我们去找目标的两个拐点,请问这两个拐点在整个图像上面出现概率最大的地方大概是哪些范围?我再重复一下啊。我们有两个拐点去定一个矩形框。那么在任意一张图像上面。
这两个拐点出现在图像当中,概率最大的地方大概是在哪七个范围?换句话说,在哪些个范围出现的概率是最小。哎,ly同学说物体边缘没错,啊,应该是图像边缘。其实你看这三个图。
这三个图的拐点基本上都出现在了边缘地带,对吧?边缘地带,你看这儿这儿还有这儿和这儿都在边缘地带出现。也就是说在图像中心内部出现的这种拐点的概率相对较小。现对效小。那么这也是它出现的一个问题。
它出现的一个问题,你就会发现发生了很多的误检测,这是当年carddnet出现的真实问题。当然后面他也用了其他一个方法,比如说叫做cardnet light呀呃或者等等其他方式来进行修改。那么在这儿呢。
我给大家提另外一个新的方法叫做centternet。我们叫sernnetthanernnet什么意思呢?你看从这个名字你就知道。net是网络ser就是中心。那么他的想法就是。哎。我不光光用拐点出现。
因为你的拐点就是左上角和右下角的拐点基本上都在图像的边缘。那么这个时候我同时找一下中心点,你看。图的中心点一般会出现在中心位置,对吧?那么这个时候我既有了拐点的信息,也有了中心点的信息。这样的这样的话。
哎,我是不是就有了一个辅助信息来确定?对不对?为了辅助信息来确定。如果说cornernet。你看啊,如果说corronnet我们的主要作用想法是首先找见了所有的拐点,然后对拐点进行匹配。
那么三条代就是说我不光找到拐点进行匹配,我同时用桌面信息辅助进行匹配。那么这样的话,我三张代的效果就会比你框的效果更加优良。对,角点加中心点。哎,话说到此,我们再我再问大家另外一个问题。
请问两个拐点如何进行信息匹配?两个拐点如何进行信息匹配?你比方说我这儿假如说我给大家再画一个。比如说我这儿哎又出现了一架。新的飞机。哎,又出现了一家新的分析。那么这个时候我的。图大概是这个样子的。
你看我会有两个新的拐点出现。有两个新的关点出现。那么这个时候我如何判断。黄色的左上角的点应该和黄色的右下角的点是一对,红色的是一对。请问哎,我就该怎么样做呢?那么在corronnet当中,哎。
有有个朋友说embedding没错。我们是这么认为的啊,如果两个拐点你同属于同一个目标,那么你们之间的特征相差应该是最小。O相差是最小的,否则相差最大。那么这个确实也很好理解。
那么对于corner sentence来说,它这个提出一个中心区域。你比方说大家来看。对于这个小伙伴,这个人哎我有两个框进行预测。你看啊我有两个框进行预测。那么最后你会选择在哪个框呢?换句话说。
你如何用你的中心点对它进行匹配,它是这么做的。首先我有一个中心点的预测,就是你看到的红色的点。除此之外。我把你这两个框我进行人为的分割。你比方说我分成339等分,如果说你中间的中心区域。
我呃就是我的预测的中心点恰恰巧落在你的中心区上面。那么我就认为这个框的预测是正确的,否则这框的预测就是错误的。那么这个就是sernnet它的一个大概想法。大家要注意啊。
sternet大概是2019年出现的。呃,inbodydding是为了测算相似度。注意啊inbedding是为了测算相似度,就是那个offset。好。呃,你看。嗯,跟大家其实呃聊这个东西,内容越聊越多。
当然我也心里面知道这么短的时间跟大家聊这么多东西,这么详细的东西,其实呃很难给大家讲的非常清楚啊。所以说如果大家对这个特别感兴趣的话,建议到企业中心的平呃,企业在线的平台,然后去看一下我们的。
CV8就是呃CV8小班呃,也可以看一下我们的目标检测和观点检测这两个小课13课。呃,感兴趣的朋友呢可以到我们的后台去问一问。好,那么到此为止就跟大家聊了一下我刚才认为的第一条路,aner free。好。
那么第二条路。呃,哎,我刚才我看到大家会有时候会问一些,就是我们之前聊的一些话题。呃,之前聊的一些话题,由由于我还得回去找我们最后结束的时候,我们可以再再聊一下,好吧,我们先把今天想聊的聊完。好。
我们来看另外一条路呢就是模型压缩。注意模型压缩。呃。有个同学问,anger fade的这些算法速度会比用的快吗?呃,这个你得看是费的,具体哪一个算法呢,知道吧?除了比较速度,同时还要比较精度。好。
为什么要用模型压缩呢?刚才其实给大家举举了个例子啊,我们当我们训练的时候,我们会不计一切计算代价去进行训练。因为我们训练的时候通常会在一个比较不错的显卡上面进行训练。但是当你测试的时候。
你没有办法保证你的用户它在哪个测试平台上测试。我可以放在无人机上也可以放在无人车上。那么我不一般来说我不会抱着我的大电脑主机,或者抱着我大笔记本电脑,然后让我的无人机拖着它飞。
那你就会发现你的电池飞不了一分钟就耗完了。因为绝大部分都浪费在重量上面。所以说我们一般会用于一些比较便携式的一些小的嵌入式设备。或者是你的手机对吧?等等,手机会越来越小。好,那么这个时候就会涉及到。
其实在很多情况下面啊,我根本就。不会过多的关心你的精度到底有多少。比如说你得100分和你得99分,在我这儿没什么区别。当然你比说你一个得了100分,你一个得了60分,这个区别还是蛮大的。
但是精度稍微掉一调,很多情况下我们不关心,我们无所谓。但是我希望你在我的一些便携式设备上面,你依然能带得动。那么这个就是模型压缩的意义。当然模相对的方式有很多很多种,比如说在要给大家大概的列了一下像。
比如说呃。网络减脂networkpro,还有知识蒸馏啊,还有参数量化啊,还有结构设计,还有动态计算等等等等。呃,给大家提一个先给大家提两个吧,一个叫做networkpro模型减脂。什么意思?大家来看啊。
我最开始。哎,这是我的模型。我先随机初始化ok我先随机初始化,然后我去看各种训练。哎,中间这个就是我的各种训练,我训练了很多。哎,我最后的性能发现非常非常的棒,没问题没问题,非常非常棒。
但是呢我很难把这个模型需养模型移植过去,一方面是它的这个题太大。另外一方面我每一个神经院都参与了计算。那么这样的话我的计算量也很大。但是。哎,但是就有老师的但是了。如果你去深入的研究一下,你就会发现。
模型里面的所有神经元并没有全部的参与计算,呃,或者不能这么说,并没有全部的参与最后的预测。它虽然发生了计算,但是有它没它一个样。可以说他就是东郭先生在里面滥竽充数。ok在里面量竽说述。
那么这个时候我们是不是把那些东郭先生一脚给他踢出去?我们只希望留下。呃呃我们只希望留下。比较有用的那些神经元。哎,让他们发生计算即可啊,发生计算即可。那么这个时候就是模型剪知。
最经典的模型剪直呢就是logo net。mobilbonnet这个模型从名字上哎,我们就知道它是应用在移动设备上,它的精度并没有掉特别多。甚至如果你确练的好,你的精度能保持住。
那么这个时候我们哎就完成了一次迁移。这个叫做模型减脂。关于这个猫猫net,我们会在呃就它的这个详细,包括它怎么实现它代码,我们会在呃CV8小班上面给大家具体的讲呃,在这儿就不给大家做过多的说了。
有的朋友问怎么判断哪些是东郭先生。比如说我给大家举个例子啊,当然判断方法有很多很多种,我给大家举举的一个例子,当你模型判断的当你验证模型的时候,你会发现这个模型的参数在训练的时候,又学到训练最后几层。
它并没有发生太大的改变。同时你把它直接删去。最近呢你把它删去,你会发现精度并没有发生太大的变化。那么它就是东郭先生。好,那么除此之外呢,再给大家讲另外一个。叫做动态计算。什么叫做动态计算呢?
比如说我今天我不想减只了,呃,我懒个判断哪个是东国先生的?没问题,可以这么做。但是呢我们又想让他动态分分配。你比方说。今天我的手机放这儿了啊。我的手机放这儿。我没有办法保证我的手机在使用的时候。
比如说我在户外使用的时候,我的电量永远有电,你没办法保证。当然有同学说你带个充电宝呗。呃,咱咱不考虑这种情况啊,只是说一般情况我就拿你手机在那测,或者是说你的无人机,无人车,你就在天上飞就地上跑的。
你就那测测的时候一会儿有电,一会儿没电。或者说电量会不停的下降。那么这个时候我就问大家,当你在手机或者是你的测试位电量充足的情况下,哎,这个时候我们就可以让我们这个模型的这个测试发挥到极致。
你测试的百分拿100分没问题,对不对?但是当你的电量不足的时候。那么这个时候我们是不是就没有必要。要100分儿。可以说你给我90分,我就可以,我就满足了。我只是希望现在发生的时候。
我知道前面大家有个什么物解即可100分和90分对于我来说都可以接受。但是对于我的电量来说,我测个90分的,哎,我就可以了。我不需要再继往下深入计算了。我不想追求那个100分极制。
那么这个时候就要做动态计算。如何让你的呃计算机去主动的分配。那么这是研究的另外一个哎方法动态计算。呃,刚才有同学问呃,我们刚才说的这个CV8小班讲的这个net就是去通过相应的方法吗?啊,你们正好问对了。
你看我也为了回答大家这个问题啊,我把这个这块这个呢是CV小玩吧里面的一个。关于这就是一部分它的那个内容一部分。那么这个地方呢,在这个地方你看轻量级卷积神经网络搭闸器。
包括重点给大家讲一下猫包net系列网络架构,如何深度压缩。那么这个就是刚才老师讲的如模呃网络减脂的方法。okK呃,当然了,我们也会带大家就是比如说如果你对这个开口比赛呃有兴趣的话。
我们给大家就是做一些介绍。包括呃讲解里面的一些呃经典的一些呃竞赛的案例等等。那么这些呢都是CV8里面呃就是聊的一些内容。当然了。呃,这么说。呃,在这儿呢我只能给大家就是列一些比较呃。非常不能说很详细啊。
只只能说给大家列一下。唉,有同学问那个net叫什么名字?这儿mobilnetok mobilenet。🎼我个人建议。我个人建议大家去看一下CV高级8,这个地方有二维码,大家可以去扫描。
那么在CV8当中呢,我们会有六大企业级项目。okK我们会有六大企业级项目跟大家讲解。呃,这六大企业级项目呢呃分别是跨境追踪多模态、图文搜索系统、人体自态估计系统、视觉跟踪系统。
基于基因的查询分类系统和图像分割系统OK。呃,可以这么说吧,在市面上的其他辅导机构当中有六大企级项目的少之又少。我们会有三个博士老师。来给大家具体的讲解这6个项目。OK。呃。
这位小班班呢会在6月15号开班。呃,如果大家感兴趣的话,强烈建议大家越早报名越好。因为会有专门的老师跟大家进行对报名学员进行对接。我们会有班主任、助教老师OK。
那么这个就是我们今天要跟大家聊的全部内容。非常感谢大家关注我们。OK那么大家今天还有什么问题吗?😊,我会把整个这个呃今天讲的这个花灯片发给大家,发给老外发给大家。最后讲通态压缩没有讲完吗?讲完了呀。
周二今天实2有线没有给大家没有时间跟大家做太详细的介绍。所以这也是为什么我们强烈推荐大家去看一下CV高级小蓝吧。在这个里面会跟大家讲如何具体进行压缩。
啊。啊,这么多问题老一一看啊,我老是倒着看吧。什么叫做。优o系列相比二阶段网络不好创新呢?这个是什么意思?老老是没搞明白。那有你再你再详细想下你的问题,老师不是特别明白你写的这个什么意思啊。呃。
还有一个同学问,有同学一开始问呢一漏输出4个点还是什么意思?们没有什么4个点。当时有同学是问这个。他是问的这个这个的意思是说,在不同的FPS下面,我们达到的这个精度,明白?不同FPS下面达到精度。
放十2C烟没有SPP。为什么会有不同的FPS这可以你这个你可以自己设置呀。像王同学问,想专门学习模型压缩,咱小班分方向吗?咱小班会分方向。注意啊,咱小班会分方向,而且我们我们我给大家快速过来啊。哎。
sorry,我重新给大家开一下。注意啊,咱想班会员方向,而且在小班里面嗯所有的项目呃,你都会。所有的项目呢你都会这个呃有所了解,你都你可你都可以学习。但是呢你同时也可以选择你具体想做哪些项目。
注意你具体想做哪些项目。那么在这些项目当中,比如说你选择了项目5,基于GNN的产品分类系统。那么这个时候呃我们就会专门有老师,就我们数学老师会专门盯你的项目5,当然你同时也可以听其他所所有任何项目。
你选择项目五或者是项目三都可以。小班多长时间小班大概是在6月15号开班。嗯,多长时间大概是我看一下啊,三个月的学习周期。对,3到4个月。具体的关于这个课程的话,我建议大家。问一下我们的后台老师。
问一下我们的小七,好吧,具体的呃,他会跟大家对接,具体的包括如何报名,嗯,还有你的能力测试,还有学习过程中需要准备什么?这是在前阶段会有老师跟你对接。呃,那么在学习的过程当中呃。在你的学习过程当中。
会有助教老师和我们三位博士级别的任课老师跟你一个一个的细聊。从论文创新的角度来说,二阶段的网络是不是比优lo更容易找到优化的方法?二阶段的网络。和优化的方法。不尽然吧。loV4PSPP有个特点。
这个特点是不是主要就是刷注意啊,CSP模块和SPP这是两个东西。注意这两个东西。CSP模块主要是作于那个backboard骨价网络上面,它用的CSP搭的53SPP是另外一个呃。
它跟CSP完全没有什么关系。对我也是高级班的主演老师之一,我是三个老师之一。fat RRCN对采取的ROY铺dding有金字塔味道,这个是对的。但是fsCN并没有SPP。ok大家还有其他什么问题吗?
我建议大家就是之后在我可以和我们的小七或者是后台工作老师多互动,多聊一下我们的关于CV小班八的这个呃关于CV小班八的这个具体的呃流程。SPP是不是就是金字塔SPP的全称我给他我给你找回去啊,稍等。
我给你找。SPP的全称叫做空间金字塔石化。对呀,他要空间金字塔石化。它这个这个持发过程,其实就是从21个图片块中分别计算每一块的最局部最大值。
这样的话就可以通过SPP就把任意大小的图片变成一个固定大小的21位的特征。嗯,这样吧,关于这一块呢,其实怎么说呢?今天的公开课只能跟大家聊一聊表很浅层的表面的东西,只给大家罗列一下,总结一下。呃。
然后具体的那个。具体的那个。里面的细节还是建议大家去还是建议大家去呃我们的真实的课堂上面进去学习。好吧,那个里面才有更多的时间跟大家了解。网同学问优乐V4可以改更改学生框吗?
你想问的优乐V4可以更改预设毛框,应该是这个意思吧。我给大家打到这儿。呃,优V4它本身并没有带自适应的这个呃毛框,就是那个毛框的比例。呃,但是你可以自己改优乐V5,它本身是自带的啊,它是可以就是自适应。
它去呃先搜一下你的这个呃输入的图像,然后去定义最佳那个毛框比。但优乐V4它没有这一步。但是你我们可以自己直接在程序里面改,这个是没有问题的。🎼OK那么今天的时间也不早了,那么我们就先到这里。呃。
之后大家有什么问题的话,也可以呃联系我们的后台工作后台工作老师。好吧,那么我们今天先到这里了。我们会把课件发给我们的后台工作人员,到时候他如果大家想要的话,可以学要一下。呃,想回看视频的话。
也可以到我们7月在线的官网呃CV公开课,然后进行回看。那么我们今天就到这里了,谢谢大家,谢谢lucky谢谢ro咪,谢谢王同学。好,拜拜,祝大家周末。
人工智能—计算机视觉CV公开课(七月在线出品) - P14:【公开课】电商图像检索原理与实践 - 七月在线-julyedu - BV17z4y167dq
好。那么大家之前对这个图像检索有了解吗?如果有了解,或者是说想学习啊,什么有什么什么问题啊,也可以在我们的一个弹幕区里面发一下。对,我们待会儿就开始我们的一个直播。嗯。
那么各位同学之前学过这个深度学习相关的嘛,或者说有没有这个。计算机视觉相关的一个基础呢,也可以在我们的一个。弹幕区里面跟我说一下。大家之前的基础经。好,我们再等5分钟就开始啊。对。嗯。
然后嗯我们今天主要讲的是这个电商领域下面的一些图像检索的一个原理和一个实践的过程。然后图像检索呢,其实很多同学可能不太熟悉啊,我们待会儿呢也会做一些介绍。对,当然也有一些代码的一个实践啊。
所以说也是嗯非常不错的。然后今天的一个课程,我们大概总共是一个小时左右的一个时间啊。好呃,那么各位同学大家好啊,然后我是刘老师。然后今天呢我们就给大家花一个小时的左右的时间呢。
给大家讲解这个具体的一个电商图像检索的一个原理和一个时间的过程啊,一个小时左右。然后呢,我们在讲解的过程中呢,如果有任何相关的一个问题啊,都可以在我们的一个嗯弹幕区跟我进行互动。好。
然后我们就开始今天的一个课程啊。我们今天呢就是主要的一个嗯课程内容呢分为四部分啊,就是说第一部分呢是图像的一个特征提取。第二部分呢是图像的一个检索流程。第三部分呢是嗯archface,就是这个。
原理和实践。第四部分呢是这个图像检索的一个加速的方法。然后就是我们来开始啊。然后呢,我们先看第一部分那个图案特征的一个提取。嗯,图案特征呢我们这个地方呢会分为全局特征和局部特征来分开进行讲解。嗯。
我们都知道啊,这个图像呢其实它是一个就是非结构化的一个数据,非结构化。啊,非结构化是什么意思呢?我们现实生活中呢有结构化的数据和非结构化的数据。嗯,结构化的数据一般情况下就是我们的这种表格类型的数据。
表格类型的数据表格类型的数据呢就是我们原始的数据集呢由我就是说类似于我们的这种excel的类型的一个数据进行一个存储和展示的。我们有我们的一个行,有我们的列,对吧?行和列,就相于是一个二维的表格。
行和列两部分所组成的行列。这个地方呢每一行是一个样本,每一列呢是一个字段,这是我们的一个具体的一个结构化的数据。那么非结构化的数据呢,比如比较常见的,就是说我们的这个image。图片。还有我们的文本。
还有我们的这个视频。这些相关的。那么它都是一个具体的一个就是非结构化的数据。非结构化的数据呢,它不是规整的一种形式,就是说不同的样本,它的一个具体的一个就是说维度啊都是不一样的,啊吧?
举一个非常简单的一个例子,就是说我们的图片啊,它有的是呃200乘200的,有的是500乘500的对吧?所以啊就是说尺寸是不一样的。那么图像呢是一种非典型的非结构化的数据。那么我们在这个地方呢。
我们就需要找到一个特征或者说一组特征去描述我们的图像,而且呢这个描述的时候呢,我们是需要保留这个图像的关键的一个信息,它一些关键的一个信息。我们需要把它保留下来。嗯。
其次呢我们是需要对这个特征进行编码的。编码就是说我们需要把它编码成一个相同的维度。这个维度嗯,我用英文就是一个deam,我们需要把所有的特征呢,所有的图编呢把它编码成一个相同的维度。
因为我们如果是把所有的图片,它的一个特征编码成相同的维度的情况下,我们接下来才好方便计算我们的一个相似度。对吧所以说呢我们这个图像的一个特征提取呢,就是关键就是如何描述这个图像。
如何对特这个特征的一个图像去进行一个具体的一个编码。那么我们再看右边这个图,就是说我们即使是同一个蒙娜丽莎的一个画像,它在不同的一个角度,不同的情况下。
其实它的一个呃就是说我们的一个图片它的内容其实相差蛮大的。有就是说原始的蒙娜丽莎的,有这种带相框的,带旋转的,加字幕的等等,还有画动画,还有这种旋转的对吧?我们那个图片其实它的一个具体的一个形变啊。
以及角度啊,可变的一个维度就是非常多的。那么在这个地方,我们想要把这个蒙娜妮莎它的一个主体的信息,把它。进行描述,而且进行编码,其实是一件很困难的事情。
那么这个地方呢有可能有的同学已经是呃之前学过我们的深度学习的时候,已经有同学或许就知道哎,我们这个地方是不是能借助于这个深度学习的一个特征来完成一个建模。
或者说利用深度学习的一个特征来进行一个我们特征描述,其实是可以的。那么这个地方呢,如果是用深度学习而言呢,我们在深度学习里面最为常见的任务就是我们的一个分类的任务。我们的imageclass。
对吧我们把这个图片对它进行分成具体类别。但是呢在我们的图像检索的任务里面呢,我们的一个具体的一个就是说呃。图片它的在同类之间,它的一个具体的一个差异性是蛮大的。比如说我们在同同样是湖泊。
它们之间的一个具体的差异性。比如说这个是我们的正常图片。这可能是我们的一个相当于是两个看图或者广角的。然后呢我们在。不同类别之间其实也有比较大的一个相似性,对吧?这个是狗,这个是人对吧?
所以说在这个地方呢,如果你单纯的用分类来做呢,其实也会遇到一些相关的一个问题,或者说很。那么这个地方我们其实。检索和分类很多程度上是可以参考的,但是呢还是存在一定的差异。在这个地方呢。
我们就是说如果想要把图像检索学好呢,就是需要思考一下我们的图像的特征。我们如何是与现有的一个任务相结合的。我们现有的任务呢就是主要是这个分类,你如何将我们的图像分类的一个特征把它用来检索。
那么这个地方如果大家对图像分类和图像检索还不太熟的话呢,再给大家解释一下分类就是我们是需要。输入一个图片,我们得到它的一个类比。这是我们的分类的,就是说建模需要完成的。我们的检索呢就是我们输入一个图片。
我们是想要找到跟它相似的。图片。就是说我们最终是找到跟它相似的图片,不是把它转换到一个类比了。不是的,所以说在这个地方呢,我们是有很多时候呢是需需是在做一个计算相似度的一个过程。
这是我们的分类和检索的一个非常关键的一个区别。那么我们的图片特征具体是可以分为啥呢?我们具体图片特征呢是分为这种全局的和局部的。全局的和局部的。全局的呢是比较关注于我们的一个就是说图片的一个整体。
局部的呢是我们的这个特征呢是会关注到我们的一个图片的一个细节。两者是有什么一个区别呢?全局的一个特征,我举个非常简单的一个例子,全局特征我们那有一个图片呢。我们是把它转成1个512维度的。
那么一个局部的呢。我们会把可能会把它转成。50乘以1个128。或者说70乘以128这样的一个纬度的一个就是说。那么在这个地方呢,我们的局部特征它的一个细节就是说数量是不固定的。一个图片啊。
假如说我们这个地方的一个局部特征是这种关键点的话,一个图片它里面的关键点的个数是不固定的。所以说我们的一个图片它提取得到了一个特征的一个维度是不定的。
那么每个假如说每个关键点的一个纬度是1001128维。但是呢关键点的数量我们一个是50,一个是70,图片不一样。所以说这是他们在提取完特征之后,它的一个存在的一个数量上的一个差异以及维度上的差异。
那么在这个地方呢,我们如果是用全局特征。我们接下来就可以很方便的做一个图像检索,对吧?我们直接算这个全局特征之间的一个相似度就行了。但是如果是局部特征的话,我们就需要做一个编码。我们如果是数量不定的话。
我们假如说是仍然是50乘以128。和1个70乘以128的一个图片。接下来我们本质就提取成两个矩阵。我们如何计算这两个矩阵的一个相似度呢?对吧这个。这个才是我们接下来的一个问题。好。
那么我们再看右边这个图啊,就是说深度学习的一个特征,这是我们的CN的一个特征啊,这本质就是我们CNN的一个特征。全定神经网络的。那么我们在提取特征的时候呢,我们就输入一张图片。
通过我们的一个卷积层的一个计算,然后通过我们的铺ing。这个呢只你可以直接借助于现有的这个imagenet的一个预训练模型。然后呢,这个地方我们不是不是做最后的分类啊。
就是说我们的呃imagenet这种分类的模型呢,就是说是卷积层铺层,然后再加上全连接层,我们不需要这个全连接层。我们把这一层。技术掉,我们只需要它在卷基层的一个特征,就是说它的1个CNN的1个废。
这是我们想要的,我们不需要它最终通过全景集行到一个分类啊,我们只需要让它提取这个CNN维度的特征就行。那么我们也知道这个CN维度的特征呢,其实它的维度也是固定的。我们的当我们的神经网络确定好之后。
我们的这个CN维度的特征呢,其实它的维度也是固定的。好,那么这个地方呢,我们的一个图像检索呢,它。具体的特征我们给大家讲的啊,全局的和局部的。那么图像检索具体的任务呢,我们还可以划分为什么任务呢?
有我们的一个相似图像检索和我们的一个相同图像检索。这个地方呢其实相似图像检索和我们的相同图像检索基本上都是检索。但是呢就是它的一个力度是不一样的。相似呢就是找到跟它同类或者说比较类似的。
相同呢就是完全找到要一致的。那么这个地方呢,我们的一个再来看呢局部特征。局部特征的时候,你们发看这个例子啊,我们都是这个动这个卡通的一个图像。然后呢,我们局部特征其实它是可以把这些关键点。
给他匹配上的关键点给它匹配上的。那么这个地方。我们的一个局部特征呢,它往往是能够将相同的一个图案,它的一个具体的关键点可以把它匹配上。那么在这个地方呢,就是我们是可以做这样一个判断。
或者说做这样一个思考。就是说我们在图案检索里面,我们到底是使用全局特征呢,还是使用局部特征呢?就是说我们这个地方我们不是有相似图像检索和相同图像检索嘛。那么我们到底是用这个局部特征呢,还是全局特征呢?
那么这个地方呢,就是说。看你一方面是看你具体的一个任务,我们的任务到底是什么。第二个呢,看你具体的一个在图像检索的做的时候,你到底需要找到的是什么?如果是在计算机视觉里面。
也就是说我们具体的任务是这种分类的任务。分类的任务的话,分类的任务呢我们是肯定是直接用卷接神经网络,用CN的一个特征会比较好。对吧那么这个地方我们的分类任务到底有哪些呢?我们的一个图片分类。
我们给另一个图片给它划分成划分到一个具体类点,或者说我们的语义分割,我们给另一张图片,我们是将它的一个具体的一像素点进行一个分类,对吧?语义分割其实本质也是一个分类。那么其实我在这个地方呢。
我们就是用CN的一个特征会比较好。但是呢如果是在一些版权检索相同的图像检索特别相似的一些图像检索的一些任务里面,我们就比较适合用局部特征。我们刚才也讲了,局部特征呢。
它非常适合用在这种相同图案的一个检索,它不是它不会考这种局部特征,它。有一些点是没有匹配上的对吧?你看这些关键点,这个地方的一个圆圈就是一个关键点。那么这个关键点呢,你会发现就是说它并不是说是。
嗯所有的关键点都都能匹配上,而且这些背景也不会匹配上。它只会关注到我们的一个局局部的一个细节,是不是匹配上的。那么我们的如果是应用在一些版权检索相同图像检索。
或者说极为相似的一个图像检索的一个任务上面呢,就比较适合用局部特征。那么这个局部特征呢,我们是可以用局部特征的一个匹配点的个数。或者说我们的局部特征。
它通过编码之后的一个计算的一个相似度来做我们的一个衡量。好,那么这个地方呢我们给大家讲清楚了,我们有局部特征和我们的全局特征,以及我们的局部特征和我们的全局特征各自用在我们的什么的任务上面。好。
那么我们就继续。那么有同学可能就会问到,老师,既然你讲到了这个图像检索以及全局特征和局部特征,以及讲到了这个相似图像检索和相同图像检索。那么我们如果是我是一个小白,我该如何进行学习呢?嗯。
这个地方呢就是说如果你是一个小白的话,或者说你之前对计算机视觉不太了解的同学,我非常建议你去学习一下,就是按照这个路思路来进行学习啊。第一个呢就是你要学习一下每一种图像特征的一个原理。
我们现在图像特征提取呢不仅仅是呃有这种卷积神经网络和这个。一些关键点,还有一些很多的一些图图像特征的一个提取方法。这个具体的一个原理是什么?它的一个计算的过程是什么?以及它的一个优缺点是什么?
每类特征的一个优缺点的到底是什么?这个呢就是说你在学习的时候是第可能是第一步还是第二步。第二个呢。就是说我们的第三步,你需要学习一下我们的局部特征,我们如何把它转为全局特征。
这个其实我们之前也会就是一直给大家讲的,我们的有1个50乘以128和我们的1个70乘以128,对吧?就是我们把它写在一起啊。你把它写在一起,就是50乘以28和70乘以28。这个维度是我们的关键点的个数。
就是我们的一个key point的一个个数。这个维度呢是我们的关键点,它的一个每个关键点的一个维度。好,那么这个地方我们是需要把它统一编码成一个相同的维度的,就是它们的维度是不固定的。
不同的图片关键点的个数是不固定的。我们需要把它编码成相同的维度。因为我们把它编码成相同的维度之后,我们接下来。进行一个相似度的一个计算才有意义。而且它也更加方便。
所以说第三个问题就是说我们如何是如何将一个局部的资源把它编码为一个全局的资源。对,这是第三个问题。第四个问题就是说我们的CNN呢卷积神经网络呢,其实它默认是可以提取这个全局特征的。但是呢现在一些发展。
或者说现在有些前沿的一些论文呢,也可以用CNN提取一些局部特征。在原始的一个就是说我们的图片分类的。就是说在im内测上。构建的一些预训练模型呢,它基本上是得到了一个全局特征。
但是呢我们的有一些CN的一个图片的这种卷积神经网络呢,它也可以提取一些局部的。这种CNE也可以用来提取这些关键点的,是有有一些相关的一些工作。所以说呢如果你想要把这个啊就是同像解锁学好了。
你可以按照这样一个路径来进行学习啊。绝对是啊基本上肯定可以入门,而且是能够到进阶的。那么我们接下来呢就给大家介绍一一个个介绍一下我们的具体的一些图像特征的一些提取的方法。
首先呢给大家介绍的是这个图片的一个哈希值。我们都知道这个图图片呢,这个地方的花吸值呢你可以理解它有点类似于这种图片的一个。有点类似于这个文件的1个MD5。
MD5MD5呢就是说我们用一个字符串来衡量这个具体的一个。我们的一个文嗯文件的一个内容,对吧?那么这个地方呢图片的花析值呢,它更进一步,它其实是利用。
他不是说你单纯的将这个图片的一个信息从文件的角度做一个编码,不是它是利用这个图片的一个内容,有有点这种内容理解的一种感觉。它对图片的内容进行一个计算。它那个计算具体的一个计算的步骤。
就是说我们将这个图片进行一个缩小,缩小到了一个指定范围之后,然后提取这个图片的一个具体的一个特征。然后这个图片的特征就是这个原原就是如果是对这个图片的一个像素值进行一个量化。
然后再把它转为一个具体的一个字符串。那么这个图变化一直我们有这个D哈是A哈P哈式和W哈0。具体的计算的过程啊,就是有一些小轻微的一个,就是说有一点小小的一个区别。
但是整体的流程就是先把图片缩小到一个指题范围,然后将它整成整个字符串。那么这个图片哈希纸呢,它可以用在一个什么样的一个场景呢?或者它的优缺点是什么呢?
图片哈稀一值的一个优点就是它是能够用一个固定长度的一个字符串来表示我们原始的一个图片的一个内容。而且这个固定长度呢,它一般情况下我们是1个64乘664的一个,就是直接长度是64的一个字符串。
那么我们也知道啊,这就是如果是自符串的话,它是固定长度的话,我们可以很方便的可以把它存到我们的一个数据库里面。那么这样呢我们的一个。就是说直接用一个字符串来代替它原始的一个图片。
这样呢它的一个计算的一个资源与占用也比较少,对吧?如果两个图片的一个它一直是相同的,那么它的一个具体的一个内容就基本上都是相同。好,那么它的一个缺点就是说我们如果是对图片的一个改变。
假如说我们对图片的一个具体的一个颜色做了一个变化。或者说我们对于这个图片的一个呃内容啊做了一个旋转。那么如果是这样这样的话呢,就会改变我们的一个具体的一个哈希质量。就是说。
我们的一个签当于是我们把一个图片啊。That was say X。和我们的FXE撇。我们把它做了一个变换之后,那么得到的我们的字符上。它就不一样了,因为这个地方它直接是。计算的一个逻辑就非常简单。
对我们图片进行缩放,然后计算它的一个具体的一个我们的一个。值的一个变化。好,这是第一个缺点。第二个缺点呢就是存在不同的一个图片,它的哈希值是相同。就是说图片不同,但是哈希值相同。这也是存在的。
就是说如果两个图片它整体的内容是不相似的。或者是完全不同的两个。内容,然后它也存在,有可能它的IT值是一样。所以说这是图片IRT值的两个具体的一个缺点。那么我们接下来介绍第二个啊颜色直望图。
颜色这帮图呢在我们的一个数字图像处理的一个教材里面肯定都会讲的。它是一个非常非常典型的一个就是说全局特征。它是将我们的一个图片的一个颜色的一个像素点的一个取值的分布。用来进行一个统计。统计完成之后呢。
然后绘制得到我们的一个具体的一个统计这帮图,然后利用我们的统计这帮图来进行表示原始的一个图片。那么这个地方我们嗯看右边这个图啊,就是我们是将我们的RGB3通道的一个具体的一个。
就是呃我们的一个像素的一个统计的一个情况,从0到25的一个情况,然后进行统计,然后绘制得到我们的直方图。这个直方图我们这个地方是用这个线来进行表示的啊,我们有用这种柱状图来进行表示。
那么我们仍然是可以把它转换成这种向量,对吧?这个地方我们Y轴呢是我们的一个具体的整个像素对应像素取值的个数。我们是可以把它做一个规化的,然后把它转成一个向量。那么这个地方呢,我们的一个颜色脂房图。
它这个优点是什么呢?它是可以抵抗我们的一个图片的一个旋转和平移的,基本上是可以的。你的图片的旋转平移或者翻转,其实不改变这个图片像素的整体的分布的,它是不改变的,对吧?但是呢它是有一个缺点。
就是说它这个颜色的一个变化是挺明准。因为我们这个地方颜色指棒图呢,它是直接统计了这个颜色的整体的一个分布。孔金的颜色整体的分布。那么这个颜色如果有改变的话。
那么你的一个颜色脂肪图整体的就会存在一定的一个差异。好,这是颜色脂肪图,它存在的一个优点和确定。还有一类呢就是我们的一个关键点shiftft ORB啊这些局部关键点的一个特征。
那么这个关键点呢就是说它在我们的一个数字图像处理里面,我们叫做这个key points,对吧?key point。图片关键点,而且这关键点呢,它的数量我们刚才也讲了,在不不同图片里面。
它的一个数量是不同的。就是有的图片它可能提取到100个关键点。有的图片呢它可能只能提取到我们的1个50个关键点,这都是可能的啊,而且是存在的。那么这个地方呢,我们如果是用这个关键点。
我们怎么去衡量两个图片,它们之间是不是相似的呢?我们是提取两张图片的一个关键点,然后呢让这两张图片进行一个关键点的一个匹配。匹配的个数越多,就表明就是说这个地方能够匹配的成。
就是说这种关键点对它的个数越多,那么它的具体的一个相似度就会越大。对吧那么你可以看到这这两张图片,对吧?基本上上面的这是一类关键点的一个对比,下面这是一类关键点一个对比。
你会发现它基本上都是啊很相似很相似。那么这个关键点呢,其实它的一个优点就非常多了,它是能够抵抗图片的一个旋转平移和形面。而且对我们的一个图片的一个颜色变换,也都是有一定的一个鲁棒性的。
但是呢这个关键点它也存在它的一个缺点,就是它是速度是比较慢的。因为我们这个地方会涉及到关键点对它的一个具体的距离的一个计算。那么这个具体的一个计算,其实你可以理解就是一个需要计算很多次啊。
这个关键点需要跟我们这张图片的所有的关键点都需要计算一个相似度。对吧相当于是我们是需要计算很多次。计算很多次的话,这个速度是非常慢的啊速度非常慢。而且这个计算呢其实嗯很多程度上呢,我们是只能在。
或者说在CPU上的一个实现呢会比较方便。那么如在GPU上面呢,我们的一个实现会稍微慢一些。而且需要做一个相应的转换。这是第一个缺点。第二个呢就是它容易受到一些文字的影响。
这个关键点呢我们很容易抽取到一些文字上面。因为这个关键点其实本质就是在做一个呃相当于是利用这些边缘信息来计算得到我们的一些关键点的位置。那么这个文字的一个文字呢,它有这种非常强的一个边缘的一个信息。
这个边缘信息呢,我们就很容易抽取为一些关键点。那么我们假如说两张图片如果是有相同的一个文字,那么就很容易。就是说把它也给匹配上。好,这是我们的一个图片的一个局部特征,它的关键点。
那么我们接下来给大家讲一下,就是说我们如何将我们的一个图片的一个关键点的一个具体的一个。那信息局部特征把它编码为一个相同的一个纬度。好,我们这个地方呢我们的问题是这样的,我们有一张图片是50乘以128。
有一张图片呢是70乘以128,这个128呢我们是shiftft的一个特征的一个纬度。safe特征的维度。然后这个地方呢,我们50和70呢,它是我们的关键关键点个数。
kingpoint numbers是吧?关键点的个数不同的图片我们提取到的关键点的个数就不一样。那么我们现在的一个问题是,我们如何将我们的一个具体的。两个维度不一致,确定是它在数量上不相同的这个矩阵。
把它做一个编码。我们试试图把它编码成一个相同的维度。把它编码成一个相同的维度。那么这个地方呢,我们是需要把它编码成一个。一乘以N。一乘以N的一个纬度。那么这个地方呢。
我们就是说我们的问题是需要把我们的一个具体的一个图片呢,把它编码成一个相同的维度,而且这个维度是相同的啊,都是N。我们来看我们怎么做的。我们做的方法呢就是说我们是分三步啊,我们先讲它的步骤啊。
然后给大家解释一下。第一个呢是我们可以提取所有图片的一个特征。这个特征呢我们就是说我们有的图片呢是50。乘以128,有图变的是70乘以128。有的图片呢是100乘以28。
我们就是这是第一步提取所有图片的一个关键点的一个特征。然后呢对我们的这个特征呢进行一个聚类。我们把它提取完,提取完成之后啊,我们可以把它拼接到一起。拼接到一起,这个50加上70加1100。
相当于是我们的220,对吧?我们把它拼接到一起,就是220乘以28。然后呢,我们对它进行一个聚类。就是说我们是。把它的一个特征进行一个聚类,我原始的关键点个数是220乘以28。我们需要把它聚类。
这个聚类呢聚类中心的每个类别中心的纬度呢是128。128,那么我们这个地方呢是需要把它进行一个聚类。比如说我们把它锯成五类的话,我们就是5乘以128。5乘以128。
这个地方呢我们的嗯哪个类别的中心的纬度是128。我们把我们的1个220个关键点把它聚类成5个。好,聚列成5个之后呢,我们接下来可以做这样一个转换。我们可以对我们的一个具体的一个原始的一个特征呢进行。
我对我们的一个剧离中心进行一个映射。这个地方我们5050个关键点,我们把它在我们的5个类别中心里面进行一个转换。我们接下来就可以把它转成一个1乘以5的一个向量。其实把它在内别中心上面进行一个转化。
那么接下来。把它转成一个1乘5的向量,类似的100也可以把它转成一1个1乘5的向量。这个向量里面每一个取值是什么呢?这个项链面它是一个相当于是50个关键点,在每个类别它映射之后的一个具体的一个数量。
那我们看右边这个图你就能理解啊,我们对于我们的图片呢进行一个具体的一个特征的提取,然后完成一个聚类。聚类完成之后就是到这儿啊,我们用key means完成一个聚类就行了。聚类完成之后呢。
我们就是可以得到我们的一个具体的一个类别中心。然后呢,我们有了一个图片,有了它的一个具体关键点的一个信息之后呢,我们可以对它的一个具体的一个类别进行一个映射。也就是找到他最近的一个。我们的一个聚类中心。
然后把它做一个编码。这个地方我们的一个具体的每个聚离中心呢,我们把它叫做一个word,就是一个单词。然后呢,我们相当于是我们把原始的一个不定常的一个关键点信息呢,把它编码成相同的一个。
就是说由word所组成的这个向量。比如说我们的这个1乘5对吧?它有可能是。1。Ci。101010,也就是说我们原始的1个50个关键点,在每个类别上面。这每个类别啊每个类别的一个类别中心性面都占据了。
10个总共加下来是50个。如果这个是地方是70呢,有可能这个地方是。101010。是30对吧?总共加起来是70。也就是说这个地方。这个图片里面跟这个关键点。跟这个类别非常相近的关键点个数有10个,对吧?
那么这样呢,我们是可以将我们的这个具体的一个嗯这个不定常的一个特征呢,把它转成一个定常的维度。这个维度呢个数就是我们的聚类聚类的个数啊,就相于是我们的一个类比的个数,word的个数。好。
这个就是我们的一个具体的一个特征。bago words的这种方法,就可以将我们的一个具体的一个图片的一个特征,从不进场转成进场。好,我们接下来就看一看我们这个具体的一个图像的一个检索的流程啊。
当然我们这个CN的一个特征呢,我们也会给大家展开讲。我们这个图像检索呢基本上是基于现在都是基于这种内容的一个图像检索。基于我们的一个内容图像检索呢,就是说我们拥有这个图片之后呢。
我们是希望通过我们的一个图片的一个内容,然后计算得到跟它相似的一个图片。那么我们怎么做了呢?我们本质需要有这样一些步骤。
我们这些步骤呢就是首先我们需要通过我们已有我们有一个image的一个dabbase。这个dabbase就是我们的一个图片的一个仓库。这个图片的仓库呢里面我们是需要从里面进行一个检索找到待选的一个图片。
这个image的 database呢,我们是需要进行一个特征提取,然后抽取到它这个特征,然后存到我们的一个具体的数据库里面,或者把它存储下来。那么我们如果有了一个具体的一个。
query的图片呢就是说我们需要待检索的图片呢,我们也是提取一个特征。提取完相同的一个特征之后呢,其实本质这个地方我们假如我们的dabbase里面有500张图片,我们的一个特征提取完成之后呢。
我们的维度是。500乘以100每个特征,每个图片我们接下来把它提取成100维度的。那么我们如果一个quere的图片呢,我们也把它抽取成一个1乘100的一个向量。那么接下来就计算一个距离就行了,对吧?
在我们500张图片里面找到跟它最相似的图片,然后做一个返回,这个就是我们的一个图片检索的一个具体的步骤。对吧提取特征,然后进行检索,其实非常简单。那么我们现在呢基本上如果是基于内容的特像检索。
基本上流程就是这样的啊,先提取特征,然后计算一个相似度。其实本质的流程都非常简单。那么我们的特征提取方法到底有哪些呢?我们特征提取方法,有这种嗯传统的特征提取方法。我们的这个图片颜色、直放图啊。
关键点啊,或者图片哈希纸啊都是可以的。好,这是传统的特像特征提取方法也可以使用我们的深度学习的方法来提取我们的特征。深度学习的呢就是我们利用卷积神经网络来做我们的一个具体的一个特征的一个提取。
当然我们当我们的一个特征提取完成之后呢,我们接下来可以做一个相似度的一个计算。相似度的计算就是我们直接计算一个相似度就行了。计算一个相似度就行了。那么这个相似度的计算呢,我们可以把它具体的一个展开。
就是可以做一个特征的一个索引和相似度的计算。好。那么我们如果是用这个卷积神经网络来提取我们的一个特征呢,我们这个里面还有什么细节呢?如果我们用卷积线经网络来提取我们的一个特征呢。
我们的一个具体的一个网络呢是可以分为我们的一个卷积层磁化层,我们的一全连接层的。就是说我们的这个具体的一个图片分类的一个网络结构啊,就基本上是我们的卷积层植化成构全连接层。当然还有一些其他的想比。
比如说我们的ba normalization啊,这个呢我们就就是说把它先忽略掉。那么我们的卷积层呢是用来提取我们的一个像素,它的一个特征进行一个高级的一个表征。
然后我们的池化层呢是对我们的一个具体的特征进行一个有效的一个降维和编码。那么这个池化层呢,我们有这种me pullingarrange pulling。
当然也有一些我们基于这种我们的attention机制的。对吧比如说我们把它加入这种我们的一个区域聚合的这种mac或者是rem都是可以的。那么这个ping呢其实对我们的一个最终的结果。
其实有一有一点点的影响啊。max pulling是将我们的具体的一个图片的一个内容的一个,相当于是它的最为显著的一个信息给它保留下来。
me pulling mean pulling呢是把它平均的这个信息把它保留下来。其实也有一定有也有一点的一个精度的差别啊,但是差别不会特别大。那么我们的池化层具体在做什么呢?
这个池化层基本上就是对我们的一个图片的一个。特征是对它进行一降维的。其次呢是对我们的一个图片呢,把它剔除它的一个位置的关系。也也就是说我们的具体的一个位置的一个关系。🤧我们。
是把可以把它的一个未置的关系呢给它把它剔除掉。因为我们看到这个前面的啊。这个具体的一个图片的一个位置,对吧?你的一个特征,我们是把它铺lling之后,其实是把它关键里最大的一个信息给保留下来。
我并不关注它之之前是在什么位置,对吧?相当于是我们把它位置这个影响的因素,可以把它剔除来。那么这个地方我们的一个检索的词化到底有哪些呢?
就是我们有minpoint xpointGEM或我们的一个具体的remm这个都是有蛮多的。好,那么有这些铺ing之后呢,我们就是说可以利用这些铺ing层。就是结合我们的90新网络来提取我们的一个特点。
好,我们接下来呢就看一看我们的具体如何来做这个特征的一个抽取的啊。然后呢,我们这个地方呢,我们就用这些代码给大家实现了啊。然后就是如果大家想下去来进行自己来实践一下,都是非常简单的啊。
直接用我们的一个ipad的一个逻book。来进行一个实践一下就行了。然后呢,如果我们首先呢给大家来尝试一下这个图片的一个哈希值的一个提取。图片哈希值啊。
我们来看一看我们这个地方呢就是用一个image hasush的一个具体的一个特征提取啊。我们对于我们图片进行读取,然后直接用image has的个库来计算它这个A hasush。
这个Ahu呢其实它计算出来基本原始的一个形式,是这种呃true or false的一个矩阵。我们接下来呢是可以把它转成这种十六进制的,十六进制的一个字符串啊,十六进制的一个字符串。转换完成之后呢。
你会发现它其实就是一个非常规整的啊非常规整的一个字符转。所有的图片呢我们都可以把它转成一个相同维度的一个具体的一个字符转。好,那么我们当然也可以用这个A哈ushB哈是D哈ush和W哈是分别来进行计算。
得到不同的结果。这是可以的。那么这个地方呢有一个非常非常非常有意思的一个点。非常非常有意思的一个点。这个点呢就是我们的一个基础的一个。这个图片的一个哈希纸呢,它有一个非常有意思的一个特征。
或者说有意思的一个点啊。就是说我们的假如一个图片,它的一个原始图片是相似的。X1还有X2,假如说它两个原始的图变是相似的,那么它提取得到的一个字符串。也是相似的。我们假如说输入相似的3张图片。
我们来计算得到它的一个哈锡值。那么你会发现这个具体的一个我们的一个图片的一个哈希纸的一个字状。这个有很多的一些字符都是相同的对吧?我们来看一看。这跟我们鼠标所选取的这些位置的,我们的一些字符都是相似的。
对吧那么这个地方我们就说就可以表。它其实也有一些它的一个优点,就是说我们的相似的图片,它的哈西值的一个字符串也是相似。那么这个地方呢。
我们就可以计算这一些字符串的一个边辑的距离来衡量我们这些图片的一个它的一个相似度了,对吧?那么我们继续。那么我们接下来要看一看我们的一个颜色直放图啊。
颜色直放图其实本质就是统计我们的一个图片中颜就是说不同颜色的一个像素的一个整体的一个统计的一个。频率啊,那么我们这个地方呢用open to呢进行实现就非常方便了。那我们CV呢就是我们读取一张图片。
也可以统计它的一个每一个通道的一个像素的一个信及信息,也可以做我们的具体的,就相当于是把它读取为灰度图,然后做一个具体的一个统计。都可以。然后呢,我们统计得到的具体的一个直方图。
就是类似于这样的每个像素位置下的一个具体的一个像素个数的一个。值,然后我们可以把它进行一个展示。那么当然我们也可以利用我们的一个就是说把多张图片来提取它的一个颜色直方图的一个信息。
那么这个地方我们是可以提取我们的相似图片,它的一个颜色直方图,然后进行一个绘制。然后那么你有发现就是说相似图片,它提取的到的这个具体的一个直方图的一个形态也是相似的。因为它整体的规律也是比较一致的。
也是比较一致的。好。那么我们的这也是它颜辞重要头它的一个优点。那么我们接下来看一下我们的一个key points。P points呢其实它是对我们的一个图片呢进行提取它的一些关键点的一个信息。
这个关键点呢就是我们这个地方的一个图片里面打圆圈的一些位置啊,就是我们的一个关键点的一个信息。那么这个图片的关键点呢,我们如何做它一个具体的一个匹配呢?
我们就是用op on这个open C里面的shift关键点。shift这关键点进行一个读取之后呢,然后对我们的特征进行一个图片的特征进行一个提取,然后做一个我们的关键点的匹配。
那么这个地方我们假如说给定两张图片。那么这两张图片它假如说是相似的话,我们完成一个关键点匹配呢,基本上是可以把这些。相似的一个位置给它匹配上。当然也有一些匹配错误的啊。比如说这个地方我们有一些文字。
也是匹配到其他另一张图片上的一个错误的位置。对,好。那么这个地方呢,我们这个具体的一个就是我们的一个相似点的一个匹配的一个。好。当然呢就是说你也可以用其他的一些关键点匹配啊。
这个地方我们用呃shift啊,用ORB啊都可以啊。这个地方我们当然也可以做一些关键点的一个就是说筛选。关键点一个筛选。这个地方我们通过一个具体的一个距离做一个筛选都是可以的。好,我们就继续。
那么接下来我们看第三部分啊,我们看一看这个archerface的一个原理和一个实战。呃,这个地方呢就我们在这个深度学习的一个检索的过程中呢,我们假如说用深度学习来做一个图片分类呢。
基本上我们的这个网络结构是我们的CNN。就是我们的卷积。加上我们的一个铺例。再加上我们的FC。再加上我们的soof max。对吧这个呢就是我们的一个具体的一个嗯小马哥说人间真实呃,什么意思啊?
这位同学这个说的是什么意思?对,对我们的课程内容有问题吗?嗯,那么我们这个地方如果是用卷积神经网络来做我们的一个分类的话,我们基本上一个网络结构就是我们的卷积。
然后再加上我们的一个具体的一个嗯我们的一个具体的一个。呃,ing,然后再加上我们的全连接,然后再加上我们的soft max,这个是我们整体的一个网络结构。对吧那么这个地方呢。
我们这个so max呢它基本上是非比较适合用在这种。这种我们的一个。类别有限,或者说我们的类别基本上可分的一种场景。那么我们假如说是用遇到一些开启的一些场景。也就是说我们在进行一个检索的时候。
我们的一个具体的一个图片,我们的测试机的图片。假如说跟我们的训练机的一个图片,它是不交叉类别不交叉的情况下,那么这种soof max呢它就不太适合。那么就比较适合用这种archer face。
或者说我们的这个coing face这种思。Aerface呢它的一个思路呢就是说我们试图将我们的一个特征的一个分隔面在角度空间把它划分开。它比较适合用在我们的一些人脸识别和图像检索的一个任务里面。
那么它具体的一个原理就是如图所示啊,我们看一看啊左左边的公式,我们的左边的公式呢基本上是从我们的一个soft max进行一个改进。我们把我们的soft max的一个矩阵的一个计算呢。嗯。
我们的全链阶层它的一个具体的一个矩阵的计算呢,我们把它的偏值给它剔除掉。然后我们就可以用一个具体的一个类级来代替我们原始的一个啊就是原始的一个计算的过程。然后呢再将为了帮保证我们的一个特征。
就是我们的一个图片,它们的特征的一个具体的一个距离是在一个可控的一个范围内。那么我们把它做一个相当于是把它做一个正动化,对吧?取L2的真动化。然后呢,我们接下来可以把我们的原始的一个距离计算的一个。
或者说我们的soft max呢可以把它写为我们如下的这个公式。我们这个公式呢就是说是archgraphface的一个原理,它是在我们的一个角度空间内去最大化我们不同类别的一个距离。
那么我们如果是用一个公式简化的公式,或者说它的一个角色空间,或者说它的一个这种角色的一个可视化的图呢,你可以很清楚的可以看到。我们的一个arface呢基本上是试图在这个原始的一个角度的空间去最大化。
那么我们的一个soft max呢,它是在可能是直接对我们的原始的一个具体的一个X做一个映射。对吧它的一个,那么我们的cos interface呢是在我们的余弦空间左右个最大化。这个操作是不一样的。
那么这个最大化的一个角度就是它的具体操作不一样,就会导致你具体的一个嗯就是在精度上会有一点点影响。我们的原始的of mix我们的coinging face,和我们的archface。好。
那么我们这个呢我们呢我们接下来就对我们的一个arface一个具体的一个呃就是来进行一个实践啊。嗯。有同学问到,在台标检索过程中,细腻度识别台标,台标是这个。呃,是这个商标吗?台标是商标吗?
一甜相机和叉叉相机。台标这个地方你你举的这个例子是图片的维度啊,还是文本的维度啊?你这个维度是呃图片的维度,还是就是说文本的维度啊,我不太理解。如果是这种图片的维度的话。
我就是说这个地方其实这个同这位同学问的一个问题也是比较常见的logo对吧?这个地方呢如果是logo的话,我非常建议你。嗯,这个地方其实是这样的啊。我我举一个人脸识别的一个。
或者说行人虫检测的这种任务的一个例子。嗯,我们在构建一个具体的一个任务的时候呢,假如说我们的训练集里面有5000张。就是说5000个人5000个人脸啊,接近于是5000个face。然后呢。
我们的一个测试集有可能是。比这5000个会更多。比这5000个会更多。假如说我们测试机里面,我们假如说有5万。有5万个人,这个是很常见的。我们在进行一个具体的一个呃人脸识别的一些场景里面。
我们不是说录入一个人脸,我们就去呃去重新对我们的一个模型训练次。不是对吧?我们是一个开级的这种检索或者开级的这种识别。我们的测试集里面呢,有可能包含我们的训练集里面不存在的一个对应的类别。
那么我们进进进行一个具体的一个计算的流程,就是我们是类似于这种检索的这种角度,类似于检索这个流程。我们对于我们的测试集的输入一张新增的一个人脸,我们把它设为一个query。
那么我们是对于我们的c图片呢进行提取一个特征。然后呢,我们类似的我们原始的一个数据集里面也有类似的特征。然后我们计算一个相似度,计算相似度之后呢我们。通过这个相似度来就是说来找到他最为相似的这人,对吧?
这个就是人脸识别。我们在进行识别阶段它的一个具体流程。它是一个开机的。那么这个地方呢,我们为什么人脸识别它是这种开机的呢?因为我们在这个部署的过程中,我们肯定是会遇到一些没有见过的人脸或者没有见过的人。
如果你在部署的过程中,你遇到的都是你见过的人,那么你基本上是你训练级和测试级的人脸的这类别都是重合的对吧?我们直接用分类就行了。那么我们这个地地方的一个场景呢是这种开启的。我们在测试器的时候呢。
是会遇到一些你之前没有见过的。然后我再回过头来看,就是回答一下low more这位同学说的我们的一个台标检索这个地方。人脸检索或者人脸识别跟我们的台标这个识别有什么区别?人脸识别这个具体任务。
有可能我们的一个人脸是非常非常多的,十几亿对吧?我们拿中国的人人口数量十几亿。那么我们不可能把这个十几亿的人脸的一个数据全部加到我们的训练器进行训练吧。一方面我们的数据集收集不到这么多。
另一方面我们这个训练的成本也非常大,对吧?那么我们只能说用有限的一个人脸的一个数据做我们的测做我们的训练集,然后对我们的所有的人脸,就是说我们未知的人脸做一个相似的计算,然后做一个识别。
那么如果是台标的话,如果是我们的台标,你能够收集到所有的数据,我还是建议你用分类的一个角度来做。如果你是用就是说嗯如果你能够收集到所有的一个台标的话,我还是建议你用分分的来做。如果你收集不到的话。
或者说你收集的样本有限的话,那你可以用检索来做。当然这个地方如果是用能够收集到所有的类别。当然这个精度肯定是会比减索的一个精度会更高一些的。对,那么这个地方如果你的台标有可能是嗯它的范围很小的话。
你也可以尝试物体检测。先把这个台标的一个具体的一个位置。就是说我们给另一张图片,假如说你的一个logo在其中很小的位置,你可以先用这种检测的方法,detection的方法。把它检测出来。
检测出来一个很小的位置之后,然后再做后续的一个操作。这个都是可以的。对这个这个都是可以的。所以说我觉得嗯我觉得你如果能够收集到所有的类别,你还是为了精度着想,你可以收集到所有类别。
因为这个地方的logo我觉得还是有限的啊,logo还是有限的。这个品牌嘛品牌数量肯定是有限的。我们就继续啊。那么我们接下来呢给大家讲一个具体的一个场景。这个场景呢logo嗯也是一个开启的问题。
如果分类的话,新增logo识别会很麻烦。这个地方嗯这个地方其实是这样一个这样一个词组啊。嗯,这个呢就呃稍微讲的扩展一点,就是说我们的一个我们的一个具体物体检测呢。
我们的物体检测呢就是说如果是这种我就讲这个非常基础的话,就是说有这种fast RCN对吧?啊,写错了啊。faCN它是有两个步骤所组成的对吧?一个是相当于是生成这个待选框,然后就是我们的proposer。
然后从我们待选框里面进行识别出我们的具体的一个类别。那么你在如果是你的一个检你的一个有类似于有检测的任务。然后这个检测的类别是这种开机的话,你也可以用这种两步分两步走。
先做我们的propoal的一个识别,然后对我们的类别识别,我们都知道这个训练整个我们的一个分类的训练训训练我们整个检测的一个模型,它的一个时间程很高。那么你可以分两步走啊。
先训练我们的propos产生这个待选框产生这个logologo的这个位置,这个步骤,然后对我们的logo的位置呢,你再单独训练一个分类的。因为这个分类的这个网络。
它的一个就相当于新增logo其实就很简单了。分类这一部分的训练,其实我觉得还是时间成这个成本还是可控的。检测这一步可能这个就是说训练成本会很高。对,但是你如果是在这一步。
你在我们的propoal产生po产生完propoal之后,然后再做一个分类的。这一部分其实它的一个训练的成本还是很低的。基本上半个小时就能训练完吧,新增一个logo。
只要你把这个logo处理成我们proposed的类似的形式。对。好,我们就继续啊。那么我们接下来给大家讲一个,就是说也是现在正在进行的一个比赛。这个比赛呢是在做一个嗯图像检索的一个任务。
我们有一些训练级的一个图片。和我们的一个测试集的一个图片。训练级的一个图片呢是呃有一些我们的一个。相当于是接近于7000张我们的一个图片。然后呢,它是有我们的3K类比。或者说3K的一个商品所组成的。
我们测试集里面呢有4K的一个图片。然后呢,里面有EK类别。我们这个地方呢,我们的图片我们是需要对我们的训练级的图片做一个聚例。它是相当于是把它聚聚成3K类别。然后呢我们。有测试的图片。
我们也需要把它从原始的图片把它聚类到对应的类别里面。也就是说我们的训练集和我们的测试集是不交叉的啊,这两部分是没有图片交叉的,也没有类别交叉的。我们是需要对我们的测试集的图片做一个聚类。
那么这个聚类的过程呢,其实本质是计算它们之间的一个相似度,对吧?那么这个地方我们可以把它抽象成这种图片检索的一个任务来完成。好,那么我们来看一看我们怎么做的。
这个我们的代码我们的代码都是可以直接运行的啊,只要你下载完我们的一个数据集之后,这个代码都可以直接运行的。好,我们待会儿呢也会把我们的一个代码和我们的PPT的一个获取方法给跟大家说一下。
我们这个地方呢我们是用我们的一个拍er起的一个具体的一个来做我们的一个相关的一个实现啊。然后呢用我们的pattter型来提取我们的一个具体的一个图片的一个特征。好。然后呢。
我们这个地方读取我们的具体的一个数据集。这个数据集呢我们是直接对它自己做一个相关的一个转换就行了啊。然后呢,我们这个地方呢,我们是啊需要有一个把我们的数据集,把它划分成训练的部分和我们的测试的部分。
我们的训练的部分,我们的测试的部分呢是不交叉的。我们的那么我们构建的训练级和我们的验证级也是需要不交叉的,也是需要不交叉的。所以说我们在构建训练级和验证级的时候。
我们的验证级的部分和我们的一个训练级部分也是不交叉的啊。我们是按照group来进行划分的。那么我们接下来定义我们的archerface的这个model。这个模块呢基本上是可以替代我们的so next。
这个里面呢它基本上是我们有两个超参数可以啊就是说需要注意的。第一个超参数是SS呢,就是我们的这个具体把它缩放,或者说我们的一个向量的一个建它的一个半径。我们的圆的半径。
然后我们的M呢是我们的marinmarin呢就是我们的一个类别与类别的一个具体的一个,就是说它的一个间隔,最小的一个间隔。那么我们在进行核心的一个计算。
就是说我们是需要对我们的一个计算一下我们的一个ca。里面的一个西塔加M的一个取值。然后和我们的一个原始PPT里面所展示的这个cosine西塔的一个取值。那么这个地方我们的cosine西塔加M。
它得个展开,就是cosine西塔乘以cosine M减去sine的西塔减去sineM。那么所以说在这个地方我们是分别要计算这些具体的一个数值。然后。我们是可以得到我们的cosing的具体的。
就是说我们的嗯这个archgraphface这个特征的一个取值的。其实它本质啊这个操作基本上就是对我们的一个特征在这个角度空间里面做一个相似的一个计算。那么这个样本呢,它本质上就是把它划分得到我们的。
每个类别的划分得到每个类别的一个相似度的一个过程。那么这个地方呢我们是需要如果它是属于某一类的话,那么我们就可以计算得到它对应对应到某一类的一个具体的一个概率值,或者它的对应的一个输出。
如果它不属于某一类的话,那么我们就可以计算得到它跟其他类类别的一个cosine的一个具体的一个距离。好,那么是这个是我们的一个archface model。那么我们具体定义我们模型呢。
其实本质就是对我们的一个图片呢,我们提取它的一个卷积层卷积层的特征,我们提取它的一个eff的一个就是说具体的一个呃effic它是一个CN的网络模型。我们提取利用它的一个卷积层的特征。
我们这个地方把它的一个classifier。它的全层呢把它剔除掉。我们利用它的卷积层特征,然后再加上我们的一个archgraphface的一个模块来做我们的特征的一个具体的一个映射。那么这个地方呢。
如果我们是存在我们的一个具体的一个标签的话,那么我们就用我们的标签来对我们的就是说具体的这个特征来做一个映射。如果没有我们的标签的话,我们就直接计算我们的特征与其他的一个特征的一个相似度。
然后找到我们具体的一个图片的一个啊就是说类别。那么我们的训练的代码和我们的测试验证的代码,基本上就是一个我们pyto器里面的模型的一个正向传播和我们的一个具体的一个反向传播的过程啊,这个就非常简单了。
好,那么我们的训练的过程呢,我们的具体的训练代码呢就是说我们构建我们的data loader。然后我们构建完我们da load之后呢,然后构建我们模型。
那么模型呢就是我们刚才所定义的这个CN的一个网络模型,再加上archface的 model。然后呢我们的损失函数呢,我们仍然是我们的crosent啊。
这个地方我们的archface呢其实中呢代替我们的这个之前的oft x。然后我们的训练的一个函数呢,仍然是我们的一个分类的损机函数。好,我们让它进行一个训练。这个地方呢我们是用交叉验证的方法呢。
将它训练的多个模型。好,这个train呢train函数呢就是我们的训练的函数。我们的这个训练完成之后呢,接下来我们需要在我们的一个验证集做一个具体的一个验证。这个验证的过程呢,由于我们是没有标签的啊。
我们是计算一个图片的一个相似度。我们它的一个特征的相似度呢,我们直接用我们的一个内级的一个距离,然后来完成。那类级的距离来完成这个地方呢直接计算它的一个类级的一个呃,就是说它的一个cosine的距离啊。
然后就可以得到它的相似度。然后呢,我们在这个地方呢也可以手动写一个我们的ss hold的一个动态搜索,写写一个动态搜索的过程。这个动态搜索呢,就是我不知道到底是什么,就是说大于什么ss hold的。
我们认为它是属于相同类别的对吧?我们这个地方呢就是写一个便利,从0。5到0。99把它作为一个for循环,然后去计算一下。到底是在什么时候hold,我们的一个剧类的一个效果是最好的。好。
然后将我们最好的一个效果呢给它保留下来保留下来。那么我们也可以对我们的一个测试集呢做类似一个操作。我们对我们测试集呢也是多折的模型提取多对我们的。我们五折模型的话,就对我们的一个。
是呃模型呢嗯对我们的训练集呢训练了5个具体的一个模型,得到5个参数。然后呢,我们对于我们具体的一个测试集的图片呢,我们也可以把它提取5个特征,然后把它求一个平均。求完平均之后呢,接下来也是一样的操作啊。
通过1个CS hold完成一个聚离,就是大于某个CS hold的这个结果。我们认为它就是比较相似的。我们把它聚离到一起的。把它聚留到一起。好,这样呢就是我们的一个archface的一个时间啊。然后呢。
如果各位同学想领取我们的代码的话,和领取我们的PPT的话,我们待会呢有领取的方法啊,我们整个的代码都可以完全完整复现的啊,完整复现。你不用担心。这是我们的archface的一个原理和实践。
那么我们接下来第四部分就给简单给大家讲解一下这个图像检索的一个加速的方法。我们如果有了这个嗯图像呢之后呢,我们假如说想对我们的图片进行一个检索呢,其实嗯我们本质是在做一个矩阵的一个计算。
就是说我们做一个矩证乘法的一个操作。那么这个矩证的一个乘法呢,其实它本质是非常非常耗时的啊。就是说我们有了一个具体的一个矩证,1乘以100,还有一个我们的一个相当于是10万乘以100。
我们想要在这个10万里面找到跟他top5,就是说跟他们跟他那个图片最相似的5张,其实本质就是做一个矩阵的乘法代替我们内积的一个操作。那么这个地方它其实时间复杂度以及计算量是非常大的啊。
甚至我们的这个图片的数量你是100万。或者1000万的话,你这个计算就非常耗时了,而且很有可能你的内存就承受不住,对吧?那么我们在这个地方呢,我们是需要加速我们的检索。在电商的领域呢。
我们的图片是非常多的。我们是需要加速我们的检索。那么怎么做呢?我们是首先呢有很多种方法。第一种方法呢是利用我们的一个具体的一个特征呢,你可以对它进行一个聚类。我们可以把我们的一个特征,把它做一个聚类。
把它映射到5100类里面。把1000万的图片把它映射到100类里面。然后呢对我们的测试机图片呢,先把它做一个类别映射。类别映射啊这是无间度的距离啊,做一个类别映射,然后呢再到类别里面找最相似的。
先完成聚类,然后再到类别里面找相似的。这样呢我们的一个时间复杂度就相当于是从我们的。原始的是100万,在100万里面找。然后呢,我们如果要把它聚类到100类,那么我们就接下来是把它转。
基本上是在110万那边里面找,对吧?时间复杂度就降低了一相当于是降低了很多,对吧?这是第一种方法。第二种方法呢叫我们的1个PQ啊,叫层级量化,它的一种方法呢就是说我们对于我们的原始特征呢。
原始特征可以把它分段。原始的这个地方,我们12345678。8乘以128维度的一个向量,我们可以把它分成8个128维度的。然后呢,我们对于我们的一个特征呢,我们是就是这样的啊。
我们的原始的一个就是说特征呢,我们是10万乘以1个8乘128维,这个是我们的特征维度。然后呢,我们把它拆分成这样的啊,今天是每个128,我们把它拆分开来。然后呢,我们对于我们的图片呢。
我们分别今天相当于是我们10万乘以1个128,每一段完成一个聚类。sub vectorctor做一个聚离。这样聚类之后呢,我们每个类就是相当于是把它聚类到256类。把它距离256人。那么这个地方呢。
我们接下来一个一个特征,我们相当于是有,就相当于是8乘以128。我们把它编码成8个。256个剧类的一个结果就行了。那么这个剧离的结果呢,这个256呢,我们可以把它相当于是用一个巴比特的一个向量来做表示。
就相当于它是一个类别的距离结果,就是一个类别中心嘛。那么我们把它转成一个巴比特的一个具体的结果。那么我们原始的一个图片,我们就是8乘以8比特,我们接下来就可以把它转成64。尤如是比特的一个具体的压缩值。
那么我们具体的原始的一个图片。原始的一个维度,它会就会降低很多。而且这个降低之后呢,它的一个效果是比我们原始的一个单纯做聚类。然后在子令里面检索的一个效果会好很多的。
因为这个地方我们是对每一个sub vectorctor做一个聚类,然后做一个编码,对吧?那么这个地方我们的一个sub vectorctor,它是这样的啊这样一个维度的。
所以说它的一个效果呢是比我们的方法医识好很多的。而且它这样呢其实是嗯就是说把我们的类别其实划分成很多类的。我们的一个具体的类别,图片的一个类别,就不是说这个地方我们是聚类到100类。
这个地方我们的图片类别我们可以最多可以划分成多少多少内容,我们最多是可以把它划分成256的8次方类。因为我们的每个subtract都是有2256类的,我们把它连成在一起。
我们的一个具体的一个类别的空间其实是增加很多的啊,这个是subtract,它每个subtract有一个类别,对吧?我们有8个subtract,我们就有8个256进行成级。那么如果用PQ这种方法。
我们的一个具体的一个。我们的1个C hold。啊,sorry啊,我们的一个具体的一个剧类的一个效果,它其实是非常非常好非常好。那么如果你对这一部分感兴趣呢。
现在也有很多的一些具体的一个在工艺上面的一个实现啊,基本上都是利用到PQ基于PQ这种方法来自于我们的特征的一个减索的一个加速加速。当然第三种方法呢,也就是说我们是可以用这种近似的方法。
比如说我们基于这种图的HN的HNSW完成这种检索。它是将我们的一个具体的一个节点呢,就是说我们每个特征呢构建得到它相似的一个特征,把它构建得到一个相似图。我们提前可以构建得到这个相似图。然后呢。
我们这个图呢,我们如果是是提前将它的一个相似的节点给它构建好之后呢,我们接下来这个搜索的过程就非常非常快。我们只需要按照这不同,就是说按照它提前构建好的这个边,然后找到它最近的这个节点就行了。
这个呢是HNSW做一个近似搜索。它的一个速度呢也也是非常快的。如果你感兴趣呢,下去也可以进行一个继续的一个了解。好。那么我们这个今天所讲的课程呢。
其实基本上的一个课程内容呢都在我们的7学在线的一个第15期的机器学习机训云的一个课程里面。然后我们的课程里面呢基本上是涵盖了机极学习的一些基础。然后也包括具体的一些实间的项目。
然后这个地方我们有一个截图,是我们的机忆学习原理的部分的一个知识点,和这个具体的一些讲解,包括的进行回归逻辑回归决策数我们的特征工程的一些具体的构造。
然后我们这个机器云也是包括我们具体的一个GPU的一个环境的支持的。以及我们的一个老师的一个具体的打疑。然后如果各位同学想领取我们今天的一个课程代码,和我们的今天的PPT啊。
或者说想对我们的课程进行一个技术继续的了解呢,都可以加我们的杨老师的微信啊,就我们的微信的二维码,可以拿出我们的手机微信啊进行一个扫码。然后加一下我们的杨老师的微信。
然后进行获取我们今天的一个就是说代码和我们的PPT的内容。对。然后各位同学对我们今天的一个课程有什么问题吗?对。如果对我们今天所讲解的课程有什么问题的话,可以来进行一个提问啊。
然后这个代码待会儿都都是发给我们的杨老师的啊,你可以加一下杨老师的一个个人的微信。对。各位同学有什么问题吗?就我们今天的一个课程内容。好。然后大家如果感兴趣。
嗯嗯获取我们今天的内容呢啊也可以加一下我们的杨老杨老师的微信。在如图所示啊,我们这个微信的二维码。各位同学有问题吗?啊,谢谢各位的点赞。如果大家没有关注我们的这个知乎的账号的话,也可以关注一下啊。对。
好,然后大家如果对我们其他的课程有什么问题的话,也可以进行一个提问啊。对我们今天的课程还有问题吗?同学们。好,大家还有问题吗?嗯,机器云也是非常干货的。如果大家想了解的话。
也可以打开7月在线的官网进行查看。各位同学还有问题吗?啊,如果想要领取我们今天的一个课程,我们的代码的啊,可以嗯加一下我们的杨老师的微信啊。好,嗯,然后我们的一个集训营呢现在也是正在招生第15期啊。
如果各位同学感兴趣的呢,也可以加我们的杨老师的微信进行一个了解啊。对。好的,嗯,我看大家也没什么问题啊。那么我们今天的一个直播就到此结束了啊。然后如果想要获取我们的录播录屏或我们的代码课件的呢。
都可以加我们杨老师的微信啊。好的,那么我们今天的一个直播就到此结束了。谢谢各位同学。
人工智能—计算机视觉CV公开课(七月在线出品) - P15:【公开课】从零实现人脸关键点模型的训练和部署 - 七月在线-julyedu - BV17z4y167dq
对。大家能听到吗?我们稍等一下啊。对。我们8点钟准时开始。对,大家也可以在我们的一个直播间里面就是说进行提问啊。对,各位同学之前就是学过深度学习嘛?如果学过学过深度学习的同学呢,可以扣个一好不好?
然后如果没有学过的话,也可以。嗯,之前有同学说啊,学过。其他同学呢学过啊,这个学过肯定是比较好的对吧?肯定是有一定基础了。嗯。各同对智慧学习哪一部分比较感兴趣呢?对啊。
其实现在其实也有很多的一些其他的一些啊,就是各方各面的一些应用吧。所以说一方面是这个方向,另一方面我觉得也是看。就写一个应用。其他同学如果想回答的,也可以在我们的一个。就是聊天框里面打字啊。对。
我们就8点钟准时开始啊。我们就稍等一下下啊,然后待会儿8点钟准时开始。我们今天所讲的主题是嗯比较基础的,但是呢我们也会运行一些这些代码给大家讲解一下啊,我们8点钟。开始。对,8点钟开始。好,嗯。
现在各位同学在我们直播间的有多少啊,可以扣个一好不好?然后我们马上就开始我们的一个课程啊。对。好,我们再稍等大家,稍等一分钟啊,一分钟我们就开始。8点啊对,我们8点钟开始的啊,马上就开始马上就开始啊。
好。嗯,那么我们今天所讲的主题呢是这个从零实现人脸观键点模型的训练部署。我们这个讲解的内容呢仍然是以这个。就是积忆学习和这个深度学习所展开的。
所以说呢我们这个课程呢其实是非常适合嗯如果是想要学习这个积忆学习和想学习深度学习的同学呢,我们这个课程是其实是非常适合的。那么我们这个今天的课程呢就是大概是时间是我们的一个一个小时到一个半小时啊。
我们的一个具体的一个时间,是我们的一个小时到一个半小时。然后如果各位同学。在我们的一个学的过程中呢,有什么问题啊啊,也可以直接在我们的评论区里面进行一个打字和沟通。然后嗯我是TI在线的刘老师。
然后我们就开始我们今天的一个课程。我们今天那个课程呢是分为四部分的一个知识点,然后再加上相关的一个代码实践进行展开的。我们的一个具体的一个呃知识点呢,首先会从深度学习的一个介绍开始。
然后再到我们的具体的一个深度学习的模型搭建基础,然后再到我们的一个模型的一个操参数,然后再到我们的一个模型的训练过程。嗯,基本上会讲解到我们的深度学习的一些基础知识,以及深度学习它的一些具体的一些呃。
就是说模型搭建的一些细节。当然我们也有具体的这个代码时间的环节。所以说大家啊千万不要就是说错过我们今天的一个任何一部分的内容。当然我们的一个课程讲解的过程中呢,我们也会也会给大家送出福利啊。
我们今天晚上呢给大家送出的福利,就是我们的一个契约在线的一个VIP的月卡。这个领取的方法呢,就是说大家在我们的一个呃就是呃课程中间,就是说一一一方面呢是积极发言,另一方面呢就是如果有就是说提问。
我们会挑选这个5位同学就是说送我们的1个VIP月卡。对,好,那么我们就开始我们今天的一个课程内容。
首先呢我们来看一看深度学习的一个介绍啊,就是说我们其实本质还是需要给大家介绍一下深度学习的深度学习到底是什么?我们就从这个深度学习这一部分开始啊。深度学习它到底是什么呢?
这个很多同学可能在学习我们的深度学习的时候,可能觉得学习的一个路径啊,没有什么就是很好的一个路径。其实我们现在对我们现在而言呢,就是我们现在的同学而言,其实我们学习这个深度学习。
或者说学习我们的一个机极学习。其实都有很多的一些教材啊,D啊就是我们的deep learningM是我们的mer learning对吧?那么在这个地方,其实我们现在学习呃积极学习和学习深度学习呢。
其实有很多的一些教材。嗯,当然也可以也有一些具体的一些呃视频啊和教程来学。但但是呢我是觉得嗯你如果是呃就是说完完全全从一些教材来学呢,可能会呃比较就是说模糊啊以及这个。学习的一个效果也不会特别好。
所以说呢我们今天所讲解的一个嗯这个主线呢,就是首先给大家讲一下深度学习的深度学习具体的一些定义。然后呢,再看一看它的一个模型的一个搭建。就是说如何从头搭建我们的一个模型,然后再去看它的一个案例。
就是说整体而言呢,就是分这三步走啊,就是说我们的一个案例。分成三步走。对,我们就先看第一步啊,就是深度学习到底是什么。嗯,在我们定义深度学习,或者说学习深度学习的定义的时候。嗯,你需要注意一点。
就是说深度学习它原始的定义是有很多种类啊,有很多种种类一种定义。我们这个地方呢是以其中的一种定义来做讲解。深度学习呢是包含多层神经元的一个结构的一个记忆学习模型。它的整体的结构和人脑神经元的一个结构。
有一点类似。深度学习呢它的一个特点是它是包含了多层式内源的这种结构。那么这是它的第一个特点。第二个特点就是说深度学习其实它是一种积极学习的一个算法模型。
我们在后面的一个P就是说这个可以从这个我们的这个维恩图可以看出来,深度学习它跟我们的一个机极学习在这个地方其实是有一个分支的。最外层是我们的人工智能,里面是我们的记忆学习,再里面是我们的深度学习。
这个地方呢你一定要弄清楚,就是我们的深度学习,其实它是一种我们的记忆学习的算法。或者说是一易学习的一个分支,一类分支。在这个地方呢,就是说我们在学习我们的一个记忆学习的时候。
它可能还有一些其他的一些生核模型。比如我们的数模型,我们的一个线性模型,比如逻辑回归,还有我们的SOVM。对吧还有我们的这种无监度的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是通过一个记数函数,对吧?假如说我们的基础函数是用soid。那么就对我们的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等等等等。这是我们的一个。就是说你可以理解它是一个我们的一个损失函数,或者说这个损失函数模块。还有一些,比如我们的卷积层。卷积对吧?我们有一D的卷积。
2D的卷积,3D的,还有转置卷积对吧?等等。还有其他的,比如说我们的全连接层对吧?或者说我们的规化的一些层。在我们的一些深度学习的框架里面,其实它都是按照我们的一个层来做我们的一个具体的一个数据。
就是说这种。把这些功能啊把它划分到层里面,不同的层呢,它可能解决的一个任务其实不一样的。那么我们刚才给大家介绍了一下卷积层。那么接下来呢我们啊刚才我们给大家介绍了一个全链阶层啊。
那么接下来呢我们就给各位同学介绍一下这个卷积层。卷积层它在做什么呢?其实卷积层它跟我们的一个数字图像处理里面的一个滤波器,其实本质上是一样的。我们通过一个滤波器。
对我们的一个输入的一个二个维的数据进行一个滤波,然后可以得到我们的一个输出结果。我们来看一个具体的一个案例,就是我们。假如输入一个具体的一个7乘7的一个输入。
然后我们设置一下我们的一个卷积盒的大小是3乘3,它的一个具体的步长是我们的2,也就是我们的每次滑动往右滑动,以及我们往下滑动的一个像素的一个个数。那么我们如果是步长为2的情况下,我们输出的结果是3乘3。
它的一个滑动就是我们首先在这个位置,然后往右滑动两格,在这个位置,然后又往右滑动两格在这个位置。滑动完成之后,然后往下滑动两个,以此类推。那么这是我们的一个步长为二的情况。当然。
如果我们设置不长为默认的情况下,它就是默认是一对吧?那么我们这个地方就是一个网页滑动。不断网有滑动。对吧。好,这是我们的卷积。卷积呢其实它原始的是在我们的一个就是说原始的这种定义呢。
是在我们的一个一维的这种持续数据上,就是说定义的。当然我们也可以把它推广到我们的一个二维的数据上,就是我们的二维的卷积。这个地方呢我们先给大家看一个动态图啊,这个动态图。呃,我们在进行卷积的时候呢。
我们可以设置我们的一个卷积盒的一个大小。卷积盒呢就是我们的这个地方的一个灰色的一个就是这个我们做在做一个具体的一个卷积。在这个区域内将我们的一个对应的一个输入和我们的卷积盒进行一个计算。
我们还有我们的一个步长和我们的填充步长呢就是我们在进行一个滑动的时候,在我们进行一个滑动的时候,我们的一个移动的一个像素的个数。对吧这个地方或者说是移动的像素的一个单位,这个地方我们是移动一个单元格。
还有一个是我们的填充。填充呢就是说我们在进行一个。具具体计算之前,我们可以将我们的一个具体的一个输路呢,把它四周填充为一个场数。比如我们把它填充为一个具体为就是四周填充一圈我们的一个。就是。
我们的一个就是说零对吧?这个地方填充为一呢,就是说它周围就是说有一圈单位一的,就是说这个地方周围一圈。就是填充了一个单位的一个场数。常数呢,我们一般情情况下填充我们的零啊,填充我们的零。
当然我们的补偿如果设置不同的情况下。最终或者最直接的一个效果是什么?最直接效果就是我们的一个输出的维度和我们的输入的维度,它的一个改变。我们的些输出的维度。对吧。在我们步长V一填充为0的情况下。
以及我们步偿V2填充为一的情况下,它得到的一个维度,输出的维度是相同的。对吧但是呢它的一个具体的一个计算流程其实是存在我们的一些个差异的。好,那么我们就继续。在这个地方呢。
我们在进行一个具体的一个计算的时候,非常关键的一个点就是我们能不能根据我们的一个输入的一个维度,然后去以及我们的一个对应对应的一个卷积盒。以及我们的一个嗯对应那些参数去计算。
得到我们的一个输出的一个维度。这个就是我们的一个核心的一个点,就是我们能不能根据我们的一个。就是卷对于卷积深经网络来说啊,就是我们能不能根据我们的一个对应的输入的一个大小。
我们的卷积的一个参数去计算得到我们的输出的大小。它是有一个对应的一个计算的公式的啊,就是我们的一个N,加上2P减去F除以我们的scribeide加1N是我们的一个输入的一个尺寸。
P呢是我们的padding是我们的填充的尺寸。为什么乘2呢?因为它是左右两边都填充了,减去FF是我们的一个coal 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,那么我们对应的这个。
卷积核的一个通道数也是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。它的这样一个输出。所以说呢大家一定要理清楚我们的一个二维的卷积和我们的一个多维卷积。多通道的卷集它的具体的过程啊。
其实本质上都是类似的,都是类似的。我们刚才给大家讲了具体的一个卷积的一个操作。其实我们在日常生活中呢,我们可能不单纯的会讲,就是说会学到卷积,我们可能会直接使用到某种类型的一个神经网络。
比如说我们会使用到卷积神经网络,对吧?我们刚才在第一部分给大家讲介绍了这个全连接的一个。网络。那么我们这个地方呢再给大家介绍一个卷积神经网络。肯您式内网我在做什么呢?卷机升级网络。
我们在进行一个具体的一个计算的过程中呢,它其实是。是将我们的一个卷积层和我们的一个全阶层进行一个有效组合得到的。所以说这个地方我们其实是本质是在做什么呢?我们本质本质呢就是在搭建这个卷积神经网络。
卷积神经网络呢,它的一个原理或者说它组成结构呢和我们的一个人的一个视网膜是非常类似的。我们的视网膜细胞呢也是可以它的观察的一个区域也是有限的,就类似于我们的一个卷积核,它的一个就是说视野区域是有限的。
我们的一个具体的这个视网膜细胞呢,它通过一定的一个具体的一些特征提取,然后逐步的汇汇聚到我们的一个神经元里面得到我们这行输出。那么我们的卷积神经网络其实也是这样的。首先对于我们输入的数据呢。
按照一定的一个卷积的操作进行特征提取。然后不断的进行特征提取。这个地方可能中间有一些其他的层。比如说我们的一个磁化层。来得到我们的一个就是对我们的一个数据集进行降维。然后呢。
我们把最终呢如果是想要把它完完成我们的一个。嗯,就是说分类任务呢,我们其实本质是需要将它转变成一个一维的一个向量。这个地方就是说我们在学习这个具体的一个。呃,网络模型的时候呢,你在学习每一层的时候。
你需要知道它每一层它能够接受什么。比如我们的一个全年阶层,其实它本质接受到的就是一个向量的一个输。那么我们这个地方其实卷积层它得到的不是一个向量,卷积层其实得到的是一个二维,或者说是一个高维的一个。
对应的一个输出。那么这个地方呢,我们如果是想要把它转成向量呢。我们会去会使用到一些方法,比如直接把它通把它,把它展平,把它转变成一个一维,然后再输入到我们的全能界层里,对吧?
这个是我们的一个具体的一个就是卷积经网络就是先是卷积,然后再是全阶层这个卷积的过程中呢,我们会以将它的一个化层和计函数层呢把它进行一个搭配,对吧?
所以说我们的一个卷积经网络conution neural network对吧?这个地方conution neural network简简称它本质上就是由我们的一个什么由哪些组成呢?就是由我们的一个卷积。
基函数这个地方的基础函数呢,我们一般情况下用rel,然后我们可以加上这种池化层。他们之间进行组合,然后再加上我们的全链阶层,得到我们的整体的一个分类的网络。
这个就是我们的一个整体的一个嗯就是说卷积神经网络的一些组成结构。当然你可以自己去啊就是随便去搭建这个网络,这个是没有什么限制的。一般情况下,卷积层是在全基层之前。好。我们再来看第三部分。
既然我们搭建了这个网络,那么我们接下来就是需要对我们的一个模型进行一个训练,对吧?所以说这个地方我们是需要知道我们的在训练深度学习的时候,是有哪些参数和哪些超参数的。
这个地方我们首先看一下参数和我们的超参数,它有什么一些具体一些区别。参数呢是我们的一个模型。它能够在我们的一个训练数据集中进行调整的一一个数值。其实这个地方的参数超参数它本质上就是一些数值。
比如说我们的一个W。这个W呢如果他能够从我们的一个数据集里面进行学习进行调整,那么它就是一个参数。如果它从不能从我们的数据集里面进行调整,那么它就是一个超参数,对吧?那么就是人工进行设置的。
所以说呢我们的一个具体的一个生存学模型,它是怎么得到的呢?数据。再加上超参数。就得到我们最终的一个网络模型。这个超参数有同学可能会说,老师,你怎么没在这里面写他的网络模型啊怎么样的。
其实这个网络模型整体就是一个超参数。网络模型它的到底有多少层啊,每层用到的是什么?这些细节就是我们的超参数。所以说呢我们在进行。具体的一个训练模型的时候,其实它一方面模型的精度是由数据决定的。
另一方面呢也是由我们的超参数的取值所决定的。在我们的深度学习里面呢,比较常见的一些超参数是由这些。比如我们的学习率损失函数的一些超单数,P样本的数量,就是我们的base sizedropouts。
我们的模型的深度卷积号的尺寸,这些都是我们的一个超参数。那么有同学可能就会问到,他说老师有这么多超单数,我怎么去去进行选择,怎么进行学习。这个地方呢就是你可以去看哪些车单数,它会提高模型的一个建模能力。
就是说哪些超参数它是提高模型的建模能力的。他如果提高的是模型的建模能力,那么他可能得到的一个精度就会上升。这是第一点。第二点呢,就是说你也可以看一看哪些超参数。
它是能够提高模型的一个就是说过礼盒的这种能力的。所谓啊提高模型或者缓解模型过滤盒的这种能力的。也就是说它可能会让你的一个模型呢更。如就是说强迫模型去学习到这个数据及内在的一个分布。对。
所以说呢我们的一个超餐出的含义呢,一方面你可以去知道它的原理。另一方面呢你也可以去知道在什么时候我们去需要调整它的。这个地方举一个非常简单的例子啊,我们的学习率。这个也是非常非常常见的一个案例。
在我们的一个具体的学习率的一个设置的过程中呢,我们可以让就是说它本质上学习率也是一个lening,对吧?它可以设置很多,比如说0。01。0。1以及我们的0。5对吧?可以设置为很多的取值。
那么到底设置哪一个学习率,对吧?是哪一个取值它是比较好的呢?这可能是没有什么就是说理论依据的。可能我们只能说呢它设的设置的不能过大,也不能过小,对吧?如果是过小,是为什么呢?
我们在进行一个调整我们的参数的时候呢?这个学习率呢,就是确定了我们的每次调整我们的一个模型。参数的时候,它的一个具体一个步长,对吧?如果是区对越小,相当于是他学的更加精细,走的步子越越小。
那么如果我们的一个具体的一个。每次迭代的时候,你的一个参数更新的步置越小的话,那么你就会发现我们是需要走很多步才能得到我们腾到我们的一个比较好的一个位置。这个地方呢我们是调整我们的一个参数去。
得到一个比较好的一个,相当于是目标函数啊,或者说去降低我们的对应的损失。我们的一个具体的一个更新。如果我们学习率设置比较小的情况下,就相当于是每次调整的一个幅度也比较小,逐步逐步的去降低。
当然如果我们设置的比较大的情况下,就是右边这种情况。如果设置的比较大的情况下,它更新的幅度也比较大,对吧?在这个位置,它的一个更新的幅更新的方向是朝这边,它直接越过了我们的一个目标的位置,对吧?
直接越过了。然后呢,如果到这个点的时候,它就方向呢就。朝向这边,那么在再更新的时候,也是直接跳过的我们的一个比较好的一个位置。那么比较。这个地方的一个比较好的位置呢。
我们就可以把它称作一个称作叫做这种局部的,就我们损失函数的一个局部最小值,对吧?局部最小值。我们在设置这个学习率的时候呢,它既不能设置太小太小了。就是我们相当于是要更新段很多次,也不能设置太大太大呢。
你的模型就找不到或者收敛不到我们的一个局部最小值。所以说呢我们会把它设置的不大也不小,对吧?刚刚好,这个刚刚好呢,首先它走的一个步数不会很长。也就是说走的一个步数呢不会。就是叠到这次数啊不会很多。
这是一方面。其其次呢。我们的一个具体的一个迭代的过程呢,它最终也会收敛到我们的一个最小值的位置。如果能够找到我们的一个局部最小值。所以说我们的学序率的设置啊,它是就是很直观的给大家反映了一下啊。
学序率它是一个超参数,它能够影响到我们的模型是不是收敛。然后我们再来看模型的训练过程啊,模型它怎么进行训练呢?其实对于我们的深度学习模型而言,其实训练起来其实是非常简单的。
我们在进行一个具体的一个计算的时候。我们有了一个思路。通过我们的全连阶层计算,得到我们的输出。这是我们的相当于是正向传播,对吧?相当于是从第一层传到第二层,然后从第二层传到第三层正向传播。
在这个传播过程中呢,每一层可能的一个具体的一些计算细节是不一样的。比如有些层是用来做我们的一个全连接层的一个计算,有些层呢是用来当做我们的一个计划函数,有些层呢也是用来做我们的一个规划,对吧?
层一层之间它的一个具体的一个用途是不一样。其次呢。我们的一个具体的层,它可能并不是说是这种。无环的,它有可能是有有环的。比如说像RN。所以说呢我们在具体的学这个网络层的时候。
你可能是需要注意一下这个层它的数据的流向,以为它具体的一个计算过程。这是我们的一个正向传播。在正向传播完成之后呢,其实本质就有了一个输出。
一个output这个output呢可能是跟我们的一个最终的一个标签相隔的比较近,或者说跟我们的一个。标签相隔的比较远,这个都有可能。那么我们在进行一个模型的训练的过程中。
其实我们本质是需要去衡量我们的一个。模型它的一个性能的,也就是它的一个就是精度。那么我们就通过我们的一个存传函数去比较一下我们的一个。気。输出结果和我们的一个就是说真实标签的一个差异性。
比如说这个地方我们用这个信息商,或者说我们的1个MSACC其中呢衡量一下我们的一个模型的输入结果和我们的一个真实表现的差异些。计算得到这个损失之后,那么我们就可以。
通过这个损失去进行调整我们模型的一个参数,对吧?那么这个地方呢对于深度原先模型而言,比较常见的方法就是我们通过这种随机梯度下降。也就是说我们每次呢每个步骤呢去通过。我们的一个计算梯度的过程。
然后逐步的去更新我们的一个模型的一个参数,它是一个迭代的过程。也就是说我们去计算一下我们的一个损失函数和我们的参数的一个偏导。这个偏导呢就是说我们如在朝着哪个方向走,我们的一个损失函数。
它能够降低的越快。对吧那么我们再朝着这个方向去走呗,然后以此去更新我们的模型的一个参数。这个地方的阿尔法就是我们的学习率,这个地方的阿尔法就是我们的学习率。好,这个梯度下降呢,它其实本质就是在求偏导。
然后通过这个导数去做一个参数更新的过程。那么我们用这个图来演示一下。对于我们的一个输入呢,首先我们网络参数呢在这个位置,那么我们的一个输出呢也可以计算得到,通过这种传播可以计算得到。
那么我们可以进来呢计算得到当前位置下我们的一个损失和我们的一个参数,它的一个对应的一个导数的信息。我们通过这个导数信息呢去更新模型的一个参数。更新完成之后呢,我们也可以再次进向传播。正向传播之后。
我们的一个梯度信息发生了改变。在这个位置,我们又使用新的一个梯度信息,再去更新我们的一个某络模型的参数。分析完善之后再做进行传播,然后计团这到梯度,再次进行更新,逐步到我们的一个相当于是局部最小值。
在这个局部最小值的位置,我们的一个损失函数,它求解得到的一个梯度就是零了,对吧?梯度就是零了。好,那么这个网络模型整体的一个训练过程,就是如如图所示的啊。
它其实本质呢是按照我们的这种迭代的过程来进行训练。迭亮的过程进行训练。也就是我们每次呢是需要对我们数据集呢选择一定的一些样本。这个样本呢它是有我们的数据集和我们的标签的。好,那么我们对这个数据集呢。
这个地方为什么要选择K个样本呢?KK样本,我们为什么不用所有的样本呢?我们一般情况下就是说会把我们的一个网络模型呢叫做miniba。
grares就是说mini batchHHGD这个mini batch呢SG呢就是说它其实是一个随机批随机一批一批的。那么为什么要随机一批一批呢?这个地方我们假如说原始的样本是6000张图片。
我们可能会让128个样本作为一批次去训练一次正向传播,一次反向传播。为什么要把它划划分成P呢?我们为什么不直接用6000张或者说用一张呢?他其实是有一定的一些原原因。就是说做了一些折东。
如果我们用所有的样本完成我们的一个真向传播计算损失,然后更新梯度。那么我们其实是得到了整体的数据级的一个梯度的更新方向。这个地方其实它可能这个方向是比较准确的对吧?整体的方向是比较准确的。
但是它会存在一个缺点,就是说一个是时间复杂度。我们如果是用整所有的数据集来做一次正向传播,这个周期很长。对吧其次你的一个整体的一个梯录,它虽然很准确,那么它就缺少了它的一个随机性。在深度学习里面。
其实随机性是非常重要的。好,这是设为什么不能设置为所有的样本?如果设置为一行不行?如果设置为一呢,其实也有些大部分情况下也不行。当然有一些场景可能设置唯一可以啊。一般情况下。
我们的ve size呢就是我们的一个K样本K的一取值呢是大于一的。比如二啊4啊8,为什么呢?也就是说这个地方我们假设我们的样本它存在一些错误标签。那么在这个地方,如果bease size为一的情况下。
那么我们的一个梯度信息呢就完全是错的,对吧?如果是大我们b size大于一的时候,我们很有可能就是会将我们的一个梯度的一个错误信息进行修正,对吧?这个呢可能会也就是说对我们的精度呢也会比较好。
其次呢我们的一个每次从我们的6000张图片里面,假如说筛选32张进行正向传播和反向传播,那么其实这个地方就有一定的随机性,对吧?那么这个随机性其实对我们的模型精度呢整体也是比较好的。
那么我们整体的一个网络模型的一个训练流程呢,就是这样的啊,就是这样的。我们对于我们的输入的数据呢,首先对它进行一个随机,就是说把它进行打散,把它进行打散,随机排序,然后执行我们这里面的一个for的过程。
就是这里面的for就是按照我们的一个数据集把它进行采样。这个地方采样是一个无放回的采样,就是说按照be的一个组合,把它进行一个采样。采样完成之后呢,做一次正常传播,进行损失进行梯度进行拆除更新。
这个for其实本质就是对我们的所有数据集进行训练。这个for假如说所有的数据集是6000个,那么我们训练一就是这个for执行完成之后,它就是对我们的6000个样本都进行了一次训练。
然后我们里面的里面的一次是32,也就说我们的bech batchch大小的一个样本。对,然后做一个具体的一个指数训练。然后这最外层也有一个for,对吧?这最外层也有一个for,这最外层一个for呢。
它是我们的一个epo。一后就是说我们在进行一个计算的时候,我们需要对我们的数据集迭代多少次,迭代多少次。那么这个呢其实就是一个双双重的一否课件我们待会儿会有领取方法的啊,课件我们待会儿有领取方法的对。
好,我们待会一下等一下啊。我们就这个是我们的一个嗯就是梯度的一个更新的过程。那么我们接下来就看一看我们的一个代码的实践,对吧?你只学了这个理论的话,你没有实实践的话,我们的一个具肯定也是不行的。
那么我们来看一看我们这个地方呢深度学习的一个具体实践呢,我们非常推荐大家可以用拍to来进行实践一下。拍to呢是一个非常非常方便的一个深度学习的一个框架。和嗯。
它是基在我们这个地方呢是以这个呃python环境下来进行实践的啊。pyto系呢它其实可以从我们的python的一个list数据及创建这个tensor。pyyto的tensor呢就是这个多维的一个矩阵。
就是说不管是二维的。多维的都是在拍里面叫做tensor,我们可以从一个list史里面创建我们的tensor,当然也可以从我们的long派里面创建我们的tensor。对,这个都是可以的。
当然我们的一个拍套型的使用呢,跟我们的一个long派使用起来其实是非常类似的。我们也可以创建这种权唯一的一个矩阵,或者说我们的随机矩阵都可以的。好,那么我们的pa断里它还还有一个优点。
就是说它可以很方便的使用我们的1个GPU。我们在呃日常生活中呢,就是说你可以去呃就是说我们的代码呢可以运行在我们的1个CPU上。当然呢也可以运行在我们的1个GPU上面。GPU呢它是很就是说很方便。
或者说很直接可以。呃,可以完成一些矩证的一些计算。那么我们刚才也给大家看到,其实本质我们的一些。哦,就是。这这种圈阶层卷积层其实本质就是一些线性代数这种举对运算。所以说我们的一个具体的一些排头系能。
它能够使。就是说用到GPU,而且呢将这个GPU一些计算呢,直接假如说你用peto这个底层的精算呢,那么你就不用担心。与tenflow的主要主要区别是什么?呃,和tenflow现在而言没有什么区别。
就是说现在到就是说tenflow2出来之后,基本上没有什么区别。它各自就是说就是侧重点会不一样吧。嗯然后你相当于是一个安卓和IOS,就是相当于是两个流派吧,你可以这样理解。
但是呢它整体的一些细节其实整体上都是类似的。拍错型的创建tensor呢,其实我们很方便的,就可以通过这种索引来进行复制,或者说把它进行一个维度的拼接。我们把上面的这个矩阵把它进行拼接。
按照我们的某个维度进行拼接,就可以得到我们的一个新的一个tensor,对吧?这个其实是非常非常方便,以及非常常见的这个操作。好,那么我们继续。在这个地方呢,我们在进行一个具体一个操作的过程中呢。
嗯我们其实是需要对我们的一个具体的一个网络模型,把它进行一个就是说理解的。呃,或者说对我们拍to系的一些一些具体的一些操作来进行理解的。呃。
这个地方呢我们就是说你需要理解一下pyto西的这个函数的一个语法,它的一个参就是说这个函数在做什么。当然,拍头几台一个优点就是说它其实能够自动的帮我们求七度。就是它的一个球这种偏倒啊,其实是很方便的。
我们来看一个例子啊。我们X呢等于一个嗯22乘2的1个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乘以125对吧?6,所以说呢就是说具体的一个求偏导,大家可以下去,这个基基本上就是我们的一个高等代数。
以及我们的一个高等数学啊。就是说我们的一个高等数学里面学到一个内容。那么我们就继续我们接下来呢看一看我们的一个离合函数。理合函数呢就是我们先创建一个这种散点图。
这个散点图呢就是说哎它的X轴呢是我们的一个从0到10所产生的一个就是等等差数列。然后呢,我们让我们的一个Y呢等于-3X加上4-3X加上4,然后呢,为了增加我们的一个难度呢。
我们加在我们的Y的一个计算过程中呢,让它加入了一个就是说一个噪音加入一个噪音。这个噪音呢是从我们-2到2产生的一个随机的一个整数。好,我们加上去之后,然后整体的一个数据呢就展就是展示是这样的啊。
是一个散点图,我们的XY。对吧那么这个地方我们想要这个是我们一个样本就是X是输入Y是它的输出。我们想要找到一些直线去拟合得到我们的一个就是说去拟合这个趋势。那么这个地方呢,我们其实本质在进行拟合的时候。
我们就需要定义我们的W和B对吧?定义我们的WW就是我们的一个在高中这种我们的一个函数里面的K,对吧?就是我们的斜率WB我们首先把它初始化为一。然后呢将我们的数据集把它从long派把它转成tensor。
然后呢计就是说计算一下我们的一个MSC这个地方的MSE呢就是我们的预测结果和真实标签的一个差异性。预测结果和真正标签的差异性就是我们的就是误差。然后呢,我们可以先做一次这项传播。
对于我们的输入数据以及我们的一个W进行相乘,然后再加上我们的B,然后可以得到我们的这个预测结果。预测结果和我们的真实结果进行一个计算MSE计算误差。对吧得到我们的误差。那么我们可以进行一个迭代。
这个迭代呢就是说这样。我们对于我们的一个输入的一个数据呢。把它迭代20次迭代20次,每次呢就是做一次真向传播计算损失,通过损失进行一个反向的一个求梯度。然后呢。
每个具体的一个参数根据的这个梯度来进行一个参数的更新。这就是我们的一个具体的一个迭代的过程就是深度学习其实本质就是真向传播计算损失,求梯度进根据这个梯度进行更新模型的一个参数。好。
我们可以帮大家运行一下啊,我们从头运行一下。这个运行的代码呢只需要配置一下嗯python和pyythto系的一个嗯就是说环境即可啊,python和pyyto系的环境即可。嗯。这个他现在啊好了。
现在好了啊。我们就从这开始运行啊。先创建我们的数据。然后做一次我们的这项传播。我们的一个误差是21。好,我们首先呢将我们的一个学习率呢,这个地方的5我们把它设置的很小,我们学习率让它设置的很小。
我们来看一看。别的20字。我们来看一看这个损失呢,我们是把它打印出来的,损失不断进行下降。但是呢这个下降的幅度过于小了,对吧?0。000810。0079逐步的在我们的一个万分位上进行一个改变,对吧?
我们其序率设置的太小的时候,我们的一个迭代。可能就是说它的一个梯度信息其实计算的准确的。但是呢我们的学序率呢相当于是这个走的一个步子太小了。我们每次这个loss呢,它逐步更改的一个幅度。
或者说这个参数更新的一个幅度呢是太小了,对吧?我们的一个损失也会改变的很小。那么这是我们的学序率比较小的一种场景。而说我们把学序率设置的很大,设置成5的情况下,我们再来看一下。的一个损失是吧。
21149、21149、21、1422、148是不是在不断震荡,对吧不断震荡。那么我们的loose呢,它也没有,就是说没有找到一个局部的一个比较好的一个值。二十几肯定是不是一个局部最小值啊。
这个lose它取值为二十几,肯定不是一个局部最小值。那么我们把它取值为0。05看看。好,我们取这个0。05的时候,你会发现我们nse呢它是不断进行下降的,然后收敛到我们的1个1。33。
对吧收敛到一个比较小的一个数值。也就是说我们的学习率它不能设置太大,也不能设置太小,对吧?太小走的就是说迭代的一个次数,它会就是说更新的一个不不长会很很小很小,太大呢就会波动不收敛。
那么我们让这个训练好的一个。就是说。W和B那 one就是说来再来画一条直线,这条直线就是我们的一个所绘制的一个。通过我们的数据,拟合得到了我们的这个执行。这个。
其实跟我们的原始数据及整体的一个分布的规律其实是比较一致的比较一致的对吧?好,那么这是一个非常简单的这种现性现性的一个数字回归啊。对,那么我们待会儿呢也会把这个代码分享给大家。然后呢。
如果我们想要自己去实现一下我们的全链阶层呢,其实也很简单。全年阶阶层其实本质就是有一个矩阵,就我们的W以及我们的一个偏执,做我们的B,对吧?W就是我们的一个输入的维度到输出的维度的一个转变。
那么这个地方我们就可以手动去定义我们的两个全连阶层,然后手动的去完成我们的两个全阶层的一个正向传播。对吧那么这个电样传播呢就是我们手动要去计算写一下我们的一个参数,如何跟我们的输入做一个具体的计算。
然后做一个re路计函数,然后得到我们的输出。当然这个地方我们其实是用一个比较大的数据集来进行训练的。所以说它是需要分成拜起的。所以说它的一个dmo其实是有双重的一个复性化的。
最外层呢是我们的一个epoke,就是对我们的数据集整体迭代了多少次,里面的一个for呢是我们的bet批量的。批量对我们的数据集批量的做一次批量的做我们的一个质向传播计算损失。计算梯度跟参数更新。
这里面的货是对我们的一批一批的样本做的。好,我们继续。那么我们如果是想要对我们的就是说模型进行训练呢,你可以手动去实现我们的全年阶层,这个就是手动实现的啊。就是如果你了解到了,掌握了全年阶层。
它的具体的计算,其实本质就是一个举胜的乘法。当然如果你不想去做的话,就是不想去啊就是了解它的原理。你也可以用这个全阶层比较简洁的实现。就是说在我们的一个。这个深度学习的模模型里面或者深度学息的框架里面。
其实它很多时候都提供了这个全链阶层。在这个地方,我们这个pat的NN点liner就是实现了我们全链阶层啊全连阶层。好,我们继续。这个呢就是我们的一个全连接的一个网络。当然我们也可以手动去得到。
就是说完成我们的一个卷积的一个操作。我们的一个二维的一个输,就是说输入数据,然后通过我们的卷积。这个卷积呢其实本质就是我们的一个滑动窗口滑动窗口。对,我们对于我们输入的X和我们的K。
其实本质就是在我们具体的做一个乘法,然后求和。这个计算。对,所以说这个地方如果我们有了多个输入的一个输入候。我们的一个输入的一个通道数是多个的时候,我们的卷积盒也要有多稳,就是说也是多通道的。然后。
跟它每个通道对应上,然后进行卷积,然后得到一个输出。这个地方其实大家一定要就是说理解一下我们的一个对应的一个具体实现。好,如果我们想要就是说手动去实现一下我们的卷积神经网络。
其实本质你就将我们的一个具体的一个卷积的操作,然后实现一下就行了。当然,如果你想要在拍特性里面去实现一下我们的一个卷积神经网络,其实也是很简单的。很简单的这个地方在我们的里面呢。
我们的一个2D的一个卷积叫NN点comDD啊这个地方我们的一个具体的一个计算。它是就是说一个卷积层一个卷积对吧?
常见的这种这种卷积网络里面然后这个地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,他在做什么呢?我们回到这个地方。
Freten。假如说我们原始的一个输入的维度是1乘以16乘5乘5,这个地方呢,每个样本是1个16乘5乘5的一个维度。我们需要把它转转成一维的,怎么转成一维的呢?它就是把它拉平呢。
把它从多维把它相当于是把它转成一个一维的16乘5乘5就等于400,把它转变成了1个400维的。所以说这个flat呢,其实就是相当于是一个拉平的这个操作。然后接下来将我们的拉平之后的一个维度。
把它通过一个全连接层得到我们最终的输出。对吧这就是我们的一个很典型的一个基非常非常基础的这个卷积神经网络,完成我们的一个就是说。关键点检测这个地方的关键点检测,我们其实直接是用我全连接才能完成的。好。
那么我们这个地方就是我们的一个定义的模型。那么我们怎么进行训练呢?其实训练的过程其实非常简单。对于我们的输入数据呢,我们就是需要把它做一个小小的转变。对它对应的把它数据级的一个标签。
它标签是呃一个具体的数值,它可能是一个从0到96的一个数值,是一个坐标显性啊。我们需要把它的具体的一个标签呢,把它转变成0到1之间,把它转变成从0到1之间,转变完成之后呢。
然后从pat里面的一个data load,然后把它转变成我们的一个单个样本的读取,到我们的多个样本读取的过程。好,然后接下来的过程就是和我们之前是一样的。对于我们的一个dta load。
它就是读取批量的样本。对批量的样本做我们的真常传播,计算损失,计算我们的一个梯度进行参数更新。这就是我们非常非常非常直接的。或者说仍然是这种流程啊,仍然是我们的这个流程。对,好。那么我们继续。
那么当我们。当我们就是说运行完成之后呢,我们可以将我们的一个样本来做一个可视化啊,做一个可视化。我们就是说预测一下我们的一个样本,它的关键点识别的准不准啊。我们这个地方用一些案例。
比如说这个地方我们是用这个王冰冰的图像,对吧?然后来做一个预测。这个地方其实我们的一个模型其实是识别的很准的对吧?识别的很准的对。然后我们接下来呢我就本地。将我们的一个模型呢我已经是把它部署到了。
就是说我的一个笔记本上面啊,我们这个notebook其实是给大家演示了这个训练过程和我们的验证过程。但是呢没有我们的部署过程,对吧?那么我们能不能把它在我们的一个机器上面部署一下呢?当然可以啊,对吧?
我们来看一看。我们先给大家演示一下这个效果。稍等一下啊。他慢跑一下。
对。这个地方啊卡了。🎼对,大家可以看到吗?这个地方其实就是呃这是我的摄像头啊,它是实时的去检测的个人眼人。🎼到我的一个就是眼睛和这个具体的一个坐标信息啊。当然这个地方可能有一点点的误差啊。
有一点点的误差。好,我先把这个关了,然后我再找一张网络的一个图像,然后再试一下。这个也完了,我先把这个关了啊,再找一个网图,我再来试一下。
稍等一下。嗯,之前我找的一个网图。那稍等我一下啊,找个网图开了斯特。
对嗯,对个对。
哎呦,我就不能出镜啊,要不然他就识别不到我识别不到这个图片。
对,这个地方大致是识别的很准确的啊。这边可能有一点点误差。这个。有点点误差,这个也能够理解啊。对。好。我们就把这个程序给暂停了啊,然后讲一讲这个程序怎么怎么。
我这个地方其实是在这个mac上面做部署的。当然如果是想把这个程序把它迁移到其他的一些模型里面,其实啊迁移到其他设备的上面,其实本质上是一样的。首先定义我们的模型,这个模型就是我们刚才训练这个模型。
对吧卷积层卷积层,我们的一个GO我们的一个具体的一个全力阶层。然后呢,我们这个地方其实我们是将我们的一个权重是把它保存下来的。然后呢,这个地方是直接把它进行load,load进来。
就是说这个权重直接把它load进来,把它加载进来的啊,然后这个地方我们是首先怎么进行一个部署呢?我们首先。利用我们的一个open C来做我们的一个人脸的一个检测。
这个地地方我们open C它有一个人脸检测的一个具具体的一个就是啊就是说这个呃模型啊,我们暂且不去追究它的模型是什么。这个地方怎么进行检测的呢?就是说它不断的去捕获我们的摄像头的信号。
对于摄像头的每一张图片,就是每一帧的图片,然后把它进行转变成我们的一个灰度图,然后完成一个检人脸检测的一个过程。对于检测得到的结果呢,不断的就是说进行这个具体的一个关键点检测。这个关键点检测。
就是本质是一个正向传播。我们对于我们的输入的一个图片,把它转变成一个我们想要的维度,然后把它做一个正向传播就行。这样投步完成之后呢,然后再将我们的一个检测得到的关键点在我们的原始图片上面。把它绘制出来。
这个就是一个非常简单的一个操作,对吧?我们这个地方就是在我们的一个本地的摄像头完成了一个具体的一个部署啊,这个可能就是一个非常非常简单的一个部署,对吧?
好,那么这个就是我们的今天所给大家讲的那个代码,然后我们继续。虽然说这个代码呢很简单,但是如果大家自己从头写呢,可能是需要一费点时间的。当然大家在待会课后呢。
也可以将我们的代码自己从头拿到之后自己运行一下啊,也都是可以成功运行的。
那么有同学可能就会问到,就是说学习记忆学习哦和学习深度学习是不是就这么简单呢?呃,一方面呢你如果是有一定基础的话呢,可能学的会稍微快一点。呃。
另一方面呢就是说还是建议你按照这个具体的一个就是说应用和一些流程的进行学会比较快一点啊,就是说可能也是需要大家需要大家掌握一些具体的一些工具的一个使用。比如说我们这节课就是使用这个paal型来完成的。
当然你使用tenflow来完成也可以,这个也是可以的。那么有同学可能假如自己去学习这个深度学习会有一些问题,或者说嗯学的没有人指导啊,或者说没有学习资料。这个地方呢我们给大家推荐一门课程啊。
也是我们其实在线和CSDN嗯就是说联合做的一门课程,就是我们的一个机忆学习集训营。在我们这个集训营里面呢,我们其实是给大会给大家讲解到我们的一个机忆学习的原理。机忆学习的实践。
以及深度学习的原理和深度学习的实践的。而且这个集训营里面呢也会提供这个GPU的一个云平台,可供大家来进行一个学习。而且嗯这个里面呢也会包含一些具体的一些实训项目。就是说大家在学习的过程中呢。
也会嗯就是说收获很多的。那么这个集训营呢,现在也是在我们的一个报名中,报名中啊,就是说现在是开到我们的第1六期的。然后如果大家想要就是说咨询,或者说想要了解我们的集训人的呢。
也可以就是说加一下我们的杨老师的微信。当然领取我们今天的一个课程的资料,以及我们课程代码的这个就是说这个渠道啊,也是加一下我们的杨老师的微信,呃,怎么报名。
就是呃拿出我们的微信扫一扫我们的杨老师扫一扫这个二维码就行了啊,扫一扫我们杨老师的二维码。对。然后大家对我们今天的课程有什么问题吗?我们今天其实给大家准备了5个VIP的一个就是说福利啊。
这个哎嗨洛伊同学以及我们的阿里巴巴同学,嗯,这两位同学都是就是肯定是能够领取到我们的VIP福利的。你可以呃加一下我们的杨老师吧。对,然后大家想要领取我们的一个课件啊,代码的。
都是可以加一下我们的杨老师的。然后这个机器学习机训营呢,其实它现在并不是说只单纯的讲一些原理,也有一些具体一些课程的一些实践项目啊。比如说呃我们的一些比较实操的一些过程。
比如这种嗯行为方向的一个车道性检测,或者说AIP方向的这个智能问答机器人,或者说这种推荐系统的一些项目,都是比较干货的啊,就是说也是带着有老师带着家带着大家从头来完成的。
所以说呢如果大家想要持续的学习或者深入学习,跟着案例学,跟着老师群呢都可以嗯就是说报名我们的一个机器学习集训营对。嗯,我们的具体的报名方法呢,就是扫一下我们的一个屏幕中间的二维码。
就加一下我们的杨老师的微信。对。好。嗯,大家对我们的一个具体的一个就是说课程有什么问题吗?所今天所讲解的一些知识点有什么问题吗?有问题的话可以提供我们还有一些福利VIP对,也是可以送到大家。对。
还有同学有问题吗?对我们今天的一个课程内容。我们送走的呢是我们的7月在线的VIP月卡啊,对,也是非常非常有价值的。可以学要我们的小课和使用我们的一个云平台。对。大家有什么问题吗?好。
大家如果想要领取我们的课件代码的,一定要加一下我们的杨老师的微信啊,或者说想要继续嗯就是深入了解我们的课程的同学呢,也可以加一下我们的杨老师的微信。对。好,我再给大家就是说再嗯给大家几分钟。
对大家如果有问题的话,可以及时提问。好,嗯,大家如果觉得今天学的内容没什么问题的话,可以扣个一好吗?对。就就是觉得什么大家都懂啊,然后就想着拿着代码自己跑一下,对吧?然后大家也可以扣个一,对吧?
我也看看大家是不是真的懂了。已经有同学扣到一了。好。行,那么我们今天的一个直播就到这儿结束啊。然后大家如果要想领取我们的一个代码的同学呢,一定要加一下我们的杨老师的微信。好。
那么我们今天的一个直播就到此结束了。我们的一个机器学习集训营呢现在正在火火热招生招生中啊,如果大家想要深入学习机忆学习和深度学习的一些知识点,都是可以来报名的。好的,谢谢大家。
人工智能—计算机视觉CV公开课(七月在线出品) - P16:【公开课】时间序列实战:心电图疾病监测 - 七月在线-julyedu - BV17z4y167dq
Yeah。Yeah。
hello,各位同学,嗯,有没有同学已经是在我们的直播间的。如果已经是有同学呃在我们直播间的同学呢,也可以扣个11啊,扣1,然后在我们直播间啊,然后我们就马上开始我们今天的一个课程。
好呃,然后我们今天的课程呢是由切在线来总给大家开展的一个时间序列分类和分解的时战。嗯,就是裸性电图疾病识别的这样一个课程。
然后呢,我们就呃马上开始啊马上开始。Okay。好,嗯,然后我是刘老师,然后也是来自于学业在线。嗯,然后我们的今天的课件呢,如果各位想要领取我们今天的课件呢,也可以从我们的一个右上方的二维码。
右上方的二维码,这个是我们的杨老师的二维码,杨老师的二维码。然后从我们杨老师的二维码中领取到我们的今天课课程的一个具体的课件啊。好,我们继续。
呃,在我们的今天课程呢,我们主要是嗯完成以下的一些具体的一些实践。嗯,如果大家认真的完成一个听课呢,是能够学会以下知识的。就是第一个呃是时间序列的一个定义和使用。嗯,它的一个应用啊。
时间序列的定义和应用。第二个呢是时间序列的一个特征提取方法。第三个呢是时间序列的分类啊,回归模型。第四个是我们会讲解一个具体的案例啊,具体的一个案例。然后我们也会给大家进行一个呃时间啊,代码实践嗯。
我们整体的一个时间安排,就是在一个小时之内啊完成的上述的四部分。嗯,在一个小时之内啊完成我们的上述四部分的一个学习。好。那们继续。首先呢我们来看第一部分时间序列的一个介绍。
也就是我们的一个时续数据的一个介绍啊。时序数据的一个介绍。时间序列呢其实它在我们的日常生活中呢是非常常见的,非常常见的。我们在日常生活中,我们的很多的数据的点,它是按照时间的一个维度进行堆积堆叠的啊。
以及它是按照某种时间的维度啊,然后进行一个收集的。嗯,然后这个地方的一个时间序列呢,它的一个特点,就是一方面它是按照我们的一个时间时间的因素啊,按照时间的因素来进行做我们的数据的收采集。
另一方面呢我们的数据集它最终形成了最终呢形成了是一个序列,是一个序列,它不是单个值,它是一个具体的序列。所以说这个地方的时间序列呢。
就是说我们的一个具体的数序列数据按照某种时间的一个因素来进行采集并行存储。好,这是它的一个具体的一个特点。我们对个时间序练呢它有一些具体的一些优点啊,就是它具体的特点啊,da塔它是规律的采集的。
就是它采集的过程中是有规律的。它不是说我们的一个无规律的。如果一个数据它是无规律的采集的,那么它就不能称作一个时间序练啊。如果它是无规律的采集的,它不能称作时间序练。我们看下面这张图。下面这张图。
我们在做一个具体一个序列的一个嗯就是说建模的时候呢,我们的这个地方这个地方的图。Soorry啊。看一下这个笔它是怎么使用的。对啊,我们这个地方的图其实它是一个我们的一个按照时间的一个走势的啊。
按照我们的一个时间走势的一个图,对吧?我们的按照时间的一个。这个地方比不是这个吗?对啊,我就不用这个笔了,这个笔不太好用。这个地方呢就是序列呢它是按照我们的一个分钟级别,分钟级别来进行我们的数据的采集。
对吧?按照我们的分钟级别做我们的数据的采集。然后呢,我们在做一个具体的采集的过程中,你会发现,随着时间的推移,随着时间的推移,我们的一个具体的取值,它是有这种波动的,对吧?它是有这种波动的。
随着时间推移它的一个波动,有这种波动啊,然后呢我们的一个数据级的一个采集的时间,对吧?这个地方很明显,它是按照我们的分钟级别来采集的分钟级别采集的,而且呢它的一个采集的力度。
应该是按照我们每分钟啊每分钟的一个维度做一个采集的。好。然后我们继续。然后在这个地方呢,你会发现我们的一个时间区列,它的一特点就是说它是按照我们的一个等长的时间做一个采集,等长的时间做一个采集。
也就是说我们这个地方是按照每分钟每分钟来进行采集啊,每分钟进行采集。如果我们的数据集它是不是按照每分钟来做采集。那么我们的一个数据集,它就不是一个时间区列啊,不是一个时间区列好。我们继续。Okay。
Yeah。嗯。然后呢,时间序列其实在我们的日常生活中呢,其实是非存在有很多的一些场景。比比如说在经济的领域,我们的股票走势、黄金的价格走势以及房房价走势。
这些都是我们的在经济领域的这种时间序列的一种一种场景。那么这个地方我们的股票它是怎么进行它的一个采集,是怎么进行采集的呢?如果是我们的一个具体的一个嗯美股,或者说我们的这种国内的A股呢。
其实它就是按照我们的分钟级别分钟级别做一个采集,对吧?然后呢,我们在电商领域,我们有这个DAUMAU以及PV走势,对吧?这些呢也是我们在日常日常生活中呢也非常常见,对,然后它也是按照我们的一个序列。
按照时间来采集的一些具体的数据啊。然后我们的工业领域呢,有这种传感器的这种信号,其实也是一种非常典型的一个时间序列。那么我们有了这么多时间去你们这么多数据数据之后,我们接下来要做什么呢?
有了这么多数据之后,我们接下来就是说想要从我们的数据中找到出一些规律,或者说能够构建得到一个新的模型,比如我们能不能从我们已有的一个数据集里面进行理解我们的一个序列的一个数据。
然后去找到它内在的一个规律。也就是说我们在挖掘出一个序列的情况下,我们能不能分分析出呃这个序列,它未来对吧?它的走势是什么?以及它这个数据整体的分布的规律是什么,这些呢都对我们的后续的应用。
其实是有非常好的帮助的,非常好的帮助的。好。那么这个地方就有这我们对序列做一个预测,或者说对我们的序列做一个监控,这是相关的应用。然后我们的一个时间序列呢,其实可以分解为如下几项的。
时间序列可以分解为如下几项,就是。时间序列可以分解成我们的趋势,季节和产差。趋势季节和产差趋势呢是描述了我们的一个序列长期的一个规律,但是可以增加减少或者不变的。比如我们来看左边的这个这个图啊。
这个图这个图呢就是我们的一个非常典型的这个嗯。这个我们的一个例子,在这个序列里面,它是随着我们的一个时间的推移,随着时间推移它是逐步上升的啊,它是逐步放升的。逐步上升的这个地方呢,我们称这个序列。
它的一个趋势呢是逐步上升的。虽然说这个地方我们的一个这个地方呢我我们的一个黄色线啊,黄色线或者橙色线,它是一个趋势。虽然说我们的一个序年,它整体的走势呢有这种波动,由高变低,然后由低变高这种波动。
但是呢它整体的趋势是就是说我们的增加的啊,整体趋势是增加。这是第一项趋势项。第二项呢是季节项,就是我们的一个序列呢,它是在某种频率下只呈呈现于一种规律的,或者说在某个周期下面啊呈现呈现于某种规律。
比如说我们的一个序列再进行一个具体的一个,随着我们的一个温度。对吧随着我们的一个时间的推移一年四季,它的一个温度,其实是随着这种呃就是说有规律的一个波动啊,有规律的波动。所以说这个地方呢一个季节性。
就是说它是一个带有我们周期往往复的啊这种情况。第三项呢是残差项,就是说我们在一个序列在剔除掉我们的一个趋势和季节之后,它的一个随机的波动,剔除我们的一个季节和我们的一个具体的一个残差之后的一个随机波动。
我们的原始的一个序列。这个序列就可以分解为我们的这个趋势项啊,分解我们的趋势项,以及我们的这个具季节项,以及我们剩下的残差项啊,这是原始的我们的黑线啊就可以做这样一些分解趋势季节残差啊,季节残差。
这里方我们的一个趋势和具体的季节是可预测的。我们的残差,这个也就是我们的一个C季波动是不可预测的,不可预测。在我们的一个具体的建模的过程中呢,如果我们的一个时间序列。是由我们的这三者所组成的情况下。
我们的一个具体的序列呢其实是可以做一些分解的对吧?我们原始的一个时间序列呢是可以做一个具体的分解。就是说我们的一个具体的一个时间序列可以分解为我们的一个趋势。我们的季节和我们的一个残差。
当然我们的一个具体的一个序列呢,也可以把它由这三者组合到一起。有比较典型的有两种模型。第一种模型呢是这个ja法模型。加法模型呢就是当我们的季节和残差与趋势无关的时候。
我们可以将这三者进行通过一个加法得到,通过加法得到。好,这个呢我们可以看右边这个图啊,就是说我们随着时间推移。这个数据呢,它的一个采集是不断进行上升的更性上升的。然后呢,这个地方我们很。
可以很清楚的可以看到我们这个地方是可以做一个趋势项啊,一个很典型的趋势项是不断上升的。然后呢,我们的一个季节。对吧我们的一个具体在趋势之外,我们的一个点。也可以很很清楚看到有这个季节相册的。
但是呢这个地方我们的这个季节的波动,周期的波动还是稳定的,还是稳定的。好。这是第一类啊,我们的加厚。第二类呢是这个乘法模型乘法模型。我们在做一个序列的过程中呢。
其实你可以看到我们如果一个序列它是可以组成由我们的乘法模型所由乘积所组成的情况下,我们的一个时间序列呢就会可以先展示为右边的这种形式,右边的这种形式。好,也就是我们的一个趋势乘以我们的一个嗯周期季节。
再乘以我们的参差啊,然后我们再把序列啊,随着我们的时间的推移,我们的一个具体的一个数据,它是乘着一个。波动越来越大的这种情况啊,波动越来越大的这种情况。好。那么这是我们的一个时间序列。
如果我们知道它是具体由这三德组成的,那么接下来我们也可以把它作为一个分解啊,分解成这三项。
呃,然后呢我们接下来呢有点卡证吗?应该是不卡的应该是不卡的对,应该是不卡的。然后我们接下来呢就对我们的一个具体的代码做一个实践啊。
Yeah。我们首先呢来看一看我们代码项啊。我们首先呢来看一看我们的一个代码。我们导入我们的相应的库啊,主要是这个tatistic model,这个主要是用来做一个时间序列建模的一个统计模型。
然后其他的都是一些具体的一些画术库啊。我们首先呢创建我们的一个序列。这个序列呢是我们有一个时间项,它是从我们的一个一到我们的50这部分素组值呢有的这个。然后呢。
在我们的time从1到50分别每项呢乘以个2。75。嗯。然后我们将这两项把它做一个闪点图画图。我们的time做我们X轴,我们的trainrend做我们的一个Y轴。很显然。
这个地方它是以这种我们的一个直线所它,就是说以这种直线的形式啊所绘制得到的。好,然后呢,我们如果是在我们的一个具体的一个时际序列里面呢,我们加入这个周期项怎么加呢?就是我们可以把它做这样的表面。
我们十加上sine的 time乘以10。我们的具体。具体的Y轴的取值啊,我们这样来做一个转换。我们的一个具体的一个季节项是由十0加上我们的time的一个正弦,然后乘行1。然后我们看一看它的结果。
如果我们在加入了我们的一个具体的一个政权的情况下,你会发现它的一个就是带有很明显的很明显的我们的序列色彩啊,带有很明显的这种序列色。好。然后呢,我们可以嗯生成我们的一个残插项,也就是我们的一个噪音响。
噪音呢这个地方我们是可以直接从我们的一个随机数里面所产生的啊,随机数里面所产生的。也就是我们确定一个具体的一个范围,然后生成我们的一系列的随机数。然后呢,我们就可以把这三者进行相加。我们的趋势项。
我们的周期项以及我们的残差项,对吧?我们上面就是对别定义的,就是我们的趋势。这是第一个是定义的趋势项。对吧然后下面的我们的季节项以及我们的残渣项。如果我们把这三者进行相加。
得到了就是我们的这样的一个加法模型加法模型,对吧?我们把我们的一个趋势项和我们的一个季节项,以及我们的残渣项进行相加,得到的就是我们的这样一个加法模型,对吧?这个就是我们PPT里面所示的。
当然如果我们想要把我们的一个具体的一个结构呢把它改变成我们的这种啊就是说乘法模型的,其实也是可行的。就是说将我们的这趋势,我们的一个具体的一个周期以及我们的残渣啊进行一个乘积的起,然后做一个可视化。
这就是一个很典型的一个乘法模型。好,这个呢是从我们的一个定义数据集。以及我们把我们的数据集的构建啊,这样得到的。当然,如果我们有了一个时间序列,我们如何对它进行一个分解分解呢?
就是说如果我们有了已经有的一个序列。我们接下来如何把我们的序列把它分解成不同的一个三项呢?也就是把它分解为我们的一个趋势周期和产加呢这个地方你可以借助ts model的一个具体的分解啊。
持续的分解分数呃方法,就是我们的用这个呃seasonary decompose的这个函数啊,可以将我们的一个具体的数据及把它做一个分解。好,我们继续。然后如果我们传入一个数据集。
然后把我们的一个加法模型做一个分解,你可以很清楚可以看到啊。这个第一个第一项是我们的一个原始的这个数据集。然后接下来是它的一个分解所得到的一个趋势项,以及它的一个周期价,以及它的残差项。
大就可以很清楚看到啊,我们有一个序列,我们是可以使用一些方法把它分解的,分解得到我们的预算项目。Yeah。Yes。好,那么大家如果遇到我们的一个加法模型的一个区列,你也可以尝试啊。
就是说直接把它用分解的方法把它进行分解得到我们的趋势项。我们周期上和参长一下。那么类似的,如果我们要一个乘法模型,你也可以用我们的一个ts model啊,把它进行一个分解。对原始的一个区别。
那我可以把它分解为我们的一个趋势项、周期项和我们的参照项。好,我们继续。那么在我们的一个时间序列的建模的过程中呢,不仅仅是嗯就是说需要大家掌握一下我们的一个序列它的一个分解。
也需要掌握一下我们的一个时间序列,我们能不能提取一些特征?我们的时间序练呢在做一个特征提取的时候呢,主要是可以从以下几个角度提取特征的。比如说我们的跟日期相关的特征。
我们提取出我们的这个日期里面的一些工作日,或者说它的一个周末相关的一些信息。这些特征可以作为我们的一个呃很典型的一个特征。也就是说我们在这个数据这个表格里面。
我们对于这个date time作为一个具体的特征提取。把我们这个datetime里面的年月日把它提取出来,是吧?以此类推,我们还可以提取里面的一些具体日期日期,比如大的小时分钟,对吧?
这些都是都是可以提取出来的。那么。各位同学如果是对这部分不太了解啊,大家可以去参考一下这个penndas它的一个以及这个python data datatime的一个具体实现。那么在这个具体实现里面呢。
其实我们可以提取很多的一些根据其相关的一些字段。比如说。我们的这个呃这一天是一年的day of year,就是说它是一年的第多少天,以及we year,就是说它是这几个周是我们的这个日期的第多少周。
对吧?以及we day也就是到星期几,对吧?这一体体的一些方法啊,都是在我们的d time里面有具体实现的啊,大家也不用就是说过多去担心好,然后呢我们还在做一个具体的特征的时候呢。
也可以用一个n feature。用这个le个 feature。这个le feature是哪里有原版和视频?嗯,可以加一下我们的杨老师的微信啊。如果又想要领取我们的PPT以及我们的代码以及录播地址啊。
都可以加一下我们的一个。我们的。屏幕右上角啊屏幕右上角我们杨老师的微信啊,杨老师的微信加一下,就是说跟我们杨老师嗯微信啊,就是可以领取我们这相关的一些资料啊。Yeah。好,嗯继续。好,加一下微信就有啊。
直接可以领取啊,没有什么门槛的,也不会要花钱。然后呢,我们在做一个具体的一个建模的时候呢,其实还可以做这样一个操作。就是我们可以将我们的一个历史的数据把它当做当前的一个特征。我们使用一个历史数据。
把它当做一个当前的特征。这个地方呢我们叫做一个legg featureleg feature啊,滞后特征。滞后特征。这个滞后特征是什么意思呢?这个滞后特征就是我们的一个具体的一个数据集呢?
在做一个具体的一个建模的时候。他可以做我们的一个用历史的一个序列当做我们的当前的特任。比如说我们在这个PPT里面啊,我们这个序列对吧?它是我们的有我们的一个具体的一个。呃。
counts这是我们的一个序列的取值啊,随着时间的推移,它有具体的取值。然后呢,我们的一个具体的一个情况,我们可以放大一点啊,在这。给大家看这个地方呢,我们的一个count体。这是当前时刻的一个取值。
然后legag一呢就是我们下一个下一时刻用我们的前一时刻的一个取值作为它的一个特征。这个啊然后我们那ake二呢就是说这个时刻用上两个时刻的一个具体取值啊。
这个legake2就是我们这一时刻用上两个时刻的具体取值,类类似的nake3。那个4那个5那个6,那么以此类推,你会发现这个地方的一个滞后特征在做什么呢?
那就是将我们的历史的历史的一个就是说我们的一个取值。历史的我们的取值呢当做我们的当前特征的一个数。比如在这个时刻,它是用历史的这些取值当做我们当前的特征的一个输入啊,这个操作呢叫做一个滞后特征。
叫做一个滞后特征啊,它是用历史的数据集当历史的数据啊当做我们当前的特征啊,叫做neg featuresature滞后特征。
还有一个呢叫做一个呃我们的一个rolling rollinging啊,我们的一个滚动或者是我们的滑动的特征。它是将我们的一个数据集呢按照某种窗口做一个具体的一个聚合。做完这个聚合之后呢。
然后得到一个统计值啊,得到一个统计值,这个是我们的一个rollning啊roing。好。Oh。我们来看一看代码的一个实践啊。嗯,这个地方呢我们还可以统计一些其他的特征。
比如说我们的一些呃做时间序列的一个呃就是它的一个节假日啊,高峰时段啊,以及一些其他的一些统计特征。当然也可以再给于我们的一个时间序列做一些历历史信息的一个统计。历史进行统计。
然后比如说我们可以统计它的一个历史的整体的一个中位数,中呃平均值风度偏度,以及与历史的一个呃就说具体的一个相比,历史的具体相比。然后我们比如说与同期的差值,以及与同期的一个具体的一个呃就是比值啊。
这些都是可以做一个就是呃统计的啊统计的。
好,我们继续。Yeah。然后呢,我们接下来就可以看一看一看我们的具体的代码实现啊。
这个课后续有一是有一系列相关时间序列的吗?啊,我们今天呢只是给大家做一个呃就是说公开课啊,我们今天只是给大家做一个公公开课啊。至于这个其他是不是有后续的一个就是说一系列的课程呢。
这个大家我们待会儿也有一个课程介绍啊,大家嗯不用担心。
我们如果是想要做我们的一个刚才的一些特征的一个提取呢,我们是可以呃按照这样的一个代码来做一个实践的啊。我们读取我们的数据集,然后呢将我们的数据集的一个某一列啊。
d time把它就是说转变成我们的一个呃时间类型的。然后呢就可以通过我们的 time day列提取得到它的一个月日啊 day这个都可以提取得到的。然后呢提取完成之后呢。
我们还可以提取得到它的一个day week以及day对吧?我们的一个具体的一个。🎼这两个其实是差不多的啊,这两个其实差不多意思都是星期几的意思啊。然后我们这样的一个转换。
就可以从我们的原始的这个d time提取得到一些额外的信息啊,提取得到额外的信息。好,我们这个地方呢还可以提取它的一个our minutes是吧?our minutes这个都是可以提取得到的啊。
our minutes都可以这个都是可以提取的。那么如果是做我们的一个L特征怎么做呢?ne特征其实这最后特征嗯就是最后的一个单位的数据啊,作为我们当前的特征,对吧?L特征,这个是L一的啊L一的。
那么这个地方呢我们在pas的一个具体实现呢,我们就可以直接用我们的一个shift操作啊,用一个这个shift操作来完成啊,shift操作来完成我们的具体的那ck特征好。
那么如果是我们的一个leg to呢,leg to呢就是我们的就是说滞后特征。leg2呢,leg3呢,那么我们就是类似的啊,都可以用我们的一个shift1234567,对吧?
这个是我们具体的一个滞后的一个单位来做啊。好,这样所产生的一个结果啊,就是这样的。好,我们继续这个地方的一个L特征呢,其实就是我们的一个序列的啊序列的这种就是说滞后特征。
序列滞后特征啊都是非常非常有用的。当然我们在做一个具体的一个就是说我们在操做操作的时候呢,也可以做这种哦基于我们的一个窗口的,基于我们的这种窗口的一个滚动的,或者说我们的一个滑动的思路。
我们这个地方呢用我们的一个rolling命,rolling呢是什么意思呢?也就是我们这个地方有一个滑动窗口,有滑动窗口,这种窗口的大小呢是7,窗口的大小是7,然后呢。
这个地方我们的一个具体的一个嗯就是我们的一个具体的一个呃就是是统计。我们窗口为7的情况下的一个具体的平均值。对嗯,课件啊就是说我们嗯嗯这个课件的微呃就是杨老师的微信啊,我们待会在这个PPT上面都有的啊。
我们待会儿这个所有的PPT上面都是有杨老师的微信的。如果你想要加的话,可以直接截图啊,或者说直接扫码啊,这个都是可以的啊,这个都是可以的啊。Yeah。好,这个是杨老师的微信啊。
大家如果就是说呃就是想要加的话,可以截一下图啊,截一下图。好,我们继续啊我们继续。
。
这个地方的一个roning mean呢,我们设置的windows是7,什么意思呢?就是说我们这个地方是有7个就是7个取值作为我们的一个具体的窗口组合得到一个具体的窗口。
8262222这7个取值组合得到一个具体的窗口,然后求得我们的一个平均值,就得到我们的一个平均值啊,这个取值是我们这7个取值的一个平均值。那么类似的这个地方为什么是NAN啊。
因为这个地方它是不满足我们计算要求的,这些点它是不满足我们计算要求的,所以说它是一个NAN在这个位置它是我们刚好满足我们的7个数值的一个取值,它是算的一个平均值。然后这个取值。
这个数值呢是我们的从我们的一啊就是从零开始啊,这个地方12622222这7个取值算一个平均值得到我们的这个以此类推啊,这个地方我们的3。14是我们从这开始的7个取值计算得到的。
所以说这个地方的U望里面呢你可以理理解它就是一个滑动窗口啊,一个滑动窗口。然后算一算我们的指定窗口,指定窗口类的一个平均值啊,指定窗口类的一个平均值。好。这就是我们的一个就是啊有ing啊ing。
当然然我们也可以算一个expendexendexend它是一个这种累积的累计的窗口。你这个看口。然后我们的一个具体的一个操作呢,就是说我们在做一个具体的一个操作的过程中呢。
我们可以将我们的一个具体的一个数值呢把它通过我们的一个呃exex啊,然后来做一个操作。我们这个地方的窗口呢设置为R,也就是我们从这儿开始啊计算得到我们这两个数值的一个均值啊,从这开始。
最小的啊最小窗口的大小就28加2除以5,然后在这呢就是说8加2加6除以3,以此类推,它是计算得到我们的累计平均值啊,累计平均值累计平均值啊,累计平。
所以说这个地方我们的一个ex和我们的ning啊其实是啊存在一个具体的区别的,有些区别的。好。我们继续。Yeah。然后接下来呢,我们就介绍一下这个时间序列的一些分类模型和它的回归模型。
在我们的一个呃具体的一个应用过程中呢,其实我们的一个具体的一个时间序列呢其实它是呃存在有一些具体的一些模型的啊,存在有具体的模型的。呃。
这个地方呢我们是有这个具体的一个有分类任务和一个预算任务以及用或者说我们的一个回归任务啊,分类任务呢就是说我们在给进一个时间序列的情况下,我们需要就是说识别一下我们的一个序列它的一个类别啊。
我们的具体具体一个类别是什么,这是我们的一个分类任务。然后呢,我们的分类任务如何做这个分类任务呢,其实是可以参考如下的这种形式啊,如下的这种形式。比如我们再进行一个具体操作过程中呢。
我们可以算一算这些序列的一些距离。区列的这些距离啊,然后呢我们可以在做区列距离的时候,比如说我们算一算两个序列他们之间的一个距离,可以算它的欧式距离,或者说算它的1个DCW距离,DCW距离都是可以的。
然后呢,我们再做一个具体的一个操作的过程中呢,我们还可以做这样一个操作啊,这个就是类似于这种KNN的思路。就是说具体的一个距离计算呢。
我们是用欧式距离或者说DCW距离吧评价我们的这种序列的一个距呃相似度啊。然后用KNN的思路来做就行。然后第二种方法就是说提取持续特征,提取持续持续特征。然后呢。
就是我们接下来就是我们做我们的一个具体的提取特征之后呢,然后再做我们构建一个分类模型,构建一个分类模型。这个是我们的一个啊比较常规的一种思路啊,比较常规的思路,就是基于机器学习的这种思路啊。
然后我们还可以做一个深度学习的一个建模,就是构建我们的一个深度学习的端到端的模型,深度学习的一个端到端的模型。就是说我们构建一个卷积深经网络,或者说我们的RN的这种网络。
然后再构建我们的一个具体的一个嗯全能阶层啊,然后完成我们的一个分类过程,完成我们的分类过程。好。那么如果大家对呃我们的这个时间数界分类感兴趣啊,我们待会也有一个具体的一些案例啊,一些具体的案。好。
那你继续。Sure。我们如果是想要做一个时间序列回归呢,回归这个地方其实就是做我们的一个未来时间的一个预测啊。未来时间的预测其实本质就是做这样一个操作,本质上做做这样一个操作。
我们是可以给定一个时间序列啊,可以预测未来的一个数值,给定一个时间序列,预测我们的未来一些具体的取值。比如我们可以使用这些一些这样一些操作。比如我们使用滑动平均来操作,对吧?滑动平均。
我们在历史的数据集而言呢,我们对历史数据集将它做一个rolling mean的这种操作,用历史的一些平均值用来做我们的未来的预测值,这是一种方法。I可以用我们的二码。
这个是我们常见的这种时间序列的这种模型,对吧?然后通过我们的ar维码,然后做一个预测,或者说做使用我们的这个profit来做我们的预测,或者说使用我们的这种深度学习的端到端的这种模型。
比如说RN或者说STM的这种模型来做啊,这个都是可行的啊,这个地方是我们常见的这几类任务啊,几类任务一及具子模型。这个主要是用于我们的一个时间序列啊时间序列。好。Yeah。
那么我们接下来呢就看一看我们在thon里面啊,我们的一个具体的一些预测呃,就是说时间序列的回归模型。我们来做一个尝试啊。我们这个地方呢是用这个ggom这个就是gom的库啊来做一个尝试。
呢它是一个基于MMXnet的一个就是时间序列回归的一个库啊,时间序列回归的这个库。然后大家如果自己想要实践呢实践一下,也是非常非常嗯就是说简单的非常简单的。有这个库之后呢。
我们它其实这个地方我们就是对我们上述的一个序列啊,我们上面的。
我们做回归的呢就是对我们上面的这个序列啊做回归。对对这个需得做回归啊。好,我们来看一看这个地方的glow呢其实它使用起来也非常简单的。这个地方我们就是使用一个deep AR的这个模型。
deep AR这个模型deep AR呢它是一个基于。就是说我们的一个深度学习的RI模型啊,深度学习的R模型。然后这个地方呢它是嗯就是说非模型非常简单。然后呢呃整体的一个就是说效果也非常好啊。
然后我们就用DVR模型来做一个具体的训练。这个地方呢我们可以做一个设置一个preventation name,特别是什么呢?是表示的我们的一个预测的。就是说需要预测的一个补偿。
就是说我们去在做一个嗯预测回归的时候,我们是做一单个单个嗯点的一个预测还是多个点的预测啊。我们这个地方是这做这样一个操作,然后呢我们就可以做我们的一个具体的一个啊就是说训练啊,做一个具体训练。
这个地方我们是让他训练10个亿po,让他训练10个亿po啊。我们继续。那我们训练完成之后呢,我们就可以对我们的一个具体的一个数据集啊做一个预测啊,做预测。然后我们来看一看。对着我们原始的数候。
这个是啊这个我们是预测结果的啊,这个绿色的是我们的预测结果的。你会发现它这整体的预测结果和它真实的结果啊,这里面有一根实线,有一根实线是它真实的预测结果。
你会发现这个绿色的和我们的一个真实的结果是其实是重合度非常高的,重合度非常高的啊,这个绿色为什么有一个有一些范围呢,这个地方其实是我们的depAR模型,它是会预测得到一个就是知行度啊,50%的执行度。
以及90%的执行度。也就是说具体有两个区间啊。你可以看到啊,这个是我们50%执行度区间内的一个预测值这是我们的90%啊,90%啊,我们的执行度内的预测值啊,这一个范围啊,范。好。
当然我们在做一个具体的一个时间序列的时候呢,其实我们也可以参考这种DJW的用DJW什么是DJW呢?DJW其实本质啊就是做这样一个操作。我们在做一个时间序列计算序列之间的一个相似度的时候呢。
其实是嗯就是说你可以用欧式距离,你可以用欧式距离做啊,可以用欧式距离做一个尝试。但是呢有些时候啊。我们的序列它往往都不是一个嗯对等的,它不是一个对等的这种形式。那么这个地方呢我们在做一个序。
就是说这个地方你会发现这两个序列,它如果直接用欧式距离做一个比较啊,它并不是一种很好的形式。因为我们这个地方是我们的一个序列,它跟我们的原始世界有这种就是说它并不是说是直接匹配,就能够匹配好的啊。
这个地方呢我们是做的这样产生我们的序列啊。我们将我们的一个具体的序列呢。嗯,有一部分是我们的一个s的一个函数,有一部分呢是我们的cosine函数。
大也知道这个sine函数和cosine函数其实就是差了一一两个项位,对吧?所以说这个地方我们如果是用DTW呢,你会发现它的一个匹配结果就是非常非常正确的非常正确的对吧?好,这个呢是DTW的匹配结果。
这个地方的DTW呢它就可以用于我们的非定场的序列的匹配啊,而且匹配的结果,一般情况下会比这个欧式距离会更好,比欧式距离会更好。好。然后我们接下来呢就是做一个简单的一个尝试啊。
就是说做一个心电图的疾病识别,以及它的一个具体的挑战啊,特别是我们的一个呃具体的一个实验啊好。我们来做一下。
你是也是在我们的一个就是note book里面给大家写好了。
Yeah。
Yeah。嗯,我们在日常生活中呢,有些时候我们的一个具体的一些数据呢都是很常见的利用我们的一个时间序列作为一个存储的。也就是说对于我们的一个具体的一个序列啊,我们对于我们具体序列,其实我们是。嗯。
比如说我们的一个心脏的一个跳动,对吧?它都是很常见的按照我们的时刻啊,不同的时间做一个采集的。然后呢,这个地方我们是将所有的一个序列呢,把它都存储为这种定场的定场的形式啊。
我们将这所有的一个序列呢都把它存储为我们的这种定场的形式啊,定场的形式。如果是存储为我们的一个定糖的形式之后呢,我们啊接下来处理就非常方便了。这个呢是我们的原始数据集啊,这个是我们的原始数据集。然后呢。
我们可以在做我们的处理之前呢,我们可以首先计算一下我们的一个每个时刻,它的一个具体的一个序列的一个平均值啊,以及它的一个趋势值好。
这个是我们的每个时刻,我们的序列是不是包含趋势值啊?我们可以看到啊,这个所有的时刻它都是没有包含我趋势值的。
好。我下说。然后呢,我们的整体的序列呢,它是包含有几类的啊,呃总共有5类、零类、一类、二类、三类、四类啊,总共有5类,这是我们的一个原始的啊,就是我们的一个原始的一个输入的一个数据,原始的输入的数据。
这它类别个数类别个数。好,我们接下来也可以做我们的一些可视化啊。我们做一个可视化。这个啊。这个是我们的不同类别的一个序列,它的一个可视化的结果。大家可以看到啊呃第零类、第一类、第二类、第三类、第四类啊。
它整体的一个序列呢还是存在有一定的一个区别的啊,整体的序列其实是呃存在有一定区别的。但是呢其实如果是我们的就是说你如果是直接是用我们的就是通过人工特征工程来做呢?其实它的一个效果并不会特别好。
因为这个地方我们很难去说第理类和第一类有什么区别,以第一类和第二类有什么区别。但是呢我们的深度学习呢,它还是可以呃人工的人工的做我们的一个具体的一个特征的一个提取。
以及我们的一个具体的一个啊就是说模型的一个建模啊,所以说如果是用深度学习来做这样的一个分类呢,其实是效果很好的,效果很好的。好。我们继续。那么如果是想要对我们的数据集做一个嗯操作呢。
其实首先呢是需要对它做一个采样的。因为我们的原始数据集呢,你会发现这个地方其实它是很典型的一个非结构化的数据,以及它是一个不不均衡的啊,样本不均衡以及类别不均衡的这种情况。类别不均衡的这种情况,对吧?
零类非常多,那么我们在做一个操作的时候呢,我们就可以对我们的一个数据集呢,把它做一个下采样。比如说我们的比较多的一类呢,我们就可以把它做一个采样的啊,把它做一个采样的。
这样呢我们的一个采样的结果就是可以得到我们的一个比较均衡的一个类别啊,比较均衡的类别。这个是我们采样之后的啊,采样之后的。Oh。那么我们继续。
我们接下来呢就是把我们的数据器呢把它作为我们的一个具体的一个划分,划分为我们的一个训练部分和我们的一个验证部分啊,训练部分和我们的一个验证部分。然后接下来呢划分呢我们具体的一个数据集之后呢。
然后接下来就是把我们的数据集,把它就是说转变为我们的合适合合适的形式啊,转变成一个三维的形式。因为我们的一个嗯卷积网络呢,它是对我们的数据集啊,就是说用三维啊来做一个卷积是比较合适的。
接下来呢我们就搭建我们的模型,搭建我们的模型啊。这个地方我们的模型呢就是使用我们的一个嗯异地卷积做我们的一个搭建啊,异地卷积做我们搭建。然后这个地方呢我们就是使用这样的一个网络模型。
就是我们的一个网络模型呢由三个异地卷积所组成。然后是由我们的一个呃池化层有ja一个三个全链阶层做我们做为我们的最终的分类,根体的网络结构啊,是三个卷积层,一个池化层三个全链阶层完成我们最终的分类啊。
这个是我们的一个卷积层的一些搭建啊。如果大。家啊就是之前搭建过我们的一个图像分类的一些呃模型呢,这个其实是非常简单的啊,其实是非常简单的。好。然后呢我们的整体的模型就是我们原始的一个输入。
原始的输入是一个。
嗯,就是我们的一个就是说全全就是原始的输入啊,就是1个187维的一个序列。它是1个187乘1的一个序列。然后我们通过第一个卷积层等到的结果是187乘以32,这个32是由于我们是有32个卷积核啊。
然后再是我们的第二个卷积啊,第二个卷积,我们的一个输入层结果它也是在我们的通道数发生了变化啊,然后一起类推。然后接下来这是三个卷积层,然后通过我们的一个池化层,然后再做我们的flat。
然后再通过三个全连接层,得到了我们最终的一个网络结构啊,这最终的网络结构。这个网络结构呢其实我们本质就是用我们的一个分类啊,用我们的一个分类来完成,用我们的分类来完成就就行了。
所以说这个地方我们的一个落呢是我们的一个呃就是一个嗯caterate cross cross啊,cate的一个一个 cross。
好。那么我们整体的网络模型呢,如果我们来进行训练呢,我们就是传入我们的注意集,以及传入我们的标签,就可以完成训练啊。这个整体的精度其实也已经是能够非常高的啊,已经能够非常高的。训练完10个一po之后呢。
我们的一个模型它的一个精度已经是能够到百分之啊998%了啊,能够到98%了。如果我们是想要把我们的一个就是说训练的一个结果绘制得到我们这种折线图,我们也可以看到啊这个折线图。
这个我们的一个模型随着一po的一个增加,我们的一个训练集的一个精度啊,也是不断增加的啊,也是不断增加的。
好。
如果我们想要看一下我们的模型,在我们的一个预测结果的一个混淆矩阵呢,也是啊就是大部分啊绝大部分都是能够预测正确的啊,绝大部分都是能够预测正确的。好,我们继续。那么我们刚才呢就是嗯。
我们刚才呢就是给大家演示了一下我们的一个心电图的这个急运识别啊。心电图呢它其实是我们的这个医院心脏病的一个辅助的一个诊断诊断指标。在我们的日常生活中呢,其实心电图现在的在医院里面啊。
大部分情况下都是依赖于这种职业的这种医生来做一个心电图是否异常的一个判断。但是呢这个心电图其实现在啊其实它就是说心电图一方面它的数据量比较多。而且呢就是说心电图如果是没有做一个数字化之后。
那么你就是说想要把它做一个分类啊,其实非常困难。那么这个地方我们就是构建的一个心电图的一个分类模型。心电图一分类模型好。而我们的一个具体的序列,其实你在做一个可视化的时候。
你会发现这些序列其实它并不是说完全的一个嗯我们的一个加法模型,或者说我们的一个乘法模型,对吧?我们在今天的课程,我们给大家说的这个加法模型和乘法模型。但是呢在日常生活中还是有很多序列。
它不是我们的一个加法模型,也不是我们的一个乘法模型,这个都是非常正常。那么在我们的一个具体的一个建模的过程中呢,如果遇到的不是加法模型,也不是乘法模型的这种情况。你再去用我们的一个时间序列的分解呢。
可能得到的效果啊,就不是特别好的啊,就不是特别好。好,那么刚才的这个时间序列的的这个分类模型啊,我们是可以直接用我们的一个呃卷积神经网络啊,ED卷积来做一个具体的操作的。好。呃。
我们接下来呢就给各位同同学推荐一下我们在7月在线现在正在开设的一门课程啊,就是我们的一个技忆术以及训这个课程。
这个课程呢嗯就是说也是我们在7月在线现在官网上上的,就是说正在举办的一门课程啊。嗯,我们的这个课程呢是我们哎我们先做一个抽奖,好不好?
对,嗯,刚才我们所讲解的这个案例,大家有什么问题吗?如果有问题的话,可以及时提出来。我们现在呢可以做一个抽奖啊,我们的一个抽奖呢就是我们的呃就是给大家抽我们的10个VIP的那个月卡。
我们接在线的1个10个VIP的月卡啊。然后我先找到这个课程啊。
我们的一个呃10个VIP的学在线的月卡呢,都是可以来看很多的,免费看很多的学习很多课程啊,我们可以给大家打开一下啊。稍等一下啊。好,这个地方我们如果想要看一看我们的月卡啊。
这个地方嗯月卡呢如果我没有记错的话呢,应该是送很就是很多小课的啊,很多小课的。好,大家对我们刚才所讲的内容有什么问题吗?呃,时间序列的呃时间序列特征和窗口特征可以一起送给CNN吗?嗯,这个地方是可以的。
这个地方就可以了。就是说你对于我们的一个序列。Yeah。序列它是原始的序列,它是一个定场的187维度。1。887维度。然后呢,有了这个维度之后呢,其实你可以再把它加一些统计特征。到这这个是可以的。
然后再送一起送到我们的模型里面,这个是OK的。嗯,实间区模型里面呢和啊嗯就是说ARMA这个是有区别的有区别的。你直接百度一下,就可以找到具体的区别啊。你可以直接百度就可以找到具体的区别啊。
嗯然后呢我们来看一看这个我们在其实在线的这个VIP会员送的是什么啊,我们VIP会员可以免费学我们这这些小课啊,免费的会员啊,我们的1个VIP会员可以免费送这些小课。然后呢我们就做一个抽奖啊,然后。
嗯,我们的抽奖的口号呢就是我们的呃实践序列好不好?然后大家可以在弹幕区里面发一下,我们抽前十位同学,前十0位同学啊,就是说领取我们的1个VIP的月卡。前十0位同学好。我们学在问到嗯这几个问题啊。
我们我把它复制下来啊。Okay。呃,时间序练可以呃用满就是说是需要满足加法模型和乘法模型,还才可以用CNN吗?这个就方我们刚才也讲了啊,我们的序列它是有这种加法模型。
或者说我们的一个乘法模型。这个地方呢就是说并没有要求,就是说它是加法模型才能用N或者说成法模型就可以用C样。并不是的并不是的这个地方我们是说如果它是加法模型的话。
你可以把它分解为就是说有我们的趋势项我们的周期项以及参项你可以把它做一个分解。并不是说只有这些才能做我们的一个用对我不是说他是必要条件啊。呃,大家可以发一下我们的时间区列啊,那么这几位同学啊。
我们的EVANCS以及呃1618以及我们的QQ同学以及过的同学以及QAM同学以及happy女同学以及我刚子同学啊,以及我们的893同学,这几位同学呢就可以加一下我们的杨老师的微信啊。
领取一下我们的一个呃VIP月卡VIP月。好,我们继续。
这个地方的一个有朋学问到CNN和RN。这盘。ZN和LV是可以配合使用的,是可以配合的是可以的啊是可以的。然后这个地方呢并时间序列分类。人血液分类一般情况下。一般啊用CNNEDCNN居多EDCN居多。
它不需要用RN啊,就是说这种我们的一个时间序列分类啊,用EDCNN居多,用RN的这种场景下比较少啊,用RN这种场景下比较少好,因为时间序列它还是局部比如序列的一个局部特征会比较重要啊。
序列序列的局部特征会比较重要。好,然后呢这是我们的1个VIP的一个就是说月卡。如果大家想要领取呢,也可以在我们的一个弹幕区啊积极发言。然后呢,发言之后呢,如果是抽交奖啊,也可以去就是找到我们杨老师。
然后领取一下。然后呢我们接下来呢就给各位同学介绍一下我们的一个机极学习及训营的这个课程啊。这个课程呢其实是非常干货的。在这个课程中间呢,我们不仅仅是会讲到呃就是说从机忆学习入门的一个on。
然后会讲到我们的一个机极学习的原理,也会讲到我们的具体的一个就是说CV啊图像啊,以及我们的就是说这种大数据的k的这种机学习的建模。然后呢也会讲到一些具体的一些机器学习的一些建模的案例。嗯。
同样呢我们也会讲到这种深度学习的原理和实战以及我们的具体的项目啊,V项目IP项目。我们的具体的这些课程呢,这个深度学习机训营呢是非常干货的。我们是。
有这个具体的一些企业级项目啊,比如这个车道性检测以及我们的智能问答机器人以及我们的电量系统的这种推荐系统啊,这个都是有具体的落地项目的。如果大家对我们的机器学习机器云感兴趣呢。
也可以在我们的一个呃就是说PPT这个位置啊,扫描一下我们的一个二维码领取我们的就是说呃就是说咨询一下我们的杨老师啊,我们的机器学习机器云呢是提供我们的免费的GPU云平台的。如果大家在实践的过程中啊。
就是说没有GPU的话,那么在报名的我们的机器云之后呢,我们是可以提供这个云平台给大家进行使用的。而且呃所有报名我们机器云的同学呢。
都是可以嗯就是说加入我们的课程QQ群由我们的老师呢全天的给大家进行答疑和提问。
我们的集训营呢现在有两个套餐有两个套餐。第一个呢是我们的套餐一,嗯,套餐一呢是价值就是说我们的一个课价呢是12000左右啊,它是包含了两年的一个VIP和两年的一个GPU的使用权。
然后赠送给大家的是一个大数据集训营和深的集训营的这两个课程。这两个课程呢,原价也是就是说几千啊,也是集训几千。然后呢我们的一个具体的一个就是我们的套餐2呢是只叫9499啊,就只有一年的VIP啊。
一年的VIP啊,然后它是我们的呃也有我们的GPU的使用权啊,也有我们GP使用权。然后呢,这是我们的一个第二个套餐。如果大家想想要报名我们集训营啊,就是说可以直接在我们的企业在线的官网啊。
然后找到我们集训营。
找到我们机器银行,然后可以详细的了解我们的具具体的一些课程。对,嗯,或者说大家直接可以拿到我们的一个就是说杨老师的微信啊,咨询一下我们的杨老师,咨询一下我们杨老师,也可以进行一个详的介绍啊,详细的介绍。
对。🎼然后大家对我们的集训营还有什么问题吗?呃,我们如果是对集训营有问题的同学,现在进行提问,也有我们的月集训云的这个课程有问题的话,也可以提问啊,我们有月卡来进行一个赠送啊。嗯,对。
大家对我们的月卡还要还还有想要的同学吗?我们的月卡这个地方显示的是一个连卡啊,当然也可以就是直接送给大家月考啊,这么多小课都可以直接学的啊,这么多小课都可以直接学的啊。
我们再来一波抽奖吧。嗯,大家嗯就是说我们第二波抽奖的一个口号呢,仍然是时间序列。如果还想要领取我们的一个月卡的同学呢,也可以继续的一个就是说抽奖哈,对不对。
好。大家对我们今天所讲的一个就是说呃这种时间序列的一些课程,还有是还有什么问题吗?你可以及时提问啊。
嗯,有同学问到老师,你这个地方所说的一个时间序列,嗯,是CNN比RN在时间序列上效果更好吧。呃,是这样的,CNN它我这个地方是CNN比较适合用这种时间序列分类。
CMN比较适合用在做时间序列分类RNN呢比较适合用在做时间序列来回归RN比较适合用在做时间序列的回归。好,是这样的啊。
好,这几位同学,我们的胡同学,以及我们的flying同学,以及我们的QAM同学,都可以加一下我们的杨老师的微信啊,这个地方扫码就可以加啊,扫码就可以加加一下我们的杨老师的微信。哎,还有我们的893同学。
好嗯。😊,然后我们我们的现在的机器学习集训营呢现在也是正在火热报名中啊,大家如果想要跟我们一起学习的啊,也可以欢迎大家咨询一下我们的杨老师啊,完成我们的报名。
我们的机械集训营的很多的一些具体一些毕业学院都是能够拿到我们的高薪高薪的一个就是说工资的。对,大家还有什么问题吗?还有什么问题吗?对。
STM呢适合用在什么模型啊,这个地方是这样的。Yes。先因为它比较适合。就它是比较能够就是说提取我们的局部。好的。比如说持序的。局部的人。是不的种。干嘛呢。我唔理一点啊。它是能够运用这种R号STM。
它是带有记忆性的。记忆性的记忆性的呢,它就比较适合用在提取或者记忆这种长期的长序的的。好的。好,去的啊。啊,现在等等。所以说这个地方我们的R这个地方一般情况下CN呢它比较适合用这我们的实序分类。
这是持续分类RRN或者STM呢做一个持续的预测,或者说我们的一个这种持续预测会比较合适啊,持续预测会比较合适。C后网可以用在量化交易上面。哦,据我所知,现在量化交易现在用到的模型都比较轻,它不会用。
就是说呃这种RN和CNN还是比较太重的啊。量化交易模型它比较在意这个时效性,深度学型的可能还不太适合。对。是这样的啊是这样。
好呃,大家对我们的集训营还有什么想要了解的吗?或者说对我们今天的一个代码和课程还有什么想要了解的吗?对,嗯,我们再来做最后一波抽奖好不好?我们最后一波抽奖。
我们就我们的抽奖口号呢仍然嗯就是说使用我们的契月在线做我们的抽奖口号,我们的赠送的礼品呢仍然是我们的7月在线的一个嗯月卡VIP月卡嗯,领取了我们的VIP月卡就可以学100多个啊。
100多个我们的这个具体的一个课程啊,100多个我们的小课都是可以直接学的啊。好。
嗯。大家如果想要领取的话呢,也可以在我们的一个直播间啊进行留言。模型的轻重是指模型的复杂度的嗯,模型的一个参数。
以他的一个具体的一个预测速度。一审速度预审速度啊。对。大家如果还想领取我们的月卡的同学啊,可以在我们的一个直播间啊,在我们的一个评论区啊进行留言。这个地方我们的5505同学以及我们的QAMFS同学啊。
都可以加一下我们的杨老师的微信啊,加一下我们的杨老师的微信,然后做我们的一个啊就是说领取我们的月卡。当然我们今天的所有的课件代码以及嗯PPT啊,都可以啊从我们杨杨老师这个地方领取。
大家还有什么问题吗?还有什么问题吗?模型的精度是等于识别率。
嗯,你可以这样理解可以这样理解模型的进度这个看。它是与我们的一个评价指标相关的。应该指标较相关的啊。说如如果有一些情况是我们的一个具体的一个,就是说不式分类的话,那么我们就是啊不是用不是用准确率啊。
不是用准确率。嗯嗯。建建立好的继学习模型还需要调参数参数吗?呃,什么时候就是说如果你的精度,如果你的精度啊没有,就是不就是不不是足够好的情况下,也可以做一个调查,也是做做一个调。
哎,今天还讲福利业分解吗?我们今天不讲了,今天我们的课程足够多了,我们就不讲福利分解了。对,刚才提问的同学呢也可以从我们的杨老师的微信啊领取到我们的月卡啊。对。
好,大家对我们的一个课程还有什么问题吗?嗯。大家对我们今天的课程还有什么问题吗?呃,如果想要领取我们的这个代码课件啊,以及一些数据啊,都可以从我们的杨老师的微信这个地方领取。好。好,大家如果没有问题。
觉得嗯内容都O的话,可以扣个一好不好?然后我们就结束今天的一个直播。好好的啊好的,大家千万不要忘记啊,加一下我们杨老师的微信啊,领取我们的代码。同样的呢。
如果想就是说想要报名我们的一个机器学习集训营的同学呢,也非常欢迎啊,也非常欢迎就是说大家也可以咨询一下我们杨老师那里咨询一下杨老师,或者说直接从我们的7月在线的官网,找到我们具体的课程啊。
找到我们具体的课程,然后进行详细的了解。各位课程是非常干货的啊,非常干货的。
好,训年级里面RRT的1个0。99测试级里面RRT0。98模型玻璃盒的吗?这个地方你可以看一下模型它的一个。这个地方模型过离盒,我觉得你不是说从单个值来看,你看一下这个趋势啊,看一下它的趋势。
也就是说训练级它的一个整体的一个精度变化,以及它跟我们的测试级以及验证级的精度变化是不是匹配的。如果两者是不匹配的,我们就说它是不离合的啊。从单个值我们是看不出来它是不离合的。Yeah。Oh。好。呃。
那么如果没有问题,我们今天的一个直播就到此结束了啊。如果没有问题,我们今天的一个直播就到此结束了。好的,谢谢大家,谢谢大家。如果想要领取我们的课件代码呢,都可以找一下我们的杨老师。
人工智能—计算机视觉CV公开课(七月在线出品) - P17:【公开课】语义分割实战:人脸抠图PS——无二维码 - 七月在线-julyedu - BV17z4y167dq
嗯,对,各位同学能看到屏幕吗?如果能看到屏幕的同学,可以扣个一,好不好?然后我们马上开始我们今天的一个直播啊,马上开始。那么大家之前了解过这个与分割的一些任务吗?嗯,如果有了解的话呢。
你可以啊就是说打字啊,让我知道。对,嗯,我们今天的晚上的一个直播呢也是有一个抽奖活动啊,就是我们在今天晚上周播直播呢我们是分三次来进行一个抽奖。
每次抽奖呢就是呃就是说领取我们的一个现实在线的1个VIP月卡,每次都是1实0名同学,实0名同学。对,嗯,然后领取的的同学呢可以直接在7在线的官网兑换相关的一些课程。
然后我们今天的一个直播呢也是有一个具体的优惠啊。就是说嗯如果在今天晚上报名,我们的正式课程呢,也是有具体的一个优惠价格啊,有一个优惠价格。然后如果大家感兴趣啊,如果大家感兴趣呢。
也可以来就是说也可以来进行一个对课程进行了解好。嗯,这个地方呢我们今天所介绍的一个主题呢是语音分割语分割,它是就是说是一个智能视觉里面的一个常见的任务。然后我们嗯是利用这个具体的一个任务呢。
完成我们的一个就是说人脸抠图的一个应用啊,完成我们的一个人脸抠图的应用。然后如果各位同学也想要领取到我们的今天的一个代码和课件的同学呢,都可以啊加一下我们杨老师的微信,加一下我们杨老师的微信啊。
然后我们的杨老师呢,也可以及时的将我们的一些资料发给大家。好。然后我们就继续啊。
嗯,首先呢我们看一看今天所讲的就是说具体的这个内容就是第一部分是深圳学习的一介绍。第二部分是我们的一个就是一分的离想。第三部分呢是人脸PS的一个时段,是用有同学问的是用U吗?是的啊。
我们是使用U来做的来做的。好。我们看一下。首先那我们来介绍一下区月在线啊,就是区月在线呢是一家嗯就是成立2015年的职业教育在线平台,专注于人人工智能时代的人才培养和企业服务。呃。
企业在线呢不仅是面向于个人个人客户啊,就是说我们的就是人面向于普通同学的人才培养,也面向我们具体的一些企业的培养。嗯,就是说培养的客我们的具体的客户呢,不仅仅包括入门的同学、就业同学以及在线提升的同学。
也包括了就是说企业嗯相关的一些培训,比如中国联通、国家电信以及广西集团等等。嗯,我们的具体的公司的一些呃价值观和使命啊,这个地方大致给大家看一下啊。好,然后这是我们公司的网址。
如果都各位同学想要到就是查看我们公司有什么具体的一些课程啊,也可以登录。我们就开始我们的第一部分啊,深度学习的一个介绍。呃,什么是深度学习呢?深度学习呃,这个地方它跟我们的记忆学习有什么区别呢?
这个地方其实是要呃就是说你要把它嗯重点来看的深度学习呢,它是一种具体的一类的一个机忆学习的算法。也就是说深度学习这个地方与机器学习的两者之间的区别啊,两者之间的区别。
这东西呢它是包含了多层的一个神经元的一个网络结构。它是与人的一个大脑神经元是非常类似的。这个地方深度学习呢,它这个地方一句话说明它的一个组成结构啊,或者它的一个特性是类似于这种神经元的这种结构。
那么生下学区它是一种端到端的一个。训练过程啊,端到端呢就是说我们这个地方端到端呢是表明我们的有一个。inputs然后到我们的一个output。这个过程啊input和我们的output这个过程。
这个地方为什么叫端豆端呢?因为我们的模型在这个建模的过程中,它是没有在没有就是说没有其他处理过程的,没有其他处理过程。也就是说中间就只有我们的一个模型。
这种模型它是从我们的一个输入到我们的一个输出的这种映射关系。那么深度学习它在进行建模的过程中呢,你可以将它的一个具体的过呃计算过程呢,把它视为一个有效的一个计算图,有效的一个计算图。
这个地方图的节点表示它的一个具体的计算过程,它的一个每个节点表示它的一个具体的计算过程。好。然后呢,这个地方我们的一个具体的一个操作啊,我们具体的一个操作。
就是我们是可以将一个网络结构呢把它写为如图所示的一种形式啊。如图所示的这种形式。我们是将我们的一个具体的一个网络结构可以把它汇聚成这种有效的啊,有效的在这种带有节点的一个图。
然后呢我们在这个地方有输入层隐含层和我们的输入层输入层隐含层,我们输入层。输入层呢是我们的呃具体的数据的一个输入,它可以支持多维的一个输入,甚至一个矩证的输入。然后呢,我们的一个隐含层呢。
隐含层就是我们的一个中间的计算结果。嗯,有了我们的输入层之后,然后通过我们的一计算,然后得到我们的隐含层。隐含层呢,它就是中间的一个计算节点,中间计算节点输出层呢就是我们最终的结果输出,就是我们的。
在这个地方,我们每个节点,它通过一系列计算完成了对应的输出。这个地方就是我们的一个输入层银行层和我们的输出层啊。这个地方我们的一个具体的一个就是我们的隐含层,它有可能是有多层的。
隐含层是可能是有多层的啊。嗯,我们如图所示的这个图呢其实只有一一层隐含层。但是呢其实在我们的一个具体的一个操作过程中呢,其实是可以啊就是说由多层所组成的啊,由由多层所组成的。然后这个地方我们的每个节点。
每个节点。每个节点呢就是我们的一个具体的一个就是神经元的一个具体神经元的。然后在这个神经元里面呢,我们其实本质需要做一个什么样的操作呢?这个地方它本质就是一个我们的一个全连接的网络,对吧?
我们的一个全连接网络。所以说这个地方我们的每一层呢就是我们的一个全连阶层,就是我们的一个全连阶层。在这个全连阶层里面呢,我们的一个具体的一个呃就是最最重要的啊,就是说它具体在做什么呢?
它就是在我做我们的一个具体的一个。哪个节点哪个数入节点和我们的这个神经源全部连接到一起。大家可以看一下这个边啊。对吧这个地方我们有N个输入,我们所有的N点N个输入和我们的一个神经元全部连接到一起。
那么这个地方我们的这个呃这就是我们的箭头,对吧?它就表明了就是具体的一个数据的一个流向。数据的一个流向。然后呢,我们的每个节点,这个节点就是我们的一个具体的一个就是。计算过程。
这个神经元它接收了我们的一些具体的输入,然后得到我们需完成一个计算啊,得到我们的输出。好,这就是我们的一个具体的计算模式。这个地方的申请人在做什么?这个地方的申请人本质就在做我们的这样一种操作。
这样一种操作呃,它是将我们的一个具体的一个输入啊,它是将我们的一个具体的输入呢,把它转变成我们的一个输出。这个具体的一个计算过程呢是以如下的这种形式来完完成的。如下这种形式来完成的。
我们假如是有我们的7个输入,就是说我们的输入是7个维度的话,输入7个维度的话,我们的每个维度就是说每个数值和我们的每个神经元的一个权重进行相乘。对吧嗯画一下啊,1234567。
然后和我们的一个具体的一个神经元。哪个进行相连。好,然后呢这个地方每个项年的过程中呢,就是说我们传入的数据呢,它有一个对应的权重。对应的选中与和与和它进行相乘,也就是我们的X1乘W1,加上X2乘W2。
加上X3乘以W3一直类推啊,然后进行得到我们的一个中间计算结果。我们的中间建结果呢,其实这个地方你会发现它就是一个行列式的一个乘法,对吧?我们的一个行列式,对吧?我们的一个行线好像一个列线之之间的乘法。
然后得到一个取值。这个取值呢再加上我们的偏值,然后得到我们的输出。这个输出呢,我们再通过一个激活函数F。这个奇函函数对吧?我们可以用sigoid。
或者说我们用re路来做我们的计划函数来增加模型的一个建非线性的建模能力,对吧?所以说这个地方我们就是将我们的整体的一个形式啊,这是一个神经元的一个权重和我们的一个具体的一个输入进行一个计算。
得到一个输出。那么以此类推,如果我们有多个神经元的话,也就是说我们假如说是有具体的一些输入。然后我们有多个神经元的话,那么你会发现啊,这是我们的第一个神经元的一个连接。每个每个连接呢有一个具体的权重。
然后这是我们第二个神经元的连接,每个连接有它对应的权重。以此类推呢,你会发现我们的第二行。这个地方的仍然是有我们的W对吧?7个W和我们的一个输入进行相乘,然后进行相加的话,那其实也是类似的一种形式。
所以说这个比方我们的第二行就是我们的第二个神经元的一个具体的参数啊,我们的第二行就是我们的第二个神经元的具体的参数。好,我们继续。那么这个地方我们有了我们的一个具体的一个输入的数据。
以及我们有了我们的神经元之后,我们就可以将我们的一个神经元的参数和我们的输入数据进行一个举证的一个惩罚,对吧?举阵惩罚。然然后完成我们的一个具体的一个就是我们的一个操作,然后得到一个取值。
每个神经元它的参数和我们的输入进行计算,得到一个取值,每个神经元和我们的输入进行计算,得到一个取值,对吧?以此类推,然后假如说我们这个地方有5个神经元,那么我们的输入是7维。那么我们接下来输出的维度。
就变成了5维的,对吧?所以说这个地方的一个全新接网络,其实它本质就是在做我们的一个就是呃一个很非常典型的一个。嗯,就是维度的一个变化啊,就是说一个非常典型的一个维度的变化。好。
那么有了这样的一个变化之后呢,你会发现我们的一个具体的一个神经元,他就在做我们的一个什么呢?他就在做我们的一个。举证相乘,有了一个矩证啊,有了一个矩证和我们的一个具体的输入,这是一个输入。
假如说我们有不止一个输入的,我们还有一个输入。要么我们就得到了维度就变了,对吧?它的维度就会变化。就以是这个地方就是说假如我们的输入数据是呃,我们输入数据是1个7乘以5。
我们的一个具体的一个参数是我们的一个5乘以7的话,那么进行几聚能相乘,对吧?那么它最后就得到了5乘5的一个。矩阵5乘5的矩阵,这个5乘5是什么呢?我们由最终得到的是5个样本,5个样本。
每个样本呢它的维度变成了5。对,对吧?就是说我们最终呢就可以用矩阵乘法来代替我们的全链阶全链阶层。那么我们在学习一个具体的一个深度学习的时候呢。
也可以将这个学习的过程呢把它转变成我们的一个呃就是说我们的一个嗯就是。我们这个图呢其实所绘制的是一个我们的一个。嗯。😊,网络结构的图。那么我们其实是需要将我们的一个网络结构的图呢。
把它转变成我们的一个具体的一个矩阵的一个计算过程,把它转变成一个矩证的计算过程。这个矩证的一个计算过程呢,它其实本质就是我们的一个。能够将我们的一个聚算过程啊能够进行一个快速优化啊快速优化。快速优化。
然后完成我们的计算过程。好,这个呢就是说我们在学习一个具体的一个嗯网络模型的时候,我们需要知道这个网络结构是怎么样的。然后呢,接下来也需要知道我们的一个具体的一个,就是说它是如何进行一个实现的啊。
如何进行一个实现的。那么我们在学习这个深度学样本那习的时候呢,你千万不要将深度学习与这个。具体的一个嗯非生的学习,也就是记忆学习把它进行一个对立起来。
你需要知道这两者其实是可以进行一个就是说把它汇总到一起啊,把两者汇总到一起的。因为这个地方我们的记忆学习和深度学习,其实两者是呃在很多的一些算法其实是相似的,以及它的一个基础啊都是相似的,都是相似的。
所以说呢大家千万不要把这两者对立起来,两者对立起来。只不过这两这两类模型,它用到的方法是不一样的,用到的方法是不一样的。然后呃如果是初学者的同学呢,就是说你可能啊就是你在学习过程中呢。
你可能的一个学习方法也可能存在一个区别啊。对。那么深度运行它到底有哪些具体的一些案例呢?这个地方深度学行它能够用到的一些具体的场景。比如说这个人脸识别、侧牌识别、动物识别、红绿灯检测。
或者说这个文本翻译以及客服对话机器人,这个是深度预行比较适合用的一些任务。前者呢这个地方是我们的一个输入的数据是一个音。后者呢这个我们输入的数据呢是一个text。对吧这是两类任务啊两类两大类。
两个大领域。呃,一个是CV一个是NRP。然后对于深度学习而言呢,其实我们的一个具体的一个它非常适合解决的任务就是这种我们的一个非结构化的数据啊,非结构化的数据啊,非结构化的数据。然后对于深度学习而言。
它解决这种非结构化的数据啊,它的精度也是比较高的,也是比较高的。好,我们继续。然后呢,我们接下来呢就看一看这个语分割啊,其实呃我们在进行一个具体的一个嗯介绍语分割的时候呢。
你需要知道语分割其实它本质是在做什么,你需要知知道这样一点啊,我们再做一个具体的一个就是嗯。你分割的一个任务的时候。其实它本质就是在做分类,它本质就是在做分类。对。
所以说这个地方我们首先呢你需要知道这个分类在做什么。对于我们的图片分类呢,它的一个输入的数据就是我们的一个图像。然后通过我们的一个具体的一些网络结构。比如说我们的一个卷积层。
以及我们的一个嗯一些相关的层,对吧?我们有了一个输入的一个图像,然后把它转变成一个具体的一个类别。就是我们的一个具体的一个。分类对吧?那么余分割呢,它跟分类不一样,余分割呢它是这样定义的。
当我们输入一个维度为H乘W乘N的一个图像,这个地方H和W是图片的长和宽,N呢是图片的一个通道数。这是我们的输入的数据。然后呢,我们在进行一个建模的时候呢,我们输出的是H乘W乘C的一个矩阵。嗯,啊稍等啊。
喝口水。好。Right。这个地方我们的H和W仍然和我们的数的数据维度是一样的。这样的话我们输入的数据维都是一样的,只不过这个地方我们的通道数是变了。从我们的N转变成我们的C了。N转变成我们的C了。
那么这个地方我们在做什么呢?我们再做一个具体的一个操作,就是说。如果我们在做一个分类的时候。这个地方我们是在做什么呢?它是将我们的一个它是有一个类别,对吧?输出的是一个我们的类别。
但是呢这个地方并不是说直接输出一个类别,它的一个具体输出呢其实是一个概率的一个向量,一个wector。就是说这个we里面假如说有三个取值啊,0。3。0。40。3就如三个取值。
那么这每个取值呢就表明呢是对应于嗯就是说某一个类别的一个概率,某个类别的概率。比如说我们这个地方是我们的第二个类别,它的一个概率值最大。那么我们就认为我们这个地方我们的图像。
它是属于我们的它的它的预测结果啊,是我们的第二个类别,第二个类别。对吧那么在我们的一个具体的建模的过程中呢,我们的输出其实是一个vector,是一个vector啊。
就是说我们的分类网络其实它本质输出的是一个vector。那么在这个地方你会发现我们的一个输入是H乘W乘一个C。啊乘以N,然后我们输出呢是H乘W乘C这个地方的C呢就是我们类别数。类别个数。
这个地方我们的一个每个网络,它在做什么呢?这个网络就是对我们的每个像素。做一个分类,对吧?你你会看到这个地方我们的一个输入的一个数据,输入的数据它就是我们的一个图片,对吧?
假如说是1个256乘以256乘3的一个我们的一个矩阵,我们输出的一个假如说我的类别是10。那么我们的输出的维度就是256乘以256乘以10这样的一个维度。我们在这个地方每个像素它输出的一个维度。
是1乘1乘10。对吧如果我们把这个两个嗯1乘1的一个把它滤掉,那么它本身也是一个w。本身也是对吧?对也是和我们这个地方的嗯是一致的啊,和我们这个地方呢是一致的。也就是我们在进行一个具体的一个建模过程中。
我们这个地方仍然是可以作为我们的一个具体的一个。就是嗯。对我们的一个像素级别啊对我们的一个像素级别做一个具体分类。像素级别做一个分类。好。那么我们在做一个具体的一个语分割的时候。
我们还要回到这些PPT啊,我们的一个具体的一个语分割。我们来看一看我们的一些具体一些任务啊,我们往下看。我们这个地方呢,我们在做一个具体语义分割的时候,他其实在做什么呢?
那其实本质就是说我们有了一个具体的一个输入的数据之后。假如说我们输入一张图片,我们需要将它的一些具体的一些像素。把它进行分隔开,把这像素进行分隔开。这个地方的像素呢,你可以理解。
就是说具体的就是我们的一个。每个像素的取值每个项素取值。然后如果我们是完成一个目标检测的任务呢,我们的一个具体的一标签就是每个物体的一个坐标,每个物体的坐标对吧?如果我们是做一个语分割呢。
我们这个地方的一个区别结果,就是每个像素的一个类别,每个像素它输出一个veact,然后我们把这个wact转变成一个类别。然后可以绘制得到这样一个图像啊,这个呢你可以可看一下。
就是我们的鱼分割它的一个标签,鱼分割的标签。好,语分割的标签。那么我们在进行一个建模的过程中呢,其实啊第一类任务就是我们的目标检测。第二类任务是我们的实呃语分割,对每个项素进行分类。
如果我们是将我们的一个呃目标检测和我们的语分割,把它结合到一起呢,就可以得到这种实力分割实力分割。就是我们在进行一个识别的过程中呢,需要识别出每个人的啊每个人的具体的一个像素的一个类别。
以及我们对应的一个目标的一个框选的位置啊,这是我们的一个具体的一个呃语分割和我们的一个实力分割。那么我们这节课呢其实是讲了一个具体的一个语义分割啊,讲的是语义分割。好。
我们继续这个地方我们已经达成共识了啊,语音分割就是对我们的像素级别,对我们像素级别做一个分类,像素级别做一个分类。好,这个地方我们先嗯给大家做一个第一个提问啊,如果我们的一个输入的图片是1个256。
乘259乘3,我们这个地方有5个类别,5个类别需要做预分割。我们输出的维度是多少呢?输出的维度有多少呢?然后我们大家如果知道答案的同学呢,可以在我们的一个评论区,然后进行打字啊,进行回答。
前1名回答问题的同学呢,可以领取到嗯我们的学在线的一个月卡。对,有没有同学想回答的?有没有同学想回答的?对。有没有同学想回答的?其实这个很简单,对不对?好,在我们的一个具体的一个建模的过程中呢。
假如说我们的一个输入的数据是我们的256乘226乘3,我们的一个具体的一个输出的类别是我们的哦五5类的情况下,我们输出的一个维度就是1个256。乘256乘5对吧?是这样一个维度,这样一个维度啊。
然后我们这个地方呢一语分割呢,它是对我们同类的一个像素啊来视为我们的一类,然后做一个分类的啊。对,黑帽子编程度同学啊,回答正确的啊,然后嗯非常正确啊,256乘256乘5。
然后这位同学你可以加一下我们的杨老师的微信啊,可以领取一份我们有一些在线啊赠送的一个我们的一个具体的一个嗯VIP月啊微信4699同学说说的这个是非常大的一个数值,你是把它展开了吗?
这个展开不是我们想要的,我们想让他原始的啊,我们想要它原始的一个维度。嗯,5个通道QQQQ4422556666669分9同学也回答对了啊,就是也可以加一下我们杨老师的微信啊。对,嗯。
这个这两位同学可以领取到我们的VIP月卡啊,这两位同学可以领取到我们的VIP月考。好。我们继续啊。那么语分割其实他在做一个具体的一个嗯标注的时候,其实是蛮困难的一件事情。因为对于语义分割呢。
我们在标注的时候,其实我们是需要对它的具体的这个每个像素,每个像素做一个标注,每个像素做一个标注啊,我们需要做每个像素的标注。所以说在做语分割的时候,其实我们是需要对。
这个区域就是说我们图片的一个区域啊做一个勾选区域做一个勾选的。如果我们是想要对于我们的语分割做一个标注呢,你可以用label me来做一个标注,或者说用我们的一个就是说模型的一测结果。
然后加上人工修正啊来来做。在于分割里面呢常见的这个数据集就是我们的paOVC。呃,CTspace啊以及ADESK啊这些具体数据集。好嗯,还有同学啊这个。嗯,LHLHQ同学呃,也是回答对的啊。
256乘256乘5啊,这个地方有三位同学啊,这三位同学可以加一下我们杨老师的微信啊,然后领取得到我们的一个有契约性。我们提供的这个VIP月卡啊,VIP月卡。好。
那么我们接下来呢就呃介绍一下un呢它是一个非常典型的一个语音分割的这个模型。它在它在具体做什么呢?un其实它本质在做我们的一个操作的过程中呢。
它是将我们的网络结构呢把它抽象为一个嗯编码器和解码器的这种架构啊,它主要是由我们的一个4次下采样和4次上采样来组成的。这个上采样呢,我们是可以使用转置卷集。
或者说我们的一个up sample这个操作来嗯组成啊,就是说我们直接用这个我们的一个上采样,或者说我们用转制卷集来实现。这个都行,这个都行。好,然后呢我们在做一个具体的建模的过程中呢。
我们的一个具体的一个。网的模型呢其实就是类似于这种U型的一个结构啊,类似于这种U型的结构。然后呢,又在其这个地方,其实你会发现这些有这种s pass。jo pass。对吧我们有这种就是说连接的一个边。
或者说这种跳接边这个地方呢so plus他在做什么呢?这个地方呢s bus其实它本质就是将我们的一个具体的一个。输入的一个数据,再不通过我们的这个中间层的计测算结果,然后直接输出到我们的一个嗯更深层。
这是跟retnet。其实差不多的resnch其实差不多的啊,跟ren其实差不多的。那么这个地方为什么要在我们的一个inage里面使用这个我们的一个s pass呢?其实是这样的,对于un而言呢。
其实他在做一个于分割的一个任务。sgamentation。它其实本质是需要对我们的一个pixel。做一个分类。所以说他在做的时候呢,其实是需要做的非常精细,需要做一个分析精细。
这个地方我们的一个对于我们的一个卷积神经网络而言呢,我们的一个具体的一个比较浅的层,它其实就是能够提取一些非常有效的一些啊就是说局部信息。对吧局部信息。然后如果是更深的层呢。
就是能够提取到就是比较有效的这个语义信息。那么我们可以将这个简层和深层把它组合到一起,然后整体的可以完成我们的一个具体的一个嗯建模过程啊建模过程。
好,然后我们来看一看具体的一些案例啊。呃,这个地方啊已经有很多同学回答对了啊,然后这些回答对的同学呢可以联系一下我们杨老师的呃杨欣欣向杨老师啊,然后就可以领取到我们具体的一些代码啊。
领取到我们的VIP月卡啊。好。😊。
我们首先呢给大家介绍一个案例啊,就是说使用这个un来做一个具体的语域分割。哦,把这个字体改一下啊。Okay。呃,我们首先呢构建一个数据集啊,这个数据集长什么样子呢?就是长这样的一个样子啊长这样一个样子。
我们的具体的数据集呢其实长这样的啊。像这样的,我们在做一个具体的一个建模的过程中呢,我们本质是需要对我们的左边是我们的输入。左边这是我们的输入啊,我们需要对对我们的一个具体的一个数据集呢。
把它做这样一个操作,输入我们的一个灰度啊,输入我们的一个灰度图,然后呢需要你去对我们的一个具体的基于我们的这个灰度图,然后完成一个类别预测啊每个像素它所所处的类别。这个地方我们的一个具体的类别啊。
我们这个地方右边也标注的啊,这是我们的这个红用使用不同颜色标注好的啊,使用不同颜色标注好的。这个我们的红色以及我们的蓝色啊,黄色啊,它代表是不同的一个形状,代是不同形状。
然后呢我们是需要使用我们的一个语分割的一个模型啊,然后完成我们的一个具体的一个啊分割过程啊,右边的右边的是我们的一个具体的一个类别啊,右边的是我们的一个具体的类别。好。然后呢。
我们在做一个具体语分割的时候,其实我们的一个输入的数据和和我们的标签其实都是我们的一个举证啊,我们输入的数据和我们的一个标签都是我们的一个矩证。好,这个地方呢大家要理解一下。
我们的一个具体的输入数据呢是我们的一个输入的举阵。我们输出的。以及我们的标签也都是一个矩阵,也都是一个矩阵。好,这个地方所以说我们的一个mask。其实你你可以理解它就是一个矩阵啊,就是一个矩阵。然后呢。
我们可以看一下我们具体的一些嗯样本啊,我们的样本,这是我们输入的一个数据,这是我们的输入的数据啊,它的一个维度呢是1个192乘192乘3的一个呃数据,这个地方呢我们还是将它加入了一个。嗯。
1212的这个维度12的这个维度是什么意思呢?12的这个维度是我们的一个呃就是b size啊b size它的维度是12b它的维度是12。所以说我们的一个输入的一个数据的一个维度呢。
就是我们的一个12乘3乘192啊,乘192的一个维度。我们的一个输出的维度是12乘6乘192乘192。因为我们这个地方是需要完成我们的啊就是每个项素啊,有类6个类别啊,每个项素有6个类别。
所以我们是做这样一个做这样一个具体一个模啊,做这样一个具体。好,我们继续。然后呢接下来我们首先呢导入我们的一个resnet啊,导入一个resnet。
这个地方的resnet呢就是我们的一个就是已经就是说在我们的一个音频型的池上已经预训练好的啊,或者说我们是只导入它的一个具体的网络结构啊,只导入它的一个具体的网络结构,这个都行。导入完成之后呢。
我们可以基于这个usresonnet嗯来做我们的一个具体的一个建模过程。怎么做的呢?就是我们的一个模型建模过程就在这儿。在这儿啊。我们先看这上面的啊。
这个地方有layer0lay1layer2 layer3啊,我们来看看这些lay在做什么。这个地方的类21620621类23。这些啊0是我们在resson的前三层。
6一呢是我们的ressonign的3到5层。对吧62呢是res的第呃第六层啊,63res第七层啊,一此类推。然后这个地方的62011乘1是这个1乘1的卷积啊,1乘1的卷积。好。
然后这个地方我们定义了这个up sample啊,up sample是做一个上采样的一个操作啊,是做一个上采样的一个操作。好,咱们继续。那么我们看一看这个具体的网络结构是怎么定义的。
首先呢我们的一个输入的一个数据呢,在通过我们的一个lay0做一个维度的降低。然后通过lay一 layer2lay3 layer4啊,这个基本上是在ressoniness里面的层。
然后呢我们对于我们的这个输出结果。这个地方的lay。输出的4啊,就是说通过这我们的五层的一个计算结果的一个输出呢,再通过一个一乘一的卷积,然后进行up sampleble。
然后我们这个地方up三坡之后呢,然后再通过一个一生一的卷积。好,这个地方关键之处在这儿这个地方我们这这些计算的结果和我们的一个具体的列3的一个结果,其实是可以把它拼接到一起的。
这个就我们的一个s pass的一个操作。s pass的一个操作。然后我们也可以把它继续做我们的一个就是说卷积,然后再做我们的呃up sample。这个地方呢我们在做完up sample之后呢。
然后再跟内2的一个初置结果,把它做一个拼接。这个链2是在我们的之前已经做好的一个输出。对吧然后这个地方的X它是通过我们lay2之后,再通过lay3 layer4以及我们的一个异生逆选集。
然后通过up sample得到的。所以说呢这个地方的 layer2和lay我们X呢,其实它也是做一个拼接啊,也是做一个拼接。这个地方你也可以理解是一个s pass一个 pass。好,我们继续。
然后这个地方你你你可以将这个网络结构啊和我们的这个地方其实是可以对应上。它是将我们的一个维度啊,维度直接维在维度上做了一个拼接啊,维度上做了一个评级,维度上做了一个拼接。好,那么这个地方的每个箭头啊。
这个地方的啊我们的四条。我们的一个箭头啊,就是我们的一个conca操作啊,我们的conca操作就是我们的4次的一个软件。4次我们说 fast。然后呢,我们的一个最终的一个输出的维度。
其实是有我们的con这个卷积。这comp是n呢,它是一个卷积,它的卷积呢是在将我们的一个呃具体的一个网络结构的一个维度呢,从我们的一个。就是呃多通道的一个,比如说64通道的。
我们需要把它转变成我们的N class的一个通道数。N class的通道数。这个N class的通道数呢就是我们的它的一个通道数,它是和我们的一个具体的一个嗯类别个数啊,类别个数是相同的。
它就跟我们跟我们的类别个数是相同的。好,那么通过这样的一个网络结构的操作呢,你会发现我们的一个输入的一个维度。我们能看一下这个下面啊。我们的一个输入的维度是。和我们的一个输出的纬度。是能够对上的。
只不过这个地方有一点点小区别,小区别就在于它的一个具体的一个通道数啊,通道数通道数对。这个通道数我们输入的是3,我们这个地方输出的通道数。是我们的6啊是我们的6这个地方由于我们是需要做一个6分那个啊。
需要做一个6分那个。我们继续。然后呢,这个地方我们的一个los function呢,我们怎么构建我们ns function呢?
这个地方的ns function其实可以直接用这个分类的los function啊。呃,这个地方我刷新一下网页啊,它没有显示完全。嗯。有没有tenflow版本的啊,待会有一个tensflow版本的。
待会儿是有一个ten flow版本的。对,大家稍等一下啊。嗯,我们放到下面啊,这是一个pathon系版本的。这个地方的分类损失呢,其实你可以用我们的一个二分类。
对我们的就是说像素级别做一嗯我们的一个输出的一个概率向量和我们的一个嗯就是我们的一个真实标签做一个分类,或者说将我们的一个具体的一个网络结构呢使用这个DICDI做我们的一个分类损失。
就是将我们的一个具体的一个啊,就是我们输出结果的一个输出结果的一个具体的一个区域和我们的一个预测结果的区域呢算一个交叉比啊,算一个交叉比,然后以这个交叉比呢做我们的一个 function。
其实也是可以的也是可以的。好,那么我们在做一个具体的一个建模的过程中呢,其实建这两个los其实是可以把它汇总到一起的啊,可以把它汇总到一起的。好,那么如果是使用这个pat呢,这个代码就是这样写的。
就是说对我们的输入的数据。比如我们的训练集和验证集。如果是我们的一个训练集呢,就是做一个这向传播计算我们的一个los,然后做我们的一个反向的一个传播啊,这是我们的一个就是训练集。如果是我们验证集呢。
就只需要做一个呃智向传播即可啊。如果是我们的一个验证级,就是我们的只需要做一次这向传播即可。好,我们来看一看我们的一个识别的结果。这个地方啊。左边呢是我们输入的图片。右边这一这一列呢是我们的嗯真实标签。
第三列呢是我们的一个预测的结果啊,是我们的一个预测的结果。对,所以说你会发现我们的一个具体的一个模型呢,其实是呃能够做能够识别得到我们的一个就是说就是说嗯这个就是它的标签啊。
我们预学结果整体还是非常相似的,整体还是非常相似的。那么我们继续啊我们继续这个地方是基于我们的一个呃来写的啊,基于我们的一个pat来写的,它是一个具体的一个做我们的六分类的啊。
六分类的一个具体的一个预分割的一个任务,六分类的分割的任务。好,那么我们这个地方呢也给大家准备了一个基于这个Ks的啊,就tenflow2版本的一个具体的代码。我们的一个代码呢就是做一个。
人人脸抠图啊人脸抠图,我们的一个左边是我们的一个原始的一个就是说图像,我们需要把它转变成我们的一个右边的这个图像啊,右边的图像。这个图像这个地方我们相当于是把它的背景啊,把它的背景全部给它剔除掉了啊。
希我把它剔除掉了,只是将与人相关的啊,与人相关的一些像素啊,给它保留下来了。这个地方呢我们是呃你可以理解这个地方就是一个把我们的一个图像把它转变成了一个透明图啊,转变成一个透明图。好。
那么我们这个地方我们的一个输入的数据呢,其实它是一个不规整的一个形式,而且它的尺寸呢可能是非常大的啊。就是说所有图片它的尺寸都是啊就是说不规整的。为了把就是说快速加速我们的训练啊。
我们这个地方呢是将我们的一个具体的一个图像呢,所有的输入和我们的一个输出呢,把它转变成一个相同的一个维度,相同的维度。比如说都把它转变成一个128乘1828的一个维度啊,这样我们的图片需要做一个缩放。
这个地方有一个小小的一个注意地点,就是说如果是对于我们的图片做一个缩放呢,我们的一个标签也需要做一个缩放,也需要做一个缩放。好,我们这个地方第二个问题就是说我们这个地方的一个输入。它的维度是多少呢?
以及我们的输出的维度是多少呢?对,有没有同学嗯知道我们的答案的。如果知道我们的答案呢,也可以在我们的一个评论区打出来啊。然后就是就是我们也送出我们的10个VIP啊,10个VIP有是企业在线提供能。
有没有同学知道的,我们这个地方的一个输入的维度和我们输出的维度。
我给大家3分钟啊,如果有同学知道的话,可以啊打出来这地方我们输入的纬度是多少,以及我们的一个输出的纬度是多少。
好。你们有没有知道的?
输入是3。输出啊,这个地方这位同学说的好,挺好的,输出的维度是128乘128乘2,对吧?可以,这个地方其实我们的一个输入的维度和输出的维度,其实你可以这样想。
你的一个输入的维度其实是嗯可以写成这样的。
它的数的纬度是128乘128乘3。那么我们的输出呢。其实你可以把它写成128乘128。嗯。二。或者说乘2。乘2。这个东西。乘一或者乘2这个都行这个都行的啊。这个地方我们在做一个具体建模的过程中。
这个乘1或者乘2是没有区别的啊。因为我们这个地方其实是做一个二分类啊,做一个二分类,对,做一个二分类。好。
然后我们这个地方就是说你做的就是维度啊。对,这几位同学嗯,就是说回答都挺好的。对。呃,这几位同学都可以加一下我们的杨老师的微信啊,就是领取一下我们7业在线的1个VIP月卡。
领取一下我们的学业在线的1个VIP月卡。所以说大家知道这个类别构成之后,然后就可以嗯做我们的一个具体的一个就是说维度的一个确定啊,维度一个确定。
好,然后呢接下来我们将我们的一个具体的数据集呢,把它转变成转就是说把它转换成我们的一个训练级和我们的一个呃验证集这两部分啊,训练级和我们的一个验证集这两部分。
好,然后呢我们的一个训练级的一个呃样本个数是我们的3400,以及我们的一个验验证级的一个样本个数呢,是我们的600啊,验证级的一个个数呢是600。对。
好,然后呢我们接下来需要构建我们的一个data generator呃,data generator啊这个地方呢data generator呢我们这个地方是这样做的啊,这个是cars的一个写法。
cars写法。我们在做一个具体的一个呃就是说建模的过程中呢,我们是可以将我们的一个具体的具体的一个输入的数据呢呃提前读取到我们的一个内存里面。😊,我们是提前将我们的一个图片,把它做了一个读取。
然后把它做一个resize。然后呢,对于我们的一个musask呢也是把它做一个读取,然后做了一个resizes。这样呢就相当于是我们是将我们的一个图片和我们的一个具体的一个就是标签。
把它规划到一个相同的一个纬度啊,相同的一个输字的维度上面。相等于输入维度上面。好。我们继续。这个地方你会发现这个地方我们选择的一个mask就是单通道的,是一个单通道的啊。
是选择的第三个通道的第三个通道的。好,我们继续。然后呢,我们这个地方由于我们的代码是使用这个tensflow2来写的,使用tensflow2写的。
所以说这个地方我们是需要构建一个具体的一个data generator啊,data generator这个data generator呢就是将我们的一个输入的数据完成一个批量读取的一个操作。
我们的些输入的一个数据呢提完成一个批量读取操作。嗯,我们不管是在这个特这个嗯tenflow啊,以及我们的cas里面啊,都是需要做这样的一个操作的啊,需要做这样一个操作的。好。
然后呢构建我们这个gene之后呢,其实我们的一个输入它的呃就是输入和输出就转变成我们的这种批量的这种形式。批量的一个形式就是我们的一个具体一个输入是我们的100乘以128乘以18乘3啊。
这地方3就是说具体的一个维就是这个顺序啊,具体一个顺序我们其实是可以呃做一些呃修改的。但是整体的一个构思啊,整体构思大家也知道以及我们的输出的维度啊,100乘以18乘以18乘以1。
好。
然后呢,这是我们的一个输入的图片啊。嗯由于我们这个地方是呃就是它的一个颜色空间,不是RGB的啊,不是RGB的。所以说我们这个地方其实是想要把它做一个可视化呢。
其实我们是需要把我们的一个呃呃图片呢把它转变成RGB的啊,然后再做可视化。然后这是我们对应的标签。这是我们的输入的数据啊,这是我们对应的标签,它是1个01的啊01的一个嗯矩证。
然后呢,我们来看一看这个对应的这是批量的一个数据啊。然后这个下面是我们批量的标签。对吧我们标签就是一个灰度图啊,灰度图。好。这是我们的验证级的一个gene单ri,验证级的简单。好。
这是我们的验证级的图像,以及它的一个具体的标签啊。当然这个书已经也是有噪音的啊,也是有噪音的,并不一定是完全都是啊就是说完全都是我们的一个呃O的啊,完全都是O的。好,然后接下来呢我们就是构建我们的模型。
这个地方呢我们是使用这个ten啊2,也就是说使用我们的一个ten2来完成我们的一个具体的一个呃模型的一个搭建过程,模型的一个搭建过程。然后呢,我们在做一个具体的建模的过程中呢,我们其实是将我们的一个。
具体的网络模型呢也是搭建我们的这个U。对吧卷积层。卷积层置换层对吧?我们这个地方C1P1C2P2C3P3C4P4。好,这是我们的一个具体的。你可以理解这前面的就是我们的4个incoder。
四层的一个inco。然后从这儿开始,我们就是具体的一个deder。这个dededer也是我们的四层啊,你可以理解就是四层4个b。我们这个地方转折卷积对吧?
它是没有这个地方我们不是用这个up sample,我们可以用转置卷积来代替我们 sample对吧?然后这个地方也是从这开始,从decode开始,就是我们的一个 pass。把我们的拼接到一起,对吧?
这个地方的C是来自于我们的C5之前的。然后这个地方我们的C3呢来自于我们的U。C6U6C5C4之前的这个一个位置,对吧?就是我们的 pass。好。
这个地方你会发现他的网络结构和我们的PPT里面所示的也基本上是一致的,基本上是一致的。那么我们这个地方的一个训练过程,最终的一个输出的一个维度,通道数啊,它通道数就是我们的一个一单通道的输输出的维度。
就是我们的一个单通道的。好,然后我们这个地方的一个具体的一个算传函入,就是我们的一个banary的块算。banary的一块算。因为我们这个地方就是只需要做我们的一个单通道的单通道的一个输出。
单通道的一个输出。好,那么我们来看一看我们的一个具体的一建模,具体的建模。那么由于定义好了我们的一个具体的输入和我们的输出,以及我们的一个损失函数数了。那么我们接下来就是直接就是完成训练就行了啊。
face generated fish generatedface就是直接由我们的一个输入。我们geneator我们的vi以及我们的co back。这个co back就是我们写好我们的二次啊。
以及我们的一个model checkpoint。然后我们可以看一下我们的一个训练啊。
主要看一下我们验证级的los,验证级的lo从0。55到0。28一直降低啊一直降低。呃,然后这个地方我们是训练的20个Epoke啊,20个Epo呃,我们的训练速度其实是非常快的啊。
每个Epoke只需要有5秒啊,需要5秒。然后我们最后呢看一看我们的一个预测结果。
这个是我们左边的是输输入的图像,这是我们的输出的这是输入的这是我们输出的。
对吧这是我们的输出的这是我们输出的啊,整体来看它是将我们的一个具体的一个模型。这个模型呢它是能够学习到我们的一个有效的信息的对吧?我们的输入和输出。大家来看一下对比一下。然后这个地方你会发现。
其实呃我们的输入的图片,它的一个维度和我们它就不是128的,对吧?这个地方的输入的图片它就很明显是一个不是128的。那么我们怎么做的呢?我们这个地方其实是在这儿。
我们对于我们的输入的图像呢,其实我们是。最开始把它转变成了1个128。然后呢,我们的输出的一个prediction呢也是128乘以128的。但是呢为了最终将我们的一个具体的一个网络结构啊。
我们输出结果和我们的原始的输入的尺寸能对应上。我们再把我们的输出结果再把它resize,就把它扩大到800乘600的一个尺寸。
所以说我们这个地方其实原始的一个输入的一个图像呢是1个800乘600的一个尺寸。我们的一个输出呢是从128乘以128的尺寸,把它缩放到啊。
也相当于是把它你可以理解就是就是图片的一个放大啊差值双线性差值把差值到一个比较大的一个像素,然后再去得到我们的一个具体的一个m结果。
好,这个呢就是说我们通过一个inun来完成一个人脸的一个抠图啊人抠图。对。那么大家对这一部分有什么问题吗?
呃,验证级的主要作用是什么?呃,验证级的主要作用主要是为了看一下我们的一个具体模型是不是过礼盒了。
嗯,Vliation。他主要是看一下模型,看一下模型是不是过滤盒的。电你的这个作用主要是看一下模型是不是过礼盒。对嗯,大家对这部分有什么问题吗?大家对这部分有什么问题吗?如果没有问题,我们就继续啊。
如果没有问题,我们就继续啊。
有同学可能会问到我们学电信的1个VIP月卡能做什么?嗯,就在线的1个VIP月卡呢,它是能够做嗯。看下啊。就得。嗯,假如我点击到一个具体的课程啊,比如我们点击到一个集训营里面。然后这个地方呢1个VIP啊。
他能够做什么呢?VIP月卡是能够学免费学习这么多课程的啊,就是很多嗯几千块钱的课程呢嗯就是说这样如果你是拥有的VIP月可是可以直接看的啊,很多课程都是可以直接看的。好。好。
大家如果想要领取这个呃VIP月卡的同学呢,可以现在在屏幕我们的一个评论区啊输入7微在线。好呃,这几位同学啊M0嗯376同学苏同学AHQ同学Q844同学啊,然后WJ同学黑帽子程同学啊。
这几位同学可以加一下我们杨老师的微信啊,加一下我们杨老师的微信,后微信4699同学,以及我们的nice name同学啊,你可以加一下我们杨老师的微信啊,领取一下我们的VIP月卡。抠图的原理是什么?
我们刚才就在讲抠图啊。
抠图的这个过程其实本质就是将我们的一个前景和背景把它分开呀。我们刚才讲了半天啊,这个地方我们就是说人的人脸的这些像素的一些区域标注就是一其他像素的区域标注就是零。我们做一个语音分割。
就是用语分割的这个任务完成我们的前背景的识别。
这就是人人像抠图啊,它的一个原理。对。
好。
抠通的原因就是语域分割,是语域分割。好,我们继续啊。如果你对这一部分还有问题呢,也可以继续提问啊。
然后呢,我们接下来可呃给各位同学介绍一下,我们现在在学在线正在开设的我们的一门课程,叫做嗯机器学习集器云。嗯机器学习机器营呢它是涵盖了机器学习的重要面试点。就是说包括这个机忆学习原理和深度学习原理。
然后也是提供了一年的一个GPU的云平台,也是非常接地气的一些实训项目。比如说在这个机器学习的原理部分呢,我们主要看讲解了这个具体的一些嗯线息模型以及我们的决策数啊。
以及我们的一些就是节线学习的一些原理啊,这些呢都是在我们的一个就是说机器云的嗯机器学习的原理部分会讲解到。然后呢,我们呢具具体的在集训内部呢,我们也是有一些具体的一些呃就是说培训项目啊,实训项目。
比如说我们的一些项目呢,包括这种嗯自动驾驶的一个车道性检测。就是说对于我们的一个具体的一个像素。这个其实也是一个很典型的一个语一个语分割的任务,也可以使用Ulash来完成。
这个其实也是可以用Ulash来完成的。就是说输入的是一张图片,然后通过我们的Ulash,然后对这个就是车道线做一个识别。这个其实也是可以用lash来完成的。那么在这个执行项目里面。
我们就不仅仅是会讲解到Ulash,也会讲解到其他的一些具体的一些模型。比如说会讲解到这个SCN。SCN以及SDA的一些语域分割的模型。这些语域分割模型就是专门的用在这个车段性检测的任务上面。对,好。
然后呢我们在这个具体的机器营里面呢,还有一些其他的一些项目。比如说这个语分割的一个嗯就是说我们的这种智能问答机器人啊,以及我们的电商平台的这些推荐系统啊,这些呢都是在我们的一个机训营里面都是包含的。
然后呢我们整体的一个课程安排,就是从我们的一个python的一个基础,然后再到机器学习的原理,然后再到这个深度学习的原理。然后再到一些具体一些项目时间。
然后如果大家对我们的机器人感兴趣了呢,现在如果是。今天晚上报名还是有我们的优惠的啊,可以在我们的现在这个价格的基础上呢,再免减1000元,免减1000元。这个地方有两个套餐。
一个套餐呢是100000的一个套餐,它是包含了两年的1个GPU的一个使用权,并赠送大数据集器运营和顺序集器营的这两个集器营。当然你也可以直接报名我们的一个继P机器营。它现在的价格呢是9400啊。
9400我们也可以在我们直播间呢再给大家免减1000元,免减1000元。对,然后大家对我们今天的课程,如果是有什么问题嗯,以及对我们的机器营呢有什么问题的同学呢,都可以去嗯加一下我们的杨老师的微信。
加一下我们的杨老师的微信,然后嗯进行一个具体的提问。对。
好。大家对我们今天的课程问有什么问题吗?或者说对我们的机器嗯,就是说我们有什么问题吗?也可以在这个地方直直接提出来啊。
AI讲师团的录播回放嗯,怎么没有权限看啊啊,你可以加一下我们杨老师的微信,问一下,加一下我们杨老师的微信,上面这个微信和下面这个微信都都可以。
ok。你可以加一下杨老师的微信问一下啊。好。大家对我们的今天所讲的内容还有什么问题吗?
好,如果有问题也可以及时提出来啊。如果对机器云非常感兴趣的同学,可以直接咨询一下我们的杨老师,或者说在我们的课程页面,也就是从其业在线的官网找到机器云。
然后在这个具体的一个页面啊,然后进行相关的一些了解。对。好。如果想要领取我们今天的课件和代码呢,都可以扫码,加一下杨老师的微信啊。好。
大家有什么问题吗?
验证级刚才解释了验证级啊,这个地方不是解释了验证级的作用吗?验证级主要是看一下模型是不是过礼盒呀,然后可以做一个调参。
对,这就是页面器的作用啊。好。大家如果想呃就是说刚才我们练到名字的这十几位同学啊,可以加一下我们杨老师的微信啊,然后领取到我们具体的一个呃VIP的月卡。然后如果是想要于就是说呃。就是说咨询相关的课程。
或者说领取我们的代码和PPT啊,你可以加一下杨老师的微信。验证级与测试机的区别,验证级可以用来调仓,测试机不行。应用机可以用来调参,测试机不能调成。对。好,大家还有问题吗?好,如果没有问题的话。
我们今天的一个直播就到此结束了。