【03】LLaMA-Factory微调大模型——多模型部署

为了构建法律领域的垂直应用大模型,记录使用LLaMA-Factory微调大模型的过程,以期UU们可以复刻与应用。上文【02】LLaMA-Factory微调大模型——LLaMA-Factory搭建已在本机成功部署模型微调框架,本文则在本机部署多种基础模型,为后续微调提供准备。 一、基础模型选择 LLaMA-Factory框架所支持的模型如下表所示,覆盖主流的开源大模型,可按照自身需求进行应用。本文主要部署Qwen2、GLM-4、LLaMA3-8B-Chinese-Chat三个模型进行实验。 模型名模型大小TemplateBaichuan 27B/13Bbaichuan2BLOOM/BLOOMZ560M/1.1B/1.7B/3B/7.1B/176B-ChatGLM36Bchatglm3Command R35B/104BcohereDeepSeek (Code/MoE)7B/16B/67B/236BdeepseekFalcon7B/11B/40B/180BfalconGemma/Gemma 2/CodeGemma2B/7B/9B/27BgemmaGLM-49Bglm4InternLM27B/20Bintern2Llama7B/13B/33B/65B-Llama 27B/13B/70Bllama2Llama 38B/70Bllama3LLaVA-1.57B/13BvicunaMistral/Mixtral7B/8x7B/8x22BmistralOLMo1B/7B-PaliGemma3BgemmaPhi-1.5/Phi-21.3B/2.7B-Phi-34B/7B/14BphiQwen/Qwen1.5/Qwen2 (Code/MoE)0.5B/1.5B/4B/7B/14B/32B/72B/110BqwenStarCoder 23B/7B/15B-XVERSE7B/13B/65BxverseYi/Yi-1.56B/9B/34ByiYi-VL6B/34Byi_vlYuan 22B/51B/102Byuan 二、准备阶段 在LLaMA-Factory文件下新建文件夹存放模型文件 更换pypi源为清华镜像进行加速 # 更换 pypi 源加速库的安装【建议】 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple 换源成功如下图所示 【提示】除了清华源以外还可以选择其他多个国内镜像 阿里云: http://mirrors.aliyun.com/pypi/simple/ 中国科技大学: https://pypi.mirrors.ustc.edu.cn/simple/ 豆瓣: http://pypi.douban.com/simple/ 清华大学: https://pypi.tuna.tsinghua.edu.cn/simple/ 中国科学技术大学: http://pypi.mirrors.ustc.edu.cn/simple/ 安装下列代码库(可选) pip install deepspeed pip install flash-attn --no-build-isolation 安装flash-attention时会出现报错或者超时情况,如下图所示 该环节出现问题可参考以下这篇博文进行解决 关于flash-attention安装踩过的坑_flash-attn踩坑-CSDN博客https://blog.csdn.net/weixin_44044132/article/details/137055014?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~Ctr-1-137055014-blog-136054392.235%5Ev43%5Epc_blog_bottom_relevance_base5&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~Ctr-1-137055014-blog-136054392.235%5Ev43%5Epc_blog_bottom_relevance_base5安装git-lfs,Git Large File Storage(简称Git LFS)是一个用于存储大文件的Git扩展。在传统的Git中,大文件的版本控制会导致存储库变得庞大且访问速度变慢。Git LFS通过将大文件存储在Git存储库之外的特殊服务器上,并在Git存储库中只保留指向这些大文件的指针来解决这个问题。 # 先安装git(如已安装可忽略) sudo apt-get install git #安装curl # 安装apt-get源 curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash # 安装git-lfs sudo apt-get install git-lfs # 初始化git-lfs git lfs install 安装过程如下图所示 安装完成后,对其初始化

精通JVM监控与调优:工具使用与命令指南

精通JVM监控与调优:工具使用与命令指南 1. JVM监控工具概览1.1 监控工具列表 2. jconsole使用指南2.1 操作步骤2.2 常用命令 3. VisualVM使用指南3.1 操作步骤3.2 常用命令 4. jstack使用指南4.1 操作步骤4.2 常用命令 5. jmap使用指南5.1 操作步骤5.2 常用命令 6. jstat使用指南6.1 操作步骤6.2 常用命令 7. MAT使用指南7.1 操作步骤7.2 常用命令 8. GCViewer使用指南8.1 操作步骤8.2 常用命令 9. 监控与调优的最佳实践9.1 实践建议 结语 1. JVM监控工具概览 1.1 监控工具列表 jconsole:JDK自带的轻量级监控工具。VisualVM:功能全面的监控工具,支持多种数据收集和分析。jstack:生成线程堆栈转储的工具。jmap:生成堆内存快照的工具。jstat:实时提供JVM性能数据的工具。MAT(Memory Analyzer Tool):分析堆内存转储文件的工具。GCViewer:分析GC日志的工具。 2. jconsole使用指南 2.1 操作步骤 打开终端或命令提示符。运行jconsole命令启动jconsole。连接到目标JVM进程: 在jconsole的连接对话框中,选择要监控的本地或远程JVM进程。点击“连接”按钮。 2.2 常用命令 查看内存使用情况:在内存选项卡中查看堆内存和非堆内存的使用情况。查看线程状态:在线程选项卡中查看线程的运行状态和CPU使用率。 3. VisualVM使用指南 3.1 操作步骤 访问VisualVM官网下载并安装VisualVM。运行VisualVM。连接到目标JVM进程: 在VisualVM的"Applications"窗口中,右键点击"Local"或"Remote"。选择"Add JMX Connection…"并输入JMX连接信息。 3.2 常用命令 分析内存泄漏:使用"Sampler"或"Profiler"收集内存分配和对象存活数据。查看CPU剖析:使用"Profiler"选项卡查看方法级别的CPU使用情况。 4. jstack使用指南 4.1 操作步骤 确定需要监控的JVM进程ID。运行jstack <进程ID>命令生成当前时刻的线程堆栈转储。 4.

数据仓库的一致性维度

一致性维度的定义: 一致性维度是指在数据仓库中,具有相同属性和含义的维度在不同的事实表中保持一致。它确保了通过不同事实表进行查询和分析时,维度数据的一致性和准确性。 一致性维度的作用: 数据一致性:一致性维度确保了在不同事实表中对维度数据的查询和分析结果是一致的,避免了数据不一致性引起的误导和错误决策。数据准确性:一致性维度保证了维度数据的准确性,提供了可靠的基础数据,以支持数据仓库中的分析和决策过程。数据一致性验证:一致性维度可以用于验证数据仓库中不同事实表之间的一致性,并帮助发现和解决数据一致性问题。 一致性维度的设计原则: 唯一标识:一致性维度应该具有唯一标识,以确保在不同事实表中能够准确匹配和关联维度数据。属性一致性:一致性维度的属性定义和名称应保持一致,避免不同事实表中同一维度存在不一致的属性定义。属性值一致性:一致性维度的属性值应在不同事实表中保持一致,确保数据的准确性和一致性。更新策略:一致性维度的更新策略应考虑不同事实表的更新频率和数据变化情况,以保持维度数据的一致性。 结论: 一致性维度在数据仓库中扮演着重要的角色,确保了数据的一致性和准确性,为分析和决策提供可靠的基础数据。通过遵循一致性维度的设计原则,能够有效地管理和维护数据仓库中的一致性维度,提升数据仓库的质量和价值。希望本文能够帮助读者更好地理解和应用一致性维度设计在数据仓库中的重要性。

