eIQ笔记(UI介绍+Loss曲线+OpenART例程)
This is a very beginner-friendly article ^o^
目录
🍂一、训练器设置
input size:
learning rate:
learning rate decay:
Epochs:
Decay Rate:
Linear Decay:
Batch Size:
Epochs to Train:
QAT(Quantization Aware Training)量化感知训练:
Pruning剪枝:
Clustering聚类:
🍂二、关于图像增强的设置
🍂三、模型参数
Alpha权重更新比率:
Optimizer优化器:
🍂四、推荐的设置(简单的模型)
eIQ的小bug
🍂五、分析Loss曲线
①概念
训练集Loss曲线
测试集Loss曲线
②分析
③放弃模型
🍂六、eIQ的其他常用UI介绍
🍂七、OpenART的部署例程
1、常用的方法
像素设置
模型加载
畸变校正
模型应用
加载标签
2、多目标检测中存在的问题
🍂八、尝试使用云端进行在线训练
🔚九、结语
值得一看的文件(有详细的参数讲解,包括nvida的cuda配置方法):
EIQ 工具包用户指南 - NXP (readkong.com)第21页起
第十七届智能车竞赛智能视觉组eIQ教程--逐飞科技 (qq.com)
成功安装后文件夹自带文件:eIQ_Toolkit——>docs——>eIQ_Toolkit_UG.pdf
🍂一、训练器设置
input size:
指输入到模型的尺寸,以(高度,宽度,通道数)的形式表示,模型在训练时所有图像要调整到一致的大小
选择的Input Size要与数据集的图片大小相近
learning rate:
指在每次迭代更新模型参数时,调整权重的步长大小。高学习率:参数更新步长较大,收敛速度快,可能导致错过最优解或训练过程不稳定;低学习率:参数更新步长较小,更可能找到全局最优解,但训练过程慢,可能会陷入局部最优解
learning rate decay:
学习率衰减目的是在训练初期保持较高的学习率,以加快收敛速度,在后期降低学习率,从而使模型能逼近全局最优解
Epochs:
设置调整学习率的轮数
Decay Rate:
决定学习率衰减速度的快慢,Decay Rate越大学习率下降越快,在指数衰减时:新学习率=初学习率 * e^( - decay rate * epoch )
Linear Decay:
学习率按线性规律减少
Batch Size:
设置处理样本的数量。对于有许多非常相似的图像的数据集来说,较大的批次更有可能更快地达到较高的准确率。对于较小的数据集和图像不相似的数据集,较小的批次规模可能会更快达到较高的准确率。
Epochs to Train:
整个数据集被处理的次数(可理解为模型对整个数据集进行一次全面学习),如果数据集大小为10000个样本,批次大小batch size为100,那么一次epoch包含100次Iteration(每处理一批数据的次数)。多个Epochs:单次遍历数据集不足以让模型充分学习到数据的特征,通过多个Epochs模型能不断调整参数,逼近最佳权重值;过多Epochs可能导致过拟合:过拟合指模型在训练数据上表现很好,但在新数据(测试集)上表现较差
通过增加该值(整个训练数据集中的训练次数),模型权重有更多机会学习到需要提取的重要特征。如果使用过多的epochs,训练可能会导致模型过度拟合训练数据集
QAT(Quantization Aware Training)量化感知训练:
指将模型参数和计算从浮点(32-bit)降低精度到整型(8-bit),使模型简化,计算速度快,但精度下降
Pruning剪枝:
移除模型中不重要的权重、神经元或整个过滤器,以减少模型大小和计算量
Clustering聚类:
将相似的权重值聚集在一起共享权重,从而减少模型参数

