当前位置: 首页 > news >正文

基于SeaShips数据集的yolov8训练教程

之前已经试过在yolov3和faster-rcnn上训练SeaShips数据集,本次在yolov8上进行训练。

yolov8的训练有两种方式,一种是在mmdetection框架下下载mmyolo运行,另一种是直接采用ultralytics。本文两种方法都会介绍。


目录

一、mmyolo

1.1 创建环境

1.2 数据集准备

1.3 运行yolov8

二、ultralytics

2.1 下载ultralytics

2.2 数据集准备

2.3 运行yolov8

三、运行结果


一、mmyolo

官网链接:GitHub - open-mmlab/mmyolo: OpenMMLab YOLO series toolbox and benchmark. Implemented RTMDet, RTMDet-Rotated,YOLOv5, YOLOv6, YOLOv7, YOLOv8,YOLOX, PPYOLOE, etc.

mmyolo支持yolo许多系列的算法:

1.1 创建环境

conda create -n mmyolo python=3.8 pytorch==1.10.1 torchvision==0.11.2 cudatoolkit=11.3 -c pytorch -y
conda activate mmyolo
pip install openmim
mim install "mmengine>=0.6.0"
mim install "mmcv>=2.0.0rc4,<2.1.0"
mim install "mmdet>=3.0.0,<4.0.0"
git clone https://github.com/open-mmlab/mmyolo.git
cd mmyolo
# Install albumentations
pip install -r requirements/albu.txt
# Install MMYOLO
mim install -v -e .

按照上述步骤安装好mmyolo并创建属于自己的虚拟环境。

创建环境出错的可以看看我的这篇文章:基于kitti数据集的3D目标检测算法的训练流程_kitti 3d目标检测-CSDN博客

里面详细的讲解了环境的配置等操作。

mmyolo装好之后应该会有这样的文件夹:

1.2 数据集准备

我们的SeaShips数据集格式是这样的:

Annotations里面是所有图像的标注文件(.xml),ImageSets是测试、训练和验证数据集划分文件(txt),JPEGImages里是所有的图像文件。

我们需要将数据集转换成yolov8允许的格式:

(这里annotations文件夹其实不需要)只需要test、train和val三个文件夹,每个文件夹下都有images和labels两个子文件夹,images里面是对应的图像数据,labels是txt格式的标注文件。下面是转换代码文件:

import os
import shutil
import xml.etree.ElementTree as ET
from tqdm import tqdm# #################################################
# 用户需修改以下路径和类别映射
# #################################################
# 原始数据集路径
root_dir = "path/to/seaships"  # 数据集根目录
annotations_dir = os.path.join(root_dir, "Annotations")
imagesets_dir = os.path.join(root_dir, "ImageSets/Main")  # 假设划分文件在此目录
jpegimages_dir = os.path.join(root_dir, "JPEGImages")# YOLOv8 输出路径
output_dir = "path/to/yolov8_dataset"  # 新数据集保存位置# 类别名称映射(根据实际标注修改)
class_mapping = {"ship": 0  # 示例:XML中标注的类别名称 -> YOLO类别ID
}# #################################################
# 核心代码(无需修改)
# #################################################def convert_annotation(xml_path, txt_path, img_width, img_height):"""将 XML 标注转换为 YOLO 格式的 TXT 文件"""tree = ET.parse(xml_path)root = tree.getroot()with open(txt_path, 'w') as f:for obj in root.findall('object'):class_name = obj.find('name').textif class_name not in class_mapping:continue  # 跳过未定义类别class_id = class_mapping[class_name]bbox = obj.find('bndbox')xmin = float(bbox.find('xmin').text)ymin = float(bbox.find('ymin').text)xmax = float(bbox.find('xmax').text)ymax = float(bbox.find('ymax').text)# 计算归一化坐标x_center = (xmin + xmax) / 2 / img_widthy_center = (ymin + ymax) / 2 / img_heightwidth = (xmax - xmin) / img_widthheight = (ymax - ymin) / img_heightf.write(f"{class_id} {x_center:.6f} {y_center:.6f} {width:.6f} {height:.6f}\n")def get_image_size(xml_path):"""从 XML 文件中获取图像尺寸"""tree = ET.parse(xml_path)root = tree.getroot()size = root.find('size')return (int(size.find('width').text),int(size.find('height').text))def process_split(split_name):"""处理单个划分集(train/val/test)"""# 读取划分文件split_file = os.path.join(imagesets_dir, f"{split_name}.txt")with open(split_file, 'r') as f:filenames = [line.strip() for line in f.readlines()]# 创建输出目录img_output_dir = os.path.join(output_dir, split_name, "images")label_output_dir = os.path.join(output_dir, split_name, "labels")os.makedirs(img_output_dir, exist_ok=True)os.makedirs(label_output_dir, exist_ok=True)# 处理每个文件for filename in tqdm(filenames, desc=f"Processing {split_name}"):# 原始文件路径xml_path = os.path.join(annotations_dir, f"{filename}.xml")img_src = os.path.join(jpegimages_dir, f"{filename}.jpg")# 目标文件路径img_dst = os.path.join(img_output_dir, f"{filename}.jpg")txt_dst = os.path.join(label_output_dir, f"{filename}.txt")# 复制图片shutil.copy(img_src, img_dst)# 转换标注if os.path.exists(xml_path):img_width, img_height = get_image_size(xml_path)convert_annotation(xml_path, txt_dst, img_width, img_height)if __name__ == "__main__":# 处理所有划分集for split in ["train", "val", "test"]:process_split(split)print("数据集转换完成!")print(f"输出目录结构:\n{output_dir}")print("|- train/")print("   |- images/")print("   |- labels/")print("|- val/")print("   |- images/")print("   |- labels/")print("|- test/")print("   |- images/")print("   |- labels/")

修改代码中的路径为自己相应文件夹路径运行改代码即可完成数据集的转换。

1.3 运行yolov8

数据集转换完成之后我们还要修改配置文件中数据集的路径,配置文件在~/mmyolo/configs/yolov8

这下面的py文件都是我们的配置文件,可以自己选一个去运行,将其中的路径都修改成自己的就好了。

运行以下命令就可以跑起来了:

python ~/mmyolo/tools/train.py ~/mmyolo/configs/yolov8/{your yolov8 setup file.py} [--work-dir {the path to your output directory}]

第一个是你的训练文件(如果是进行测试则用test.py),第二个是你的配置文件,最后一个py的位置就填入你自己想运行的配置文件,后面的work-dir参数可选,用来指定输出文件的路径,如果不指定则会自动生成一个work_dir文件夹保存输出文件。

二、ultralytics

官网链接:Quickstart - Ultralytics YOLO Docs

首先还是要安装环境,参考上面。

2.1 下载ultralytics

运行以下命令

# Install the ultralytics package from PyPI
pip install ultralytics

或者这个命令也可以:

# Install the ultralytics package from GitHub
pip install git+https://github.com/ultralytics/ultralytics.git@main

安装完成后会有以下文件夹:

2.2 数据集准备

和1.2一样,把数据集转换成yolov8允许的格式后,我们还要在数据集文件夹下添加一个yaml文件:

文件内容如下:

# dataset path
path: your path to the dataset
train: train
val: val
test: test
#test: ./dataset/images/test# number of classes
nc: 6# class names
names: ['passenger ship', 'ore carrier', 'bulk cargo carrier', 'general cargo ship', 'container ship', 'fishing boat']

记得把path那里修改成你自己的路径。

2.3 运行yolov8

运行以下命令就可以跑起来了:

yolo task=detect mode=train model=~/ultralytics/models/v8/yolov8l.yaml data=~/SeaShips_yolov8/seaships.yaml epochs=200 workers=8 batch=16 

mode和data分别为yolov8的模型和数据集下添加的文件(均为.yaml后缀),后面的epoch代表训练的轮数,workers是并行计算数量,batch是批处理的数量,根据自己的需求更改。