前端进阶|详细讲讲函数柯里化

前言: 柯里化(Currying)和反柯里化(Uncurrying)在JavaScript中总感觉属于一种不温不火的存在,甚至有些开发者在提起柯里化和反柯里化时,竟然会有点生疏不懂。其实不然,对于它们的概念可能在日常开发中不太提到,但是它们的思想和用法,却在前端开发中经常借鉴和使用,它可以帮助我们写出更加优雅、灵活的代码。本文会首先介绍柯里化的概念、实现原理和应用场景,欢迎收藏+关注哦 💕 🌈🌈文章目录 前言: 一、什么是柯里化 二、实现原理 三、应用场景 计算器函数 校验函数 组合函数 四、柯里化的优缺点 优点: 缺点: 举例演示: 五、总结 一、什么是柯里化 JavaScript函数柯里化是一种将使用多个参数的函数转换为一系列使用一个参数的函数的技术。该技术的名称来自于数学家Haskell Curry。柯里化的主要思想是通过传递函数的一部分参数来创建一个新的函数,该函数接受剩余的参数,并返回结果。 通过柯里化,我们可以将一个接受多个参数的函数转换为一个接受一个参数的函数序列。这意味着我们可以先传递一部分参数,然后传递剩余的参数,或者分别传递参数,以此灵活地处理函数的调用。 例如,下面是一个接受两个参数的普通函数: function add(x, y) { return x + y; } 通过柯里化,我们可以将上述函数转换为一系列多个函数的调用: function add(x) { return function(y) { return x + y; } } 这样,我们可以按照以下方式调用柯里化后的函数: let add5 = add(5); add5(3); // 返回 8 通过柯里化,我们可以轻松地创建具有更高可复用性和灵活性的函数。它在函数式编程中经常被使用,并且可以用于创建高阶函数和函数组合。 二、实现原理 函数柯里化的实现原理是利用闭包和递归。 具体步骤如下: 创建一个高阶函数,用于接受原函数的参数,并返回一个新函数。在新函数内部,使用闭包来保存已经传入的参数。在新函数内部,使用递归或者循环,判断是否所有参数都已经传入。若是,则执行原函数,并返回结果;若否,则继续返回新函数,接受下一个参数。 通过这样的方式,就可以实现柯里化函数。 以下是一个简单的示例代码展示柯里化的实现: function curry(fn) { return function curried(...args) { if (args.length >= fn.

运动控制:步进电机同步带传动距离计算

一、步进电机同步带传动的基本概念 步进电机同步带传动是指利用同步带带动步进电机旋转,从而实现机械传动的一种方式。步进电机同步带传动常用于CNC数控机床、自动化生产线等场合。其具有定位精度高、误差小、响应快等优点。 二、步进电机同步带传动的距离计算方法 步进电机驱动同步带传动的计算涉及多个因素,‌包括运行移动速度、‌负载大小、‌同步轮规格、‌加减速时间、‌定位时间、‌效率、‌摩擦系数以及运动方向(‌水平、‌斜坡或竖直运动)‌等。‌ 首先,‌需要分析运动的工况情况,‌这包括确定同步轮的分度圆周长(‌齿数乘以齿距)‌和单位移动量(‌同步轮分度圆周长乘以A)‌。‌这些参数对于计算步进电机与同步带传动的匹配至关重要。‌此外,‌步进电机的选型和计算还需要考虑电机的转速、‌转矩以及驱动脉冲频率等因素。‌ 在具体计算过程中,‌步进电机的选择不仅要考虑其能够提供的转矩和转速,‌还需要根据实际应用中的负载惯量、‌加速转矩等因素进行计算。‌例如,‌通过换算电机轴的负载惯量,‌可以确定步进电机所需的转矩和转速,‌进而计算出驱动脉冲频率,‌以确保步进电机能够满足加速和定位的要求。‌ 此外,‌步进电机在皮带输送机中的受力分析及计算也是非标机械设计中的重要环节。‌这涉及到步进电机在特定工作条件下的受力分析,‌以及如何通过SolidWorks等机械设计软件进行建模和分析,‌以确保设计的合理性和可靠性。‌ 步进电机同步带传动的距离计算方法包括以下要素: 1.同步带类型:包括带轮齿数、带宽、带厚等参数。 2.步进电机类型:包括步数角度、步进角度等参数。 3.蜗杆参数:包括蜗杆齿数、蜗杆压力角等参数。 4.传动比:即蜗杆齿数与带轮齿数的比值。 步进电机同步带传动的距离计算公式为: L=π×D×n×k÷z L为传动距离,D为带轮直径,n为步数,k为传动比,z为带轮齿数。 举例说明: 以一个M4型步进电机为例,步数角度为1.8°,蜗杆齿数为20,带轮齿数为36,带轮直径为60mm,传动比为1:0.5556。则计算公式如下: L=π×60×1.8°×1÷(0.5556×36) L=6.283185×60×1.8°÷20 L=33.51mm 三、注意事项 在进行步进电机同步带传动的距离计算时,需要注意以下几点: 1.传动比的选择应根据实际情况进行调整,不同传动比对距离的影响不同。 2.带轮和同步带的质量和精度会影响传动距离的精度。 3.计算中的参数需准确,否则会造成计算误差。

EchoMimic:蚂蚁开源逼真数字人框架,表情口型更生动自然,本地部署包获取

