粉丝1020获赞2115

一天学一个变态的人工智能知识第一百三十五期,这节课要讲的是优拉十一版本迭代核心改进使用方法。 然后大家可能说你这个 v 十一为啥要咱单独拿去说呢?那以前好像就是 v 八,其实我们来先看一下这优社他给他们的名字,以前呢,他的名字叫什么?以前啊,他这个项目名字就叫做一个 优乐 v 八了,你看是不是叫了他自己就是优社这个名字了,这是其一啊。 第二呢,就是 v 十一这个东西啊,它并不是一篇论文啊,可能论文我觉着讲的意义并不是特别大,因为就加了一点小模块,但是 v 十一啊,这个东西怎么样?它直接已经是更新成现在这个优设默认的版本,也就是现在优了 默认的版本已经不是再用去 v 八去做了,默认就用什么默认就用 v 十一去做了,这是优设官方这个版本啊,所以说我觉得还是有必要给大家去捣鼓这么两句啊,以后的精准实验, 我估计啊,就是 v 八那个东西啊,就成为过去了啊。以后你在论文上再去写你的对比实验也好,还是你的基础模型也好,咱就直接啊有这个 v 八过渡到这个 v 十一了,是不是?然后之前咱们是来讲过这个 v 九,然后说过这个 v 十啊, 其实这些都是什么?这些啊,都是一些论文,就是一些论文作者他们提出来一个模块,他们提出来思想,让我们去屡屡论文,是吧?但是 v 十一呢,就是啊,可以说在整个代码当中,他应该,嗯加模块,其实没加太多东西,一会给大家说一说, 主要就是整理结构器没咋变,但是就是啥,就是可能以后的名字你要发生变化了,你看这个名叫什么?优硕,直接把他名字已经改成这个 v 十一了,之前出 v 九, v 十压根名没去改,但是呢, v 十一之后说名字也改了,那我们来看一看他多做了什么东西啊? 一会呢,我们就主要围绕着这个配置文件给大家去解读就行了,并不是一件啥特别难的事。然后这样吧,我们就直接拿代码说了,因为他也没个论文,所以说我们就先从代码入手,方便大家看一看。我给大家准备好了自己录制好的素材,首先第一个就是使用方法, 使用方法我们可以说啊,跟这个 v 八来说啊,没啥区别啊,就是一模一样的,完全是。然后我们先看一下吧, 流出来这一块啊,我把所有东西都放一起了,咱们一今天一块讲的东西还蛮多的啊,不仅是我先给大家看一看吧,就是不仅是这个啊,一个优喽,还有一些东西啊,比如说后续你想做一些视觉的大模型啊,我给大家先看这个, 这个我先给大家执行起来,你们先看一看要做啥啊?我给你们举一个例子,这个就是拿这个优喽 b 十一啊,和现有的一个我们一块说的模型,咱们集成在一起了,我们来看一看做什么事啊? 就是,但是这个效果很一般啊,但是我估计这个视觉大门还在发展,他是这样一件事,就是拿这个优洛 b 十一啊,集成了一个视觉大模型,视觉大模型干啥呢?你可以,你可以这么去理解,就是在这个视觉大模型当中啊,我想去对图片数据做一个标注,什么叫对图片数据做标注呢?哎,我说这张图片当中有几个人出现, 这张图片当中可能出现在什么场景?这张图片当中这些人可能是个男的,你看这一块,我说这他呀,他是个男的,这是个女的, 我对这些属性能不能去打上一标签呢?感觉也行,是不是?那如何去对这些属性打一标签啊?这个就不仅仅要优喽,比如说我给大家来放大,咱们来看 这块,咱们一块做这样一件事啊,就是不仅仅啊,我说,哎,咱们现在啊,他说卡住了,因为我该暂停了。这不仅仅,我说咱们这一块要把这个人给他框出来,我还要干什么呢?我还要对框出来人进行分心,哎,我说你分心,你是个男的还是个女的?大家可能说这个东西是不是又要炫模型,又要打标签呢? 其实我估计大家也看到了,最近也出了不仅是文本大模型,还有视觉大模型,是不是视觉大模型?我说能不能这样?我说我不给你整个图啊,整个图可能有点难度大, 我就拿优乐威十一检测出来的结果,我说出来视觉大模型,我问一下子,哎,我说这里面这个人,他是个男的还是女的? 我让他自动给我打个标签好不好?好了,这不就是一个小应用吗?小应用我们一会再去说啊,咱们今天先说这个,先去给大家去梳理啊,这个优乐威十一, 然后呢我们再去看它应用,其实视觉大模型也比较简单,它现在很多都是开源的,其实训练其实蛮难的,但是我们用起来就比较简单了啊。行了,然后咱们先这样吧,我们先说这个 vc 这个事儿, 在这个 v 十一当中啊,大家来看这个代码使用方法跟原来可以说是一模一样,没有任何区别啊,以后默认,我估计啊,就是这个 v 十一了啊,估计可能一时半会应该出不了这个 v 十二了。好了,首先我们来看配置文件吧,核心东西啊,都在这个配置文件当中,其他东西呢,基本都是不变的 配置原理吧,我们来捋一捋,你看看多了点啥东西,我给大家就是拿那个 v 八吧,就是以前那个经典版本,拿那个 v 八做对比啊,咱们来看多了啥东西少了啥东西啊?没少,其实就是也没多,也没少,就是做了一些替换而已啊,来我们看 咱们看这个 v 八吧,在这个 v 八当中啊,其实你看这块它很核心的角叫什么?叫做一个 c r f, 是 不是所有的模块啊?就是你看两个卷接上了一个 c r f crf 呢?咱们之前原版的时候看过,就是把这个特征图啊给它做切分,然后呢去走一些残差连接模块,然后最后再拼接在一起啊,这样一个基本结构,是吧? 然后我们来对比一下,就是你看这个 v 十一当中, v 十一当中啊,它把这个名字做了一个替换,它叫个什么 c 三 k 二,一会我们来看看这个模块它是做啥的,这是第一个地方有点不同的。然后呢你再看这个参数, 这个参数当中啊,他有这个 false, 然后有这个处,我们一会,反正你这么看是看不出来的,你要想知道具体做了啥,我们就进原码,咱们迪吧想要去看啊,这是一个东西,然后第二个东西啊,第二个东西又多了一个什么 pic 啊,一一看什么 a 就 感觉什么注意力,是不是好?我们来看这个什么 cr pic, 以前也没有以前啊,就是原始的这个按钮当中啊,他也不加什么注意力记忆模块,比如说你看这一块, 这一块咱们任务当中默认这个拥有当中啊,他没有加什么蜡马枪模块,不像咱们自己做东西总愿意去加点啥,改点啥,他默认他也啥也没加,那你说 默认的版本到啥也没加,但是那是 v 九啊, v 八啊,就以前啥也没加,现在咋样?现在多加了一些东西,这一块呢,多了一个注意力。好,那我们来看一看啊,这个东西咱们啊都是干啥的吧,然后顺便呢,你看一看他注意力加的一个位置, 以后大家想自己加模块也是围绕人家的实验思路来,人家实验当中发现了,在这个 bug 棒当中啊,最后一个位置加注意力啊,效果还不错。那以后呢,你加的位置也优先是这个位置附近就行了。其他东西啊,基本上没有什么变化,就是提出来两个模块, 那下面呢,我们来演示一下吧,怎么去理解这两个模块?嗯,其实这两个模块很简单,但是我想给大家去举一个例子,就是当你看到一些不知道或者说之前没见过的东西的时候,咱们该怎么给他学起来,怎么去理解这个事啊?首先先去找 你看,我说在优酷当中啊,我先看他的一个配置文件啊,发现了这边加了一些新的东西,那现在东西是怎么做的呢?我们得想在哪去调用的这些新的东西啊? 其实他所有的核心模块我给大家来简单分析一下,都在他原码里边。来,咱们进入到原码,原码就是你看这一块,咱们不是到时候用的时候需要去 p i p 把这个包装起来吗?那所有的原码都在包这个包里边,你们要去改这个原码的时候,咱们加模要改模块 啊,就是你要去改一些细节的时候,你也要进入到这个包里边啊,那我们进去,这就是我装的环境,我先进入到我这个环境当中, 然后呢?我去来,我们先找到他这个原码他存在的一个位置啊,然后咱们打开这个原码看, u 开头的啊, u 开头的我得找一找啊 u u u u 在 哪来着? 优是偏厚的,在这呢,来我们找到。是不是来这一块,大家来看他所有东西啊,都是在他这个啊,都在这里边,都是在他这个 n n 模块当中, n n 模块当中有到做 models 的 模块,都给大家放大一下,这一块就是说他这些原版都存在哪了,就这里边, 你到时候找完原版之后啊,上这一块啊,他都在这里边了。然后我们来看核心的什么核心就是他这个 blog 当中,嗯,他基本的模块都是在这个 blog 当中去实现的,我们打开看一看, 我这边已经打开了,就这个文件,这个文件当中啊,我一打开一看,哎呀,我说这一块他引出来了好多好多模块,有些模块他也没用上啊,他也写进来了,那你说接来 你想去看啊,就是这些详细的模块人家是怎么做的?人家每一步是怎么去搭的时候,咱需要干啥?是不是要去看一看这里边人家原码是怎么去实现的?好比如说我们来找啊, 咱们来找一找刚才我们要找的这个,哎,叫啥来着?我们看一看啊,叫这个 c 三 k 二,是不是来我们找找到这个模块,呃,往往下这呢是不有这个模块?然后呢咱们按住 ctrl, 我 们点一下,找到它的实现的一个方法,实现方法当中啊,我们来看它是怎么去做的,嗯,一会呢咱们这样 一会儿呢,你这么去理解啊,就是我会给大家咱们进入到的 bug 当中,那我们先来简单分析分析它,首先代码当中你看,嗯,没有啥特别的东西,就这一块它先有一个判断是不是来,你看它说 if, 如果一个东西是处的,执行这个什么 c 三 k 的 模块,如果说啊,如果说他是个 false 的, 他执行后面这个就是一个参差连接的模块,那这个参数是啥呢?大家来看这一块是不是有一个默认的一个参数,这个参数在哪?指定的?来我们看配置文件, 配置文件当中这一块啊,来 c 三 k 二这一块,咱们是不是已经给定好了一个参数啊?就是通过这个参数,咱们来指定他是处还是否他要走时候模块, 那你看这一块一会默认,如果说是处的情况下,他去走这个 c 三 k 的 一个模块啊,一会我们再说 c 三 k 是 啥?如果说他是 false 的 模块呢?就跟之前这个 cf 走的是完全相同的啊,基本我我记得是完全相同的,因为我效果过了一遍。 所以说你这么想啊,就是优乐威十一当中啊,他真的没有做特别多的一个改进,他就是一点来这一块 维处的地方,他多了一个东西,嗯,把特征的层级结构多做了一小部分而已,这是一个事。然后呢,我们再看啊, 在这块呢,我们说这块,哎,他提出了 c 三 k, 我 也不知道 c 三 k 干啥,我们 ctrl 点去看一看,来这块他说有个实线,他说在这个实线当中啊,这 c 三 k 当中,哎呀,他引入了一个又,他又继承了个 c 三的一个模块, 那我们来看一看,这个 c 三的玩意儿当中它又干啥来,我们按住 ctrl, 在 这一块,我们还是给它打上一个断点,就实际 forward 会执行的地方,咱都干啥都给它一会儿去打上一个断点,这样呢,我让这个原码执行的时候,我就从头到尾去捋一遍, 因为你我光看这个配置文件,或者你让我读这个代码,说实话我读不下去,我也不愿意看这玩意儿,你最好呢就一行一行给我走,然后我一行一行去分析。 行了,那咱们直接看这个事吧,我们直接进入到这个底霸模式当中啊,先看第一个,第一个就是他稍微改的东西,这个 c 三 k 二是啥东西?好了,我们来看啊,我给大家说在这打断点啊,我这个优硕装的是个新版本,新版本倒是这样,这块 就是这,这就是这一块,我先打上断点,因为我现在不关注啊,就是整体,他做啥?我只想看这个原码走的一个流程,所以说你看我这块大概一百五十行,这打上一个,打上一个,打上一个断点,然后你看啊,他是解析这个文件,解析的时候他一层一层走, 我们先来看啊,就前两层卷积,这不看了,这两层卷积我觉得没法看的东西,是吧?咱就不看了,然后你看这个代码执行的一个顺序,在这一块,你看我把鼠标放在 m 这,你看他是不是显示出来,他在走一个卷积层,卷积层不看了,然后再往下一走, 第二层是什么?第二层你看我鼠标放在这,他是不是还是一个卷积层啊?那我们也不想看啊,我们再来往下走,来第三层,第三层,你看我鼠标再放在这啊,你看这块也行, 来看这一样的,这 m, 它是不是变成一个 c 三 k 二啊?好了,那是不是到啥?到我关注的一个地方了吧?行了,到我关注的地方完之后,接下来呢?我们刚才是不是打好断点了,我们往里边去跳,看看它是怎么去走的啊?来,大家注意,第一个 c 三 k 二,它这个参数是一个 false 啊,第一个是个 false 啊,来往下走, 跳进去一看这个 fos, 你 看跳哪去了?跳到这个 c r f 模块了是不是?所以你这么去想啊,就优乐 v 十一啊,嗯,就是这个 v f 的, 就这个 v f 的, 它跟咱们那个优乐 v 八的这个 c r f, 大家还记不记着了?你要没记着,我再给大家抵 bug 一 遍,跟这个东西是完全一模一样的,就是没没区别,基本上没区别啊,你看,我给你走一遍。来,咱们回到这个圆耳当中, 我给大家来看啊,你看代码现在停到这,是不是他做件啥事呢?再分析一遍。首先呢,给了我一张输入,输入之后干什么?走了一个卷积,走了一个卷积完之后再干啥?再给他切分成两块,代码是不是这样?来,我们简单画一画,呃,我拿这个画图给大家画吧, 就是你要自己啊,到时候后续你想做个笔记,你先自己折腾折腾,你自己拿画图画也行啊。来,我们来看。首先呢,这个 x, 这是我的一个输入, 这个输入来之后先走个啥,是不是先走了这个 c v 一, c v 一 是啥?他就是一个卷积啊,后你愿意自己学你想做的细致点的笔记,你都可以把这个参数写上去啊,咱来分析分析。来第一步就先走了一个卷积,是不是走完卷积之后呢? 这块干啥?这块再做一个切分。哎,有个同学之前给我推荐一个学习方法,挺好的,他说他这个代码吧,看不懂怎么办呢? 他拿这个东西啊,去问文新预言,问 kimi, 或者问 gbt, 我 看解释都挺好的啊,大家你们愿意这么去用也行,就你看原码挺费劲的,你不知道,你就是比如说套式函数,你不知道干啥的,你问文新预言或者 gbt, 我 觉得解释都蛮好的,只晓同学给我演示过好这块就是说把我这个特征图给它一分为二,就大概这样一件事, 在下面当中啊,我们先去做一个切分啊,你看我切分切分成两份啊,来这一块, 那现在我画个虚线吧,给它切分成两份,好,切成两份完之后呢?他把它做到一个利索当中来,大家看现在这个利索里边是不是有两份,你看我一展开是不是两份,你 diab 都能看到它所有的一个细节啊?然后呢?接下来再去走这个什么 self 点 m, 我 也不知道 m 是 啥,我把手往这一放, 来,大家再看这个 m 当中他是啥?是不是这个波的那个?就是一个残差连接的一个模块,你看没啥特别的,就就做了个啥,就做了一个残差连接的模块,是不是?好,我看看,我看看。这个残差连接模块打没打断点,呃,来我找一下, 我找一找啊,我记得我好像是打断点了在这一块,哎,我啃住脸去看一看啊,这块,你看我打断点了,是不是?好,然后再往下走啊,他不是再会点 m 吗?走这个模块吗?来,我们继续走一遍, 找这个模要干啥呢?你看它是对其中的,就是我给大家先回到刚才位置,刚才那位置叫那个 cf, 是 不是啊?来,我们再找一下。哎,哪去了? cf 模块, 刚才我停到的一个位置呢。啊?这呢?来,我们点进去,刚才你看这个位置当中啊,他是对谁啊?他是对其中的一份,他是负一,你看我们刚才这个 y 是 啥? y 是 个绿色,前面成两份了,是不是他是对其中一份?再继续往下去走一堆东西啊?好了,往下看, 在这一块,你看他,哎呀,我这手快跳出来了,手快跳出来,没关系,我们回到刚才那位置吧,回到刚才位置,我给大家看一下。哎呀,我这个手欠了,手快了,来我找一下啊,找一下这个 b 开头的, b 开头的啊,这一块 来,你看这块干啥?他是不是对我们当前特征图这块干啥?走了一个卷积,然后再走个卷积,再做一个加法,是不蛮简单的一件事啊?你看我给你换啊?他又对其中一份,对其中一份干啥 来,走了一个卷积,然后呢?再走一个卷积,然后再干啥?再往下他这一块是不是又做了一个加法?哎?是不是挺简单一个事?然后你看我回过头来啊,回过头来我看我现在,我现在这个代码在哪呢? 应该在那个 c、 r、 f 这个模块当中来,你看我现在代码调这了,是不是?接下来他把这个结果干什么?把它当前的结果放到这个例子当中?你看它是不是放到例子当中啊?那你看我现在这个 y 里边有几个?现在这个 y 里边它是不是就要有三个了?但是这块你还没完,它针对我们这个结果 m 当中 m 给大家看啊,他接下来还有一个卷积的一个模块,来,我给大家展开,你看这一块,你看走完这个波那个之后,他是不是还有再走一个卷积啊?来,接下来在这一块走完了这些东西之后, 他要再干啥?再去走这么一个卷积的一个操作,其他地方卷积我先不写了啊,然后走完之后呢?下面,下面干啥?把这东西啊存在略色当中,最后呢我说,哎,把它们这些 y 当中所有东西给它拼在一起, 你看 y 里边是有几个?这个 y 里边是不是有这么三个呀?这三个分别是啥来着?大家记不记着?前面这一块得到了两个,然后呢这一块我又刚才得到一束流的结果,再把它们做拼接来,我们看是不是这块,这是第一个, 这是第二个,然后呢这一块得到的结果,这就是我第三个,再把这三个干什么?再把他们三个,我说接下来咱们给他做一个拼接是不是就行了?这一块写个 open 的 操作,就是做一个拼接,拼接完之后你再走卷积,再走啥也无所谓,你看这是不是一个基本模块就给它列出来了, 然后呢我回来看,你看这一块这个 y 当中,这个 y 里边,他们是不是把这个三个给它拼在一起啊?好,十六个,十六十六,十六十六,拼完之后是四十八,是不是?然后呢?你再看我们这个卷积当中,把这四十八个特征图给它,通过六十四个卷积盒去做,那是不是到六十四个特征图了? 好,你看这一步执行完之后,这就是啥?这就是你那个 c 三 k 二当中啊?它为 false 的 一个模块,基本的结构是怎么走的?其实我觉得也蛮简单的,就是卷积完之后一分为二,然后呢 他做了一些,就是针对其中一块吧,他做了一个残差连接这个模块,然后其他模块呢?原封普通拿过来,我们去做一个拼接是行了。好,这是第一个,然后第二个呢?我们再看他这里边还有一点啊,就是你看前两个,这有 false 的, 然后第三个为处的。 一会呢,我们再看这个为处的,他又怎么走的?这块咱们还是要这样,就是我再进入到这个 c 三 k 二,哎,这也不是 false 的, 这这这这也不是处的,这也是个 false。 然后再来一个 这个典故,不看了,跟大家一模一样的。来,你看现在,现在这一块他现在应该走到这一页了,就是走到这一块了,这一块他是不是一个处啊?我也不知道处干啥的,那咋办呢?进去看看行不行?来,我们进去看看这处到底到底是干啥的? 首先你记到处之后,你发现这块还是走啥,还是先走 c c r f 模块,是不是?但是接下来就有点不同了啊?这个 m 当中我给大家再看它有一点变化,你看这回这是 m 什么?不是刚才那个 botnik 那 个东西是不是?你看这是啥?这是一个 c 三 k 的 模块, 也就是说为处或者为 false, 就是 当前这一块,就是你看我该画的,就是这一块。这个二,它走的东西不一样, 这是刚才我给大家写啊,这是为这个 false 的 模块它去走的一个结果。然后接下来咱们再说啊,如果说它为 true 的 情况下,它走的一个结果就是它俩走的东西不一样,其他东西是完全一样的,就是 v 十一就做了这点事啊。然后我们进去看,它又是单独列了一个,什么啊?这个,这个,你看这一块,来,我给大家找 这一块里边,哎,我看看啊,这一块我找一下这个 c 三,是吧?来大家看这块,他做点不同的东西,你看刚才没有走这个 c 三,是不是?现在怎么样?是走这个 c 三模块了吧?来,我们看他怎么走的,首先呢,他针对这个 s 干啥?来,我把手往这一放,他针对这个 x。 来,你看 先走什么?先走?这个波特耐克模块跟刚才差不多,但是走几个是不?走两个,你发一发跟刚才不一样,区别是啥?以前是走一个,这一块是走了两个,是不是?所以说来回我们给他稍微画一画啊? 这一块就带这样一件事啊,比如你把他这个这个二,我给他复制过来啊,以前他就是走这么一个啊,走这么一个,然后做这么一个残差连接就拉倒了。但是刚才大家是不是看到他这边不是走了一个, 他是走了几个,他是走了两个这种残差连接的模块,是吧?好,这是这一块,你看我点,我点出来,他告诉我的,然后第一个前面头卷记,这个这个不写了,你看他这一块是不是走了两个,一个,然后两个去做的,这是一个区别啊?然后走完这两个之后,我们看看接下来 接下来干啥?接下来他又做了一个拼接,把他走完这两个和他原来的一个结果这 s 原来输入是不是原来输入经过了?再走一个卷接,给他做一个拼接来,我们来画,其实应该这样,这块应该这么画,这个是一个二, 他这个二来之后是先走了一个卷积,这边走了个卷积,然后往这走,然后这边他可以再走一个卷积,然后接下来谁俩去拼,他俩干啥?他俩再去做一个拼接的一个操作,这一块再去做一个拼接,这是不是就把这个结构划出来了?所以说就是为处的时候啊,他多了啥东西啊? 他多就是他多走了一些模块,就把这些层级特征,我给我的感觉好像就是说把这些层级特征拉的拉的更长了,以前就是相邻的层,就是离得没那么远的去做拼接,现在呢?把不同层级的结构,因为离得远了,我叫不同层级了,把不同层级结构拼在一起,就做了这么个事, 然后拼完之后呢?再去走个卷积就完事了,你看再走个卷积是不完事了,走完这个卷积完之后啊,这个 bug 那 个不看了,这看我们说的其中的一个细节模块,来这个咱就给他往出跳啊,来这块他走了两个,是不是往出跳两次, 然后呢?咱返回这个结果,返回完这个结果你看下面还是干什么?还是跟他左边这一块是完全一模一样的,还是他们三个干啥?我直接我不写了,复制过来,他们接来你们再去做拼接就行了。 这就是这个优乐维十一当中啊,他说多加了些东西,但是你要问我为啥啊?多加这个东西能效果好,我,我真就觉得这东西就是实验做出来的, 你好像没有啥绝对性,凭啥你就加两个,你就整一个处,整一个 false, 然后稍微做个变换,就要加两个效果号了。就实验室出来的,我觉得就是实验室出来的,应该很难有特别强的一个解释性,你要让我,你要让我硬讲这个东西, 我就觉着你可能把层级的结构拉长了,让层级结构做的更多而已啊。你看,因为前面两个都是 false, 这个他又引入一个处,然后后面又引一个处,在浅层的时候把层级结构拉长了一点 啊,这个是他做了一个改变,后续大家啊,就是你们要去做那啥,比如说你想在这个优喽,不论是 v 级里面加模块改东西,道理是一样的,也要先干什么去捋一下他原码他是怎么去做的啊?然后还有一个这跟这些不一样的,就这个 c r p s a, 是 不是?来,我们再往下看,这个 c r p s a, 你 看这个名字啊,等我们这两个名字到这时候来,这还不是又来一个这个啊?这个我再再走一遍,来还是 来?再往下来,大家来看,这到了吧? c r p i c, 我 也不知道这个牌是干啥的,但是我也懒得去看它的解释说明我就喜欢看原码。咱们看原码当中啊,它是怎么定义的啊?还是在这里面?我打开这个 blog 当中,我们去找啊,先去找它原码的一个定义,这呢来 c r, 哎,不是,我看是不是,这个 叫啥名来着啊? c 二 pic, 来我们看啊, c 二 pic, 这呢?来,我们点进去,点进去完之后啊,咱们在这个 file 上是不是也是打上了断点啊?那进去看看呗,看看他做啥东西不就得了吗?打开断点,我们给他跳进去, 跳进去完之后啊,然后大家再去看你的输入是啥,你的输入当前还是 x 一个特征图,是不是他首先把这个特征干啥?这两个 c 是 相同的,就是还是把我这个特征图, 然后你看这个 x, 这个 x 是 二百五十六,就中间维度还是沿着这个特征维度,这是切一百二十八个,这是切一百二十八个,把二百五十六个图给它切两半,是不是?然后关键啊,它对,这是,比如这是个 a, 你 看这是个 a, 这是个 b, 这是 a, 这是 b, 然后 a 呢? a, 你 等着,等着一会去做拼接。 b, 干啥?就其中一部分让你去走东西。哎,我现在就发现这个结构吧,这个 yolo 就 贼愿意去用 你,但你发现一个特点,就优乐他都是这样的,他每一个模块吧都有这种比较保本的一个思想,就啥事,就比如说你说现在这个股票涨了,你说啥?你说你就直接梭哈吗?不能梭哈,我梭哈一半好不好,拿出一半去玩,另一半在这等着,等好了跟他拼接在一起。 这个优乐吧就大量用这种思想,这种思想啊,我估计大家就你们后续啊,可以在自己任务当中也去做一些尝试,就后面你你就第二个。 b, 这个结构,你做的花里胡哨,你加各种各样乱八七糟东西往死里去堆,然后呢?堆完之后你还把它还原成一个特征图,然后接下来你再跟这个 a 整合在一起 这招吧,现在就让优喽这么一说,我就感觉好像很通用的,因为现在啥论文都在去用这个方法,以前吧还很少这么去做。现在优喽自从你从优喽 v 几就开始有这个事,从优喽 v 四开始就有这个东西,从 优喽 v 四开始有这个东西之后,大家就比较喜欢做这个事,那你接下来我觉得尝试其他任务也可以去照搬这些思想啊。好了,让我们再看,你看这个 b 它是咋做的啊? 他这做法吧,简直太简单了,我估计后续大家你们改进的空间还是蛮大的,因为你看我这个把鼠标放在这个 m 这 m 这,哎,我展开看一下,他就是个啥,他叫做 p i c block 是 不是?来我们去找啊,找他这个定义, p i c block, 然后呢?打上断点,是不是来跳上去, 跳下去啊?咱们来看,这一块是走两个,一个叫做 tension, 一个叫 fit forward, 那 这两个东西再然后 x 加就不用说了,你基本啥东西都有残渣连接。你看这个 tension, 大家说 fit forward 是 比较简单,这就是我做了个 w i 加 b, 就是 做个全员阶层。 那前面这个 tension 做啥呢?我也不知道,点开数往往里边一点,我打上断点看一看呗。来,点进去之后我们先打上断点去看, 这一周走。哎,我一走我咋发现你看先去这个东西我觉得不用解释了,咱之前讲什么 control 嘛,讲 vip, 那 原码给大家看多少遍了都,大家都很清楚是不是?哎,你看它这个 tencent, 大家说它这个 tencent, 你 看你就光看这个代码, 你看他做没做啥特别的事,啥特别东西都没做,我本以为这个优喽啊,他得用一些乱八七糟东西,但是啥用都没有,就是给你提供提供个啥,提出个基础基础框架啊,就等着你们自己去改呢,反正他把哪块要改什么东西,哪块可以改什么东西都告诉你了,以后你可以去替换这个模块, 它就是啥,这我都不想给大家看了,就是一个最简单的一个定时计算方式,你看看,先算 q p v 啊,一一算,然后 q p v 展开,展开之后做这个多头,多头完之后做内积,内积完之后做 sort max, 再把 v 做加权,再连圈连接, 就标准的注意力机制是不是?然后再去得到执行结果?你看这是第一步, tencent 做完之后再连个圈,再 连个圈,层完之后呢,返回去就好了,你看这一步操作简不简单? 所以说就是从这边开始啊,以前的优柔当中啊,他默认是没有啥注意力机制的,但是从以前都是大家愿意自己去加自己加啥东西,但这回优柔也说了,就是在你这个输入层之前啊,咱们最好去整合一下这个特征,用注意力机制呢,去把一些重要的特征多放大放大,把不重要的特征给它缩小缩小。 那在什么地方去用的呢?不是在前面去用的,是在贝克棒当中最后去用的,因为前面是提特征,最后去整合特征,前面已经把特征提的挺好了,但是你还没有个侧重点好,最后一步我说给你做个加权,给你点侧重点,让你输出的时候能把这些特征更好去利用,利用好不好? 所以说你看这块是给大家过了一遍,就是 v 十一当中啊,嗯,你要说他有啥特别大改进吧,也没啥,因为他连一篇论文都没有,他就是 v 社啊,把这个东西已经默认的更新进来了,所以说以后呢,就没有优乐 v 八这个基础实验了,基础实验就是用这个 v 十一去做了, 行,这块给大家捋了一下啊,就是他这块模块他是怎么去改的?我顺便给拿这个东西也是给大家去解释解释。大家以后啊,做自己的东西,如果说你论文看不懂,论文看不懂吧,谁你也看不懂,我也看不懂,那论文东一句西一句整的,把论文都是把简单的东西往复杂了说, 但是代码是什么?代码就是说把复杂的东西用简单的方式去呈现出来,我建议大家啊,就是按照这种 deep 方式去捋一遍,我一般看论文也如此,我不太喜欢看。我一般就喜欢直接上原码,原码到时候自己捋一遍,然后选再看论文,那我就十有八九都差不差不多。知道了, 行了,这是今天第一个事儿,咱们先说说这个 v 十一啊。