这种方式的结果会存储在ultralytics文件夹下的一个叫runs的子文件夹下。

detect表示进行的任务种类,train3表示跑的次数,我之前运行过两次都因为没有配置好失败。

三、运行结果

文件比较大,这里只展示最后的结果:

可以看到,最后的运行结果中,mAP50达到了0.97682,但mAP50—95却只有0.78122。

相关文章:

基于SeaShips数据集的yolov8训练教程

之前已经试过在yolov3和faster-rcnn上训练SeaShips数据集&#xff0c;本次在yolov8上进行训练。 yolov8的训练有两种方式&#xff0c;一种是在mmdetection框架下下载mmyolo运行&#xff0c;另一种是直接采用ultralytics。本文两种方法都会介绍。 目录 一、mmyolo 1.1 创建环…...

【时间序列聚类】从数据中发现隐藏的模式

在大数据时代&#xff0c;时间序列数据无处不在。无论是股票市场的价格波动、天气的变化趋势&#xff0c;还是用户的点击行为&#xff0c;这些数据都随着时间推移而产生。然而&#xff0c;面对海量的时间序列数据&#xff0c;我们如何从中提取有价值的信息&#xff1f;答案之一…...

在线研讨会 | 加速游戏和AI应用,全面认识Imagination DXTP GPU

近日&#xff0c;Imagination宣布推出 Imagination DXTP GPU IP&#xff0c;该产品重新定义了智能手机和其他功耗受限设备的图形和计算加速。它专为高效的效率而设计&#xff0c;能够提供运行AI、游戏和用户界面体验所需的性能&#xff0c;确保这些体验可以全天候流畅且持续地运…...

百度SEO关键词布局从堆砌到场景化的转型指南

百度SEO关键词布局&#xff1a;从“堆砌”到“场景化”的转型指南 引言 在搜索引擎优化&#xff08;SEO&#xff09;领域&#xff0c;关键词布局一直是核心策略之一。然而&#xff0c;随着搜索引擎算法的不断升级和用户需求的多样化&#xff0c;传统的“关键词堆砌”策略已经…...

数据库基础练习1

目录 1.创建数据库和表 2.插入数据 创建一个数据库&#xff0c;在数据库种创建一张叫heros的表&#xff0c;在表中插入几个四大名著的角色&#xff1a; 1.创建数据库和表 #创建表 CREATE DATABASE db_test;#查看创建的数据库 show databases; #使用db_test数据库 USE db_te…...

UVC for USBCamera in Android

基于UVC 协议&#xff0c;完成USBCamera 开发 文章目录 一、目的&#xff1a;二、USBCamera 技术实现方案难点 三、误区&#xff1a;四、基础补充、资源参考架构图了解Camera相关专栏零散知识了解部分相机源码参考&#xff0c;学习API使用&#xff0c;梳理流程&#xff0c;偏应…...

C++学习之路,从0到精通的征途:入门基础

目录 一.C的第一个程序 二.命名空间 1.namespace的价值 2.命名空间的定义 3.命名空间使用 三.C的输入与输出 1.<iostream> 2.流 3.std(standard) 四.缺省参数 1.缺省参数的定义 2.全缺省/半缺省 3.声明与定义 ​五.函数重载 1.参数个数不同 2.参数类型不…...

RSA-OAEP填充方案与定时攻击防护

目录 RSA-OAEP填充方案与定时攻击防护一、前言二、RSA 与 OAEP 填充方案概述2.1 RSA 加密算法基础2.2 OAEP 填充方案的引入2.3 数学公式推导 三、定时攻击原理与防护策略3.1 定时攻击的基本原理3.2 防护定时攻击的策略 四、基于 Python 的 RSA-OAEP 与定时攻击防护实现五、完整…...

探索高性能AI识别和边缘计算 | NVIDIA Jetson Orin Nano 8GB 开发套件测评总结