EchoMimic:逼真的音频驱动人像动画 EchoMimic简介 近日蚂蚁开源了一款名为:EchoMimic 数字人的框架。EchoMimic能够通过单独的音频文件和一张静态面部标志点的图像生成数字人像视频,也可以通过音频和选定的面部标志点的组合来生成。 由音频输入推动的人像图像动画领域,在生成逼真和动态的人像方面取得了显著进展。传统方法仅限于使用音频或面部关键点来驱动图像转视频,虽然可以获得满意的结果,但存在一些问题。例如,仅由音频驱动的方法有时会因为音频信号相对较弱而不稳定;而完全由面部关键点驱动的方法,尽管在驱动上更稳定,但可能会因为关键点信息的过度控制而导致结果不自然。为了应对前述挑战,研究团队介绍了一种名为EchoMimic的新方法。EchoMimic同时使用音频和面部标志点进行训练。通过实施一种新颖的训练策略,EchoMimic不仅能够单独通过音频和面部标志点生成人像视频,还能够通过音频和选定的面部标志点的组合来生成。EchoMimic已经在多个公共数据集和收集的数据集上与替代算法进行了全面比较,在定量和定性评估中展现出更优越的性能。 • Github地址:https://github.com/BadToBest/EchoMimic • 项目主页:https://badtobest.github.io/echomimic.html 官方视觉演示案例 更多演示案例,请参见官方主页:https://badtobest.github.io/echomimic.html 。 EchoMimic使用指南 当前官方给出的代码库中,只包含CLI命令行运行方式。考虑到方便大家的使用,笔者已创建了WebUI版本,欢迎大家提供更多建议。 • 代码地址:https://github.com/greengerong/EchoMimic/tree/main 同时笔者也提供了国内网盘包,文末已放置网盘下载口令。 运行命令:安装依赖并启动服务 # window 双击运行该批处理文件,或在命令提示符中导航到文件所在目录并运行 run.bat ./run.bat # Linux 在终端中运行如下命令 chmod +x run.sh && ./run.sh。 仅运行:也可使用仅启动服务,使用已有环境依赖,不独立安装依赖 # 服务启动 python -u app.py 如果遇见touch问题,确保正在上网重新安装: pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 -U WebUI界面 EchoMimic体验 本文中使用的是可图(Kolors) 生成输入图像,避免肖像隐私。 • Kolors模型地址(国内哩布镜像):https://www.liblib.art/modelinfo/c10a365bbdff40edb3f18b9fdfb694f8 • Kolors模型地址(huggingface):https://huggingface.co/Kwai-Kolors/Kolors/tree/main • 在线绘图地址:https://klingai.kuaishou.com/ Kolors示例 这位身着天蓝色和银色服装的美丽女子,她的黑色虹膜看起来就像中国神话中的年兽。这张照片是用手机相机在TikTok上拍摄的,可以看到她美丽的眼睛。她有金色的刘海,似乎化了妆,脸上有美丽的金色图案。她皮肤上的纹路也清晰可见。逼真的风格,全身外观,丰富的背景,4k超高清 EchoMimic体验 在WebUI界面中,仅需按照界面指引操作上传一张人物图片和一段音频文件,点击生成,耐心等待任务执行完成,即可看见输出视频效果。默认保存在本地文件目录**/EchoMimic/output/tmp** 下。每次会生成两个视频,一个为无声视频和一个配音视频。 注:在测试体验经验,输入图像需要保持1:1,同时保证高清质量和人物脸部可识别,脸部不要有复杂遮挡物,否则会无法识别报错。 写在最后 感兴趣的小伙伴,赠送全套AIGC学习资料,包含AI绘画、AI人工智能等前沿科技教程和软件工具,具体看这里。 AIGC技术的未来发展前景广阔,随着人工智能技术的不断发展,AIGC技术也将不断提高。未来,AIGC技术将在游戏和计算领域得到更广泛的应用,使游戏和计算系统具有更高效、更智能、更灵活的特性。同时,AIGC技术也将与人工智能技术紧密结合,在更多的领域得到广泛应用,对程序员来说影响至关重要。未来,AIGC技术将继续得到提高,同时也将与人工智能技术紧密结合,在更多的领域得到广泛应用。 一、AIGC所有方向的学习路线 AIGC所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。 二、AIGC必备工具 工具都帮大家整理好了,安装就可直接上手!

window11 部署llama.cpp并运行Qwen2-0.5B-Instruct-GGUF

吾名爱妃,性好静亦好动。好编程,常沉浸于代码之世界,思维纵横,力求逻辑之严密,算法之精妙。亦爱篮球,驰骋球场,尽享挥洒汗水之乐。且喜跑步,尤钟马拉松,长途奔袭,考验耐力与毅力,每有所进,心甚喜之。 吾以为,编程似布阵,算法如谋略,需精心筹谋,方可成就佳作。篮球乃团队之艺,协作共进,方显力量。跑步与马拉松,乃磨炼身心之途,愈挫愈勇,方能达至远方。愿交志同道合之友,共探此诸般妙趣。 诸君,此文尚佳,望点赞收藏,谢之! 1. 下载llama.cpp框架编译环境(llama.cpp/docs/build.md at master · ggerganov/llama.cpp · GitHub): 2. 下载w64devkit:Releases · skeeto/w64devkit · GitHub 3. 解压后直接运行w64devkit.exe: 4. 下载llama.cp源码: git clone https://github.com/ggerganov/llama.cpp 进入llama.cpp目录,执行make命令: 5. 运行后,在llama.cpp目录找到llama-cli.exe表示安装成功 6. 下载Qwen2-0.5B-Instruct-GGUF格式模型:魔搭社区 7.在llama-cli.exe文件所在目录新建chat-with-qwen.txt文件,内容为:You are a helpful assistant. 在llama-cli.exe文件所在目录打开命中行,执行: llama-cli.exe -m ..\Qwen2-0.5B-Instruct-GGUF\qwen2-0_5b-instruct-q5_k_m.gguf -n 512 -co -i -if -f chat-with-qwen.txt --in-prefix "<|im_start|>user\n" --in-suffix "<|im_end|>\n<|im_start|>assistant\n" -ngl 24 结果: 可以进行交互了~ 8. 以服务的形式运行模型: llama-server.exe -m ..\Qwen2-0.5B-Instruct-GGUF\qwen2-0_5b-instruct-q5_k_m.gguf -ngl 24 -fa 结果: 启动成功,使用postman测试:

java与mysql连接 使用mysql-connector-java连接msql

文章简介 本文章讲解使用 mysql-connector-java-8.0.30 建立java程序和mysql本地数据库的连接。 自用文章,仅作参考。 库 mysql-connect-java-8.0.30 (来自Maven) IDE:IntelliJ IDEA 安装方法(任选其一) 通过IDEA项目结构安装 1.打开项目的项目结构(Project Structure) 2.在弹出的窗口选择 "库(Libraries)"-> "+" ->"来自Maven(From Maven)" 3.输入 mysql-connector-java, 并点击搜索开始搜索, 等待搜索结果后展开搜索结果, 选择mysql:mysql-connector-java:8.0.30 (建议、可选)勾选"下载到(Download to) 4.至此,外部库下载完成。 通过外部链接下载并添加 1.进入Maven官网:Maven 存储库:搜索/浏览/浏览 --- Maven Repository: Search/Browse/Explore (mvnrepository.com) 2.顶部搜索框输入mysql-connector-java,回车搜索。得到结果与下图类似,根据相关信息选择第二个 3.根据自身需求选择下载版本,本文章使用8.0.30版本,点击版本号进入页面 4.根据自身需求选择下载jar包或者添加依赖,本文章选择下载jar包,添加依赖不需要再下载jar包 5.回到IDEA,在项目下创建一个"lib"目录,目录名字可自取,建议"lib"存放外部库。 将下载好的jar包粘贴至"lib"目录,右键jar包选择"添加为库(Add as Library ...)" 弹出的窗口再选择 "OK" 即可 6.至此,添加完成。 使用方法 导入 import com.mysql.cj.jdbc.MysqlDataSource; import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; 连接mysql数据库 DataSource dataSource = new MysqlDataSource();//创建数据库资源对象 //强制转换,原因自查 setUrl()参数自定义,对于windows系统一般格式是: //jdbc:mysql://localhost:3306/创建的数据库名,此处我创建了一个名为accounts的数据库(creat database) ((MysqlDataSource) dataSource).

【乐吾乐2D可视化组态编辑器】事件