🍂二、关于图像增强的设置
见开头链接,官方说明更加详细
垂直翻转谨慎选择(若不会出现就不选择)
🍂三、模型参数
Alpha权重更新比率:
Alpha 是一个乘数,会影响模型各层滤波器的数量
Optimizer优化器:
优化器是一种数学公式,应用于权重时,可以在尽可能少的调整中找到最佳权重。可使用以下优化器(Adam、Nadam 和 Adamax常用):
-
随机梯度下降(Stochastic Gradient Descent, SGD):
- SGD是一种优化算法,通过在每次迭代中只使用一个样本或一小批样本来更新模型的权重,从而快速训练模型。当模型远离理想状态时,SGD能够迅速调整权重。
-
Adagrad:
- Adagrad在计算权重调整方向时与SGD类似,但它在调整权重时考虑了之前所有更新的累积大小,这意味着它会自动调整学习率,对于频繁更新的权重,其学习率会减小。
-
Adadelta:
- Adadelta是Adagrad的扩展,它只保留过去一定数量的更新历史,而不是全部。这使得算法更加高效,并且能够适应不断变化的优化景观。
-
均方根传播(Root Mean Square Propagation, RMSprop):
- RMSprop在计算权重调整方向时与SGD类似,但它对每个权重参数分别进行调整,有助于减少在单一轴上的振荡。在几乎所有情况下,RMSprop的表现都优于Adagrad和SGD。
-
自适应移动估计(Adaptive Movement Estimation, Adam):
- Adam结合了Adagrad和RMSprop的优点,通过累积过去调整的平均值来评估下一次调整。在几乎所有情况下,Adam的表现都优于SGD和Adagrad,而在大多数情况下优于RMSprop。它结合了Adagrad的快速梯度下降和RMSprop的振荡抑制学习率。
-
Adamax:
- Adamax是Adam优化器的泛化版本,使用无穷范数。模型越简单(参数越少),这个优化器越精确。在小模型中,Adamax的表现可能优于Adam,而在大型模型中,Adamax和Adam的表现相似,因此可以作为可选的替代方案。
-
Nesterov-加速自适应移动估计(Nesterov-accelerated Adaptive Movement Estimation, Nadam):
- Nadam结合了Adam优化器和Nesterov加速梯度技术,这使得下一次调整的计算似乎是在当前调整趋势再继续一步的情况下进行的。
经验之谈:如果发现使用Adam收敛速度过快,担心陷入局部最优解,不妨试试SGD吧 !!!
相关文章:
eIQ笔记(UI介绍+Loss曲线+OpenART例程)
This is a very beginner-friendly article ^o^ 目录 🍂一、训练器设置 input size: learning rate: learning rate decay: Epochs: Decay Rate: Linear Decay: Batch Size: Epochs to Train: QAT(Quantization Aware Training)量化感知训练: Pruning剪枝…...
微信小程序——消息订阅
首先用到的就是wx.requestSubscribeMessage接口。 注意:用户发生点击行为或者发起支付回调后,才可以调起订阅消息界面 requestSubscribeMessage() {uni.requestSubscribeMessage({tmplIds: [],//需要订阅的消息模板的id的集合,一次调用最多可…...
网络原理(传输层)->TCP协议解
前言 大家好!我是小帅,今天我们来学习TCP协议,个人主页 文章目录 1. TCP协议2. TCP的核心机制2.1TCP核心机制一:确认应答2.2 TCP核心机制二:超时重传2.3 TCP核心机制三:连接管理2.4 TCP核心机制四…...
oracle imp和exp 导入不同库的用户和表空间
参考: oracle 导入(imp)数据时的表空间(tablespace users)问题_imp tablespace-CSDN博客 网上的解决办法大概都是这种,但是实际测试19c数据库并不能成功,所以最后采取在导出文件上强行修改表空间的办法,改完后再继续执行导出导入…...
滚珠丝杆的精度级别如何分?
滚珠丝杆是一种常见的线性传动装置,广泛应用于各种机械设备和自动化系统中。滚珠丝杆的精度等级划分是评估其传动精度和运动平稳度的重要标准,滚珠丝杆的精度级别划分主要基于传动中实际移动距离与理想移动距离的偏差,偏差越小,精…...
ComfyUI初体验
ComfyUI 我就不过多介绍了,安装和基础使用可以看下面大佬的视频,感觉自己靠图文描述的效果不一定好,大家看视频比较方便。 ComfyUI全球爆红,AI绘画进入“工作流时代”?做最好懂的Comfy UI入门教程:Stable D…...
DPI-C动态库so的使用
文章目录 前言一、方法介绍二、demo演示2.1 文件准备2.2 执行仿真2.3 仿真结果 总结 前言 在做IC验证EDA仿真过程中,有时候需要调用C实现的参考模块,我们可以利用DPI-C的功能,实现SV侧调用C侧的函数。 在具体实现过程中,我们可以…...
Java避坑案例 - 高并发场景下的分布式缓存策略
文章目录 概述缓存常见问题及解决方案把 Redis 当作数据库常用的数据淘汰策略如何选择合适的驱逐算法 缓存雪崩问题复现解决方案 缓存击穿(热点缓存失效)问题复现解决方案 缓存穿透问题复现解决方案缓存穿透 vs 缓存击穿 缓存与数据库的一致性先更新缓存…...
Python中的字符串修剪:strip()、lstrip() 和 rstrip()
Python中的字符串修剪 Python 中的字符串修剪:strip()、lstrip() 和 rstrip()strip()lstrip()rstrip()应用场景结论 Python 中的字符串修剪:strip()、lstrip() 和 rstrip() 在 Python 开发中,我们经常需要处理字符串,其中一项常见…...
K8S配置storage-class
简介 Kubernetes支持NFS存储,需要安装nfs-subdir-external-provisioner,它是一个存储资源自动调配器,它可将现有的NFS服务器通过持久卷声明来支持Kubernetes持久卷的动态分配。该组件是对Kubernetes NFS-Client Provisioner的扩展࿰…...
多线程——线程池
目录 前言 一、什么是线程池 1.引入线程池的原因 2.线程池的介绍 二、标准库中的线程池 1.构造方法 2.方法参数 (1)corePoolSize 与 maximumPoolSize (2)keepAliveTime 与 unit (3)workQueue&am…...
VScode插件:前端每日一题
大文件上传如何做断点续传? 在前端实现大文件上传的断点续传,通常会将文件切片并分块上传,记录每块的上传状态,以便在中断或失败时只上传未完成的部分。以下是实现断点续传的主要步骤和思路: 1. 文件切片 (File Slici…...
Android跨进程通信
1、跨进程通信的几种方式 在 Android 中,跨进程通信 (IPC, Inter-Process Communication) 方式有多种,主要用于在不同的应用或进程之间传递数据。常见的跨进程通信方式包括: AIDL (Android Interface Definition Language) • 描述ÿ…...
【初阶数据结构】计数排序 :感受非比较排序的魅力
文章目录 前言1. 什么是计数排序?2. 计数排序的算法思路2.1 绝对位置和相对位置2.2 根据计数数组的信息来确认 3. 计数排序的代码4. 算法分析5. 计数排序的优缺点6.计数排序的应用场景 前言 如果大家仔细思考的话,可能会发现这么一个问题。我们学的七大…...
前后双差速轮之LQR控制
在之前的代码中,我们实现了前后两对双差速轮AGV的运动学正解和逆解。但为了实现对AGV的精确路径跟踪和姿态控制,我们需要引入控制算法。线性二次型调节器(LQR)是一种常用的最优控制方法,可以有效地将系统的状态误差最小化。本文将详细说明如何在之前的C++代码中加入LQR控制…...
Linux之远程连接服务器
1、远程连接服务器简介 (1)什么是远程连接服务器 远程连接服务器通过文字或图形接口方式来远程登录系统,让你在远程终端前登录linux主机以取得可操作主机接口(shell),而登录后的操作感觉就像是坐在系统前面…...
k8s 部署 nexus3 详解
创建命名空间 nexus3-namespace.yaml apiVersion: v1 kind: Namespace metadata:name: nexus-ns创建pv&pvc nexus3-pv-pvc.yaml apiVersion: v1 kind: PersistentVolume metadata:name: nfs-pvnamespace: nexus-ns spec:capacity:storage: 3GiaccessModes:- ReadWriteM…...
从“摸黑”到“透视”:AORO A23热成像防爆手机如何改变工业检测?
在工业检测领域,传统的检测手段常因效率低下、精度不足和潜在的安全风险而受到诟病。随着科技的不断进步,一种新兴的检测技术——红外热成像技术,正逐渐在该领域崭露头角。近期,小编对一款集成红外热成像技术的AORO A23防爆手机进…...
让你的 IDEA 使用更流畅 | IDEA内存修改
随着idea使用越来越频繁,笔者最近发现使用过程中有时候会出现卡顿现象,例如,启动软件变慢,打开项目的速度变慢等: 因此如果各位朋友觉得最近也遇到了同样的困惑,不妨跟着笔者一起来设置IDEA的内存大小吧~ …...
docker run 命令解析
docker run 命令解析 docker run 命令用于从给定的镜像启动一个新的容器。这个命令可以包含许多选项,下面是一些常用的选项: -d:后台运行容器,并返回容器ID;-i:以交互模式运行容器,通常与 -t …...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...
Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...
SQL Server 触发器调用存储过程实现发送 HTTP 请求
文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...