# NVIDIA Jetson Orin Nano 8GB测评&#xff1a;当边缘计算遇上"性能暴徒"&#xff0c;树莓派看了想转行 引言&#xff1a;比咖啡机还小的"AI超算"&#xff0c;却让开发者集体沸腾 2025年的某个深夜&#xff0c;程序员老王盯着工位上巴掌大的NVIDIA Jets…...

Seata

Seata是一款开源的分布式事务解决方案&#xff0c;由阿里巴巴发起并维护&#xff0c;旨在帮助应用程序管理和协调分布式事务。以下是对Seata的详细介绍&#xff1a; 一、概述 Seata致力于提供高性能和简单易用的分布式事务服务&#xff0c;它为用户提供了AT、TCC、SAGA和XA等…...

STM32之Unix时间戳

时间戳按秒计时&#xff0c;可转换成年月日时分。32有符号存储时间戳&#xff0c;2的32次/2-1到2038年&#xff0c;STM32是2的32次方-1&#xff0c;到2106年溢出。所有时区共用一个时间戳秒计数器&#xff0c;在伦敦和北京都是0&#xff0c;不同经度加上小时即可。...

告别手动复制粘贴:可定时自动备份的实用软件解析

软件介绍 此前不少小伙伴都在找备份工具&#xff0c;其实复制文件用fastcopy就可以&#xff0c;但它需要手动操作。 今天介绍的简易备份工具则能实现定时备份。 这款软件有个小问题&#xff0c;当源目录和目标目录路径太长时&#xff0c;【立即备份】按钮可能会超出软件界面范…...

Django下防御Race Condition

目录 漏洞原因 环境搭建 复现 A.无锁无事务时的竞争攻击 B.无锁有事务时的竞争攻击 防御 A.悲观锁加事务防御 B.乐观锁加事务防御 总结 漏洞原因 Race Condition 发生在多个执行实体&#xff08;如线程、进程&#xff09;同时访问共享资源时&#xff0c;由于执行顺序…...

python从入门到精通(二十三):文件操作和目录管理难度分级练习题

文件操作和目录管理 文件操作基础难度1. 简单文件写入2. 简单文件读取3. 追加内容到文件 中级难度4. 逐行读取文件并统计行数5. 读取文件并提取特定信息6. 复制文件内容到新文件 高级难度7. 处理二进制文件8. 批量文件处理9. 日志文件分析 参考答案示例1. 简单文件写入2. 简单文…...

揭开AI-OPS 的神秘面纱 第二讲-技术架构与选型分析 -- 数据采集层技术架构与组件选型分析

基于上一讲预设的架构图&#xff0c;深入讨论各个组件所涉及的技术架构、原理以及选型策略。我将逐层、逐组件地展开分析&#xff0c;并侧重于使用数据指标进行技术选型的对比。 我们从 数据采集层 开始&#xff0c;进行最细粒度的组件分析和技术选型比对。 数据采集层技术架构…...

jupyter配置多个核心

CMD输入 先创建虚拟环境 "D:\Program Files\Python37\python.exe" -m venv myenv激活虚拟环境 myenv\Scripts\activate"D:\Program Files\Python37\python.exe" -m pip install ipykernel "D:\Program Files\Python37\python.exe" -m ipykern…...

如何优化FFmpeg拉流性能及避坑指南

FFmpeg作为流媒体处理的核心工具&#xff0c;其拉流性能直接影响直播/点播体验。本文从协议优化、硬件加速、网络策略三大维度切入&#xff0c;结合实战案例与高频踩坑点&#xff0c;助你突破性能瓶颈&#xff01; 一、性能优化进阶&#xff1a;从协议到硬件的全链路调优 协议选…...

机器学习:线性回归,梯度下降,多元线性回归

线性回归模型 (Linear Regression Model) 梯度下降算法 (Gradient Descent Algorithm) 的数学公式 多元线性回归&#xff08;Multiple Linear Regression&#xff09;...

笔记五:C语言编译链接