我们经常在影视剧中看到摄像头锁定人脸追踪汽车的画面,感觉特别高级。其实他并没有代码小白想象中那么遥不可及,核心用到的就是 python 的 一个非常重要的库优罗, 全称 you only look once, 是 深度学习领域里一个经典的视觉识别模型。今天我就用一个植物病虫害检测的实战项目,带大家看看 yolo 是 怎么精准识别目标的。相信听完这个项目,你也能把这套思路迁移到自己想做的任何视觉识别任务上。 首先要检测一个目标,就得先对这一类物体做系统的数据收集,也就是采集格式统一的照片。接着在照片里手动标记出我们要检测的目标区域, 再把这些标注好的数据交给优漏进行训练。比如我们训练一百轮后,再拿几张全新的没见过的目标照片,为给训练好的模型去识别。如果绝大多数都能准确识别出来,就说明我们的模型训练效果还不错。 如果你也想深入了解 python 人工智能这块,不妨把这个完整项目拿去研究研究,戳评论区就能获取。

为什么优乐已经更新到优乐二十六了,还是推荐大家选择优乐 v 八呢?首先,优乐 v 八容易部署,官方将部署的所有复杂环节都做了封装和优化,不需要跟 v 五一样手动修改代码,可以说是开箱即用,对新手很友好,还支持多任务,能满足更复杂的业务需求。 像 v 十一虽然精度更高,但是比较复杂,容易出现兼容问题。而且优乐 v 八经过两年多的迭代优化,架构设计也更完美更稳定。 像 v 十三这些非官方版本后续出现问题也不会维护 v 八在网上学习资料也多,像最新版本优乐二十六, 网上都没几个案例可以参考,所以大多数场景下,优乐 v 八仍是首选。今天我会带大家从零开始安装部署优乐 v 八,讲清楚每一行代码的作用和意义,并教你如何改进优乐 v 八模型,在里面添加自己的模块和助力机制。

