精华内容
下载资源
问答
  • 在深度学习模型训练过程中,在服务器端或者本地pc端,输入nvidia-smi来观察显卡的GPU内存占用率(Memory-Usage),显卡的GPU利用率(GPU-util),然后采用top来查看CPU的线程数(PID数)和利用率(%CPU)。...

            在深度学习模型训练过程中,在服务器端或者本地pc端,输入nvidia-smi来观察显卡的GPU内存占用率Memory-Usage),显卡的GPU利用率GPU-util),然后采用top来查看CPU的线程数(PID数)和利用率(%CPU)。往往会发现很多问题,比如,GPU内存占用率低,显卡利用率低,CPU百分比低等等。接下来仔细分析这些问题和处理办法。

    1. GPU内存占用率问题

            这往往是由于模型的大小以及batch size的大小,来影响这个指标。当你发下你的GPU占用率很小的时候,比如40%,70%,等等。此时,如果你的网络结构已经固定,此时只需要改变batch size的大小,就可以尽量利用完整个GPU的内存。GPU的内存占用率主要是模型的大小,包括网络的宽度,深度,参数量,中间每一层的缓存,都会在内存中开辟空间来进行保存,所以模型本身会占用很大一部分内存。其次是batch size的大小,也会占用影响内存占用率。batch size设置为128,与设置为256相比,内存占用率是接近于2倍关系。当你batch  size设置为128,占用率为40%的话,设置为256时,此时模型的占用率约等于80%,偏差不大。所以在模型结构固定的情况下,尽量将batch size设置大,充分利用GPU的内存。(GPU会很快的算完你给进去的数据,主要瓶颈在CPU的数据吞吐量上面。)

    2. GPU利用率问题

            这个是Volatile GPU-Util表示,当没有设置好CPU的线程数时,这个参数是在反复的跳动的,0%,20%,70%,95%,0%。这样停息1-2 秒然后又重复起来。其实是GPU在等待数据从CPU传输过来,当从总线传输到GPU之后,GPU逐渐起计算来,利用率会突然升高,但是GPU的算力很强大,0.5秒就基本能处理完数据,所以利用率接下来又会降下去,等待下一个batch的传入。因此,这个GPU利用率瓶颈在内存带宽和内存介质上以及CPU的性能上面。最好当然就是换更好的四代或者更强大的内存条,配合更好的CPU。

            另外的一个方法是,在PyTorch这个框架里面,数据加载Dataloader上做更改和优化,包括num_workers(线程数),pin_memory,会提升速度。解决好数据传输的带宽瓶颈和GPU的运算效率低的问题。在TensorFlow下面,也有这个加载数据的设置。

    torch.utils.data.DataLoader(image_datasets[x],
                                batch_size=batch_size, 
                                shuffle=True,
                                num_workers=8,
                                pin_memory=True)

            为了提高利用率,首先要将num_workers(线程数)设置得体,4,8,16是几个常选的几个参数。本人测试过,将num_workers设置的非常大,例如,24,32,等,其效率反而降低,因为模型需要将数据平均分配到几个子线程去进行预处理,分发等数据操作,设高了反而影响效率。当然,线程数设置为1,是单个CPU来进行数据的预处理和传输给GPU,效率也会低。其次,当你的服务器或者电脑的内存较大,性能较好的时候,建议打开pin_memory打开,就省掉了将数据从CPU传入到缓存RAM里面,再给传输到GPU上;为True时是直接映射到GPU的相关内存块上,省掉了一点数据传输时间。

    3. CPU的利用率问题

            很多人在模型训练过程中,不只是关注GPU的各种性能参数,往往还需要查看CPU处理的怎么样,利用的好不好。这一点至关重要。但是对于CPU,不能一味追求超高的占用率。如图所示,对于14339这个程序来说,其CPU占用率为2349%(我的服务器是32核的,所以最高为3200%)。这表明用了24核CPU来加载数据和做预处理和后处理等。其实主要的CPU花在加载传输数据上。此时,来测量数据加载的时间发现,即使CPU利用率如此之高,其实际数据加载时间是设置恰当的DataLoader的20倍以上,也就是说这种方法来加载数据慢20倍。当DataLoader的num_workers=0时,或者不设置这个参数,会出现这个情况。

    CPU利用率查看结果
    CPU利用率查看结果

            下图中可以看出,加载数据的实际是12.8s,模型GPU运算时间是0.16s,loss反传和更新时间是0.48s。此时,即使CPU为2349%,但模型的训练速度还是非常慢,而且,GPU大部分是时间是空闲等待状态。

    num_workers=0,模型每个阶段运行时间统计

            当我将num_workers=1时,出现的时间统计如下,load data time为6.3,数据加载效率提升1倍。且此时的CPU利用率为170%,用的CPU并不多,性能提升1倍。

    num_workers=1时,模型每个阶段运行时间统计

            此时,查看GPU的性能状态(我的模型是放在1,2,3号卡上训练),发现,虽然GPU(1,2,3)的内存利用率很高,基本上为98%,但是利用率为0%左右。表面此时网络在等待从CPU传输数据到GPU,此时CPU疯狂加载数据,而GPU处于空闲状态

    1,2,3号GPU的内存占用率和计算效率截图

            由此可见,CPU的利用率不一定最大才最好。

            对于这个问题,解决办法是,增加DataLoader这个num_wokers的个数,主要是增加子线程的个数,来分担主线程的数据处理压力,多线程协同处理数据和传输数据,不用放在一个线程里负责所有的预处理和传输任务。

            我将num_workers=8,16都能取得不错的效果。此时用top查看CPU和线程数,如果我设置为num_workers=8,线程数有了8个连续开辟的线程PID,且大家的占用率都在100%左右,这表明模型的CPU端,是较好的分配了任务,提升数据吞吐效率。效果如下图所示,CPU利用率很平均和高效,每个线程是发挥了最大的性能。

    num_workers=8时,CPU利用率和8个连续PID任务

            此时,在用nvidia-smi查看GPU的利用率,几块GPU都在满负荷,满GPU内存,满GPU利用率的处理模型,速度得到巨大提升。

    优化数据加载num_workers=8,和设置batch size的结果

            上图中可以看见,GPU的内存利用率最大化,此时是将batch size设置的较大,占满了GPU的内存,然后将num_workers=8,分配多个子线程,且设置pin_memory=True,直接映射数据到GPU的专用内存,减少数据传输时间。GPU和CPU的数据瓶颈得到解决。整体性能得到权衡。

            此时的运行时间在表中做了统计:

    处理时间统计
    处理阶段 时间
    数据加载 0.25s
    模型在GPU计算 0.21s
    loss反传,参数更新 0.43s

    4. 总结

            对上面的分析总结一下,第一是增加batch size,增加GPU的内存占用率,尽量用完内存,而不要剩一半,空的内存给另外的程序用,两个任务的效率都会非常低。第二,在数据加载时候,将num_workers线程数设置稍微大一点,推荐是8,16等,且开启pin_memory=True不要将整个任务放在主进程里面做,这样消耗CPU,且速度和性能极为低下。

     

     

                                                                                                                                                                         

                                                                                                                                                                         

                                                                                                                                                                         

    Supplementary:看到大家在评论回复的问题比较多,所以再加一些叙述!

    开这么多线程。第一个,查看你的数据的batch_size,batchsize小了,主CPU直接就加载,处理,而且没有分配到多GPU里面(如果你使用的是多GPU);如果是单GPU,那么就是CPU使劲读数据,加载数据,然后GPU一下就处理完了,你的模型应该是很小,或者模型的FLOPs很小。检查一下模型问题。还有就是,现在这个情况下,开8个线程和1个线程,没什么影响,你开一个num_workers都一样的。如果速度快,没必要分配到多个num_workers去。当数据量大的时候,num_workers设置大,会非常降低数据加载阶段的耗时。这个主要还是应该配合过程。

    在调试过程,命令:top     实时查看你的CPU的进程利用率,这个参数对应你的num_workers的设置;

    命令:   watch -n 0.5 nvidia-smi    每0.5秒刷新并显示显卡设置。

    实时查看你的GPU的使用情况,这是GPU的设置相关。这两个配合好。包括batch_size的设置。

                                                                                                                                                                      时间:2019年9月20日

    5. 再次补充内容

    有很多网友都在讨论一些问题,有时候,我们除了排查代码,每个模块的处理信息之外,其实还可以查一下,你的内存卡,是插到哪一块插槽的。这个插槽的位置,也非常影响代码在GPU上运行的效率。

    大家除了看我上面的一些小的建议之外,评论里面也有很多有用的信息。遇到各自问题的网友们,把他们的不同情况,都描述和讨论了一下,经过交流,大家给出了各自在训练中,CPU,GPU效率问题的一些新的发现和解决问题的方法。

    针对下面的问题,给出一点补充说明:

    问题1. CPU忙碌,GPU清闲。

    数据的预处理,和加载到GPU的内存里面,花费时间。平衡一下batch size, num_workers。

    问题2. CPU利用率低,GPU跑起来,利用率浮动,先增加,然后降低,然后等待,CPU也是浮动。

    • 2.1 下面是具体的步骤和对策:

    在pytorch训练模型时出现以下情况, 情况描述: 首先环境:2080Ti + I7-10700K, torch1.6, cuda10.2, 驱动440 参数设置:shuffle=True, num_workers=8, pin_memory=True; 现象1:该代码在另外一台电脑上,可以将GPU利用率稳定在96%左右 现象2:在个人电脑上,CPU利用率比较低,导致数据加载慢,GPU利用率浮动,训练慢约4倍;有意思的是,偶然开始训练时,CPU利用率高,可以让GPU跑起来,但仅仅几分钟,CPU利用率降下来就上不去了,又回到蜗牛速度。

    •  可以采用的方法:

    两边的配置都一样吗。另一台电脑和你的电脑。你看整体,好像设置配置有点不同。包括硬件,CPU的核,内存大小。你对比一下两台设备。这是第一个。第二个,还是代码里面的配置,代码的高效性。你一来,CPU利用率低,你看一下每一步,卡到哪里,哪里是瓶颈,什么步骤最耗时。都记录一下每一个大的步骤的耗时,然后在分析。测试了每一个大的过程的时间,可以看见,耗时在哪里。主要包括,加载数据,前向传播,反向更新,然后下一步。

    • 2.2 经过测试之后,第二次问题分析:

    经过测试,发现本机卡的地方在加载图像的地方,有时加载10kb左右的图像需要1s以上,导致整个batch数据加载慢!代码应该没有问题,因为在其他电脑能全速跑起来;硬件上,本机的GPU,CPU都强悍,环境上也看不出差距,唯一差在内存16G,其他测试电脑为32G,请问这种现象和内存直接关系大吗?

    • 情况分析

    最多可能就在这边。你可以直接测试batch size为1情况下的整个计算。或者将batch size 开到不同的设置下。看加载数据,计算之间的差值。最有可能就是在这个load data,读取数据这块。 电脑的运行内存16g 32g。其实都已经够了,然后加载到GPU上,GPU内存能放下,影响不大。所以估计是你的内存相对小了,导致的问题。试一下。

    • 2.3 问题定位,解决方法:
    • 这台电脑的内存条插的位置不对,4个插槽的主板,1根内存的时候应该插在第2个插槽(以cpu端参考起),而组装电脑的商家不专业,放在了第4个插槽上,影响性能,更换位置后,速度飞起来了!关于插槽详情,有遇到的朋友去网上收,一大堆!

    在自己电脑,或者自己配的主机上,跑GPU的时候,记得注意查看你自己的内存卡是插到哪一个槽上的。

    补充时间:2021年1月15日

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 文章目录一 项目展示二 依赖环境与导读2.1依赖环境2.2 本文导读三 模型训练3.1 新手也能做对的教学3.2 高手也爱的黑科技:无损的半精度模型四 模型优化4.1 Openvino 介绍 可以参见这篇博客4.2 Openvino安装4.3 Open...

    这是一篇带给深度学习与计算机视觉等方向人员的全面教学文章

    人人听闻AI

    又何人了解AI?全世界70亿人,中国13亿,这么多人都知道AI,风靡一时,然而各式各样的伪科学,伪概念也随之出现。中国计算机算法工程师仅几十万,其中做AI

    相关的,例如视觉算法工程师,NLP算法工程师,推荐系统,语音识别等等,就更是占比少了!如果你是小白,计算机小白,在读学生,或者希望孩子接触AI的家长,那么千万不要被社会上美其名曰的培训机构和教育机构诱惑了,花了上万或更多的钱,学了个寂寞!我认识很多培训机构的人,各个层次的都有,一本万利,把你坑得团团转。今天不细说更多,仅以此系列文章,以一名AI视觉算法师身份指引着各界(小白,与本科生,和想要接触AI和正在接触AI的朋友),看技术文章,论文才能更好的进步!

    今天将从0到1地分享一个AI视觉应用从开发,模型训练到优化到部署到落地的心得分享!请拿好小本本记笔记~

    一 项目展示

    在这里插入图片描述

              Yolov3 目标检测
    

    在这里插入图片描述 Yolov5吸烟检测
    在这里插入图片描述

       Ssd 安全帽检测
    

    在这里插入图片描述

            Ssd 口罩检测
    

    在这里插入图片描述

           Yolov 4 车牌车速与闯红灯检测
    

    部分可见基于开发模组推理加速后在cpu上也能达到60-80fps,功耗很低,很适合应用落地。

    很多有趣的,有商业和科研价值的项目不一一列举了,这些项目都可以部署到开发板,例如我即将介绍的我们的视觉模组上~

    二 依赖环境与导读

    2.1依赖环境

    我的环境是:Ubuntu18.04

    Python 3.7(3.x即可) Tensorflow(1.14-gpu)Pytorch(1.5-gpu)

    2085模组一件,Openvino2020.3.194, C++, g++ (Ubuntu 7.5.0-3ubuntu1~18.04)

    7.5.0 接下来我会在需要到环境时让大家安装的。

    2.2 本文导读

    本文原创,若无授权,禁止转载。

    若您是AI 方向科研人员与工程师:如果您是科研人员,教您手把手训练模型与推理优化与应用部署,您可以重点阅读推理和应用部署上,您能很直观的知道模组推理的效果和落地应用的实际效果。

    三 模型训练

    3.1 新手也能做对的教学

    如果您是第一次接触AI ,不熟悉深度学习于计算机视觉,但您有python或c++基础,希望完成一个简单的视觉基础,我建议您在提升一定基础后(这样能更好的解决遇到的bug)。

    这时您想训练一个目标检测模型,您可以选择各式各样的算法,例如Yolo系列,ssd,faster rcnn等等,本节以yolo中的yolov5为例,给您演示一下 吸烟检测参见这篇博客:https://blog.csdn.net/qq_46098574/article/details/107334954,本节其他目标检测或者使用其他各类算法以及效果比较,我们会在后期与您见面。基于这篇博客,我给您大致介绍一下模型训练手把手教程~

    下载源码

    git clone https://github.com/CVUsers/Smoke-Detect-by-YoloV5/tree/master.git

    进入目录,安装依赖环境

    pip install-U-r requirements.txt

    如果需要使用混合精度模型来做训练:安装Apex

    如果您数据未标注:请参看博客

    基于生成好的xml文件,os操作写入如图不带后缀xml文件

    在这里插入图片描述

    然后运行voc_label.py转换成label

    切割训练/验证集执行train_test_split.py

    运行path_trans补全路径,并写入train.txt

    接下来编写yaml文本:见smoke.yaml将我们上一步生成的train.txt 和test.txt 补全路径后的这两个txt路径写入到yaml中,然后nc:修改为自己类别的数量,以及names【‘smoke’】

    在这里插入图片描述

    在上面我们做好数据预处理后,就可以开始训练了,上面的一些处理步骤,每个人都可能不同,不过大体上思路是一致的。接下来我们可以进行预训练,下载官方的预训练模型:

    yolov5s yolov5m yolov5l yolov5x来 我在我的github中放了yolov5s,比较小,只有25mb,专门为移动端考虑了。

    开始训练:

    python train.py–data data/smoke.yaml–cfg models/yolov5s.yaml–weights weights/yolov5s.pt–batch-size10 --epochs100

    如果顺利,你将看到以下迭代训练:
    在这里插入图片描述

    实时检测 运行detect.py即可

    在这里插入图片描述

    其中,推理一张图片,那么就在–source中的default写上图片路径,也可以如图写上整个图片文件夹,这样会检测所有图片。也可以写上视频地址和视频文件夹,检测所有视频,存放于inference

    的out中。改成0

    就是实时检测了~默认电脑摄像头,当然也可以改成手机。这个也很简单,需要的可以私聊我。运行代码你将看到实时检测于您电脑内置摄像头中,这样可能会有些卡顿,如果您使用我下文使用的2085模组,将有另一番全新体验。

    3.2 高手也爱的黑科技:无损的半精度模型

    上面,我们介绍了以yolov5 吸烟检测为例的目标检测,接下来我们在此基础上提升,说说高手们也想要的黑科技。

    1:混合精度模型,半精度模型如何可以以降低显存却可以保持精度呢?

    装好apex后在代码中添加,在optimizer中amp初始化一下

    优化反向传播。组装到cuda训练

    实现半精度,其他资料详见博客,还有一些细节没公布。

    3.2 高手也爱的黑科技:为何使用预训练模型

    使用预训练模型,官方已经给出了,那么你知道为什么要使用预训练模型吗?

    作者已尽其所能设计了基准模型。我们可以在自己的数据集上使用预训练模型,而不是从头构建模型来解决类似的自然语言处理问题。

    尽管仍然需要进行一些微调,但它已经为我们节省了大量的时间:通常是每个损失下降更快和计算资源节省。

    加快梯度下降的收敛速度

    更有可能获得一个低模型误差,或者低泛化误差的模型

    降低因未初始化或初始化不当导致的梯度消失或者梯度爆炸问题。此情况会导致模型训练速度变慢,崩溃,直至失败。

    其中随机初始化,可以打破对称性,从而保证不同的隐藏单元可以学习到不同的东西

    3.3 高手也爱的黑科技:训练被迫中断怎么办,‘迁移学习’帮你搞定?

    我在代码中添加了–resume参数,当你在训练中被迫中断了,可以使用这个参数,在你训练中保存的last.pt

    上进行迁移学习。这时候,你将在代码中看到细节,用法就是加上–resume

    然后不使用官方的预训练模型即可,你将看到接着上次的loss训练,就成功了。

    3.3 高手也爱的黑科技:数据增强

    人工智能,或者说计算机视觉的一个最终目标在于构建一个真正可适用于真实世界复杂环境的系统。而就目前所应用的机器学习系统而言,大部分采用了有监督的学习方法,也必然导致了需要广泛收集图像样本,并进行对应的图像标注的工作。而人力时有穷尽,高质量的样本集图片又是构建一个优秀的机器学习系统的关键因素。使用适当的数据增强方法可以将数据集的数量增大十倍以上,从而极大化利用小样本集中的每个样本,使之也可以训练得到一个较好的机器学习模型。数据增强方法也可以提高模型的鲁棒性,防止其易在训练中出现过拟合的现象。

    常用的数据增强方法主要来自数字图像处理中的几何变换,但不改变图像中的像素值,而是改变了其空间位置,借此希望卷积神经网络学习到图像中更多的不变性特征,也有利于提高其泛化性能。

    以下将对各种方法做简单的列举与说明。

    平移(Shift)变换:对原始图片在图像平面内以某种方式(预先定义或者随机方式确定平移的步长、范围及其方向)进行平移。

    翻转(Flip)变换:沿竖直或者水平方向对原始图片进行翻转。

    随机裁剪(Random Crop):随机定义感兴趣区域以裁剪图像,相当于增加随机扰动。

    噪声扰动(Noise):对图像随机添加高斯噪声或者椒盐噪声等。

    对比度变换(Contrast):改变图像对比度,相当于在HSV空间中,保持色调分量H不变,而改变亮度分量V和饱和度S,用于模拟现实环境的光照变化。

    缩放变换(Zoom):以设定的比例缩小或者放大图像。

    尺度变换(Scale):与缩放变换有点类似,不过尺度变换的对象是图像内容而非图像本身(可以参考SIFT特征提取方法),构建图像金字塔以得到不同大小、模糊程度的图像。

    3.3 高手也爱的黑科技:BN

    批规范化(Batch normalization)

    当训练一个深度神经网络时,由于各层参数不断变化,所以各层输入的概率分布也在不断的变化,也导致了非线性激活函数(如sigmoid等)正负两边都会饱和,使得训练迭代的过程变得极其缓慢甚至无法进行。这时候,通常需要采用较小的学习率以及精细进行权重初始化。loffe等将这种现象称为“内部协方差偏移”(internal

    covariate shift),并提出了批规范化(Batch normalization,BN)解决此类问题。

    该论文中提出在每次随机梯度下降迭代时,在最小批量样本(mini-batch)内做规范化操作,使得输出结果各个维度的均值为0,方差为1,有效地避免了非线性激活函数的饱和问题(以sigmoid为例,观察sigmoid函数即可知,该函数输入集中在0附近时,其输出梯度较大);同时也让梯度变化受参数及其初值的影响减小。

    批标准化: 一般用在非线性映射(激活函数)之前,对 x=Wu+b做规范化,使结果(输出信号各个维度)的均值为0,方差为1 。让每一层的输入有一个稳定的分布会有利于网络的训练。

    BN算法在网络中的应用

    传统的神经网络,只是在将样本x输入输入层之前对x进行标准化处理(减均值,除标准差),以降低样本间的差异性。BN是在此基础上,不仅仅只对输入层的输入数据x进行标准化,还对每个隐藏层的输入进行标准化。

    四 模型优化

    前面我们说了训练的优化,接下来我将介绍基于Openvino的推理优化,拿好小本本了吗?

    4.1 Openvino 介绍 可以参见这篇博客

    OpenVINO是英特尔基于自身现有的硬件平台开发的一种可以加快高性能计算机视觉和深度学习视觉应用开发速度工具套件,支持各种英特尔平台的硬件加速器上进行深度学习,并且允许直接异构执行。支持在Windows与Linux系统,Python/C++语言。优化工具包

    OpenVINO

    让不懂电脑视觉和深度学习原理的小白可以在很短的时间上手,不必担心如何建置开发平台、选择深度学习框架、训练及优化模型和硬体加速等问题,只需利用预先训练及优化过的语义分割模型,很快就可以做出一组看起来很专业的自驾车视觉分析系统。

    主要特点:

    1:在Intel平台上提升计算机视觉相关深度学习性能达19倍以上

    2:解除CNN-based的网络在边缘设备的性能瓶颈

    3:对OpenCV,OpenXV*视觉库的传统API实现加速与优化

    4:基于通用API接口在CPU、GPU、FPGA等设备上运行加上

    OpenVINO 有2个大模块,第一个是 OR 他是用于把深度学习训练好的模型转换成engine可识别的文件(xml和bin) ,另一个是inference engine 是OpenVINO具体实施单元,利用一个智能引擎完成相应的应用 。

    一般流程:

    1:根据自己的训练模型需要配置Mode Optimizer.

    2: 根据设置的模型参数运行Model Optimizer,生成相对应的IR(主要是xml和bin)

    xml-主要用来描述网络拓扑结构

    bin-包括生成的weights and biases 二进制数据

    3: 在实际应用场景种使用Inference Engine测试生成的IR

    4: 在应用程序种调用Inference Engine相应接口,将生成的模型IR部署到实际环境中。

    Model Optimizer

    Model Optimizer 是一个跨平台命令行工具,用于促进训练与具体实施平台中的过渡,主要是进行静态模型分析 以及根据配置参照自动调整深度模型

    Model Optimizer 被用来设计成支持常用的框架(Caffe, TensofFlow, MXNet, Kaldi, ONNX等),相当于封装了一层,便于进行开发。

    Model Optimizer主要工作流程:

    1:根据需要所用到的框架,配置Model Optimizer

    2: 提供训练模型作为输入,包括网络拓扑以及参数

    3:运行Model Optimizer(根据选择的网络拓扑进行训练)

    4:IR作为Model Optimizer输出

    Inference Engine:

    Inference Engine是主要运行单元,并提供相应API

    将IR作为输入

    在目标硬件优化执行

    提供嵌入式平台最佳执行性能方案

    在这里插入图片描述

    4.2 Openvino安装

    环境:Ubuntu18.04

    参见官网教学 或根据以下步骤:

    1.下载OpenVINO工具包:

    https://docs.openvinotoolkit.org/latest/_docs_install_guides_installing_openvino_linux.html

    2.安装:

    解压:

    tar -zxvf l_openvino_toolkit_p_2019.2.242.tgz

    GUI界面安装:

    cd /home//l_openvino_toolkit_p_2019.2.242

    sudo ./install_GUI.sh

    注意:如果以前安装过OpenVINO,请删除/home/目录下的inference_engine_samples和openvino_models.

    root用户安装,默认安装目录为/opt/intel/openvino_

    到此步,点击Customize…,可以看到默认的安装路径,支持自定义路径,点击save按钮,一路install。

    安装依赖环境:

    cd /opt/intel/openvino_2019.2.242/install_dependencies

    sudo -E ./install_openvino_dependencies.sh

    设置临时环境变量(关闭shell终端就会删除环境变量,建议设置永久)

    source/opt/intel/openvino/bin/setupvars.sh

    设置永久环境变量:

    vi/.bashrc

    添加下列代码:

    source/opt/intel/openvino/bin/setupvars.sh

    配置模型优化器,同时配置所有的框架:

    cd /opt/intel/openvino/deployment_tools/model_optimizer/install_prerequisites

    sudo ./install_prerequisites.sh

    3.验证

    运行图像分类验证脚本:

    cd /opt/intel/openvino/deployment_tools/demo

    sudo -E -H ./demo_squeezenet_download_convert_run.sh

    在这里插入图片描述

    运行推理管道验证脚本:

    sudo -H ./demo_security_barrier_camera.sh

    测试成功,安装完成!

    4.3 Openvino 模型转换与推理

    例如yolo系列的原生pt,pb模型文件模型转换为Openvino的xml和bin参见此处,我们转换好了xml和bin文件就可以基于模型做实时检测了~,如下图是一个简单的使用过程。

    模型推理的简单使用

    在这里插入图片描述
    在这里插入图片描述

    五 模型部署

    5.1 模型转换 部署自己训练好的算法模型,经过openvino推理后应用于2085模组

    这时候xml转换成blob文件,我们就可以部署到我们的模组中啦:

    找到本地转换文件。

    执行

    ./myriad_compile

    -ip U8 -VPU_MYRIAD_PLATFORM VPU_MYRIAD_2480 -VPU_NUMBER_OF_SHAVES 4

    -VPU_NUMBER_OF_CMX_SLICES 4 -m pathto.xml -o pathto.blob

    就可以在路径下生成blob文件

    部署前需要配置环境,主要有以下几个步骤~

    5.2 配置Hidapi

    git clone https://github.com/signal11/hidapi.git

    以Linux为例,详细清查看readme.txt

    sudo apt-get install autotools-dev autoconf automake libtool

    ./bootstrap

    ./configure --enable-testgui --prefix=/usr

    make

    make install

    六 模组使用

    6.1运行cnn目标检测demo

    在上方我们安装好依赖后,你将可以直接使用我们为您提供的CNN 目标检测模型,连接好2085模组。

    1. install dependencies: make install_dependencies

    2. build the app with command: make build

    ./cnn-demo /dev/video2 data/CNN_2x8x.blob left

    如果报错,请加上sudo

    如此,你将看到实时目标检测的画面,例如

    在这里插入图片描述

    在这里插入图片描述

    6.2 部署自己训练好的算法模型,经过openvino推理后应用于2085模组

    由模型训练篇 我们已经经过了不懈努力训练好了模型,那么我们只需要简单的做一下IR转换,将pb模型转化为Openvino的xml,和bin模型文件,再将xml文件通过模型转化为blob(见上文推理)

    然后我们只需要简单的修改一下cnn_host 中的几个地方就行了~

    1:修改目标检测类别,如图,注释掉原本的,并且新增你的类别
    在这里插入图片描述

    执行完修改,就可以重新进行make clean 然后再make build,就可以做你的目标检测了,如果您的检测需求有变动,例如姿态描绘等,请按需修改decode_mobilenet方法即可,或者联系我们帮助修改。

    在这里插入图片描述

    ./cnn-demo /dev/video2 data/CNN_2x8x.blob left

    运行cnn-demo以后你将看到经过推理加速后的实时视觉体验:

    在这里插入图片描述

    具体效果,根据模型而定~

    七 实际对比

    没有经过openvino推理加速的yolov3模型,检测速度尚可,精度很高,如下图所示

    在这里插入图片描述

    经过openvino推理加速之后的,这是-d CPU下,速度那是很快

    在这里插入图片描述

    如过您也按照上文的方法,简单地部署了yolov3模型于模组中,那么将看到下图,速度也很快。5
    在这里插入图片描述

    八 总结

    8.1 部署自己训练好的算法模型,经过openvino推理后应用于2085模组 简单示例

    在你配置好环境后,你可以简单的使用open_model_zoo的demo,以行人识别为例:

    cd/home/{your path}/open_model_zoo/tools/downloader

    ./downloader.py–name person-vehicle-bike-detection-crossroad-0078

    记录xml文件下载路径:

    /home/zxx/open_model_zoo/tools/downloader/intel/person-vehicle-bike-detection-crossroad-0078/FP32/person-vehicle-bike-detection-crossroad-0078.xml

    转换xml为blob

    ./myriad_compile

    -ip U8 -VPU_MYRIAD_PLATFORM VPU_MYRIAD_2480 -VPU_NUMBER_OF_SHAVES 4

    -VPU_NUMBER_OF_CMX_SLICES 4 -m

    /home/zxx/open_model_zoo/tools/downloader/intel/person-vehicle-bike-detection-crossroad-0078/FP32/person-vehicle-bike-detection-crossroad-0078.xml

    -o

    /home/zxx/open_model_zoo/tools/downloader/intel/person-vehicle-bike-detection-crossroad-0078/FP32/person-vehicle-bike-detection-crossroad-0078.blob

    修改源码cpp中186行的class 为“crossed-person”

    sudo make clean

    sudo make build

    执行

    ./cnn-demo /dev/video2 path/person-vehicle-bike-detection-crossroad-0078.blob left

    使用这个模组,将获得极致推理体验

    你将看到:

    在这里插入图片描述

    (你将在模组上获得实时显示体验)简单的demo就这样成功了,

    8.2 模组推荐:

    在这里插入图片描述在这里插入图片描述

                       经过推理加速的实时目标检测
    

    软硬件模组,包括Movidius

    VPU芯片,多摄像头惯性跟踪系统(双目跟踪系统+前置摄像头+深度相机)。主流“视觉-惯性导航融合SLAM方案”,并且配合定制的VPU(视觉处理器)加速,软硬件协同优化后,可以达到惊人的稳定性。另外需要说明的是,以上描述的多摄像头跟踪系统中,深度相机主要用于手势跟踪,前置摄像头用于拍照,真正参与vslam空间跟踪的其实周有左右两个摄像头构成的双目系统。

    实际使用时在cpu上的推理加速,pfs可达80余,功耗很低,很适合落地应用,如有需要,请联系叶总,邮箱:hye@xvisiotech.com

    欢迎关注公众号 DeepAI 视界

    在这里插入图片描述

    作者:cv调包侠

    欢迎关注我的抖音,哔哩哔哩,csdn博客搜索:cv调包侠

    Reference

    [1] https://blog.csdn.net/qq_46098574/article/details/107334954

    [2] https://blog.csdn.net/qq_46098574/article/details/105615297

    [3] https://blog.csdn.net/kan2016/article/details/97371100

    [4] https://blog.csdn.net/qq_46098574/article/details/107742860

    展开全文
  • OpenCV模型训练

    千次阅读 2020-08-17 11:14:56
    最近在做鸟类检测的项目,用tensorflow完善之前准备先用opencv进行大致的识别,但是网上的xml效果不太理想,于是准备自己进行模型训练。第一版收集了2w+的正样本和2k+的负样本,在这篇文章时已经把模型训练了出来,...

    最近在做鸟类检测的项目,用tensorflow完善之前准备先用opencv进行大致的识别,但是网上的xml效果不太理想,于是准备自己进行模型训练。第一版收集了2w+的正样本和2k+的负样本,在这篇文章时已经把模型训练了出来,其中的过程有些坎坷,遇到了不少问题,一如年初的时候在ubuntu上装各种tensorflow、pytorch等一众软件的包时也是各种碰壁。因此打算写一篇文章把大概过程记录一下。

    一开始参考了鸟类检测模型的训练等一些文章到完成了pos.txt和neg.txt后却发现自己电脑中装的opencv没有opencv_createsamples.exe和opencv_traincascade.exe这两个进行训练的应用,后来多番查阅资料发现要找一个opencv4.0前的版本,因为4.0后opencv并不默认内置这两个应用,实际上在看了opencv4.10编译traincascaded.exe 和 createsamplesd.exe后了解到4.0之后opencv默认是把这两个应用给注释掉了,当然一开始在没遇到问题时我没有注意到。于是效仿上述文章尝试进行4.x版本的编译。下载源码进行编译可通过gitee,速度更快,但是资源更新会相对慢一些。opencv码云库opencv_contrib码云库可进行下载,要注意版本要对应。然后安装Visual StudioCMake。把之前下的两个包用用cmake编译,安装和编译过程具体参考opencv_contrib安装笔记。但此处要特别注意的是编译过程中很可能会遇到红字,而这时候要看红字报错指向的日志文件,根据文件内容把缺失文件下载好并放在指定位置,部分文件能用迅雷直接进行下载,但是有没有速度则有一定运气成分。接下来有一个关键点就是不要随便下载网上的同名文件,因为不同版本的opencv要求的文件哈希是不同的,网上的帖子下载的文件大概率与所要求的文件哈希不一样,下载文件可在github,如果github没有速度就到gitee下载,不过gitee的版本更新比较慢,有的比较新的版本可能没有及时上传。但是这时就有一个比较困扰的问题就是难以确定opencv版本对应应该下哪个日期的文件,这里给出一个版本进行参考,即opencv3.4.6可对应ffmpeg文件日期为20181103的进行下载。如果想下载别的版本又不确定日期可以到下载的文件所在的文件下运行cmd输入

    certutil -hashfile ffmpeg_version.cmake MD5
    ::此处为确定ffmpeg_version.cmake这一文件哈希的举例

    来获取哈希进行对比,我就是下载了很多文件一个个对比来确定版本的,可能有更好的办法。而我用4.x进行编译完成后发现了没有生成那两个应用的选项我才看到网上说4.x版本默认取消了这两个应用。于是我又按照那篇知乎的文章把注释去掉再进行编译,发现有生成这两个exe的选项,但是会生成失败,多次尝试依然没有用。之后为了确保是有这两个exe的版本我干脆选了比较老的3.4.1,但是发现因为版本太老而无法顺利编译。之后又选择了3.4.8、3.4.9等一些版本,遇到了各种各样的如下载资源没速度等问题。多次碰壁后我选择了3.4.6,终于顺利编译生成了exe。

    opencv模型训练初上手,我先训练了一次到了两个多小时的时候提前结束,应该是设置的时候没注意到负样本数量较少的缘故。生成的cascade.xml可能由于是提前结束,stages层数较少而文件大小也很小只有16kb,但是感觉已经要比网上的一些xml准确率更高,此处放一张效果图。

     

    识别的目标视频是一只鸟在飞行,那为什么只取有一只鸟的视频截图作为效果示例呢。因为在用之前网上的一些xml进行识别时,发现这段视频中在鸟进行上下飞动的时候大多不是产生了几个误识别就是没有捕获到鸟的形态,而此次自己训练的xml文件的捕捉则相对比较精准。但是在一些复杂场景如一群鸟在稻草附近飞行,则识别效果并不是特别理想,虽然相比之前下载的xml稍微靠谱一些。主要还是因为负样本较少、训练时间较少,而且opencv的识别精度并没有tensorflow那么高。通过之后的完善应该能让识别效果更佳。

    展开全文
  • 教程:超详细从零开始yolov5模型训练

    万次阅读 多人点赞 2021-02-23 15:47:40
    本文将介绍yolov5从环境搭建到模型训练的整个过程。最后训练识别哆啦A梦的模型。 1.anconda环境搭建 2.yolov5下载 3.素材整理 4.模型训练 5.效果预测 - Anconda环境搭建 提醒:所有操作都是在anconda的yolo的环境下...

    本文将介绍yolov5从环境搭建到模型训练的整个过程。最后训练识别哆啦A梦的模型。

    1.anconda环境搭建
    2.yolov5下载
    3.素材整理
    4.模型训练
    5.效果预测

    - Anconda环境搭建

    提醒:所有操作都是在anconda的yolo的环境下进行的,在创建yolo环境后,之后每次进入CMD都需要切换到yolo环境中去(否则进入默认的base环境中)

    https://www.anaconda.com/products/individual#Downloads
    下载对应版本anconda即可,这里就不介绍anconda安装过程了。

    anconda安装好后,conda可以创建多个运行环境,默认是base环境。这里我们为yolo创建一个环境。
    打开CMD命令行,为yolov5创建一个环境,注意这里用的python版本是3.8,版本过低后面可能会报错

    conda create -n yolo python=3.8 
    

    执行

    conda info -e
    

    即可看到我们刚刚创建的yolo环境
    在这里插入图片描述
    执行

    activate yolo
    

    即可切换到我们的yolo环境下了。记住退出CMD或者切换CMD窗口之后,如果想要进入我们的yolo环境,都需要运行activate yolo指令。不然默认是在base环境下。
    除此之外,我们进行yolo模型训练代码的编写需要用到jupyter notebook,所以我们需要在yolo环境下进行安装

    conda install jupyter notebook
    

    安装完成之后,我们只需要在yolo环境下输入

    jupyter notebook
    

    就会打开notebook,自动跳转到浏览器,打开notebook界面,之后我们会在notebook里进行训练yolo模型
    在这里插入图片描述
    在这里插入图片描述

    -yolov5下载

    https://github.com/ultralytics/yolov5
    下载yolov5源码,解压,可以看到里面有requirements.txt文件,里面记录了需要安装的包,这个txt文件可以帮助我们一键下载这些依赖包。
    在这里插入图片描述文件夹里也包含了train.py文件,这个也是我们接下来训练yolo模型需要用到的启动文件。(大家看到的文件夹内容会和我的有点不一样,因为我的下载下来后又添加了一些文件)

    接着上面的requirement.txt,介绍如何安装里面需要安装的依赖。我们首先打开我们下载好的yolov5_master 文件夹,在上面输入cmd回车,可以直接在该文件夹目录下打开命令行。
    在这里插入图片描述

    在cmd命令行打开之后,大家千万记得要切换到我们的yolo环境下,不然就安装到base环境中去了。

    activate yolo
    

    然后运行

    pip install -r requirements.txt
    

    就会自动帮我们把这些依赖安装好了。接下来我们就要开始训练yolo模型了。

    -整理yolov5模型

    为了完成训练工作,我们需要将训练的图片按照指定的格式进行整理,
    详细参照yolov5官方指南:
    https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data
    

    我这里也简要介绍一遍过程,然后也为大家避坑,我们在训练前首先需要采集图片样本,然后再对图片中的待识别物体进行标注。
    我们首先需要建立如下的文件夹:
    在这里插入图片描述
    所有文件放在yolo_A文件夹下,子文件夹images用来存放样本图片,labels文件夹用来存储标注信息。A.yaml文件用来存放一些目录信息和标志物分类。

    我这次测试的检测哆啦A梦的头像,我采集了50张哆啦A梦的样本,放到images文件夹下:
    在这里插入图片描述
    接下来我们就要进行图片的标注工作了,图片标注我们用到了一个名为labelimg的工具:https://github.com/tzutalin/labelImg
    大家下载解压之后,首先要做的是删除
    labelImg-master\data\predefined_classes.txt
    txt文件中的内容,不然等会标记的时候会自动添加一些奇怪的类别。

    然后在labelImg-master文件夹下打开cmd,进入我们的yolo环境中,然后我们还需要在yolo环境中安装一些labelimg运行需要的依赖,依次输入

    conda install pyqt=5
    conda install -c anaconda lxml
    pyrcc5 -o libs/resources.py resources.qrc
    

    现在,我们已经在yolo环境中安装好labelimg的依赖环境了,输入

    python labelimg.py
    

    即可进入我们的界面中来。进入之后,首先我们先把一些选项勾上,便于我们标记。然后,最重要的是把标记模式改为yolo。
    在这里插入图片描述
    之后我们点击Open dir选择我们图片所在的images文件夹,选择之后会弹窗让你选择labels所在的文件夹。当然如果选错了,也可以点change save dir进行修改。

    然后软件右上角我们打开这个选项,当我们标记图片后,就会自动帮我们归类到A了
    在这里插入图片描述

    现在我们就可以开始进行标记了,常用的快捷键,用主要wad三个键

    Ctrl + u	Load all of the images from a directory
    Ctrl + r	Change the default annotation target dir
    Ctrl + s	Save
    Ctrl + d	Copy the current label and rect box
    Ctrl + Shift + d	Delete the current image
    Space	Flag the current image as verified
    w	Create a rect box
    d	Next image
    a	Previous image
    del	Delete the selected rect box
    Ctrl++	Zoom in
    Ctrl--	Zoom out
    ↑→↓← | Keyboard arrows to move selected rect box
    

    通过鼠标拖拽框选即可标注:
    在这里插入图片描述

    所有图片标注好之后,我们再来看我们的labels文件夹,可以看到很多txt文件。每个文件都对应着我们标记的类别和框的位置:
    在这里插入图片描述
    最后还要做的是建立yaml文件,文件的位置也不要放错:
    在这里插入图片描述
    文件里面内容如下,其中train和val都是我们images的目录,labels的目录不用写进去,会自动识别。nc代表识别物体的种类数目,names代表种类名称,如果多个物体种类识别的话,可以自行增加。

    # train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/]
    train: ../yolo_A/images/
    val: ../yolo_A/images/
    # number of classes
    nc: 1
    
    # class names
    names: ['A meng']
    

    到目前,我们的训练的材料就已经准备好了。

    -yolov5模型训练

    现在我们开始训练模型,由于电脑的配置过低,我采用的是谷歌colab平台进行训练,使用方法和notebook完全一样。使用云端colab会比使用本地的notebook多一些文件上传的操作。大家注意区分差异

    首先进行模块的导入,由于云端的colab还没有下载yolov5和他的依赖,所以加上前面两行。如果是本地notebook的用户,则注释掉前面三句:

    !git clone https://github.com/ultralytics/yolov5  # clone repo
    %cd yolov5
    %pip install -qr requirements.txt  # install dependencies
    
    import torch
    from IPython.display import Image, clear_output  # to display images
    
    clear_output()
    print('Setup complete. Using torch %s %s' % (torch.__version__, torch.cuda.get_device_properties(0) if torch.cuda.is_available() else 'CPU'))
    

    之后我把我们的的素材yolo_A文件夹压缩上传到colab,然后在colab上解压(本地notebook不需要这不操作)

    !unrar x ../yolo_A ../
    

    然后一下代码可以测试能否正常工作,顺带会下载yolov5s.pt文件,这个文件后面训练的时候会用到

    !python detect.py --weights yolov5s.pt --img 640 --conf 0.25 --source data/images/
    Image(filename='runs/detect/exp/zidane.jpg', width=600)
    

    如果一切正常会显示如下图
    在这里插入图片描述
    接下来就要开始训练模型了:

    !python train.py --img 640 --batch 50 --epochs 100 --data ../yolo_A/A.yaml --weights yolov5s.pt --nosave --cache
    

    训练完成后,我们可以看到训练结果保存的位置:
    在这里插入图片描述
    在对应exp文件下可以看到用训练集做预测的结果:

    Image(filename='runs/train/exp2/test_batch0_pred.jpg', width=800)  # test batch 0 predictions
    

    现在我们用训练出来的结果找一张网图做测试(文件名和导出预测文件地址不一定相同,但是相似,大家自行寻找)

    !python detect.py --weights /content/yolov5/runs/train/exp2/weights/best.pt --img 640 --conf 0.25 --source ../test2.jpg
    Image(filename='runs/detect/exp4/test2.jpg', width=600)
    

    在这里插入图片描述

    好了,基本上就完成了。接下来为了提高识别的精确度还需要继续学习yolov5的实现原理和相关参数的设定技巧。大家有问题欢迎评论区提问。

    展开全文
  • PyTorch 实战(模型训练、模型加载、模型测试)

    万次阅读 多人点赞 2019-07-30 10:25:18
    保存模型->加载模型->测试模型 自定义数据集 参考我的上一篇博客:自定义数据集处理 数据加载 默认小伙伴有对深度学习框架有一定的了解,这里就不做过多的说明了。 好吧,还是简单的说一下吧: 我们在做好...
  • 声学模型训练-嵌入式训练

    千次阅读 2017-02-21 16:13:16
    语音识别,声学模型训练,嵌入式训练
  • 咸鱼K210体验笔记—模型训练

    千次阅读 多人点赞 2020-04-07 14:53:17
    咸鱼K210体验笔记—模型训练 此教程可以完整的在Win完成:制作数据集、训练yolo、转换成k210可用的Kmodel文件 模型训练 安装anaconda3 环境:Windows64官方地址 安装时记得勾选 【Add Anaconda3 to the PATH ...
  • Kaldi声学模型训练

    千次阅读 2017-11-04 14:08:55
    声学模型训练过程1.获得语料集的音频集和对应的文字集可以提供更精确的对齐,发音(句子)级别的起止时间,但这不是必须的。2.将获得的文字集格式化kaldi需要各种格式类型的,训练过程中将会用到每
  • AI视觉模型训练+优化+部署应用演示

    万次阅读 多人点赞 2020-08-24 19:40:37
    AI视觉模型训练+优化+部署应用演示 深度学习与计算机视觉实战篇视频,自己用心做的,同时也是第一次尝试制作视频,侵删联系,希望能与大家一同学习, 关注公众号,一起学习深度学习模型训练+模型优化+算法部署。...
  • 致小白的K210模型训练与运用

    千次阅读 多人点赞 2021-01-26 12:00:38
    致小白的K210模型训练与运用 文章目录致小白的K210模型训练与运用前言一、模型训练方法二、详细介绍1.使用MixHub平台进行训练2.使用Mx-yolov3自己搭建平台进行训练3.V3模型4.V4模型 前言 由于我也是刚接触K210不久...
  • PaddleOCR文字识别模型训练

    千次阅读 2020-12-02 09:41:16
    PaddleOCR文字识别模型训练数据准备中文场景文字识别技术创新大赛数据集启动训练 本文主要介绍PaddleOCR中文字识别模型的训练、评估及测试。 数据准备 中文场景文字识别技术创新大赛数据集 数据集共212023张文字图片...
  • word2vec模型训练保存加载及简单使用

    千次阅读 多人点赞 2019-11-27 18:11:42
    word2vec模型训练保存加载及简单使用 一 word2vec简介 二、模型训练和保存及加载 模型训练 模型保存和加载 模型的增量训练 三、模型常用API 四、文本相似度计算——文档级别 word2vec模型训练保存加载及...
  • 深度学习模型训练全流程!

    千次阅读 2020-06-11 21:39:11
    Datawhale干货作者:黄星源、奉现,Datawhale优秀学习者本文从构建数据验证集、模型训练、模型加载和模型调参四个部分对深度学习中模型训练的全流程进行讲解。一个成熟合格的深...
  • 实现yolo3模型训练自己的数据集总结

    万次阅读 多人点赞 2018-08-01 17:04:47
    经过两天的努力,借鉴网上众多博客,在自己电脑上实现了使用yolo3模型训练自己的数据集并进行测试图片。本文主要是我根据下面参考文章一步步实施过程的总结,可能没参考文章中那么详细,但是会包含一些参考文章中没...
  • 学习SVM(一) SVM模型训练与分类的OpenCV实现

    万次阅读 多人点赞 2017-03-29 21:47:52
    学习SVM(一) SVM模型训练与分类的OpenCV实现 学习SVM(二) 如何理解支持向量机的最大分类间隔 学习SVM(三)理解SVM中的对偶问题 学习SVM(四) 理解SVM中的支持向量(Support Vector)Andrew Ng 在斯坦福大学...
  • 文章目录前言数据采集和处理采集标记处理读取XML文件坐标转化检测异常数据生成txt标记文件拆分数据集处理入口模型训练安装依赖包更改配置文件下载Yolov5权重文件模型训练模型检测总结 前言 最近接到一个项目,希望...
  • 模型训练和模型拟合的几点理解

    千次阅读 2020-04-17 15:33:06
    模型训练和模型拟合的几点理解,欢迎大牛指点~ 对于我们日常工作,拿到一个挖掘项目,一般都是先走一遍标准化的数据流程,效果好大家欢喜,效果不好各种调参。 这里有几点想说: (1)在开始挖掘项目之前,是否有...
  • 使用ssh连接到服务器时,如果连接非正常中断(例如使用Xshell长时间未操作自动断开连接 ),重新连接的时候会重新创建一个session,这样如果在进行模型训练时,未训练结束发生非正常中断,则无法恢复到模型训练的...
  • 深度学习 MNIST模型训练
  • TensorFlow Object Detection API 技术手册(6)——模型文件配置及模型训练(一)创建模型目录(二)准备预训练模型(三)创建标签分类的配置文件(四)配置管道配置文件(五)添加model_main.py等文件(六)查看...
  • 机器学习模型训练测试完整步骤

    万次阅读 多人点赞 2017-12-22 16:54:49
    机器学习模型训练测试完整步骤
  • 在matlab中进行SVM模型训练,通常有两种选择: 注意: a、如果matlab安装了LibSVM,在使用matlab自带的SVM时,需要进行搜索路径重新设定  路径重新设定方法:在matlab软件主窗口中【主页】--【设置路径】移除...
  • 机器学习-模型训练及测试

    千次阅读 2019-04-30 11:37:31
    模型训练:把数据集分为两部分,训练集和测试集。用训练集作为模型的训练;测试集作为评估模型的好坏。如果模型的效果不好,就需要重新更改数据、更改特征工程或者更改模型参数,来重新训练模型。在模型训练的时候,...
  • 1.模型训练参数 yolo训练时输出的各项参数(这图用的是yolov3-tiny训练,所以只有16和23这二个yolo层),对比如上16层检测大的,23检测小的。 count 是表示当前层与真实label正确配对的box数。 其中所有参数都是...
  • 1 模型训练基本步骤 进入了AI领域,学习了手写字识别等几个demo后,就会发现深度学习模型训练是十分关键和有挑战性的。选定了网络结构后,深度学习训练过程基本大同小异,一般分为如下几个步骤 定义算法公式,也...
  • 模型训练终止训练方法

    千次阅读 2020-06-18 20:54:08
    2. 模型终止训练与val_loss值相关,根据keras函数early stopping终止迭代。 # early stoppping from keras.callbacks import EarlyStopping early_stopping = EarlyStopping(monitor='val_loss', patience=50, ...
  • tensorflow2.0入门实例五(模型训练

    万次阅读 2019-10-21 14:55:25
    做东西,最重要的就是动手了,所以这篇文章主要教大家动手跑了一个fcn32s和fcn8s的例子,这个例子的数据集选用自动驾驶相关竞赛的kitti...tensorflow2.0集成了keras,使得模型训练变得更简洁 这里需要引入前几步完...
  • Yolov4模型训练规则和技巧

    千次阅读 2020-07-08 11:07:15
    Yolov4模型训练技巧总结 Training Yolo v4 (and v3): AlexeyAB官方github介绍: 训练对应的yolov4.cfg,cfg/yolov4-custom.cfg,cfg/yolov4-tiny.cfg,需下载对应的yolov4.conv.137,yolov4-tiny.conv.29 预训练模型 ...
  • ML:利用time模块统计机器学习模型训练前后的时间成本代码实现 目录 利用time模块统计机器学习模型训练前后的时间成本代码实现 利用time模块统计机器学习模型训练前后的时间成本代码实现 ML:...
  • Retinanet训练自己的数据(3):模型训练

    千次阅读 热门讨论 2019-01-07 20:21:45
    准备好数据以及模型正确安装之后,就可以就行模型训练了。  定位到模型所在的文件夹,老办法,打开powershell,在命令行输入:(这里的命令只适用于自己的训练集,对于Pascal或者coco数据集,请参见官方文档) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 102,632
精华内容 41,052
关键字:

模型训练