Faye&#xff1a;孤独让我们与我们所爱的人相处的每个瞬间都无比珍贵&#xff0c;让我们的回忆价值千金。它还驱使你去寻找那些你在我身边找不到的东西。 ---------《寻找天堂》 目录 一、编译和链接的介绍 1.1 程序的翻译环境和执行环境 1.1.1 翻译环境 1.1.2 运行环境 …...

SpringUI:打造高质量Web交互设计的首选元件库

SpringUI作为一个专为Web设计与开发领域打造的高质量交互元件库&#xff0c;确实为设计师和开发者提供了极大的便利。以下是对SpringUI及其提供的各类元件的详细解读和一些建议&#xff1a; SpringUI概述 SpringUI集合了一系列预制的、高质量的交互组件&#xff0c;旨在帮助设…...

LeetCode - 神经网络的 反向传播(Sigmoid + MSE) 教程

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/146085177 使用 Python + Numpy,设计带有 Sigmoid 激活函数 的神经网络,实现反向传播以更新神经元的权重和偏置。函数输入:特征向量(Input)、真实标签(Label)、初始…...

Elastic如何获取当前系统时间

文章目录 1. 使用 _ingest.timestamp 在 Ingest Pipeline 中获取当前时间2. 使用 Painless Script 获取当前时间3. 使用 now 关键字在查询中获取当前时间4. 使用 date 类型字段的默认值5. 使用 Kibana 的 Dev Tools 查看当前时间6. 使用 date 聚合获取当前时间7. 使用 Elastics…...

腾讯云对象存储服务(COS)

腾讯云对象存储服务&#xff08;COS&#xff09; 安全、可扩展、低成本的云存储解决方案 腾讯云 对象存储服务&#xff08;COS&#xff0c;Cloud Object Storage&#xff09; 是一种高可靠、高性能、可扩展的云存储服务&#xff0c;专为海量非结构化数据&#xff08;如图片、…...

力扣35.搜索插入位置-二分查找

class Solution:def searchInsert(self, nums: List[int], target: int) -> int:# 初始化左右指针left, right 0, len(nums) - 1# 当左指针小于等于右指针时&#xff0c;继续循环while left < right:# 计算中间位置mid (left right) // 2# 如果中间元素等于目标值&…...

SSLScan实战指南:全面检测SSL/TLS安全配置