大家好,欢迎来到扣顶茶水间,今天给大家介绍的题目是基于优喽算法的昆虫识别系统,这套系统呢是可以识别三十三种昆虫,可以看到这里面有青天牛、鼠、毛虫藤粉蝶、健胃鹅等等,总共是三十三种。 好的,让我们看一下我们主界面,这是我们的主界面,分三个区域,左侧区域呢是我们的功能按钮区,分别是图片选择,可以选择图片进行检测,视频选择可以加载一段视频流进行检测。 文件夹选择呢是可以批量检测某个文件夹下的多张图片。摄像头是可以实时的检测连接到电脑上的摄像头传过来的视频流数据。模型选择呢是用来选择我们使用哪个模型来进行检测。 我们先选择一下我们的模型,我们的模型是在这个 runs 目录下,这里面有我们训练好的四个模型,我们先选择一下这个全中文键,好提示模型已成功加载, 然后这个结果保存呢,是可以帮我们检测后的图片以及视频生成,新的图片和视频保存下来,然后新的图片和视频中是叠加有我们检测的目标信息的。 好的,让我们看一下我们界面的中间曲,然后我们这个侧边栏呢,还是可以点击展开收缩。 然后我们界面的中间区域呢,上方有两个参数,一个知心度,一个焦饼饼,这两个参数是可以通过滑动来调节,然后下方有个检测耗时,是当前画面检测的目标用了多长时间以及检测到多少个目标。然后中间上方这块呢是个语音播报,当我们选中之后 检测图片和视频的时候,检测到目标之后,会进行一个语音播报提醒,然后我们界面的中间区域是做了一个启动页的动画, 它是用来展示我们加载的图片以及视频。然后下方这块呢是一个 tab 列表,是用来展示我们检测的目标的详细数据,它是以列表的形式展示到下方, 然后我们界面的右侧区域上方有个类别统计,是用来统计当前画面检测到每个类别分别检测多少个目标,然后下方有个类别过滤,是用来过滤我们想要检测的类别。 在下方这块区域呢是用来展示我们 table 列表中的详细数据,当我们点击这个列表中的 item 的 时候,它的详细数据会展示到下方这块,然后这个结果导出呢,是用来导出我们 table 列表中的数据,会导出到表格中保存下来。 好的,我们现在演示一下功能,我先选择一张图片 发现目标。好的,我们当年画面呢是检测检测到了叫猫鹅这种昆虫,然后呢它的致信度是零点九五,然后下方列表中展示到展示了一条数据,当我们点击这个 item 的 时候, 在这个右下方这块呢是简展示它的详细的数据,也是进行了一个语音播报。这个语音播报功能是这样子的,我们在代码中预制了一个语音文件,当我们检测到目标的时候,它会播放这个语音文件,然后这个呢是可以根据自己的需求进行替换就可以。 好的,大家可以看到这个检测耗时呢显示是四点零九秒,因为我们第一次检测,第一次检测检测的时候呢需要先加载模型,所以时间会比较长,我们再选择一张图片看一下,发现目标,好的是零点零七秒,检测到有一个键尾额, 发现目标零点零七秒,这是检测到两只花鲸归属,对,然后当我们点击这个 item, 可以 看到 在图片中呢会展示当前 item 的 目标位置。对,然后右下方这块也会展示它的数据,然后这块这个知心度呢,我们可以调节一下,比如我把它调到 零点九七,这个时候呢我再去检测这个啊,这个时候就检测不到任何目标了,然后也没有进行语音播报,它会把知心度低于零点九七的这个目标全部过滤掉。对,这就是我们这个知心度的调节,我们默认的都是设置成零点五, 然后我们再看一下这个视频的选择,我们先选择一张视,选择个视频, 好,我们选择一下视频,发现目标,发现目标,发现目标,发现目标,我先把它关掉,可以看到它是检测这个视频中的每一帧的数据,都会检测, 对,它检测完成之后呢,我们现在点击一个结果保存,然后我会保存一个新的视频,把视频一保存,然后呢结果 导出,然后我们看一下我们保存的这个数据, 可以看到这是它的原视频,这是我们检测后的视频。 对,这个视频中呢是带有这种检测的信息的。 然后呢我们再看一下这个表格, 再看这个表格呢,它是检测每一帧的画面,对,所以它可以看到这总共有检测到一百三十六条数据,是每一帧的这个画面的数据都在里面。对,就是这个数据的保存。 好的,我们再看一下文件夹的功能,我现在选择文件夹就选择这个文件夹,它会依次的检测文件夹中的每一张图片。 对,检测完成之后呢,我现在点击结果保存新建文件夹,我先新建个文件夹,选择文件夹好,成功保存十张图片,然后结果导出保存 好保存。然后呢我们再看一下我们保存的这个数据,就在这个文件夹下,这里面有我们生成的新的十张图片,对,它会有这个检测的标注信息。然后呢这是我们的这个表格, 这个表格呢是把十张图片的检测的结果信息全部汇总到一起,可以看到这是一张图片。 对,这是一张图片,这是一张,然后这是一张图片。对,总共是十张图片的信息,全都在这个表格里面。好的,这就是我们这个图片的保存功能, 我们现在再看一下这个摄像头的功能,我现在呢打开一下摄像头,打开摄像头。 好的,我点击打开一张图片看一下。好的,可以看到啊,这也不太看不太清, 这个就比较清晰。 好的,我点击关闭摄像头。好,这是我们这个摄像头的检测功能。 然后我们这套系统呢也实现了一个登录的脚本,我把这个登录脚本给大家运行一下,看一下, 点击运行我们登录脚本,这是我们的登录界面,登录呢需要用户名密码以及验证码,然后呢是可以刷新更改验证码,然后我点击先注册一个账号,然后这块呢会默认会有一个默认头像,我们可以先选择个头像, 然后用户名密码注册好就注册成功了,然后我们登录一下 进入。 好的,我们登录进来之后呢,在左上角会有个个人中心的按钮,点击个人中心有个人信息展示,然后可以修改信息,修改密码,修改头像就不演示了,然后点击注销,用户确定就会退出到登录界面,这就是我们这个登录的功能。 然后我们这系统呢也实现了一个通过脚本来检测图片视频以及摄像头视频流的一个功能,不需要任何界面操作,可以看到这是我们的这个检测图片的脚本,这里面配置好的一个全中文文件路径。然后呢我现在配置一张图片。 好的,可以看到这是我们的原图,这是我们检测后的图,对,这是个图片的检测。然后呢视频流也是一样的,这是我们有配置好的一个视频文件,我直接点击运行 对,它可以检测视频的,这个检测完成之后呢,它就会自动退出。好的,这是这个视频的检测,这个摄像头也是一样的,我就不演示了。然后再看一下我们这套代码呢,也有一个训练的脚本, 然后这块呢是配置了要训练的模型,我们默认呢是配置四个模型,这个呢可以根据自己的需求进行更改就行。 然后呢这块是我们的这个训练轮次,我们每个模型默认都是要训练一百次。对,然后这块是每批次的图片处理数量,这个是根据自己电脑的配置来决定的,如果配置一般的话,我们改成八就可以,然后点进行, 现在提示已经开始训练我们的模型,开始训练第一个模型了,他会依次的将四个模型,每个模型训练一百次,训练完成。 然后呢这是加载我们的数据集,我们这套模型的数据集呢,这是他的训练集,训练集是五千三百二十五张图片,然后这块呢是我们的验证集,验证集是八百多张图片,所以我们这套数据集呢,总共是六千多张图片,因为这个四个模型训练完需要四百次,训练的时间比较长,我们就不演示了。 然后我给大家看一下我这个目录,这个 cadet 目录下呢放的是我们的数据集,这里面有测试集、训练集、一键正集,然后训练完成之后的输出结果是在这个 runs 目录下,这里面是我们训练好的四个模型, 然后我们可以看一下这个模型的输出文件,每个模型训练完成之后都有这么多的输出的结果文件,然后这里面包括有这个 f 一 参数, 这是一个召回率和精准度的一个参数曲线,以及还有这个很小矩阵,这是它的一个很小矩阵。对,然后呢还有训练过程中的一些标注图, 对,然后这个 weights 这个目录下呢放了两个文件,这个 best 是 训练过程中数据结果最好的一个权重文件,这个 last 是 最后一次训练输出的权重文件,我们使用这个模型的时候使用这个 best 就 可以。 然后关于这个训练结果的详细的说明,我们之前有一条视频,叫一条视频讲清楚 yellow 训练结果的含义,大家可以去看一下那条视频,讲的非常详细。好的,这就是我们这套系统完整的功能演示和说明。