事件 乐吾乐2D可视化组态编辑器demo:https://2d.le5le.com/ 仅当画布锁定后(meta2d.store.data.locked = 1 or 2),触发事件。否则,干扰编辑。 定义 图元下的events属性为事件列表。 const pen = { name: "rectangle", text: "矩形", x: 100, y: 100, width: 100, height: 100, events: [ { name: "click", action: EventAction.Link, // 执行动作 where: { type:'comparison', key: "text", comparison: "==", value: "矩形" }, // 触发条件 value: "2d.le5le.com", }, ], }; Copy events对象说明 name - 事件类型action - 事件行为value - 事件附属数据params - 事件参数where - 触发条件 事件类型 事件类型name值如下: 鼠标进入 enter鼠标离开 leave选中 active取消选中 inactive单击 click双击 dblclick鼠标按下 mousedown鼠标抬起 mouseup值变化 valueUpdate const pen = { name: "

半监督学习概念与算法精讲

本文详细介绍常见的半监督学习算法及其实现,包括图形半监督学习、自训练、一致性正则化和生成对抗网络(GANs),并通过代码实战展示其具体应用。 关注TechLead,复旦AI博士,分享AI领域全维度知识与研究。拥有10+年AI领域研究经验、复旦机器人智能实验室成员,国家级大学生赛事评审专家,发表多篇SCI核心期刊学术论文,上亿营收AI产品研发负责人。 一、半监督学习概念 引言 在机器学习领域,数据是驱动模型训练的核心资源。然而,获取大量带标签的数据往往是昂贵且耗时的过程。半监督学习(Semi-Supervised Learning, SSL)通过利用大量未标记的数据和少量标记的数据,有效地缓解了这一问题。SSL不仅能够减少对标记数据的依赖,还能够在许多实际应用中提升模型的性能。 监督学习与无监督学习的比较 监督学习(Supervised Learning)依赖于大量带标签的数据来训练模型。这种方法的优势在于其明确的目标和易于评估的性能。然而,获取大规模标记数据集的成本高昂。 无监督学习(Unsupervised Learning)不依赖于带标签的数据,而是试图通过数据的内部结构和分布来学习模式。无监督学习的典型应用包括聚类和降维,但其缺点是难以直接评估和解释结果。 半监督学习位于监督学习和无监督学习之间,通过结合少量标记数据和大量未标记数据来构建模型。其目标是充分利用未标记数据的信息,提升模型的泛化能力。 半监督学习的定义和基本框架 定义:半监督学习是一种学习范式,旨在通过使用大量未标记数据和少量标记数据来训练模型。在许多实际应用中,获取未标记数据相对容易,而标记数据则相对稀缺且昂贵。SSL正是利用这种数据不平衡来提高学习效率和模型性能。 基本框架:半监督学习通常包括以下几个关键步骤: 数据准备:将数据集划分为标记数据和未标记数据。标记数据通常用于监督训练,而未标记数据用于引导模型的学习过程。 模型训练:通过联合使用标记数据和未标记数据进行模型训练。常见的方法包括自训练、图形半监督学习、一致性正则化和生成对抗网络等。 模型评估:使用独立的验证集或交叉验证来评估模型性能,确保模型能够有效利用未标记数据提升性能。 半监督学习的优势 减少标记需求:SSL能够有效减少对大规模标记数据的需求,降低数据获取的成本和时间。 提升模型性能:通过利用大量未标记数据,SSL可以捕捉到更多的数据分布信息,提升模型的泛化能力和鲁棒性。 应用广泛:SSL在许多实际场景中具有广泛的应用,包括图像分类、自然语言处理、语音识别等领域。 半监督学习的挑战 尽管半监督学习具有显著的优势,但在实际应用中仍然面临一些挑战: 模型复杂性:结合标记和未标记数据的训练过程可能导致模型复杂性增加,要求更高的计算资源和优化策略。 数据质量:未标记数据的质量和分布对于SSL的效果至关重要。低质量或噪声数据可能会对模型产生负面影响。 算法设计:设计有效的SSL算法需要在利用未标记数据和避免过拟合之间找到平衡,这对算法的设计和实现提出了更高的要求。 二、常见的半监督学习算法 半监督学习(Semi-Supervised Learning, SSL)通过利用大量未标记数据和少量标记数据,有效地提升了模型的性能和泛化能力。以下是一些常见且重要的半监督学习算法,每种方法在实际应用中都有其独特的优势和适用场景。 图形半监督学习(Graph-Based Semi-Supervised Learning) 图形半监督学习通过构建数据点之间的图结构,利用图上的连接关系来传播标签信息。其核心思想是相似的数据点在图结构中通常会有较强的连接,因此可以通过未标记数据点与标记数据点的连接关系来推断未标记数据点的标签。 典型方法 图正则化(Graph Regularization):通过在监督学习的目标函数中添加图正则项,使得相邻数据点的标签更趋于一致。例如,拉普拉斯正则化(Laplacian Regularization)是常用的图正则化方法之一。 图嵌入(Graph Embedding):将数据点嵌入到低维空间中,使得相似的数据点在低维空间中的距离较近。例如,拉普拉斯特征映射(Laplacian Eigenmaps)和局部线性嵌入(Locally Linear Embedding, LLE)等方法。 自训练(Self-Training) 自训练是一种简单而有效的半监督学习方法。它通过迭代的方式,逐步将高置信度的未标记数据加入到标记数据集中,重新训练模型,从而逐步提升模型性能。 步骤 初始训练:使用初始的标记数据训练一个基础模型。标签预测:使用训练好的模型对未标记数据进行预测,选取高置信度的预测结果。标签扩展:将高置信度的未标记数据及其预测标签加入到标记数据集中。迭代训练:使用扩展后的标记数据集重新训练模型,重复上述步骤直到收敛。 优势与挑战 自训练方法简单易行,适用于多种模型和任务。然而,它依赖于初始模型的性能,如果初始模型性能较差,可能会引入错误的标签,导致错误的积累和模型性能下降。 一致性正则化(Consistency Regularization) 一致性正则化方法通过施加扰动,使模型对输入数据的微小变化保持鲁棒性。其核心思想是模型在面对相似的输入时应该产生相似的输出。 典型方法 Π模型(Π Model):对输入数据添加噪声,通过最小化同一数据点不同扰动下的预测输出之间的差异来训练模型。 Mean Teacher:使用一个教师模型和一个学生模型,教师模型的参数是学生模型参数的指数滑动平均(EMA)。学生模型对输入数据添加噪声,教师模型对原始输入进行预测,通过最小化两者的预测差异来训练学生模型。 生成对抗网络(GANs)在半监督学习中的应用 生成对抗网络(Generative Adversarial Networks, GANs)通过生成器和判别器之间的对抗训练来生成逼真的数据样本。在半监督学习中,GANs不仅可以生成未标记数据,还可以利用生成的样本来改进分类器的性能。 典型方法 Semi-Supervised GAN:在标准GAN框架中,判别器不仅区分真实数据和生成数据,还将真实数据分为标记类别。生成器通过生成逼真的数据来欺骗判别器,从而提升分类器的性能。 Triple GAN:引入第三个网络——分类器,与生成器和判别器一起进行对抗训练,生成器生成的样本不仅需要欺骗判别器,还需要使分类器的预测结果与真实标签一致。

