睿眼(Realeye)视觉识别模型训练全流程心得分享

news2024/11/22 18:46:33

睿眼(Realeye)是一款集智能采集、识别、定位、抓取、视控全流程为一体的 AI 产品, 以其 AI 算法结合机械臂硬件实现对万事万物的定位抓取功能,能够实现对任意目标物从图 片采集、标注到模型训练和抓取。通过人性化的交互方式、易操作的界面,将原本复杂的数据采集、模型训练、模型部署、机械臂适配、机械臂操作、视控等功能简单、易懂地呈现给用户,降低用户学习和使用成本。

睿眼的模型训练功能是其亮点之一,无需复杂的理论和操作,也无需专业的设备,在笔记本电脑上就能够训练出一个自己想要的识别模型。经过一段时间的试用,在此与大家分享在使用睿眼进行模型训练时的一点心得。

1.图像采集

要自己训练一个新模型,第一步便是采集包含识别目标的图像。在睿眼中,这一步名为:采集数据。其页面如图1.1所示:

图1.1:“采集数据”页面

进入这一页面后,单击最左侧的功能按钮开始流程(整个操作流程就是从左到右使用这些功能按键即可)。点击最左侧的新增数据集后,在弹出的窗口中输入数据集名称以及识别物体的标签名称。输入完成后,系统会弹出窗口,需要在其中选择一个图像来源,如图1.2所示:

图1.2:视频源选择

这一步需要根据实际需要选择,这里选择camera作为视频源。那么,睿眼就会使用摄像头来拍摄画面,并截取画面生成图片,作为后续训练的素材。这里需检查摄像头是否成功连接,可查看右上角图标,从左到右第二个图标显示了摄像头的连接状态,图1.2中的状态即是连接正常。

图1.3:选择camera作为视频源后的确认窗口

选择camera作为视频源后,会弹出一个窗口,其中显示的画面即为当前摄像头所拍的画面。若画面中没有要识别训练的目标物体,请拖动机械臂末端以移动摄像头,使目标物体出现在画面中,并点击“S”键(“s”亦可)。