最新优喽二六来了,今天我将使用优喽二六训练自己的数据集合推理,并教你本地训练和租用 gpu 服务器训练,顺便带你解析优喽二十六创新点全网最详细教程。 哈喽,大家好,优喽二六来了,听说它是更好更快更小的优喽模型,那么优喽二六还能使用吗?肯定是可以的,官网都出新的,肯定是可以用的,那本期教程我教你使用优喽二六训练自己的数据级和推理, 如果本地没有 gpu 的 话,那么我会教你们做用 gpu 服务器来训练的。顺便来讲一下优喽二六的创新点,它是前几天刚出的, 我们来看一下这个目录,点击它就行了。载药这里优酷二六是在二零二六年一月十四号发布的,我今天才写完这篇文章,在博客就可以收到了,我们来看一下优酷二六的更新点, 但是有这么多,但是可能也不止这么多吧,这些主要的创新点我会一个个讲的,会根据代码来讲的。我们先下载优乐二六的源码,在目录这里找到就行了。 源码的下载,打开官网的地址, 打开了之后呢,这里找到它的最新版本号,它最新是八点四点五,我前两天是下载是八点四点二的, 选中它就行了,有 code 点击下载就行了,这里等待它下载 我,那我就用前两天下载的八点四点二的代码,是会一直更新的,我们用之前的就行了。如果你需要我提中的原码,在公众号这里发送 yellow 二六原码,就可以获取我的完整原码了。我的完整原码是什么样子的呢?我们来看一下, 它是包含了训练的测试数据集,还有训练脚本,推理脚本数据,配置文件等,把它解压出来,然后打开就行了。拍 tom 打开 由官网的运训练模型下载在这里下面这里 它是有目标检测的模型啊, n s, 这个是模型的大小,还有分割的模型,还有分类 关键点检测的,还有个旋转框的 o b b 的, 根据你们的需求来下载就行了。点击就可以下载了, 点击你看它就会自动下载,我已经下载过了,我就不下载了。在我的元码包里面也是有这几个模型的,你们用哪个就下载哪个 代码打开了然后呢?环境怎么配置呢?先配置一下环境吧, 环境的话在看下在哪里。环境配置在这里, uolo 二六, uolo 十一十九八七五,它的环境都是通用的,只需安装一次就行了,我还是用之前的 uolo 十一,环境还是没变,选中你之前的环境就行了。 不懂的话可以看这个教程,从四分五十三秒开始看环境安装教程,我这里就不演示环境怎么安装了,它是很简单的,看这个教程就可以安装了。 假设把环境安装完了之后呢,就可以运行推理训练脚本了。我们先进行推理吧,因为环境已经配置好了推理,在这里 复制这个脚本就行了,如果你下载我的原码就不用复制,我原码已经包含了我们打开推理的脚本在这里 第一个参数就是放你模型的路径,我的模型是在这里,你用哪个推理就填哪个,你用你自己的模型也是可以的,上述参数就是放你那个推理图片或视频的路径, 我这个推理视频是在根目录的,所以直接填他的文件名就行了,也可以填他的绝对路径,复制路径填到这里就行了。 然后是否要显示,如果你要显示的话就填处,不显示就 force, 我 们直接运行,看下它的推理速度快不快。 好的,推理结束,如果你需要推理图片的话,你就把图片的路径填到这里就行了, 图片我就不用显示出来了, 然后重新运行, 然后它的结果会保存在这里, 这个就是它的推理结果了。然后上面这个是我刚推理的视频结果是优喽二六跟优喽十一的推理方式训练方式一模一样的,跟 v 八也是一样的。 那我们先讲一下优喽二六的创新点吧,等一下我再讲训练,训练很简单的, 我们先找到目录这里,创新点在这里我们先讲第一个移除分布焦点损失模块嘛?它在哪里呢? 它的代码在 ross 点 py 文件这里,我们打开代码来看一下。 双击打开了之后呢?分布焦点损失模块的核心代码在 bbox 这个类里面,我们打开代码来看一下,然后进行搜索就行了,把这个类的名字复制,然后呢 ctrl f 搜索 就是这个了。从这行代码就可以看出来,它是通过 i g max 这个参数来控制是否使用分布焦点这个损失的, 如果这个参数大于一,那么就使用分布焦点损失,如果小于或者等于一就为空嘛。这个参数是在它的模型文件里面写的,我们打开它的模型配置文件, 在这里二六这里打开了,你看它的 ig max 这个参数是等于一的,那么就移除了这个分布焦点模块嘛, 然后下面的再看一下,这个就是分布焦点损失了,如果为空的话就使用下面这里就用 l e 损失嘛,在这里这行代码前面的就是他的归一块处理了。 u 二六,它为什么用 l 一 的损失呢?我觉得应该是为了提升速度嘛,而分布焦点损失目的是为了提高模型精度,它是通过 i g max 这个分布值来提高定位精度的,但是会增加它的计算量,它这里出师值是十六的,如果使用分布焦点损失的话, u 二六它是走这条分支的。好的,这个创新点过了,我们继续讲下一个,我们来看一下博克, 第二个就是端到端,无需 n n s 推理。优乐二六,有点类似优乐威时的双标签分配思路,在训练时同时使用两个分支,推理时候只有一个分支。我们来看一下它的代码在哪里,可以在它的 head p i 来看一下。打开代码 还是在这里 head 这里 看一下。检测,这里这个就是检测头了 门,往下面来看一下在哪里, 代码在这里,我们来看一下博克,它是有两个分支,一个是一对多,一个是一对一,一对多就是一个真实物体对应多个的预测框嘛,一对一就是一个目标对应一个预测框嘛, 他的分支怎么走呢?训练的话他是走两条分支的,一个是一对多,这行代码就是一对多吗? one two many 一 对多,然后继续往下面走,下面走就是一对一嘛,在这里要把一对一和一对多放到一个字典里面,然后在训练的时候 他返回,回去嘛,所以他是走两条分支的,这个就可以看得出来,如果在推理的时候他就使用一条分支,就是问图问嘛,就是一对一嘛,从这行代码就可以看得出来了, 这里是推理的,大家来看下这里就行了。他这样做的目的是为什么呢?就是在推理时候降低延时嘛,一句话就是优乐二六在训练和推理上比之前的优乐 vs 一 理论上更快嘛。好的,这个创新点过 我们继续讲下一个,下一个就是什么呢? 更详细的内容大家来看一下博克就行了,下一个就是 pro ross 和 d a l pro ross 的 代码,在 ross 点 py 这个文件里面,我们来看一下, 先找到它, 然后它的类在哪里呢?在这里复制这个类搜索就行了,直接搜索到了,就是这个 boss 大 概思路就是在训练过程中动态调整一对多分支和一对一分支的损失权重,在训练初期侧重一对多的分支,这样加快模型的特征提取嘛。在训练后期就是侧重一对一的分支嘛,我们可以从代码这里来看一下, 在代码这里它是这样定义的,一对多它的权重值是零点八就是百分之八十嘛,剩下的就是一对一的权重嘛,一减去零点八就是零点二嘛,定的就是百分之二十嘛。然后在训练的后期就是 一对多的权重变成了零点一,然后他的一对一分之就变成了百分之九十嘛,他的权重值 还是通过这个方法来更新他的权重值的,在训练过程中他会动态调整的,在这里他的权重衰减是在哪里计算呢?是在这个方法来计算的,大家来看一下就行了,在这里。 好的,继续来看。扑克还有一个小的创新点,就是优化小目标的,就是 s t a l, 如果目标大小,它会将框高放大处理的,就好比一个篮球框,它太小的话,你投篮的话难度会更大,你把那个篮球框变大了,你投篮的几率就会变大了,它的意思就是这样子的,它的代码在哪里呢?我们来看一下 他的代码在 t a l 这个文件里面,我们打开以后搜索就行了,我们主要看他的核心代码,在这里看这位 f 核心代码在哪里呢?跳进这个方法里面,他的核心代码就是在这里 宽高获取原始的宽高吗?如果他太小的话,会进行放大处理,在训练过程中,如果你的目标太小的话,他会将其放大放大,那么理论上你的精度会提高,理论上哦, 好的,这里过了,我们讲最后一个,最后一个就是优化器了,他用的优化器是 miui s g d, 应该是他最新提出的优化器,这个优化器是将 miui 和 s g d 结合在一起的,两个权重各占一半,在代码这里可以找到, 我们可以打开代码来看一下。它在这里, 在这里打开这个就是它的最新优化器了, vivo 和 s g d 各占一半,就是各占百分之五十嘛,它这里写有的具体代码实现,大家来看一下。这里, 在这里这么多,大家来看一下就行了,我们来看一下博克,其中铭文部分就是负责结构化的更新嘛,就是对 t 度的正交化处理,它应该是参考大模型的处理方法,目的是防止 t 度消失和爆炸,整体上实现更稳定的训练和更快的收敛速度。 这 g t 部分就是提高它的计算效率的好的创新点解析完毕, 官网说优乐二六最小版本在标准 cpu 上运行速度最高提升了百分之四十三,大家拿到原码来试一下就行了。然后训练还有推理的速度是不是比优乐十一更快,大家来试一下就行了。好的,优乐二六更新点基本讲完,这只是我的个人观点, 更多的更新点在源码里面,可能官网没有说出来,大家拿到原码来看一下就行了。 然后呢,我们来讲一下它的模型结构吧,它的模型结构在这里,它的模型结构跟之前的优乐 v 十一一模一样,几乎没有变,只是加了一些参数而已。我们来看一下 这是优酷二六的模型配置文件,它加了两个参数,还有一些,这里 c 三 k 二,这里也是加了一些参数,这里我这里也写出来了。在这里 c 三 k 二的小优化,我们来看一下在哪里 c 三 k 二。找到这里, c 三 k 二在这,它的小优化就是在上面,这里,它现在有三个分支,一个分支,两个分支,三个分支,它之前是有两个分支的,我们来看一下这里, 它之前是有两个分支的,现在多了一个。然后看一下优路 v 十一的配置文件在哪里呢? u 六十一在这里, 它的模型结构是基本一样的,只是这里的参数不一样,它这里只有一个处,它这里是多了一个处的。 多了一个处是代表什么意思呢?就是它这里就多了一个分支嘛, 如果等于 a、 d、 d、 n, 就 走前面这条分支,否则的话就走 c 三 k 这条分支,后面的分支就是跟优路十一的分支一模一样的,只是它这里的全仓多了一个簇簇的话就是调用前面这个分支嘛。 是两个的话就是调用前面那个分支,一个的话就是调用 c 三 k 这条分支,它的参数在这里可以看得到的。 force force 把两个处传进来就是调用这条分支了,这里不讲这么多了,好了,这里结束, 最后讲一下优乐二六的训练,优乐二六的训练跟优乐十一、优乐 v 八 v 十 v 十一 v 十三都是一模一样的,初级处理也是一模一样的,我们来看一下初级准备,这里 有目标检测,还有分割的,还有关键点检测 o v 的, 大家来看一下使用什么工具来标注就行了,你也可以用现成的数据来训练,就不用自己标注数据。这里我就不讲了,假设你弄好一份数据就可以直接训练了。 在这里优鲁二六训练,这里我这里也写了本地训练,还有服务器训练,我先教一下本地训练了,如果本地训练不起来,我后面租服务器来教你们怎么训练。这里拿到我的训练测试数据集,在这里 填一下你的配置文件就行了。这个是我之前训练的行人数据集,那我就用之前的就行了,如果你用其他数据改一下路径,还有类别的数量还有标签就行了, 大致都是一样的。然后这里改完了之后就可以直接训练了。在训练这个文件里面,这里填上你的模型配置文件。在哪里呢?在刚刚那里, 二六这里,把这个路径复制到这里就行了。这里的路径填你们的,然后是否加载你的训练权重?如果你不加载,就把这条代码注册掉就行了, 我就加载,然后他的训练速度可能更快吧。然后训练次数,批次大小,然后现成数肯定的话也可以填八或者填零,如果选成八的话,你就最好填个零,然后其他都不用动,然后直接训练 这里,等待他加载就行了。 好的,这里他是训练成功的。 好的,这里先暂停了,我这里只是演示一下怎么训练,更详细的教程可以结合播客的内容来看。 好的,接下来就是租服务器来训练的,我之前也出了一期租奥拓 d l 的 远程服务器来训练的,训练方式跟本地一样,把你的代码还有数据上传到上面,然后改上路径就行了。然后直接训练跟本地训练一样的, 只是上面是没有界面操作的,然后在只能在终端这里操作就行了。终端也是可以训练的,比如说在服务器的话,你就需需要用命令来训练了,如果说派森,派森去按住回车键,他就会自动补全,然后直接回车。服务器训练就是这样子的, 我这里先暂停,他是能训练起来的。好了,接下来进入服务器训练教程,这里暂停。 如果你使用奥拓 d l, 你 就看这个教程来就行了,这里是手把手教成的,大家来看下去就行了,很详细的。 那这期视频我是租用 c s d n 的 星毒 ai 进行训练,它是 c s d n 官网推出来的,博主已经在这个星毒 ai 平台上面配置好了优柔的训练和推理环境,它适合优柔二六十一 v 八 v 十的训练的,不过你训练其他模型,你也可以自己配置。环境很简单的,就是点击这个链接, 然后呢直接这里自动续费可以关闭,然后你需要时长在这里勾选就行了。这里机器两个, gpu 或者三个,我这里就用一个就够了,要是用我的镜像就行了,我已经配置好了。然后这里也有教程,大家来看看就行了,要直接部署这里带大家来部署一下, 这里续费直接关闭,然后直接部署用这里直接支付就行了。设置用四零九零的机器,然后点击运行中,这里等待它创建。也可以看这个教程, 这个镜像只需要你上传数据集就行了。环境我已经配置好了,路由二六的代码也在里面,如果你用你的代码的话,也可以上传到上面,我上传的代码是版本号是八点四点二的,如果你有最新的话,你也可以上传最新的代码上去, 这里写的很详细, 这里等待它创建。 我们先把数据集上传。先上传数据集,我是用的工具是叉 f t p, 那 这里有安装教程的,大家来看一下就行了,我这里就不教你们怎么安装了,这里写的很详细的,打开叉 f t p 上传的下载数据都是用这个工具, 然后这里等待它启动。我数据先准备上线,我是用优优二六官网提供的数据,它是用于家居物体检测的,它的类别是有多少个类?有十二个类别, 我们来用这个数据集来训练,你也可以训练自己的数据集,反正上传上去就行了,很简单的。这里等待它创建。怎么创建这么久?这里先暂停一下 这个星途 ai, 它创建镜像怎么这么慢?应该有半个钟了,还没创建完成,我这里先等待它创建吧。 我在奥拓迪奥鲁这里创建一个环境吧,到时候我会分享出去,到时候你们直接用就行了。现在我是从零开始创建一个环境,创建优酷的环境, 先租一个实力先,然后这里地区的话,大家根据自己需求来选择就行了。然后显卡租个四零九零,他这里没有了五零九零,五零九零又太贵了,租不起, 这个更贵,六千。 北京的看有没有选 内蒙,内蒙应该有。那我就做一个四零九零的,然后 gpu 数量它这里自己可以选的,到时候我把我的镜像分享给你们。 社区镜像应该也是有的,如果你们在这里也可以搜索社区的镜像,我先创建一个镜像先 id, 我 还是用这个吧。然后呢直接创建就行, 这里等待它开机。它这个开机应该挺快的。这里还没得呢还没得,我去, 这里已经开机成功了,这里是运行中,这里可以连接你的叉 f t b, 把这个命令复制一下,然后这里属性,然后把这里粘贴过来,这里方便复制。 然后这个主机就是 at 后面的全部,这是我刚刚复制,然后端口号粘贴到这里,然后呢这里就选这个,然后名称随便写,优喽二六或者优喽二六 就写个 url 吧,随便写的,然后端口号是多少?是刚刚那个,然后用户名输入的,然后密码在这里复制,密码粘贴到这里,然后呢进行这里先把它删除下,然后直接连接,然后这里接受, 一般把一般把代码还有数据上传到这个数据盘这里,我们打开 jupiter 这个服务,它这里也有帮助文档的,如果不会的话来看这个教程,我之前出过教程的,在这里 这里打开一个终端,然后它这里有的数据盘实体关机,不会丢失,一般不会随镜像保存,如果你要保存镜像的话,你就不要把这个数据放在这里,然后系统盘就是录的上面的 使力关机,但是会随你的镜像会保存,就是你的环境啊,会保保存在你的镜像里面,然后这个也大家来看一下就行了,然后直接来看这里,然后我是内置了他的拍照曲的,然后来看一下他的拍照曲版本是多少, 因为刚刚创建的拍照取应该是一点一,一点零的,然后库达是十一点三的,如果你的环境和他提供的不一样,你也可以自己新建,然后他在哪里新建呢?在他这里有教程的,大家来看看就行。镜像 如果平台上没有你想要的版本,你可以在开机后创建自己想要的 ps 版本和扩展版本,我这里是适合用,那就用它的原来的环境就行了,原来环境如果缺什么就安装什么就行了。 我先看一下星图 ai 这里。好的,这里已经启动了,我先这里先等一下吧,先关机先吧,等一下我再过来弄这个,然后我先教这边的教程, 然后它这里也有教程的。启动完成了之后呢,打开这个 jupiter 这个服务,点击它就行了,这里就会等待它启动。 嗯,启动完成了之后呢,看这个教程, 因为我系统盘已经放有 uolo 二六的代码,要把它复制到数据盘就行了,复制这条命令, 然后呢回收就行了,然后它这里会把那里的原码复制到这里来,如果没有的话,你可以自己在这里上传,往这里重新连嘛, 这里重新新建一个 yellow 二六的 就叫优喽二百,然后把这个端口号什么都复制过来,跟刚刚的操作一样的,其实每个远程服务器的操作基本都是一样的,然后主机是艾特后面的全部,然后端口号 复制到这里,不能有空格后面,然后用户名是录的密码,在这里复制粘贴到这里连接。 嗯,进来就可以看到系统盘的全部文件了,然后这个是我镜像保存的优乐二六的原码,八点四点二,如果你有自己的原码,你也可以上传到上面,用我的工具就行了。 我的数据盘是在这里的,刚刚已经复制过来了,为什么要复制到这里呢?因为这里更好的操作嘛,比如说打开它,然后就可以在这里修改了, 直接进行训练。我先把数据集上传,先上传也是上传到这个数据盘这里, 把这个代码双击或者拖拽过来就行了,如果是文件夹的话就要进行拖拽,文件的话就双击它自动会上传到这边来,这里等待它上传, 在服务器也是可以推理的。然后呢,先激活你的环境在这里, 然后进入这个代码的目录,也可以进入代码的目录 cd, 然后就进入你代码的目录,就是这个目录。然后呢,下一步应该是激活了。 激活的命令在哪?激活的命令在这里也可以看一下服务器的环境有哪些。 又弄错了, emv l i s t 然后服务器的虚拟环境是有这么多,前面三个应该是服务器自带的,这个优乐环境是我自己创建的,就是分享给你们的环境,你们就可以用我的环境了。 你要激活激活命令怎么激活? c o n d a h e t i v a t 然后优酷就行了,这里是就是你优酷的环境的名字,然后回车,只要左边这个括号变成优酷,你就可以用我的环境了。然后就可以在我的环境里面看一下有哪些包, 它是有安装了这么多,如果没有的包,你也可以自己自己安装, p i p 安装就行了,如果你需要加载其他的环境,跟 windows 的 环境安装一样的,它也是有个终端的。跟这里一样, 数据已经上传到上面了,然后我们进行解压,怎么解压呢?在上面只能用命令,我们看一下数据的包在哪里, 我们先退出上级目录群,然后看上了有哪些,这个就是我的税级了。我们进解了解压的命令,如果不会的话来看教程,它这里有常用的命令来,看完这个教程就懂了,不懂你就问 ai 吧, 它的包名前面 h, 然后按住 tab 键,它就会自动补全了,然后接着杠的就是你要解压的目录在哪里,那我就解压到当前目录,当前目录就是这里,然后文件名,文件名叫什么呢?叫换吧, 然后加一个斜杠,然后呢 回车就行,然后这个命令打错了,应该是 u n 的 u n 杠一 c p, 然后压缩包的名字,然后需要解压到的目录叫 home d a t a, 这文件名可以随便取这里等待它解压完成,这里返回上一个目录,就可以看到你解压的文件夹了,然后这里的类别全部复制过来, 然后在你的代码的配置文件数据及配置文件这里粘贴, 它,应该是十二个,十二,那又填十二,它这里填的列表也可以用字典,也可以用中括号,就是刚刚的原始方式,用哪种都行的。 然后这里训练的路径是在哪里呢?我们也可以在这里来看一下。这里重新进入,然后训练的把它这个路径粘贴到这里填绝对路径啊,这样就不会容易出错。 然后这个就是 vl, 然后这里改一下 vl, 然后保存, ctrl s 保存。然后呢回到训练这里, 然后训练的次数我就填个五十轮吧,然后皮子大小填一二八吧,如果你显卡显存大的话就填多一点,就是芝麻服务器的显存嘛,然后现场数填八, 然后使用的设备是零,零代表第一个 gpu, 如果你有两个,你就填一嘛,零一嘛,那我就有一个,就填零嘛,然后什么都不用动就可以训练了。 模型的文件在这里,然后配置文件这里修改一下吧,在哪里呢?在这里可以找得到, 快在这里吧, 二六是哪个呢?是目标检测,就把这个路径复制过来,这个路径把前面的删掉,写成一个点,然后就保存了 点斜杠就是这个原版的跟路径嘛,然后就可以找到这个配置软件了。如果你这种方式出错的话,就填绝对路径, 然后在终端这里进入你的原码路径,原码路径,然后直接拍摄就行了, d r, 然后直接回车,然后服务器训练,就是这么简单,用我的镜像就不用拍摄环境了,已经帮你们配好了, 如果缺什么包,你可以自己安装的,没问题的。 嗯,继续等待吧。训练完了之后呢?怎么下载你的模型呢?它会有你的结果的,然后把它拖拽到这边就行了,然后你就可以在本地测试了。 这个是我在服务器上面推理的,它会保存结果在这里,如果你需要下载的话,在这里下载就行了,或者在这里它是有 w w 下载就行了。 这里训练成功了。好的,这里服务器已经训练成功了。 这个就是我创建的镜像,又是帮你们配好环境的。后面我在这里再创建一个环境嘛,因为这里启动的话比较慢,你们看着来选择吧。这里先开机, 这边等待它训练。 我先把这边的教程弄一下。好的,这里重新连吧,这里看能不能重新连好了。重新连已经成功了,因为这里已经开机了,然后这里刷新吧。 好的,这里打开终端,它前面是被子,就是系统默认的环境,命令还是跟之前的一样, 它是只有一个环境的,那我就用默认的环境就行了,如果这个环境缺什么,就安装在里面就行了。我们先装安装优酷的环境吧,因为它已经安装了 pose 了,因为前面已经看过了。我这里再看一遍, 你看它这里有的。那我就不用安装,直接安装下一步就行。 看优优的环境安装在这里。 ipad 已经安装完成了服务器,然后呢?安装其他环境。我们先把原码上传上去吧。 cd 到数据 盘。原码是哪个?看一下。原码是 重新去官网下载一个吧,方便你们知道怎么弄。 选最新的八点四点五的, 复制这个命令,看看能不能下载 它好像没有这个命令。那直接上传这个压缩包吧, 我之前下载过了。那就擦掉。那直接上传就行了,找到源码先, 我们就上传最新的。你也可以上传之前的原码,比如说优路十一 v 八 v 七 v 九 v 十等等,各种原码都是这种方式的。在服务器训练的话,然后数据集也上传一下吧。 数据集还是用刚刚的吧。在哪里呢?找一下先。 我用其他的。那就用其他的,用行人的收集这里,等待他上传就行了。然后这里先解压人马是这里不?嗯,这里可以看得到解压,看一下人。 然后需要解压的文件是哪个需要解压的。需要解压到的路径在哪里呢?那就在当前目录下。嗯,当前目录下。 person 吧。 加个斜杠,然后呢?回车。哦,这不是,这是尤洛。 解压到哪个文件夹呢?啊?这个是,这是原码的文件,需要解压到原码 u l。 需要解压到的文件夹是哪个呢?这里随便建一个 u l t i l y t i c s, 加个斜杠吧,原码就解压到这个文件夹了, 然后呢?数据集上传完成没有?上传完成了,继续解压。需要解压的文件是哪个?优酷数据集的杠 d, 需要解压到哪个文件夹呢?这里新建一个 p i s o n, 加个斜杠,然后呢?这里已经解压完成, 然后这里还没有基础环境,就是其他依赖,还需要安装其他依赖,安装其他依赖。在这里 新建一个文件,你要把这个包全部复制到里面就行了,在本地直接上传到上面就行了,这里重新打开, 然后在这里找一下那个文件在哪里。先在本地新建好,就可以上传到上面了。 我之前的源码包是有的, 数据及配置文件上传到上面前,模型也可以上传, 需要的文件上传到上面就行了,然后配置文件环境,配置文件也是可以上传的。上传到上面,在你上传完成之后呢,就可以安装依赖了。复制这条命令 在这里粘贴。大家是不是没有找到这个文件,因为你的路径不在这里,需要进入到这个文件的路径在哪里呢?按住 tab 键, tab 键它就可以进入了,然后再使用这个秒模拟安装就行了,这里可以打开的, 这里等待他安装好的。安装完成就可以测试训练了,训练太简单了,然后把那个路径复制过来,这里的路径要填你服务器的路径在这里。 模型二六,我的配置文件是这个目标,复制路径粘贴到这里就行了, 这里点就行了,如果你不放心的话,就填绝对滤镜,绝对滤镜在这里,这个就是它的绝对滤镜。不是,这个是原版的绝对滤镜。模型配置文件还是在这里 这里复制,复制到后面这里就行。好的,然后修改一下,启动,先修改一下数据级的配置文件,我们在这里复制过来, 这里应该是 vl, 反正你们的文件怎么命名就怎么写。确实是 vl, 有 一个类别标准对点, 然后训练字数,那就五十吧,一二八,现成数是八, 看一下哪里要改,这里需要填个零,就是用第一个 gpu 这里保存,看看能不能训练成功吧。 picken, 看这边训练完成没有,这里是什么警告,不用管, 这边已经开始训练了。 打包这个错误呢,就是缺少这个包嘛,遇到报错不用框的,它是跟 windows 安装环境差不多的, 就是缺什么包就安装什么包,问题不大。星途 ai 的 训练教程我都有了, 奥拓 d l 的 教程我也是刚刚从零开始教你们的,也是很简单的,如果你有其他原版也是这样子训练的,你在本地弄好你的训练文件,这里文件等等模型啊什么的,然后上传到上面,然后训练就行了, 很简单的。好了,这里等待他训练,然后训练完成我就要关机了,因为他是有收费的,到时候我把这个镜像分享给你们就行了,然后你们直接用就好, 如果你们不用的话也可以自己安装,因为安装环境我刚前面演示过了,很简单的,缺什么就安装什么,没什么难度。 如果在服务器上面推理,也需要修改一下模型的文件呢?需要推理文件的路径啊在这里, 然后这个参数之后显示在服务器上面是不能显示的,因为它只有一个黑黑的终端,这里只保存它的结果就行了。然后这边训练完成了没有?好的,训练完成,它保存结果在这里。然后大家来看一下,在这里,这这一叉。 b 二, 我是训练 proson 这个人呢,要训练结果都在这里,你需要怎么下载到本地呢?很简单的,这里暂停,暂停,暂停点错了, 把它拖拽到这边就行了,这里就可以下载到本地了。然后这边也是一样,这边还没训练完成。奥特迪亚鲁服务器训练教程到此结束。好的,这里先关机,因为它是收费点,这里存完没?存完了就可以关机了。 然后这边呢,这边,这边还差几轮就训练完成。好的,先保存一下镜像 就填优酷就行了,优酷二六吧,优酷二六十一 v 八的都行。 我看一下我的镜像在哪里。 应该是这个, 到时候共享给你们。这里怎么共享出去呢? 这镜像到时候弄好再分享。这里先关闭。这里已经训练完成了,然后这里也是输出它的结果了,让我们把它的模型啊训练结果都下载下来,它是保存在 e x p 这个文件,把它拖到这里就行。 好的,训练完成了,然后本地也可以用的,本地用你刚刚训练的模型进行推理。在哪里呢?在 e x p 这里 保存的结果在这里,看一下。 为啥没有结果呢?因为我的模型不是检测人的,是检测家具的。我们拿另外一张看一下,直接去拿测试的数据, 直接复制一张, 然后把这个路径粘贴过来。 好的,你看检测成功。好的,全部教程到此结束。 然后训练中断的话,在这里看一下就行了。然后全部教程到此结束。幺二六幺二十一,幺二 v 八的改进,还有系统原码都在这个专栏目录里面,大家有兴趣的可以来看一下。如果这期视频对你有帮助的话,请点个小爱心,谢谢,下期见。