Unity3D 如何读取策划给定的Excel表格详解

在游戏开发中,策划人员经常使用Excel表格来管理和维护游戏中的各种数据,如角色属性、装备信息、关卡配置等。Unity3D作为一个强大的游戏引擎,本身并不直接支持读取Excel文件,但我们可以通过一些方法间接实现这一功能。本文将详细介绍如何在Unity3D中读取策划给定的Excel表格,并提供相应的技术详解和代码实现。 对惹,这里有一个游戏开发交流小组,大家可以点击进来一起交流一下开发经验呀! 方法一:使用第三方库 1. 引入第三方库 目前市面上有多个第三方库可以帮助我们在Unity中读取Excel文件,如EPPlus(主要用于.NET环境,但Unity支持有限,可能需要额外配置)、ClosedXML(同样适用于.NET,但Unity中可能不适用)以及专为Unity设计的Unity-Excel-Importer或CSVReader(因为Excel可以转换为CSV,CSV在Unity中更常用且易于处理)。但需要注意的是,由于Unity的Mono环境可能不完全兼容所有.NET库,因此推荐选择经过Unity社区验证的库或考虑将Excel转换为CSV文件。 2. 示例:使用CSVReader读取CSV文件 由于Excel文件可以轻松地转换为CSV(逗号分隔值)文件,这里我们以CSVReader为例,展示如何在Unity中读取CSV文件。 步骤1:安装CSVReader 对于Unity项目,你可以通过Unity的Asset Store搜索CSVReader插件,或者使用如TinyCsvParser这样的开源库,通过NuGet for Unity安装。 步骤2:准备CSV文件 将Excel文件保存为CSV格式,并确保数据格式正确,列名清晰。 步骤3:编写代码读取CSV csharp复制代码 using System.Collections.Generic;using TinyCsvParser;public class CsvData{public string Name { get; set; }public int Age { get; set; }// 可以根据需要添加更多属性}public class CsvDataMapping : CsvMapping<CsvData>{public CsvDataMapping(){MapProperty(0, x => x.Name);MapProperty(1, x => x.Age, new Int32Converter());// 映射其他属性}}public class DataManager : MonoBehaviour{void Start(){var csvParserOptions = new CsvParserOptions(true, ',');var csvParser = new CsvParser<CsvData>(new CsvDataMapping(), csvParserOptions);var csvReader = new StreamReader("

Lucene 索引文件详解:结构与工作原理

Lucene 索引文件详解:结构与工作原理 Apache Lucene 是一个强大的搜索引擎库,用于为大规模文本数据创建搜索和索引功能。Lucene 使用特定的文件格式来存储索引,以便高效地进行搜索。理解这些索引文件格式对于调优性能和解决潜在问题非常重要。以下是 Lucene 索引文件的详细说明: 1. 概述 一个 Lucene 索引由多个文件组成,每个文件都有特定的功能。主要文件类型包括: 段文件(Segments):存储索引的数据结构。字段信息文件(Field Info Files):描述字段的元数据。文档存储文件(Document Stores):存储文档内容。词典文件(Term Dictionaries):存储词项及其元数据。频率文件(Frequency Files):记录词项出现的频率。位置信息文件(Positions Files):记录词项在文档中的位置信息。 2. 具体文件类型 Segments File (segments_N) 作用:维护索引的段信息。每个索引有一个 segments_N 文件,其中 N 是文件版本号。 内容:包含段的元数据,如段号、最大文档数、段状态等。 示例内容: Segment 0: _0 Segment 1: _1 Segment Info Files (_N.si) 作用:描述一个特定段的信息。 内容:包括段名称、文档数、生成信息、版本等。 示例内容: Segment Name: _0 Document Count: 100 Version: 8.6.0 Field Info Files (_N.fnm) 作用:存储字段的元数据。内容:字段名称、字段编号、字段类型(例如,字符串、整数等)、是否存储字段、是否索引字段等。示例内容:Field 0: content (Indexed, Stored) Field 1: title (Indexed, Stored) Document Stores Stored Fields File (_N.

dom4j 操作 xml 之按照顺序插入标签

最近学了一下 dom4j 操作 xml 文件,特此记录一下。 public class Dom4jNullTagFiller { public static void main(String[] args) throws DocumentException { SAXReader reader = new SAXReader(); //加载 xml 文件 Document document = reader.read("C:\\Users\\24596\\Desktop\\test.xml"); //首先获取根元素,然后调用 element 或者 elements 方法获取子元素 Element root = document.getRootElement(); // 获取名为 EInvoiceData 的子元素 Element eInvoiceData = root.element("EInvoiceData"); //因为需要按照顺序插入标签,所以应该定义好标签的顺序,便于查找之前的标签,并在对应位置插入当前标签 String[] tagNames = {"ItemName", "SpecMod", "MeaUnits", "Quantity", "UnPrice", "Amount", "TaxRate", "ComTaxAm", "TotaltaxIncludedAmount", "TaxClassificationCode"}; //获取 EInvoiceData 下的名为 IssuItemInformation 的元素列表,因为 EInvoiceData 下有多个 IssuItemInformation ,每个 IssuItemInformation 都需要进行操作,当前也可以获取指定索引的 IssuItemInformation 元素 List<Element> issuItemInformations = eInvoiceData.

基于大数据+爬虫+数据可视化+SpringBoot+Vue的智能孕婴护理管理与可视化平台系统设计和实现(源码+LW+部署讲解)

博主介绍:✌全网粉丝50W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文降重、长期答辩答疑辅导、腾讯会议一对一专业讲解辅导答辩、模拟答辩演练、和理解代码逻辑思路。 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 2022-2024年最全的计算机软件毕业设计选题大全:1000个热门选题推荐✅ Java项目精品实战案例《100套》 Java微信小程序项目实战《100套》 大数据项目实战《100套》 Python项目实战《100套》 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人​ 系统介绍: 智能孕婴护理平台,致力于为孕婴家庭提供专业、便捷的护理服务。利用先进技术,实现个性化定制、远程监控与即时指导,让孕婴护理更科学、安全。平台致力于打造一站式解决方案,满足家庭在孕期、婴儿护理等方面的全方位需求。 本论文将总体分析智能孕婴护理需求,再从不同角度分析具体功能需求,运用Java相关技术,采用MySQL数据库,讨论如何设计并实现一个智能孕婴护理管理系统。分析和设计主要从管理员和用户二个角色上展开研究,介绍了各个功能模块的实现,并通过系统测试对智能孕婴护理管理系统进行调试,将各个功能的测试结果与期望设计进行逐一比对,找出BUG和欠缺之处,从而进一步优化改进系统。 本套基于Java的智能孕婴护理管理系统的设计与实现,希望能让用户通过互联网得到方便而快捷的系统管理体验,在此基础的同时提高工作效益。 程序上交给用户进行使用时,需要提供程序的操作流程图,这样便于用户容易理解程序的具体工作步骤,现如今程序的操作流程都有一个大致的标准,即先通过登录页面提交登录数据,通过程序验证正确之后,用户才能在程序功能操作区页面操作对应的功能。 ​ 程序操作流程图 首先前端通过Vue和axios发送HTTP请求到后端的登录接口。在后端接收登录请求的Controller会使用`@RequestParam Map<String, Object> params`来接收前端传递的用户参数,用户名和密码。然后后端根据接收到的参数创建一个查询条件封装对象MyBatis的EntityWrapper用于构建查询条件。接着在业务层,调用相应的service方法来查询数据库中是否存在匹配的用户信息。这个查询方法Login()会将前端传递的对象参数传递到后台的DAO层,进行数据库的交互操作。如果存在符合条件的用户,则会返回相关的用户信息。最后在后端控制器中将查询结果封装成响应体,通过`return R.ok().put("data", userService.selecView(ew))`将用户信息返回给前端。前端收到响应后,可以通过调用Vue、ElementUI等组件来渲染登录结果,例如显示用户信息或者跳转到相应的页面。 详细视频演示 请联系我获取更详细的演示视频 功能截图: 在系统前台首页,调用`$route(newValue)`方法监听路由变化,根据当前的路由地址来确定活动菜单的索引,并且根据路由的哈希部分(即URL的`#`后面的部分)来判断是否需要滚动页面到顶部或者某个特定元素的位置。如果不是首页,会将页面滚动到指定元素处,否则滚动到页面顶部。另外通过`headportrait()`方法用于更新组件渲染点前用户头像。在用户登录后,后端返回了新的用户信息,需要及时更新页面上的用户头像信息。 5.1.1系统首页页面 当人们打开系统的网址后,首先看到的就是首页界面。在这里,人们能够看到系统的导航条,通过导航条导航进入各功能展示页面进行操作。系统首页界面如图5-1所示: 图5-1 系统首页界面 在注册流程中,用户在Vue前端填写必要信息(如用户名、密码等)并提交。前端将这些信息通过HTTP请求发送到Java后端。后端处理这些信息,检查用户名是否唯一,并将新用户数据存入MySQL数据库。完成后,后端向前端发送注册成功的确认,前端随后通知用户完成注册。这个过程实现了新用户的数据收集、验证和存储。注册页面如图5-2所示: 图5-2系统注册页面 孕婴信息:在孕婴信息页面输入标题、栏目进行查询可以看到孕婴详细信息,并根据需要进行操作;孕婴信息页面如图5-3所示: 图5-3孕婴信息详细页面 孕婴商品:在孕婴商品页面输入商品标题、价格(最小价格、最大价格)进行查询,可以看到孕婴商品信息,并根据需要进行立即购买、添加到购物车、评论或收藏操作;孕婴商品页面如图5-4所示: 图5-4孕婴商品详细页面 科普常识:在科普常识页面输入科普名称进行查询,可以看到科普常识信息,并根据需要进行评论、点赞或收藏操作;科普常识页面如图5-5所示: 图5-5科普常识详细页面 孕婴大讲堂:在孕婴大讲堂页面输入讲堂标题进行查询,可以看到孕婴大讲堂信息,并根据需要进行评论或收藏操作;孕婴大讲堂页面如图5-6所示: 图5-6孕婴大讲堂详细页面 购物车:购物车模块在Vue前端允许用户选择并添加商品到他们的购物车。这些信息通过HTTP请求发送到Java后端,后端处理这些请求并在MySQL数据库中更新用户的购物车内容。用户可以查看、修改购物车中的商品数量或移除商品。最后,在结账时,用户提交订单,后端验证支付信息并处理订单,同时更新数据库中的库存状态。这个过程实现了一个从选择商品到完成购买的完整交易流程。购物车页面如图5-7所示: 图5-7购物车详细页面 5.1.2个人中心 个人中心:在个人中心页面可以对个人信息、修改密码、我的发布、我的订单、我的收藏进行详细操作;如图5-8所示: 图5-8个人中心页面 5.2后台管理员模块实现 在登录流程中,用户首先在Vue前端界面输入用户名和密码。这些信息通过HTTP请求发送到Java后端。后端接收请求,通过与MySQL数据库交互验证用户凭证。如果认证成功,后端返回给前端,允许用户访问系统。这个过程涵盖了从用户输入到系统验证和响应的全过程。后台登录界面图5-9所示: 图5-9后台登录界面 管理员进入主页面,主要功能包括对用户管理、科普分类管理、商品类型管理、孕婴信息管理、孕婴商品管理、科普常识管理、孕婴大讲堂管理、交流论坛、系统管理、订单管理、我的信息等进行操作。管理员主页面如图5-10所示: 图5-10 管理员主界面 用户功能在视图层(view层)进行交互,比如点击“查找、添加或删除”按钮或填写用户表单。这些用户表单动作被视图层捕获并作为请求发送给相应的控制器层(controller层)。控制器接收到这些请求后,调用服务层(service层)以执行相关的业务逻辑,例如验证输入数据的有效性和与数据库的交互。服务层处理完这些逻辑后,进一步与数据访问对象层(DAO层)交互,后者负责具体的数据操作如查看、修改或删除用户信息,并将操作结果返回给控制器。最终,控制器根据这些结果更新视图层,以便用户功能可以看到最新的信息或相应的操作反馈。如图5-11所示: 图5-11用户界面 科普分类管理功能在视图层(view层)进行交互,比如点击“添加或删除”按钮或填写科普分类管理表单。这些科普分类管理表单动作被视图层捕获并作为请求发送给相应的控制器层(controller层)。控制器接收到这些请求后,调用服务层(service层)以执行相关的业务逻辑,例如验证输入数据的有效性和与数据库的交互。服务层处理完这些逻辑后,进一步与数据访问对象层(DAO层)交互,后者负责具体的数据操作如修改或删除科普分类管理信息,并将操作结果返回给控制器。最终,控制器根据这些结果更新视图层,以便科普分类管理功能可以看到最新的信息或相应的操作反馈。如图5-12所示: 图5-12科普分类管理界面 商品类型管理功能在视图层(view层)进行交互,比如点击“添加或删除”按钮或填写商品类型管理表单。这些商品类型管理表单动作被视图层捕获并作为请求发送给相应的控制器层(controller层)。控制器接收到这些请求后,调用服务层(service层)以执行相关的业务逻辑,例如验证输入数据的有效性和与数据库的交互。服务层处理完这些逻辑后,进一步与数据访问对象层(DAO层)交互,后者负责具体的数据操作如修改或删除商品类型管理信息,并将操作结果返回给控制器。最终,控制器根据这些结果更新视图层,以便商品类型管理功能可以看到最新的信息或相应的操作反馈。如图5-13所示: 图5-13商品类型管理界面 孕婴信息管理功能在视图层(view层)进行交互,比如点击“查询、添加、删除或爬取数据”按钮或填写孕婴信息管理表单。这些孕婴信息管理表单动作被视图层捕获并作为请求发送给相应的控制器层(controller层)。控制器接收到这些请求后,调用服务层(service层)以执行相关的业务逻辑,例如验证输入数据的有效性和与数据库的交互。服务层处理完这些逻辑后,进一步与数据访问对象层(DAO层)交互,后者负责具体的数据操作如查看、修改、查看评论或删除孕婴信息管理信息,并将操作结果返回给控制器。最终,控制器根据这些结果更新视图层,以便孕婴信息管理功能可以看到最新的信息或相应的操作反馈。如图5-14所示: 图5-14孕婴信息管理界面 论文参考: 1 绪 论 1.1研究背景与意义 1.2系统研究现状 1.

微软GraphRAG +本地模型+Gradio 简单测试笔记

安装 pip install graphrag mkdir -p ./ragtest/input #将文档拷贝至 ./ragtest/input/ 下 python -m graphrag.index --init --root ./ragtest 修改settings.yaml encoding_model: cl100k_base skip_workflows: [] llm: api_key: ${GRAPHRAG_API_KEY} type: openai_chat # or azure_openai_chat model: qwen2-instruct model_supports_json: true # recommended if this is available for your model. # max_tokens: 4000 # request_timeout: 180.0 api_base: http://192.168.2.2:9997/v1/ # api_version: 2024-02-15-preview # organization: <organization_id> # deployment_name: <azure_model_deployment_name> # tokens_per_minute: 150_000 # set a leaky bucket throttle # requests_per_minute: 10_000 # set a leaky bucket throttle # max_retries: 10 # max_retry_wait: 10.

创建一个矩形,当鼠标进入这个矩形的时候,这个矩形边线变色,且鼠标变成手型

1.概要 创建一个矩形,当鼠标进入这个矩形的时候,这个矩形边线变色,且鼠标变成手型 2.代码 #include <QApplication> #include "customRectWidget.h" /* * qt 6.7版, 创建一个矩形,当鼠标进入这个矩形的时候,这个矩形边线变色, * 且鼠标变成手型,且这时候按下鼠标,鼠标可以上下拖动这个矩形, * 当鼠标松开的时候停止移动,但鼠标离开矩形的时候,矩形颜色恢复,完整代码举例; * 强调一下,鼠标进入矩形内,颜色变化,鼠标变成手型,不是鼠标进入矩形所在的控件就有上述变化。 */ int main(int argc, char *argv[]) { QApplication app(argc, argv); CustomRectWidget widget; widget.show(); return app.exec(); } #ifndef CUSTOMRECTWIDGET_H #define CUSTOMRECTWIDGET_H #include <QWidget> #include <QMouseEvent> class CustomRectWidget : public QWidget { Q_OBJECT public: explicit CustomRectWidget(QWidget *parent = nullptr); protected: void paintEvent(QPaintEvent *event) override; void mouseMoveEvent(QMouseEvent *event) override; void mousePressEvent(QMouseEvent *event) override; void mouseReleaseEvent(QMouseEvent *event) override; void enterEvent(QEnterEvent *event) override; void leaveEvent(QEvent *event) override; void setIsChange(const QPoint &mousePos); private: QRect rect; bool dragging; QPoint dragStartPoint; QColor hoverColor; QColor normalColor; bool isChange; bool isMouseInsideRect(const QPoint &mousePos) const; }; #endif // CUSTOMRECTWIDGET_H #include "

复合翼无人机搭载自组网模块集群组网技术实现详解

复合翼无人机作为一种具备高效飞行和长航时特点的飞行器,在多个领域如军事侦察、环境监测、灾害救援等都有着广泛的应用。而为了实现复合翼无人机之间的高效通信,搭载自组网模块实现集群组网技术显得尤为重要。本文将详细介绍复合翼无人机搭载自组网模块集群组网技术的实现方式。 自组网模块概述 自组网模块是一种用于无人机集群组网的通信设备,具有以下特点: 1. 灵活性:自组网模块支持多种通信协议和频段,能够适应不同的通信环境和需求。 2. 动态性:自组网模块能够根据无人机的位置和运动状态,动态地调整网络结构,确保通信的连续性和稳定性。 3. 抗干扰性:采用先进的抗干扰技术,有效避免无线通信中的干扰和冲突,保证数据传输的可靠性。 4. 协同性:支持无人机之间的协同工作,通过信息共享和任务分担,提高整个无人机集群的作战效率和协同能力。 采用无线宽带自组网技术实现的专网通信系统,可为视频、语音、数据等基于IP的多媒体业务提供透明的传输通道。无需依赖基础通信设施,无需人工配置,即可实现随时随地快速组建通信网络。该产品具有具有体积小、重量轻、易携带的特点等特点,便于无人机、无人车等系统的搭载。上电后可快速与其他节点自动组网,扩大现有网络的地域覆盖范围,实现空地一体化通信。模块上具有网口和串口,可分别连接控制信号和摄像机,采集的图像画面或传感器数据均可通过自组网链路实时回传。可用于复杂地形条件下快速部署现场网络,利用无中心、多跳连接、动态组网的特性,加强机动场景下的通信能力。 产品特点 多种组网模式:支持点对点、点对多、多对多各种组网模式,支持星型、链型、网型多种动态拓扑结构 多种业务数据:支持视频、语音、位置、传感器等各类基于IP的数据传输,具备网口、串口、WIFI、GPS接口,可扩展HDMI接口 一体化安装:可选配支架适配大疆M系列无人机,一体化安装快速便捷,可选配内置电池独立供电 尺寸小巧:尺寸仅为149mm×70mm×33mm,重量约400克,射频输出功率2W可调,可适用于远距离传输场景。 高传输速率:采用MIMO双发双收天线技术,最大传输速率可达80Mbps以上 机动性强:支持移动环境下使用,系统具有智能动态调整网络拓扑的能力 复合翼无人机搭载自组网模块的实现 1. 模块选型与集成:根据复合翼无人机的特点和任务需求,选择适合的自组网模块,并将其集成到无人机上。这包括模块的电路设计、接口设计、固件升级等方面的工作。 2. 无线通信频段选择:根据应用环境和通信需求,选择适合的无线通信频段。常用的频段包括2.4GHz、5.8GHz等。选择合适的频段能够确保无人机之间的通信距离和通信质量。 3. 网络拓扑结构设计:根据无人机集群的规模和任务需求,设计合适的网络拓扑结构。常见的网络拓扑结构包括星型结构、网状结构等。设计合理的网络拓扑结构能够提高无人机集群的通信效率和稳定性。 4. 通信协议与加密技术:选择适合的通信协议和加密技术,确保无人机之间的通信安全和数据传输的保密性。常用的通信协议包括ZigBee、Wi-Fi等,而加密技术则可以采用AES、DES等加密算法。 5. 集群管理功能实现:通过自组网模块实现无人机集群的统一管理和控制。这包括无人机的编队飞行、任务分配、信息共享等方面的功能。实现集群管理功能能够提高无人机集群的协同作战能力和效率。 技术特点与应用场景 1. 技术特点: - 无需依赖基础通信设施,即可实现快速部署和通信网络的建立。 - 具有高机动性和灵活性,能够适应复杂地形和环境下的通信需求。 - 具有较强的抗干扰能力和保密性,确保数据传输的可靠性和安全性。 - 支持多种业务和多种接入方式,满足无人机集群在复杂环境下的多样化通信需求。 2. 应用场景: - 军事侦察:通过复合翼无人机搭载自组网模块实现集群组网技术,可以快速部署到战区,实现无人机之间的实时通信和信息共享。 - 环境监测:利用复合翼无人机的长航时特点,结合自组网模块实现大规模环境监测网络的建设和运维。 - 灾害救援:在灾害发生后,快速部署复合翼无人机集群进行灾情侦察和救援指挥,提高救援效率和成功率。 综上所述,复合翼无人机搭载自组网模块集群组网技术是一种高效、灵活、安全的通信解决方案,在多个领域都有着广泛的应用前景。

【 香橙派 AIpro评测】烧系统运行部署LLMS大模型跑开源yolov5物体检测并体验Jupyter Lab AI 应用样例(新手入门)

文章目录 一、引言⭐1.1下载镜像烧系统⭐1.2开发板初始化系统配置远程登陆💖 远程ssh💖查看ubuntu桌面💖 远程向日葵 二、部署LLMS大模型&yolov5物体检测⭐2.1 快速启动LLMS大模型💖拉取代码💖下载mode数据💖启动模型对话 ⭐2.2yolov5图片物体检测 三、体验 内置AI 应用样例⭐3.1运行 jupyterLab💖进入sample 启动jupyterLab ⭐3.2打开Jupyter Lab页面💖界面操作 ⭐3.3 释放内存💖 关闭样例 ⭐3.4运行目标检测样例⭐3.5运行图像曝光增强样例 四、总结 一、引言 大家好,我是yma16,在收到香橙派 AIpro 开发版之后开始动手实操,本期分享 【 香橙派 AIpro评测】烧系统运行部署LLMS大模型跑开源yolov5物体检测并体验Jupyter Lab AI 应用样例(新手入门) 香橙派 AIpro Orange Pi AI Pro 开发板是香橙派联合华为精心打造的高性能 AI 开发板,其搭载了昇腾 AI 处理器,可提供 8TOPS INT8 的计算能力,内存提供了 8GB 和 16GB两种版本。可以实现图像、视频等多种数据分析与推理计算,可广泛用于教育、机器人、无人机等场景。 开发版图解 前期的准备工作如下 ⭐1.1下载镜像烧系统 官方下载镜像: http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-AIpro.html 下载unbuntu系统 官方的下载烧录镜像软件 https://etcher.balena.io/#download-etcher 下载昇腾开发一键制卡工具 点击下载 选择镜像、选择挂载的内存卡,等待约10分钟(3.0接口) ⭐1.2开发板初始化系统配置远程登陆 将烧好的unbuntu卡放入sd card槽 正面 反面 输入密码 (操作手册有密码:Mind@123) 远程ssh配置 sudo vi /etc/ssh/sshd_config #增加以下配置允许通过ssh登录 #PermitRootLogin prohibit-password PermitRootLogin yes #修改完成后需要重启ssh服务命令如下 sudo service ssh restart 修改root密码

LG 选择 Flutter 来增强其智能电视操作系统 webOS

可以这个话题会让大多数人困惑,2024 年了为什么还会冒出 webOS 这种老古董?然后 LG 为什么选择 webOS ?现在为什么又选择 Flutter ? 其实早在 Google I/O 发布 Flutter 3.22 版本的时候,就提到了 LG 选择 Flutter 来增强其智能电视操作系统 webOS,并预计在 2025 年发布。 而在 2024/7/15 的时候,LG 官方也正式官宣:“New and Successful Experiment of webOS with Flutter for Better Performance and Playful Experience” 。 https://webostv.developer.lge.com/news/2024-07-15-new-and-successful-experiment-of-webos-with-flutter 那么什么是 webOS ?它为什么又是一个 TV 的 OS ? WebOS 顾名思义是 Web 操作系统的缩写,是 LG 独家拥有的基于 Linux 的操作系统,主要集成到他们的智能电视系统中,所以它是属于基于 Linux 内核的多任务智能电视操作系统。 但是其实它并不是 LG 发起,WebOS 最初由 Palm 于 2009 年作为移动操作系统推出,最初在多款 Palm 和 HP 智能手机中投入使用,但是众所周知,它凉了,于是 2013 年,LG 从 HP 收购了 webOS,导致 HP 决定将 webOS 开源

[C++] 深度剖析C_C++内存管理机制

文章目录 内存分布内存分布图解 C语言中动态内存管理方式malloc:callocrealloc C++内存管理方式内置类型**自定义类型** operator new & operator deleteoperator new & operator delete函数operator newoperator delete **new T[N]** 与**delete[]** **定位new表达式(placement-new)**如何使用注意事项 malloc/free和new/delete的区别 类和对象三部曲: [C++] 轻熟类和对象 [C++] 由浅入深理解面向对象思想的组成模块 类和对象:C++11新特性与知识补充 内存分布 内存分布图解 栈又叫堆栈–非静态局部变量/函数参数/返回值等等,栈是向下增长的。内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口 创建共享共享内存,做进程间通信。堆用于程序运行时动态内存分配,堆是可以上增长的。数据段–存储全局数据和静态数据。代码段–可执行的代码/只读常量 C语言中动态内存管理方式 malloc: void* malloc(size_t size);功能:malloc函数用于在堆上分配一块连续的内存空间。它接受一个参数,即所需内存的大小(以字节为单位),并返回指向这块内存的指针。初始化:malloc不会对分配的内存进行初始化,内存中的内容是未定义的,可能是之前的值或者全零,具体取决于操作系统。使用场景:当不需要初始化内存或者特定初始化时使用。 calloc void* calloc(size_t num, size_t size);功能:calloc也用于在堆上分配内存,但它接受两个参数,分别是要分配的元素数量和每个元素的大小(以字节为单位)。calloc会确保分配的内存区域中的每个字节都被初始化为零。初始化:与malloc不同,calloc会将分配的内存全部初始化为零,这使得它适合用于数组或结构体等需要初始化为默认值的情况。使用场景:当需要一个清零的内存块时使用,比如初始化数组。 realloc void* realloc(void* ptr, size_t size);功能:realloc用于调整先前通过malloc、calloc或realloc分配的内存块的大小。它接受两个参数,第一个是之前分配的内存的指针,第二个是新的大小(可以比原来大也可以比原来小)。初始化:realloc不涉及初始化新分配的内存部分,如果扩大了内存块,新增的部分通常也是未定义的值。使用场景:当原先分配的内存大小不再满足需求,需要扩大或减小内存空间时使用。需要注意的是,如果减小内存空间,超出新大小的部分数据会被截断。 C++内存管理方式 内置类型 // 动态申请一个int类型的空间 int* ptr4 = new int; // 动态申请一个int类型的空间并初始化为10 int* ptr5 = new int(10); // 动态申请10个int类型的空间 int* ptr6 = new int[10]; delete ptr4; delete ptr5; delete[] ptr6; // 其他方式 int* p3 = new int(0); int* p4 = new int[10]{ 0 }; int* p5 = new int[10]{1,2,3,4,5}; // 未初始化的用0补齐 注意:申请和释放单个元素的空间,使用new和delete操作符,申请和释放连续的空间,使用new[]和delete[]。