完成以上步骤后,便可以开始图像采集。如图1.4、1.5所示,点击“顺序播放画面“按键,睿眼便会从摄像头画面中不断截取图像(采集过程中文件列表不会立刻更新,需要点击停止采集后文件列表才会更新。

图1.4:开始顺序播放画面

图1.5:停止采集后的文件列表

睿眼的图像采集速度为5帧/秒,所以采集的时间越长,所得到的图像数量就越多。图像更多,则训练得到的模型效果更好,但也会相应的使训练时间变长。大家在实践的过程中可自行衡量。

2.图片标注

图像采集完成后就需要进行标注,以告知睿眼目标物体的轮廓和在图像中的位置。标注方式又分为手动标注和自动标注两种。自动标注可以一键自动标注物体轮廓,只需点击一下物体在画面中的所在位置即可。但是自动标注只能大致根据物体与背景的轮廓分界来标注其形状,在一些时候存在误识别等问题,此时就需要重新自动标注或手动标注。

图2.1:自动标注物体轮廓(识别有误)

此时便可使用手动标注方法:取消自动标注的选择,然后用鼠标左键点击物体轮廓边缘,使画面上的点围绕物体。若过程中有点错的点,可用鼠标右键取消。如图2.2所示:

图2.2:手动标注物体边缘

若完成了边缘标注,即可按空格键,生成一个绿色图案覆盖住目标物体,如此便完成了一张图片的标注流程。如图2.3所示:

图2.3:点击空格键生成轮廓

如果一张一张地标注,操作上非常繁琐,因此睿眼提供了一个自动标注多张图片的功能。如图2.4:

图2.4:正向追踪目标

在前面,我们标注了序号为11的图片,此时点击正向追踪目标,睿眼便会以11为示范,自动完成序号12至最后的所有图片的标注。在我的使用过程中,一般是先手动标注一两张图,尽可能精确,这样使用自动追踪得到的标注效果就会较好。自动追踪目标的过程中,可以看到页面右下角的图片编号变化,主画面窗口的图像也会逐张切换,并显示标注出的轮廓。当自动追踪结束后,可找出其中标注效果不好的进行重新标注。反向追踪同理,不过它是从当前序号向前标注,功能相同,序号方向相反。

标注完所有图像后,点击“数据增强“按钮,睿眼将会自动处理数据集,向其中添加一定数量的图像,使得训练效果更好,如图2.5:

图2.5:数据增强

需要注意,数据增强产生的图像会添加到整个数据集中,便会使得图像张数变多,造成训练的时间延长。

3.识别训练

获得数据集并处理完成后,即可开始模型训练,如图3.1:

图3.1:识别训练页面

首先选择训练的轮次,即训练过程中整个训练数据集被模型使用的次数。默认为30轮,轮次越多,效果越好,但是花费的时间也将按倍数增加。

其次为训练批次选择,在机器学习中,训练批次即每次更新模型参数时使用多少训练数据。此值越大,对资源消耗占用越多,但相应的训练效果也更好。需要注意,训练批次的选择会极大的影响训练时的内存占用,若设置得过大,而硬件性能不足,会导致训练失败闪退。

最后则是选择参与本次训练的数据集,可以使用刚刚标注好的数据集,也可以用之前标注的数据集。查看当前的所有数据集可以点击左侧最下方的“设置管理“按钮,如图3.2:

图3.2:查看当前的所有数据集

选择完三个参数后,点击左侧的“开始训练“按钮即可开始模型训练,接下来只需要等待即可。如图3.3:

图3.3:开始训练(负担最小,速度最快的配置)

训练过程中,可以实时查看训练情况,如图3.4所示(之前训练时截的):

图3.4:训练过程中的页面

训练完成后,便得到了识别模型,可用于推理识别和识别抓取等一系列过程。日后会对这些操作过程进行分享,此处暂不赘述。

4.虚拟内存设置

整个训练过程中,电脑硬件配置、图片数量、训练轮次、训练批次都会影响训练速度。

有时候,可能一开始运行识别训练就会报错闪退,最可能的原因就是电脑内存不足。为了解决这个问题,可以通过设置虚拟内存来解决。

首先进入设置-系统-系统信息,如图4.1所示:(笔者电脑系统为win11)

图4.1:设置-系统-系统信息

进入系统信息页面后点击进入高级系统设置:

图4.2:系统信息页面

然后依次点击:高级-性能-设置-高级-虚拟内存-更改:

图4.3:高级系统设置页面

进入虚拟内存设置页面后,选择一个空间多的盘(最好是固态),自定义虚拟内存大小,最大值推荐为16*1024mb,如图4.4所示:

图4.4:虚拟内存设置

完成以上操作后点击确定,虚拟内存的设置便完成了。

接下来便可再次尝试模型的识别训练。

欢迎在评论区交流讨论。祝您顺利!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1546934.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度剖析python的就业面

技术行业,一定要提升技术功底,丰富项目实战经验; 这对于你未来几年职业规划,以及测试技术掌握的深度非常有帮助。 WEB开发 尽管目前Python并不是做Web开发的首选,但这仍是一个比较热门的方向。 现如今有不少知名网…

【STL学习】(2)string的模拟实现

前言 本文将模拟实现string的一些常见功能,目的在于加深理解string与回顾类与对象的相关知识。 一、前置知识 string是表示可变长的字符序列的类string的底层是使用动态顺序表存储的string对象不以’\0’字符为终止算长度,而是以size有效字符的个数算长…

嵌入式开发过程中应该养成的习惯!

最近有一些读者来咨询:有什么需要注意的编程好习惯?给大家分享一下。 第一:多看官方文档 不要被这几个字吓到,官方文档其实都是宝藏。 一个成熟的技术诞生,可以没有博客没有书籍,但一定会有一个官方文档,毋庸置疑,它一定是最准确、最实时的资料。编写官方文档的人,…

【SAP2000】碰撞分析 Impact Analysis

碰撞分析 Impact Analysis CSI程序的动力分析功能非常广泛。一个例子是分析两个质量或结构之间碰撞效应的能力。 The possibilities of dynamic analysis with CSI programs are very extensive. An example of this is the ability to analyze the effects of collision bet…

Leetcode算法题笔记(2)

目录 图论51. 岛屿数量解法一 52. 腐烂的橘子解法一 53. 课程表解法一 54. 实现 Trie (前缀树)解法一 回溯55. 全排列解法一 56. 子集解法一解法二 57. 电话号码的字母组合解法一 58. 组合总和解法一解法二 59. 括号生成解法一解法二 60. 单词搜索解法一 61. 分割回文串解法一 …

一文看懂什么是OpenHarmony流转架构

随着全场景多设备的生活方式不断深入,用户拥有的设备越来越多,不同设备都能在适合的场景下提供良好的体验,例如手表可以提供及时的信息查看能力,电视可以带来沉浸的观影体验。但是,每个设备也有使用场景的局限&#xf…

【Python】Data Science with Python 数据科学(1)环境搭建

一、操作系统 使用运行在Windows11主机上的Ubuntu 22.04虚拟机,虚拟化平台为Oracle VM VirtualBox。 二、PyCharm安装 有关PyCharm的安装和快捷方式创建,可分别参考我的博客 Ubuntu安装PyCharm、Ubuntu创建桌面快捷方式 ,以及Ubuntu创建桌…

systemd-journal(一)之journalctl命令详解

文章目录 写在前面概述描述不传递参数传递一个或多个匹配参数示例 源选项用法--system, --user-M, --machine-m, --merge-D DIR, --directoryDIR--fileGLOB--rootROOT--imageIMAGE--image-policypolicy--namespaceNAMESPACE 过滤选项用法-S, --since, -U, --until举例&#xff…

孙中茂:摸清自己的性格很重要,只要你的本事够了,在哪个地方都是都会发光的。

《程客有话说》是我们最新推出的一个访谈栏目,邀请了一些国内外有趣的程序员来分享他们的经验、观点与成长故事,我们尝试建立一个程序员交流与学习的平台,也欢迎大家推荐朋友或自己来参加我们的节目,一起加油。 本期我们邀请的程…

第四百二十六回

文章目录 1. 概念介绍2. 实现方法2.1 原生方式2.1 插件方式 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何修改程序的桌面图标"相关的内容,本章回中将介绍如何处理ListView中的事件冲突.闲话休提,让我们一起Talk Flutter吧。 1. 概念介…

YOLOv9有效改进专栏汇总|未来更新卷积、主干、检测头注意力机制、特征融合方式等创新![2024/3/23]

​ 专栏介绍:YOLOv9改进系列 | 包含深度学习最新创新,助力高效涨点!!! 专栏介绍 YOLOv9作为最新的YOLO系列模型,对于做目标检测的同学是必不可少的。本专栏将针对2024年最新推出的YOLOv9检测模型&#xff0…

NSCaching: Simple and Efficient NegativeSampling for Knowledge Graph Embedding

摘要 知识图嵌入是数据挖掘研究中的一个基本问题,在现实世界中有着广泛的应用。它的目的是将图中的实体和关系编码到低维向量空间中,以便后续算法使用。负抽样,即从训练数据中未观察到的负三元组中抽取负三元组,是KG嵌入的重要步…

Open CASCADE学习|显示文本

目录 1、修改代码 Viewer.h: Viewer.cpp: 2、显示文本 OpenCasCade 你好啊 霜吹花落 1、修改代码 在文章《Open CASCADE学习|显示模型》基础上,增加部分代码,实现对文本显示的支持,具体如下: Viewer…

随机链表的深拷贝

目录 一、何为深拷贝? 二、题目 三、思路 1.拷贝节点插入到原节点后面 2.控制拷贝节点的random 3.脱离原链表 : 尾插的思想 四、代码 五、附加 一、何为深拷贝? 一个引用对象一般来说由两个部分组成:一个具名的Handle,也就…

cinder学习小结

1 官方文档 翻译官方文档学习 链接Cinder Administration — cinder 22.1.0.dev97 documentation (openstack.org) 1.1 镜像压缩加速 在cinder.conf配allow_compression_on_image_upload True可打开开关 compression_format xxx可设置镜像压缩格式,可为gzip 1.2 …

SPP和SPPF的比较

SPP的结构是将输入并行通过多个不同大小的MaxPool层,然后做进一步融合,能在一定程度上解决多尺度问题。 而SPPF结构则是讲输入串行通过多个5*5的MaxPool层,这里需要注意两个5*5的MaxPool层和一个9*9的MaxPool的计算结果是一样的,而…

[蓝桥杯 2022 省 A] 求和

[蓝桥杯 2022 省 A] 求和 题目描述 给定 n n n 个整数 a 1 , a 2 , ⋯ , a n a_{1}, a_{2}, \cdots, a_{n} a1​,a2​,⋯,an​, 求它们两两相乘再相加的和,即 S a 1 ⋅ a 2 a 1 ⋅ a 3 ⋯ a 1 ⋅ a n a 2 ⋅ a 3 ⋯ a n − 2 ⋅ a n − 1 a n − 2 ⋅ a…

3、创建项目,什么是路由

一、创建项目 第一次全局安装脚手架 npm install -g vue/clivue create 项目名 二、什么是路由? 路由就是一组 key-value 的对应关系多个路由,需要经过路由器的管理 1、后端路由: 每个url地址都对应着不同的静态资源对于普通的网站。所有…

记录整合ssm项目时的报错java: Compilation failed: internal java compiler error

启动的时候报错java: Compilation failed: internal java compiler error,这说明是内部编译器错误。如下图所示: 大概率是jdk版本不兼容的问题,也有IDEA初始划分的堆内存不够的原因。 查阅了很多博客的解决方法也都是上述两种,但…

C++引用学习day2

思维导图 定义一个矩形类(Rectangle),包含私有成员:长(length)、宽(width), 定义成员函数: 设置长度:void set_l(int l) 设置宽度:void set_w(int w) 获取长度&#…