大家好,这里是 callin 茶水间,今天给大家带来的是基于优乐的侧盘识别系统, 这个项目是我们的一个成品项目,除此以外我们还有定做的业务,我们定做业务呢,主攻计算机视觉领域,可以用 python 或者是 map 开发,主要呈现方向有目标检测,目标分类,图像分类与识别,图像分割与增强,还有一些深度学具算法的复现与改进等等。 好,废话不多说,我们再回到我们这个项目上,这个打开的是我们系统的一个主界面,我们这个系统呢,可以对读取到的图片、视频摄像头中的车辆的车牌进行检测,并识别车牌上的车牌号。 这里对我们系统的算法简单介绍一下这系统呢, ufo 算法主要的作用在于对图片中的车牌的位置进行检测,但是呢, ufo 是 无法对车牌中的制服进行识别的,我们车牌制服识别用到的方法主要是 lpr net, 那 么 lpr net 呢,是一个端到端的比较清亮的,基于卷进卷进神经网络的啊车牌识别的一个算法。 我们先来介绍一下这个系统的界面,左侧呢是我们呃界面的一个菜单栏,菜单栏上呢,可以 选取不同载体的图像、视频文件夹,摄像头来进行识别检测,还可以选择不同的模型。我们这里呢已经提前训练好了四套模型,分别是 u 六 v 五、 u 六 v 八、 u 六 v 十一和 u 六 v 十二, 然后还可以把结果进行一个保存,中间区域就是我们图像展示的区域,然后上边呢有一些参数配置,可以配置自信度交变比,还可以对检测的时间和检测的目标进行一个数量的统计, 然后中间有一个语音播报,这个语音播报呢可以对识别到的车牌号进行一个播报啊,这个播报我们使用的微软的一个在线语音合成的功能, 然后下边呢是展示啊识别的一个列表信息,右边呢是一个关于展示车牌的一个详情,以后有识别的结果,还有他检测车牌的一个自信度和对应车牌在图像中所处的一个位置坐标。 还可以把我们表格中啊如果通过视频展示的多个车辆的一个结果呢, 进行一个结果导出,下面我们就来演示一下我们系统的一个效果,我们先来看一下图片选择的效果,点击图片选择按钮之后 啊弹出一个动画框来选择对应的车的图片,我们这里已经提前准备好了一些车牌的图像,我这里随便先选一张 啊,可以看到画面中读进来之后呢,我们模型会用绿色的矩形框对画面中车牌的区域进行一个标注,并展示车牌的信息,这个是输 e d 零零零零,然后下面会有对应的这个表格, 也会有自信度,车牌号还有它的一个坐标位置,然后右边这里呢也会显示它这个车牌号和坐标位置,还有对应的自信度。我们可以把这个语音播报打开来,再换一张图片, 玉零零零零零零,然后这是一个语音播报,这个我们还支持一个绿色的新能源的牌子,还有黄色的车牌也是支持的,我们可以多看一下,我们选一个新能源的车牌车牌号, 呃,我们可以看到它对这个绿色的车牌进行路 h d 零三四九三 啊,因为这个语音播报他是在线去微软的网站进行一个语音合成,所以他有时候会有一定的延迟,和你的网络请求是有一定关系,所以我们刚才看读去到图片之后,他就他的播报有一定的延迟, 可以看到这个绿色的新能源的车牌也能够检测到这个是鲁 h d 零三四九三,然后同样的右边有鲁 h d 零三四九三。 然后我们可以再换一个黄色的车牌,苏 b w 七八幺零, 这次的一个语音响应还速度可以,然后可以对这种黄色的车牌也能够检测到,我们把语音播报关掉吧。然后还可以选择视频,对视频中的画面车牌进行一个实时的检测识别, 可以看到它对视频中行驶的车辆也能够展示到识别到对应它的一个呃车牌信息。但是由于这个视频相对来说比较模糊,由于因为又是动态的,所以识别可能有一定的跳动, 如果我们的视频的分辨率比较高,呃车牌比较清晰的话,应该能得到一个不错的不错的一个识别效果。然后左边这个文件夹选择就是可以批量对文件夹中所有的图片进行一一处理,我们选择 我们这个文件夹,然后让它依次处理一下, 它会依次对文件夹中的图片每一个都进行一个识别处理, 然后这里呢我们分别可以比如说对这个结果进行保存,这个结果保存就是 对我们刚才处理的图片或者视频进行一个保存,当然我们选择这个文件夹,所以点击这个结果保存的话,它就会啊重新我们可以创建一个文件夹, 它会对刚才我们文件文件夹中的九张图片依次保存到对应的文件夹里头去,我们可以看一下啊,这个就是刚才保存的一个文件夹,它带着这个标注信息都对图片一一进行了一个保存, 然后这个结果导出呢,就是对刚才我们文言文言家中一一处理的图片的一个处理的表格信息进行一个导出,导出到本地的一个 excel 表格里头去,我们点击这个结果导出,然后我们可以起一个名字, 好,我们看一下文文言家文言家中保存的这个表格,我们打开这个表格 啊,可以看到它把这些数据保存到了 excel 表格里头去。 这个摄像头就是点击以后可以调用我们桌面的一个摄像头来通过 usb 联连接的摄像头来实时检测画面,并对画面中的车牌进行识别,这里呢我给大家演示一下。 好,我们点击左侧的这个摄像头按钮来调用我们桌面的摄像头进行检测啊,这里摄像头对着我的这个电脑屏幕的图片进行检测,可以看到它能够对 呃视频中呃摄像头中出现的车牌进行一个检测识别。这个图片可能不是太清晰,它检测有一点点跳动, 好,点击进去之后就把摄像头关闭了。本系统除了我们演示中所用到的默认使用的 yellow 十二模型,我们还训练了 yellow v 五、 yellow v 八和 yellow v 十一 同时呢,我们在系统的左侧,这里模型选择可以对模型进行切换,点击之后它会弹出一个对话框,我们这里呢可以来选择其他模型进行处理, 我们模型呢都放在这个 russ 文件夹里头,这里头呢已经放好了四套对应的模型,默认呢用的是 u 六十二,我们可以换个 u 六十一, 在 u 六十一,十一这里头有一个 which 文件夹,我们选择这个 best pt 是 它训练好的一个最优的模型, 然后它会提示模型已成功加载,那这个时候呢,后续我们系统所处理的检测呢,都会使用刚才加载这个 u 六十一模型,我们可以简单试一下,点击图片,然后我们选一个测试图像, 这个时候它识别啊,它检测用到的模型就是用的是 u 六十一, 这个就是我们程序主界面的一个功能。除此之外呢,我们还有一个用户登录的一个过程,我们下面给大家演示一下。在我的程序代码中,我们运行我们的登录界面, 然后这是我们一个用户登录的界面,用户登录的界面的话需要输入用户名和密码登录到我们的系统,然后第一次的话需要注册一个账号,往这里点击注册账号,然后选择一个头像, 啊,这里以后已经预制了一些头像,我们随便选一个,然后用户名,这里可以啊,随便起个名字吧。 好,然后用我们刚注册的用户名进行一个登录, 然后点击验证码输错了,换一个吧。二一,然后点击到进入系统, 这样它又进入到我们刚刚那个主界面了,但是不同的是左上角呢会有一个个人中心,点击个人中心的话,我们的用户信息会出现在右边,然后有一个修改用户信息,可以修改我们的密码和修改我们的头像啊,这里就不再给大家操作了, 然后点击这个注销用户呢,就可以再退出到我们这个系统的登录界面上, 这个呢就是我们系统的一个界面相关的部分,除了界面部分以外,我们还有一些脚本可以直接来运行处理效果,这样的话就脱离了界面的部分, 比如我们现在看到的这个是直接对单张图片进行一个侧牌识别,那么这里头我们需要传递好对应的 模型的一个路径,这里用到的是幺六十二的一个模型路径,然后呢再传递一个我们要呃识别检测的图片的一个路径,然后直接用行,可以看一下效果, 呃,可以看到他把图片读取到并检测到对应的车牌位置,而且呢还展示了车牌的一个信息在图片上,这个就是当张图片的一个处理效果,然后还有对应的 处理视频的一个脚本,还有处理摄像头的一个脚本。我们再来看一下处理视频的这个脚本吧,点击进行用行, 然后它会播放实时视频,然后对车牌进行一个实时识别,如果按 q 的 话,我们可以退出当前的一个界面摄像头,这里呢道理是一样的,这里就不再给大家进行演示了。 然后本地这里我们还有一个训练脚本,我们的模型其实也是已经训练好的,已经有四套模型,训练好放在了我们的项目目录里头,但是呢也可以再次二次训练。这个训练脚本已经写好了,这里配置了对应四套模型。然后呢还有对应的训练参数。 呃,比如这里头是默认训练一轮,我们正常应该是训练一百轮,可以改成一百。然后呃下面还有一些对应的参数,有默认的图像的尺寸,归一化的尺寸,还有每次每批次的载入的图像数量,然后我们用心可以看一下 它,这里已经提示开始从 u 六 v 五开始训练。 啊,已经开始了,它这里读取了一千三百零八张的训练级的图片,一百一十五张验证级的图片。由于我本地用的这个 mac 系统使用的 cpu 的 训练训练比较慢, 实际训练的话,我们需要在一个比较好的一个显卡环境下进行训练,训练时间比较久,这里就不给大家演示,我这里就强行把它终止了。 然后在这个 rush 文件夹下,里头重放了四套模型。我们视频之前有讲过,这四套模型都是训练好的,我们以 u 六十二为主, 打开它之后,里头有对应训练的一些性能参数的图标,比如有 f 一 指数,召回率,精准度等等,比如还有这个哄桥矩阵, 还有呃我们的样本数据及分布的一个大概情况,然后每次训练中它每次的一些参数的一个表格, 还有训练过程中他随机抽选的数据集的一个呃处理效果,增强效果和识别的一个大概情况。这里有对应的 m a p 五零和 m a p 五零杠九五的一个训练情况的一个曲线变化, 然后这个位子里头就重放了对应的群众文件,一个 best, 一个 last, 然后这是十二的后面的十一、 v 五和 v 八,它们里头的目录结构是一样的,都是对应这些训练的结果都有 好的,这就是本期给大家介绍的基于 euro 算法的侧边识别系统。