SSLScan是一款开源的SSL/TLS安全扫描工具,用于检测服务器的加密协议、支持的加密套件、证书信息以及潜在的安全漏洞。本指南将详细介绍如何安装、使用SSLScan,并结合实战案例帮助您全面评估服务器的安全性。 一、SSLScan简介 功能特性: 检测支持的SSL/TLS协议版本(如TLS 1.…...

Linux 进程管理

一.进程 1.基本介绍 在Linux中每一个执行的程序都称之为进程&#xff0c;每一个进程都会分配一个进程号&#xff08;PID&#xff09;。进程以前台和后台两种方式存在&#xff0c;前台进程就是我们可以在屏幕上操作的&#xff0c;后台进程我们无法在屏幕上看到。 程序是静态的…...

mfc140u.dll是什么?当程序遭遇mfc140u.dll问题:快速恢复正常的秘诀

在使用Windows操作系统运行某些软件时&#xff0c;不少用户会遇到令人头疼的mfc140u.dll文件丢失错误。mfc140u.dll这个错误一旦出现&#xff0c;往往导致相关程序无法正常启动或运行&#xff0c;给用户带来诸多不便。这天的这篇文章将给大家分析mfc140u.dll是什么&#xff1f;…...

日新F1、瑞研F600P 干线光纤熔接(熔接损耗最大0.03DB)

Ⅰ. 设备特性对比与实测验证 1. 日新F1&#xff08;两马达&#xff09;极限参数 切割角度&#xff1a;必须≤0.3&#xff08;双边累计误差&#xff1c;0.6&#xff09; ▶ 实测案例&#xff1a;切割0.35时&#xff0c;损耗波动达0.05-0.08dB&#xff08;超干线标准&#xff09…...

【我的待办(MyTodolists)-免费无内购的 IOS 应用】

我的待办&#xff08;MyTodolists&#xff09; 我的待办&#xff1a;智能任务管理助手应用说明主要功能为什么选择"我的待办"&#xff1f;隐私保障使用截图 我的待办&#xff1a;智能任务管理助手 应用说明 "我的待办"是一款智能化的任务管理应用&#x…...

微信小程序+SpringBoot的单词学习小程序平台(程序+论文+讲解+安装+修改+售后)

感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;我会一一回复&#xff0c;希望帮助更多的人。 系统背景 &#xff08;一&#xff09;社会需求背景 在全球化的大背景下&#xff0c;英语作为国际…...

测试直播web自动化所学

web框架封装 web自动化开始&#xff1a;用电脑替代人工测试。 日常人工测试 —— 先点击XX 输入XXX 。。。页面是否符合预期 自动化测试的编码&#xff1a; web自动化&#xff0c;Selenium[常用测试库] Selenium&#xff0c;每个页面&#xff0c;是由元素组成的。html构成。 …...

Vue+Ant Design搭建AI聊天对话

今天在这里介绍一下 Ant Design X&#xff0c;这是蚂蚁设计团队推出的一款专注于人工智能&#xff08;AI&#xff09;领域的组件库&#xff0c;主要面向 React 生态系统(目前支持Openai&#xff0c;通义千问)。官方也推出了ant-design-x-vue 面向 Vue。当然我们今天的主题也是使…...

应用案例 | 精准控制,高效运行—宏集智能控制系统助力SCARA机器人极致性能

概述 随着工业4.0的深入推进&#xff0c;制造业对自动化和智能化的需求日益增长。传统生产线面临空间不足、效率低下、灵活性差等问题&#xff0c;尤其在现有工厂改造项目中&#xff0c;如何在有限空间内实现高效自动化成为一大挑战。 此次项目的客户需要在现有工厂基础上进行…...

JavaScript基础-运算符的分类

在JavaScript编程中&#xff0c;运算符是构建表达式和执行操作的基础工具。了解不同类型的运算符以及它们的工作原理对于编写高效且无误的代码至关重要。本文将介绍JavaScript中的主要运算符类型&#xff0c;并通过实例展示它们的用法。 一、算术运算符 算术运算符用于执行基…...

URIError: URI malformed

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…...

达梦适配记录-检查服务器

service DmServicedmdb status 查看是否开启&#xff0c;没有配置systemctl&#xff0c;查看《DM8_Linux 服务脚本使用手册》2.1.2.2 1 &#xff0e;拷贝服务模板文件&#xff08; DmService &#xff09;到目录&#xff08; /opt/dmdbms/bin &#xff09;&#xff0c;并将新文…...

【leetcode hot 100 160】相交链表

解法一&#xff1a;&#xff08;哈希集合&#xff09;利用HashSet保存一个链表的值&#xff0c;循环另一个列表&#xff0c;在HashSet中寻找该值。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x…...

选择排序算法的SIMD优化

一、优化原理 将查找数组最小值索引的SIMD优化的函数嵌入选择排序主循环,优化最耗时的最小值查找环节,同时保留选择排序的交换逻辑。 二、关键改造步骤 1)最小值查找模块化 复用SIMD优化的 find_min_index_simd函数。 2)动态子数组处理 每次循环处理 arr[i..n-1] 子数…...

Visual Studio Code打开远程服务器项目,打开服务器Android上百G源码,SSH免密连接方式

Visual Studio Code打开远程服务器项目 1&#xff0c;Visual Studio Code拓展中&#xff0c;安装远程插件 Remote Development 2&#xff0c;SSH免密连接&#xff0c;A电脑免密连接B&#xff0c;配置B电脑.ssh/authorized_keys A电脑的.ssh/id_rsa.pub中的公钥内容&#xff0c;…...

vscode mac版本 配置git

首先使用 type -a git查看git的安装目录 然后在vscode中找到settings配置文件&#xff0c;修改git.path...