警告,本视频耗时两百四十小时,制作时长共八百六十二秒,一口气带你搞懂优喽系列的学习路线,从零基础入门到精通实战,全系列,让你少走弯路,学会优喽的正确应用之路。 这节课啊,咱们要从细节的角度来说一说优喽当中的第一代版本,也就是优喽 v 一。 优喽 v 一 啊,可以说是一个经典的玩 story 方法,做一件事啊,我们直接一步咱就能做完,来看下它的名字吧,叫什么?有 only 卢万斯, 你要做一件事啊,你看一遍就完事了。说明啊,我们把这个检测问题变得非常简单,一个网络架构直接会出一个结果,他是把最终结果直接的转换成了一个回归问题,所以 回归问题啊,就是说,哎,你最后要预测几个值,那比如说经典检测问题当中,我们是不是说需要一个起始的位置,再需要一个长,一个 宽,就能把一个框我给他画出来了,这个就是优洛他爹版本当中要做的一件事,直接呢在网络当中,哎,我说我进行一个特征提取,然后呢把提取特征图,我说转换成最终要求解的一个结果就是 x y w h 就 完事了,一个私人网络咱就给搞定了。 可以说优乐唯一啊,他主要的任务是干什么的?就是对视频做一个实时的检测。优角来说啊,可以说是非常的广阔吧,因为在一六年的时候,优乐唯一,他是一六年的一个产品,一六年的时候大家已经等他啊,等的迫不及待了,因为一五年底的时候, f s e a 那 一系列是不出来了, 但是呢,当大家在玩发四 s 音的时候,都觉得一件事,哎呦,这个算法非常牛,非常好哎,能丢的地方挺多的,但是就有一点他不太爽,就是速度太慢了吧。之前啊,可以说这个发四 s 音解决问题解决的不错, mvp 值也非常高,但是呢,我们可以来观察一下,在这个一六年时候, f s r c n 和优喽都出来了,大家做了一个比较,虽然说啊,这个 f s r c n, 它的 m a p 值比较高是不是?但是呢,这 f p s 也太低了吧,离实时检测可能差的还比较多吧,这里写的 f p s 等于七,但实际上应用可能还达不到这个效果,可以说它的速度是非常慢的,但是效果还不错。 所以说呢,大家终于等到什么?终于等到一个在速度层面上能更高一点的,差的是还蛮多的啊, 但是大家回头一想,有很多问题啊,其实我要检测东西都很简单,我检测一个人,检测一个物体,并不是说检测那么复杂的,也并不是说要把一张图像当中所有东西我都要检测到啊, 所以说,优喽系列一来之后,哎呀,大家觉得这个东西实在太爽了, l p s 值非常高吧,用起来也是比较方便的。所以说优喽系列从一六年开始,它就一下子火起来了,等后续 v 二 v 三版本,我还给大家一个介绍它的细节啊,是怎么去做的。这个是我们今天要讲的一个优喽 v 一 的系列。 然后呢,在这个 v 当中啊,我要给大家说一下他的一个核心思想了,这个非常非常关键啊,也是挺直接的他的一个想法,有作者他说想这样一件事,那我现在要去预测一下一张图像当中啊,有哪些个物体?那咱来观察一下吧,比如说在我们左边这张图当中,哎,我们可以看到他有个狗,还有个自行车,是不是? 那我说我现在要预测个狗,预测一个自行车,那交给谁来预测呢?比如说这样吧,我说我现在有一个输入啊,它是一个 s x s 的, 也就是说高度和宽度啊,都是 s, 你 就不用管 s 度多大哦,假设它是等于七的吧? 假设等于七,这只是举例子。我说现在有一个长宽等于七的一个格子啊,这是我们的一个输入,在这个格子当中观察一下。哎,你说这个狗啊,它是不是落在图像当中的一个位置了? 那你说,我说这样吧,我说现在每个壳子你都不能给,你们白吃饭,你得给我干活啊,那每个壳子你都负责预测一下在你这个壳子上它是什么物体。那比如说现在我们来看一下我这个狗, 这个狗啊落在图像当中一个区域当中了,但是呢,我现在只关心它的一个中心点落在哪里,比如这里我画了一个红色的框,有个红色中心点吧。好了,我说啊,现在红色中心点点到是不是其中的某一个格子?我说你这个格子你就负责预测一下这个狗,因为呢有一个物体啊,落到你的上面了,并且你还中心点啊,也就说这样一件事, 现在我用 s x s 的 格子,每个格子去负责预测一下他所代表的物体是什么,或者说物体啊,如果说落到了以这个格子为中心点的话,他这个格子需要把这个物体给预测出来啊,要做这样一件事, 那大家可能会想,那这件事我们该怎么去预测呢?那可以观察一下,在我们当前这个格子当中啊,他有两个黄色的框,是不是我们可以这么想,我说啊,这个黄色的框啊,他不是我最终的结果。我说我先这样,我说现在啊,这个红色格子,哎,他要去做预测了,但是呢他也不知道啊,这个狗它到底长什么样子的, 那我是不是得有一些经验的东西啊?什么经验的东西?哎,比如说一个物体啊,可能会是比较长的,哎,有这样的物理挺多的吧,一个长方形的,然后呢还有些物体他是一个正方形的,这只是我举例子,比如说他的长和宽是多少的一些经验值经常出现的,我说这样吧, 一开始的时候我先在这个位置当中,哎呀,我也不知道这个狗实际的位置,我说先来个检验值吧,啊,就是两种长宽的一个比例,第一个 h 一 w 一, 第二个呢, h 二 w 二,可以吧,先列出来两种长宽比例,虽然说跟实际的可能有些不符合,是不是? 然后来观察一下,观察什么呢?你看现在我列出来两个黄色的,那针对于当前这个狗来说,你说啊,这个我选 h 一 h 二吧, h 一 是这个长方形的, h 二它是这个正方形的, 你说这个 h 一 和 h 二给我们的感觉啊,哪一个可能更靠谱一点啊?是不是第一种框啊?那好了,他说第一,既然第一种框我觉得稍微靠谱一点,但是呢,他还跟我实际的一个检测结果不太一样,我需要干什么? 我需要把我的一个后选框吧,相当于一开始,哎,我提出来两种经验值,但经验值毕竟它是不准的吧,但是可以供参考,是不是?我说把我的一个经验值啊,这个长方形,这个框能不能做一些修正呢? 把这个框我说做个改变长和宽啊,哎,要不然你就是变长或者是变宽一点,或者是做各种各样变换,可不可以啊?把我的一个框,我要做一个微调,所谓微调,大家来想一想,这是不是一个回归任务啊? 我要预测出来什么 h 我 应该怎么变, w 我 应该怎么去变吧,所以说归功就是归根到底我们整体要做的就是什么,就是一个回归任务,通过回归任务,我要看一下 h 和这个 w 什么时候最合适吧, 并且还有什么我的起始位置 x y 吧,只不过说啊,在第二版本当中,哎,我们说气味上可能是一个中心点,那这里我想给大家咱们来做一个总结, 我们现在有了一个输入数据,我说把这个输入数据啊,分成很多个小格子,然后呢,每个小格子要给我产生出来两种互选框啊,注意点,这是唯一版本当中啊,产生两种互选框,那大家可能现在也有想法了, 那实际当中有这么多种物体,你说你两种后选框够用吗?给我们感觉不够用吧,但是唯一当中啊,他的一个想法也是提出来指定的壁纸啊,论文当中壁纸的意思等于二,就是说在这里,哎,我先提出来两种后选框, 然后呢,每个格子还有两种后选框,那每个格子都要去看一下,我这两种后选框跟实际一个真实的物体到底匹配怎么样?比如说这里你看真实的狗,我们在算的时候我是有真实值的吧,比如说我拿蓝色画一个真实值, 这里我会有真实值吧,然后呢,我蓝色真实值和我两个混响框我都可以算什么?我是不是都能算这个 i o u 的 值啊?咱们之前讲的 i o u 吧, in the third century uni 啊,算他的一个重合比例, 那如果说啊,两种混响框当中我找找什么?其实我说两种混响框好像说我现在有两个替补的队员,然后一会要上场,但是一会上场究竟谁上,我是不看他俩谁的能力强。那这里呢,我们来看, 我需要找对后选框,哎,就是说跟我的一个真实值的 i o u 真实值我有吧?后选框我也能一开始提出来的经验值吧, i o u 我 是不是能算啊?谁的 i o u 大? 我说这样吧,谁的 i o u 大? 一会我来微调谁,所以说这点啊,我们虽然说是提出来两个,但是最终呢,我只选择一个来去做微调,哎,这么说可以吧, 好了,那在微调的过程当中啊,我们要算什么?微调完了之后可能会导致一个现象,我们要计算出来啊,很多很多的什么一些后选框吧。大家可能会说,为什么有这么多后选框?因为每一个位置我都要干什么,都要进行一个预测吧,但是每一个位置他要预测的时候,我会得到一个结果。值叫什么? 这里写了叫 confidence。 什么意思?知情度。什么叫知情度呢?你看这里啊,我说一个狗,这个红色这个点啊,我先选出来两互圈框,然后得到一个物体,他确实是狗吧?那好,我换一个位置,我说当前这个位置,我拿这个红色来画, 我说当前这个位置啊,这个位置,如果说我做一个框出来,我随便画了一个框,那你说他是个物体吗?他不一定是个物体吧?所以说当我们在预测的时候,我们要预测值是几个?不只是这个 x, 还有 y, 还有这个 w 和 h, 它只是表示什么?只是表示你的一个回归,你最终啊,预测了一个框,应该由你的尖框做什么样的偏移。 那现在呢?我还要再预测一个值,就是除了这个绑定 box 以外,我们还需要一个 confidence, 表示的是当前这个点啊,所对应的一个后选框,或者说当前这个点吧,他要预测出来的结果,他是物体还是不是物体。比如这样, 我说一个知心度等于零点九代表什么?这里比如当前这个点吧,他知心度可能就零点九,代表着他会网络,会认为这个位置的框会有非常大的概率他是一个物体。那比如说现在呢?我画的右边这个红色点,我说他知心度啊,可能只是等于这么零点二, 零点二点吧,什么当前这个位置啊?他只有小可能性,他是一个物体。那是不是啊?现在我对图像当中每个框就不是每个框,就是格子当中 s, x, 格子当中我每一个位置,我都可以做计算啊,计算出来他各种各样指标吧,有什么?四个偏移量加上一个知心度的值吧,那当我做完这个知心 度比较小的,你说我关注吗?知心度比较小的,自然要被我过滤掉吧,因为我希望找到的是一个物体吧,而不是一个背景啊, 所以说这点我们要做这样一件事,对于每一个格子来说,我需要预测出来一些值,有几个值啊?好了,有四个是坐标值,表示的是我的一个绑定 box, 该怎么去做?还有一个呢,是一个知心度值,表示的是当前这个点对应的,到底它是物体的可能性是有多大的啊,我们要做这样一件事,那最终呢, 我们把,哎这些直径度,我说我可以做一个,就是过滤吧,把小直径度,我说我全部过滤掉,并且呢,我在这里,哎,可能还后续会给大家去说,咱们再做一下 m 一 次,因为有些框重合了,我一会跟大家说重合怎么去做,那最终我希望得到什么?就是我右边这张图当中的结果,实际的一个检测框了。 好了,这里跟大家先说一下优乐啊,在一百二当中基本的出发点,我再给大家总结一下。首先输入对我来说啊,就是一个 s 乘 s 的 格子,在这个格子当中,我希望格子里啊每一个点,每一个,比如说这里红色点,哎,这其中一个吧,每一个点我说啊,给你产生出来两种后卷框吧, 两种后卷框你要去做做一个微调,但是呢,并不是所有后卷框都做微调的,底是什么底是切实有物体的吧, 什么时候去判断有这样一个物体啊?如果这里,哎每个格子我还要预测一个值,叫做知心度啊,知心度比较高的,或者说一会设置域值大于我这个域值的。我说,哎,他可能是一个物体,他既然是物体了,我才对物体当中有的两种后选框做一个筛选,筛选出来一个吧, 就我们之前说了要算什么,一个 i o u 吧, i o u 大 的那一个,我说当做,哎,他实际参加比赛的,实际要做结果的。好了,实际做结果,那你把你的 x, y, w, h 算出来之后,应就映射到原始图像当中,我是不是说就能把这个框给它算出来了呀? 好,这里跟大家说了一下,在 use 当中啊,我们的一个基本出发点,这里我只给大家先做简单的一个概述,然后呢,我们再从细节角度,从网络角度来说一说他呀是怎么去做的。