BUUCTF——[GYCTF2020]FlaskApp1 SSTI模板注入/PIN学习

目录 一、网页功能探索 二、SSTI注入 三、方法一 四、方法二 使用PIN码 &#xff08;1&#xff09;服务器运行flask登录所需的用户名 &#xff08;2&#xff09;modename &#xff08;3&#xff09;flask库下app.py的绝对路径 &#xff08;4&#xff09;当前网络的mac地…...

【QT常用技术讲解】window系统以CMD命令行方式执行第三方程序及注册表文件命令

前言 在window下&#xff08;本篇为window10&#xff09;&#xff0c;调用第三方应用&#xff0c;可以调用后台CMD执行的命令行。如果是浏览器调用第三方应用&#xff0c;可以通过自定义域名调用指定的处理脚本&#xff0c;处理脚本再调用第三方软件。本篇只讲解QT程序调用后台…...

manus是什么?能干啥?

Manus哪儿来的&#xff1f; ​ Manus是一款由中国团队Monica.im于2025年3月5日发布的通用型AI代理&#xff08;AI Agent&#xff09;产品&#xff0c;旨在通过自主思考、系统规划和灵活工具调用&#xff0c;帮助用户完成各种复杂任务&#xff0c;从而解放用户的时间与创…...

物联网系统搭建

实验项目名称 构建物联网系统 实验目的 掌握物联网系统的一般构建方法。 实验要求&#xff1a; 1&#xff0e;构建物联网系统&#xff0c;实现前后端的交互。 实验内容&#xff1a; CS模式MQTT&#xff08;不带数据分析处理功能&#xff09; 实现智能设备与应用客户端的交…...

恭喜!《哪吒2》明天将荣登世界影坛第六!目前仅差1.81亿元

全球总票房为为20.27亿美元&#xff01;3月8日将荣登世界影坛第六宝座&#xff01; 中国票房 内地票房 中国电影票房、灯塔、猫眼三大数据源加权平均得出《哪吒2》中国内地总票房为144.26亿元人民币。 港澳票房 目前港澳地区没有新的数据显示&#xff0c;按3月6日1905电影网…...

2025 ubuntu24.04系统安装docker

1.查看ubuntu版本&#xff08;Ubuntu 24.04 LTS&#xff09; rootmaster:~# cat /etc/os-release PRETTY_NAME"Ubuntu 24.04 LTS" NAME"Ubuntu" VERSION_ID"24.04" VERSION"24.04 LTS (Noble Numbat)" VERSION_CODENAMEnoble IDubun…...

浅说图论基础

引入 在学最短路算法之前&#xff0c;我们要先搞清楚另外一个事情&#xff0c;什么是图&#xff0c;我们又可以基于图做那些事情。 图不同于树&#xff0c;它是一种更加复杂的数据结构&#xff0c;相比较于树或者数组&#xff08;线性表&#xff09;而言&#xff0c;图的关联…...

DeepSeek【部署 03】客户端应用ChatBox、AnythingLLM及OpenWebUI部署使用详细步骤

DeepSeek客户端应用 1.ChatBox2.AnythingLLM3.OpenWebUI4.总结 客户端软件提供可视化的模型及参数配置&#xff0c;人性化的对话窗口及文件上传功能&#xff0c;大大降低了大模型的使用门槛。 1.ChatBox Chatbox AI 是一款 AI 客户端应用和智能助手&#xff0c;支持众多先进的…...

工作学习笔记:HarmonyOS 核心术语速查表(v14 实战版)

作为在 HarmonyOS 开发一线摸爬滚打的工程师&#xff0c;笔者在 v14 版本迭代中整理了这份带血的实战术语表。 一、架构基础术语速查 A 系列术语 术语官方定义笔者解读&#xff08;v14 实战版&#xff09;开发陷阱 & 解决方案abc 文件ArkCompiler 生成的字节码文件打包时…...

mapbox进阶,模仿百度,简单实现室内楼层切换

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️fill-extrusion三维填充图层样式1.4 ☘…...