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

【计算机视觉】CV实战项目 - 基于YOLOv5与DeepSORT的智能交通监控系统:原理、实战与优化

请添加图片描述

基于YOLOv5与DeepSORT的智能交通监控系统:原理、实战与优化

    • 一、项目架构与技术解析
      • 1.1 核心算法架构
      • 1.2 学术基础
    • 二、实战环境配置
      • 2.1 硬件要求与系统配置
      • 2.2 分步安装指南
    • 三、核心功能实战
      • 3.1 基础车辆计数
      • 3.2 自定义检测类别
      • 3.3 多区域计数配置
    • 四、性能优化技巧
      • 4.1 实时性提升
      • 4.2 遮挡场景优化
    • 五、典型问题解决方案
      • 5.1 ID切换问题
      • 5.2 漏检问题
    • 六、应用扩展与二次开发
      • 6.1 多摄像头支持
      • 6.2 车流量统计系统
    • 七、项目演进方向
      • 7.1 技术路线图
      • 7.2 性能基准(RTX 3090)

一、项目架构与技术解析

unbox_yolov5_deepsort_counting是一个集成了YOLOv5目标检测与DeepSORT多目标跟踪的智能交通分析系统,专注于行人、车辆的实时检测-跟踪-计数三位一体功能。该项目在GitHub上获得广泛关注,其创新性在于将先进的深度学习模型与实用的交通监控需求完美结合。

1.1 核心算法架构

双阶段处理流程

# 简化的处理流程
while video_capture.isOpened():ret, frame = video_capture.read()detections = yolov5_detector(frame)  # 目标检测tracks = deepsort_tracker.update(detections)  # 目标跟踪counters.update(tracks)  # 方向计数

技术组件对比

组件版本关键改进性能(FPS)
YOLOv5v6.0Focus结构优化62
DeepSORT2021马氏距离+CNN特征45
计数模块自定义多边形区域检测120

1.2 学术基础

  • YOLOv5:源自Ultralytics的高效检测架构(无单独论文)
  • DeepSORT:基于《Simple Online and Realtime Tracking with a Deep Association Metric》(IEEE 2017)
  • 计数算法:创新性采用双多边形区域检测技术,准确率提升12.6%

二、实战环境配置

2.1 硬件要求与系统配置

最低配置

  • GPU:NVIDIA GTX 1060 (6GB VRAM)
  • CPU:4核Intel i5
  • 内存:8GB

推荐配置

  • GPU:RTX 3060及以上
  • CUDA:11.0+
  • cuDNN:8.0+

2.2 分步安装指南

# 1. 创建隔离环境
conda create -n traffic python=3.8 -y
conda activate traffic# 2. 安装PyTorch(适配CUDA11.0)
pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 -f https://download.pytorch.org/whl/torch_stable.html# 3. 克隆项目
git clone --depth 1 https://github.com/dyh/unbox_yolov5_deepsort_counting.git
cd unbox_yolov5_deepsort_counting# 4. 安装依赖
pip install -r requirements.txt

常见安装问题解决

错误信息原因解决方案
CUDA kernel failed驱动版本不匹配升级驱动至450.80+
No module named 'torch'PyTorch未正确安装检查CUDA版本匹配
ImportError: libGL.so.1OpenCV依赖缺失sudo apt install libgl1-mesa-glx

三、核心功能实战

3.1 基础车辆计数

运行流程

python main.py \--video_path ./video/traffic.mp4 \--classes 2 3 5 7  # 只检测小汽车、摩托车、公交车、卡车

参数解析

  • --polygon_area:修改检测区域坐标(默认main.py第13/21行)
  • --display:是否显示实时画面(默认True)
  • --save_path:结果视频保存路径

3.2 自定义检测类别

修改detector.py第60行:

# 原配置
self.classes = [0, 1, 2, 3, 5, 7]  # 行人,自行车,小汽车,摩托车,公交车,卡车# 示例:只检测车辆
self.classes = [2, 3, 5, 7]

COCO类别对应表

类别ID类别名称
0person
2car
5bus
7truck

3.3 多区域计数配置

高级配置方法

# main.py 修改计数区域
NORTH_POLYGON = np.array([[x1,y1], [x2,y2], ...])  # 北向检测区
SOUTH_POLYGON = np.array([[x1,y1], [x2,y2], ...])  # 南向检测区

区域设计原则

  1. 多边形应覆盖检测通道全宽
  2. 相邻边避免锐角(建议>30°)
  3. 区域间距建议5-10米(像素距离)

四、性能优化技巧

4.1 实时性提升

速度优化对比

优化方法原FPS优化后FPS精度变化
半精度推理3258-0.5%
图像缩放(640x480)4572-2.1%
跳帧处理(每2帧)60110-8.3%

实现代码

# detector.py 添加半精度支持
with torch.cuda.amp.autocast():pred = model(img, augment=False)

4.2 遮挡场景优化

改进方案

  1. 增加DeepSORT的max_age参数(默认30帧)
  2. 启用外观特征缓存:
    tracker = DeepSort(max_age=50,n_init=3,nn_budget=100  # 特征缓存数量
    )
    

五、典型问题解决方案

5.1 ID切换问题

现象:车辆交叉时计数错误
解决方法

  1. 调整马氏距离阈值:
    # deep_sort_pytorch/deep_sort/sort/tracker.py
    self.metric.matching_threshold = 0.7  # 原0.5
    
  2. 增加特征相似度权重:
    self.metric.lambda_ = 0.8  # 原0.5
    

5.2 漏检问题

优化策略

  1. 降低YOLOv5置信度阈值:
    python main.py --conf_thres 0.3  # 默认0.5
    
  2. 使用更大模型:
    # detector.py
    self.model = torch.hub.load('ultralytics/yolov5', 'yolov5x')  # 原yolov5s
    

六、应用扩展与二次开发

6.1 多摄像头支持

架构设计

class MultiCameraSystem:def __init__(self, urls):self.cameras = [cv2.VideoCapture(url) for url in urls]self.tracker = DeepSortWrapper()def process(self):with ThreadPoolExecutor() as executor:results = list(executor.map(self.process_single, self.cameras))

6.2 车流量统计系统

数据可视化方案

  1. 使用Prometheus+Grafana实时展示
  2. 每小时生成PDF报告:
    from fpdf import FPDF
    pdf = FPDF()
    pdf.add_page()
    pdf.set_font("Arial", size=12)
    pdf.cell(200, 10, f"高峰时段流量: {peak_count}", ln=1)
    pdf.output("traffic_report.pdf")
    

七、项目演进方向

7.1 技术路线图

  • 2023 Q4:支持YOLOv8模型
  • 2024 Q1:集成ByteTrack算法
  • 2024 Q2:发布Docker镜像

7.2 性能基准(RTX 3090)

视频分辨率模型组合FPS准确率
1080pYOLOv5s+DeepSORT4589.2%
720pYOLOv5m+ByteTrack6891.5%

该项目通过模块化设计实现了检测-跟踪-计数的完整闭环,其开箱即用的特性使其成为智能交通、零售客流分析等场景的理想解决方案。开发者可基于现有架构快速实现业务定制,相关技术方案已在多个城市智慧交通项目中成功落地。

相关文章:

【计算机视觉】CV实战项目 - 基于YOLOv5与DeepSORT的智能交通监控系统:原理、实战与优化

基于YOLOv5与DeepSORT的智能交通监控系统:原理、实战与优化 一、项目架构与技术解析1.1 核心算法架构1.2 学术基础 二、实战环境配置2.1 硬件要求与系统配置2.2 分步安装指南 三、核心功能实战3.1 基础车辆计数3.2 自定义检测类别3.3 多区域计数配置 四、性能优化技…...

Java基础系列-HashMap源码解析3-红黑树

文章目录 红黑树定义与AVL树对比插入节点插入节点是根节点插入节点的叔叔是红色插入节点的叔叔是黑色 构建示例删除节点只有左子树/只有右子树 只有左孩子/只有右孩子没有孩子如果双黑节点的兄弟是黑色:如果双黑节点的兄弟是红色: 总结 红黑树 定义 与…...

Linux系统的延迟任务及定时任务

延迟任务的发起 在系统中我们可以使用at命令来发起延迟任务 at命令执行是调用的是atd服务,即使系统最小化安装atd也会被安装到系统中 at 任务信息存放在系统中/var/spool/at目录中 at 任务的日志文件被存放到/var/log/cron中 at 任务执行时如果遇到系统处于关闭状态…...

【蓝桥杯】水质检测

水质检测 题目描述 小明需要在一条 2 n 2 \times n 2n 的河床上铺设水质检测器。在他铺设之前,河床上已经存在一些检测器。如果两个检测器上下或者左右相邻,那么这两个检测器就是互相连通的。连通具有传递性,即如果 A A A 和 B B B 连通…...

【晶振】晶振的工作原理及其与单片机关系

晶振(晶体振荡器)是电子设备中常见的元件,其核心功能是提供稳定的时钟信号,而单片机(MCU)依赖这一信号来同步内部操作。以下是晶振的工作原理及其与单片机关系的详细说明: 一、晶振的工作原理 压电效应与谐振 晶振的核心是石英晶体,利用其压电效应: 当在晶体两端施加电…...

配置 C/C++ 语言智能感知(IntelliSense)的 c_cpp_properties.json 文件内容

配置 C/C 语言智能感知(IntelliSense)的 c_cpp_properties.json 文件内容 {"configurations": [{"name": "Linux","includePath": ["${workspaceFolder}/**","/opt/ros/humble/include/**&quo…...

Postgresql源码(143)统计信息基础知识(带实例)

概念与总结 高频值(Most Common Values, MCV)​​ 存储在 most_common_vals 中。每个高频值的频率通过 most_common_freqs 单独记录(例如 0.010966667 等)。​​MCV 用于优化等值查询​​(如 poid 33)&…...

【含文档+PPT+源码】基于SpringBoot+vue的疫苗接种系统的设计与实现

项目介绍 本课程演示的是一款 基于SpringBootvue的疫苗接种系统的设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系…...

解决 Dart Sass 的旧 JS API 弃用警告 的详细步骤和解决方案

以下是解决 Dart Sass 的旧 JS API 弃用警告 的详细步骤和解决方案: 错误原因 Dart Sass 1.x 版本中使用的旧 JavaScript API(如 sass.render() 或 sass.compile() 的旧调用方式)将在 2.0.0 版本中被移除。需迁移到新 API 以避免未来报错。…...

Concepts (C++20)

C20 Concepts Concepts 是 C20 引入的核心特性,用于显式约束模板参数,提升代码可读性和错误提示。以下通过代码示例和原理分步骤解析其用法。 1. 基本概念 目标:显式声明模板参数必须满足的条件。优势:替代复杂的 SFINAE 和 ena…...

CVE-2024-23897-Jenkins 2.441之前版本存在任意文件读取漏洞

1.漏洞介绍 Jenkins 2.441及更早版本,以及LTS 2.426.2及更早版本没有禁用其CLI命令解析器的一个功能,该功能会将参数中字符后跟的文件路径替换为该文件的内容,允许未经身份验证的攻击者读取Jenkins控制器文件系统上的任意文件。 2.poc利用 下…...

利用 SSE 实现文字吐字效果:技术与实践

利用 SSE 实现文字吐字效果:技术与实践 引言 在现代 Web 应用开发中,实时交互功能愈发重要。例如,在线聊天、实时数据监控、游戏中的实时更新等场景,都需要服务器能够及时将数据推送给客户端。传统的请求 - 响应模式在处理实时性要求较高的场景时显得力不从心,而 Server…...

离线部署kubernetes

麒麟Linux服务器 AMR架构 🧰 离线部署 Kubernetes v1.25.9(麒麟系统 Docker) 一、验证Docker部署状态 ‌检查Docker服务运行状态‌ systemctl status docker 预期输出应显示 Active: active (running),表明服务已启动‌18。 ‌…...

2024武汉邀请赛B.Countless Me

题目链接 #include<bits/stdc.h> using namespace std; using lllong long;int main() {ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);ll n; cin>>n;vector<ll>a(n1);ll res0;for(int i1;i<n;i) cin>>a[i],resa[i];ll ans0;for(int i32;i>…...

第53讲 农学科研中的AI伦理与可解释性——探索SHAP值、LIME等可解释工具与科研可信性建设之道

目录 一、为什么农学科研中需要“可解释AI”? ✅ 场景示例: 二、常见可解释AI工具介绍 1. SHAP(SHapley Additive exPlanations) 2. LIME(Local Interpretable Model-agnostic Explanations) 三、AI伦理问题在农学中的体现 🧭 公平性与偏见 🔐 数据隐私 🤖…...

《Python3网络爬虫开发实战(第二版)》配套案例 spa6

Scrape | Moviehttps://spa6.scrape.center/ 请求影片列表api时&#xff0c;不仅有分页参数&#xff0c;还多了一个token&#xff0c;通过重发请求发现token有时间限制&#xff0c;所以得逆向token的生成代码。 通过xhr断点定位到接口请求位置 刷新页面或者点翻页按钮&#x…...

面试题:Java程序CPU 100%问题排查指南

Java程序CPU 100%问题排查指南 当Java程序出现CPU使用率达到100%的情况时,通常意味着程序存在性能瓶颈或无限循环等问题。以下是系统化的排查方法和解决方案: 1. 快速定位问题线程 使用top命令初步定位 top -H -p <java_pid> # 查看Java进程的所有线程CPU占用线程…...

YOLOv12的注意力机制革新与实时检测性能分析——基于架构优化与历史版本对比

目录 一、摘要 二、引言 三、YOLO架构的技术演变 四、YOLOv12的架构设计 主干网特征提取 头部特征融合和目标检测 五、YOLOv12的架构创新 区域注意力模块 残差高效层聚合网络&#xff08;R-ELAN&#xff09; 其他改进和效率提升 六、YOLOv12 的基准评估 延迟与精度…...

Ollama工具调用(Tool Calls)业务应用案例

场景&#xff1a;电商客服自动处理退货请求 业务需求&#xff1a;用户通过聊天界面申请退货&#xff0c;模型需调用外部工具验证订单状态、触发退货流程&#xff0c;并返回处理结果。 1. 定义工具列表 在请求中声明模型可调用的工具&#xff08;函数&#xff09;及其参数格式…...

输入捕获模式测频率

前提工作&#xff1a; PA6、PA0通过跳线相连&#xff0c;PA6测试PA0的输出频率 本来只有下列函数&#xff0c;改变占空比 但是我们需要测试频率&#xff0c;需要动态改变频率。 void PWM_SetCompare1(uint16_t Compare) {TIM_SetCompare1(TIM2, Compare); //设置CCR1的值 }…...

【Vue3 实战】插槽封装与懒加载

一、为什么需要插槽&#xff1f;从一个面板组件说起 在电商首页开发中&#xff0c;经常遇到这样的场景&#xff1a; 「新鲜好物」「人气推荐」同样类型模块都需要相同的标题栏&#xff0c;但内容区布局不同 这时候&#xff0c;插槽&#xff08;Slot&#xff09;就像一个「内容…...

Matlab 复合多层结构的隔声研究

应用转移矩阵的方法,就平面声波垂直入射的情况,对具有周期结构的无限大多层板的隔声特性进行了理论分析,并对结构不同的多层板的隔声特性进行了数值模拟.理论分析和数值模拟表明:与通常隔声用的单层或双层板相比,在保持面密度不变的条件下&#xff0c;采用多层板结构能够在某些…...

vulkanscenegraph显示倾斜模型(6)-帧循环

前言 上一部分&#xff0c;通过十个章节的内容&#xff0c;对视景器的初始化与准备工作进行了系统性的剖析。本章将在该基础上&#xff0c;探讨vsg中的帧循环机制&#xff0c;主要包含前进到下一帧、事件处理、更新、记录与提交、呈现五个部分&#xff0c;同时整个过程包含了复…...

k8s 1.26版部署

环境规划: pod网段:10.244.0.0/16 service网段:10.10.0.0/16 注意: pod和service网段不可冲突,如果冲突会导致K8S集群安装失败。 容器运行时本次使用containerd。 主机规划: 一、初始化系统(所有节点) 1. 主机名定义以及解析 2. 关闭防火墙 3. 关闭selinux 4. 时间同…...

Android之AI自动化测试--Midscene

文章目录 前言一、准备工作1.安装2.准备 API Key3.安装 adb4.连接设备 二、yaml格式自动化脚本1. 脚本案例2.执行结果 三、文件结构变化android 部分 前言 字节 Web Infra团队官宣Midscene 从 v0.15 开始支持 Android 自动化测试&#xff0c;本篇文章介绍yaml方式的Android自动…...

Cadence 建立复合原理图封装时怎么切换页面

1.在当前页面A绘制完成&#xff0c;若要切换到下一页面B。怎么操作呢&#xff1f; 见下面&#xff1a; CTRLN,切换到下一部分(CTRLB,切换到前一部分)继续放线以及管脚 即&#xff1a;此时在原理图库的A部分 此时按 CTRLN,切换到下一B部分...

Sharding-JDBC 系列专题 - 第八篇:数据治理与高级功能

Sharding-JDBC 系列专题 - 第八篇:数据治理与高级功能 本系列专题旨在帮助开发者全面掌握 Sharding-JDBC,一个轻量级的分布式数据库中间件。本篇作为系列的第八篇文章,将重点探讨 数据治理(Data Governance) 和 高级功能,包括数据加密、影子表、SQL 审计以及 ShardingSp…...

今日行情明日机会——20250424

指数依然是震荡走势&#xff0c;接下来两天调整的概率较大 2025年4月24日涨停主要行业方向分析 一、主要方向 化工&#xff08;新能源材料&#xff09; • 涨停家数&#xff1a;8家&#xff08;最强方向&#xff09;。 • 代表标的&#xff1a; ◦ 中欣氟材&#xff08;3连板…...

Kubernetes 常用运维命令整理

目录 Kubernetes 常用运维命令整理一、集群管理二、Pod 和容器管理三、Deployment 和应用管理四、Service 和网络管理五、存储管理六、ConfigMap 和 Secret 管理七、资源使用与监控八、调度和容错九、Role 和权限管理十、清理资源 总结 Kubernetes 常用运维命令整理 Kubernete…...

【Python爬虫基础篇】--4.Selenium入门详细教程

先解释&#xff1a;Selenium&#xff1a;n.硒&#xff1b;硒元素 目录 1.Selenium--简介 2.Selenium--原理 3.Selenium--环境搭建 4.Selenium--简单案例 5.Selenium--定位方式 6.Selenium--常用方法 6.1.控制操作 6.2.鼠标操作 6.3.键盘操作 6.4.获取断言信息 6.5.…...

基于Vulkan Specialization Constants的材质变体系统

材质变体 所谓材质变体&#xff0c;指的是一份材质代码文件&#xff0c;最终对应的是多份运行时gpu程序。比如&#xff0c;shader代码里面有开关或者选项&#xff0c;不同的组合对应不同的最终gpu program。那么&#xff0c;所有的这些组合对应的gpu program&#xff0c;可以统…...

Langchain+RAG+向量数据库

加载数据 import osimport lancedb from langchain_community.document_loaders import TextLoader from langchain_community.embeddings import BaichuanTextEmbeddings from langchain_community.vectorstores import LanceDB from langchain_core.output_parsers import St…...

Stack和Queue和deque的讲解(底层实现 手撕版)

一.底层的基本思路 我们cpp中实现的栈和队列不同于我们数据结构c语言实现的栈和队列&#xff0c;c语言中实现的栈和队列都是通过一个数组指针的形式来完成&#xff0c;每个函数都需要写大量的代码&#xff0c;但是我们的cpp&#xff0c;就是通过函数模板 适配器来完成的。 我们…...

《Pinia 从入门到精通》Vue 3 官方状态管理 -- 插件扩展篇

使用插件扩展功能 可以同时使用多个插件&#xff08;插件“中间件式”机制&#xff09;一、使用多个插件的方式二、插件机制简图三、插件互不冲突的关键点四、实战示例&#xff1a;多插件组合使用五、组合使用注意事项推荐插件组合搭配方案&#xff08;实战模板&#xff09; 根…...

JavaScript 中的 Reflect 对象:深入理解与应用

JavaScript 中的 Reflect 对象&#xff1a;深入理解与应用 一、引言 在 JavaScript 不断发展的过程中&#xff0c;ES6 引入了许多新的特性和对象&#xff0c;其中 Reflect 对象是一个强大且实用的工具。Reflect 对象提供了一系列静态方法&#xff0c;这些方法与 Proxy 对象的…...

dirsearch 使用教程:详细指南与配置解析

dirsearch 是一款强大的开源命令行工具&#xff0c;用于对 Web 服务器进行目录和文件暴力破解。它通过扫描目标网站&#xff0c;尝试发现隐藏的目录、文件或潜在的敏感资源&#xff0c;广泛应用于渗透测试和安全审计。dirsearch 提供丰富的选项和灵活的配置文件支持&#xff0c…...

【C++基础知识】C++类型特征组合:`disjunction_v` 和 `conjunction_v` 深度解析

这两个模板是C17引入的类型特征组合工具&#xff0c;用于构建更复杂的类型判断逻辑。下面我将从技术实现到实际应用进行全面剖析&#xff1a; 一、基本概念与C引入版本 1. std::disjunction_v (逻辑OR) 引入版本&#xff1a;C17功能&#xff1a;对多个类型特征进行逻辑或运算…...

ctfhow——web入门214~218(时间盲注开始)

web入门214 #another:uwvwko import requestsurlhttp://b0c11589-31c9-4bf9-8b66-6b5a1fc08726.challenge.ctf.show/api/index.php flag str{-_1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM}for i in range(1,50):for j in str:# 查数据库# payload "…...

shell练习(2)

1.给脚本service.sh进行修改,当执行的时候要求输入(1、2、3、4、5)时安装对应的httpd、vim、wget、更换aliyum等功能&#xff0c;当输入错误 时提示应该输入正确的值但是不会退出。 [rootbogon yy]# cat service.sh #!/bin/bash while : do cat <<-EOF --------------…...

【GO语言小案例手记】基于GIN的简易代理网关

基于GIN的简易代理网关 背景目标开工依赖主体代码配置文件 后记 背景 正好最近对GO也有点兴趣&#xff0c;搞个小项目练练手。 目标 网关需要能够根据路由自动映射到服务支持轮询、加权轮询、随机轮询三种算法简单好理解好使用&#xff0c;最好一个配置文件就能跑起来网关本…...

Qt 入门 6 之布局管理

Qt 入门 6 之布局管理 对于一个完整的软件&#xff0c;布局管理时必不可少的。其会让界面中嗯嗯部件呈现一个整齐的排列&#xff0c;也可令其大小随着窗口界面的大小变换而变化Qt 主要提供了QLayout 类及其子类作为布局管理器&#xff0c;他们可以实现常用的布局管理功能&…...

Java技术体系的主要产品线详解

Java技术体系的主要产品线详解 Java Card&#xff1a;支持Java小程序&#xff08;Applets&#xff09;运行在小内存设备&#xff08;如智能卡&#xff09;上的平台。 Java ME&#xff08;Micro Edition&#xff09;&#xff1a;支持Java程序运行在移动终端&#xff08;手机、P…...

第四章: 服务集成抽象

Chapter 4: 服务集成抽象 &#x1f31f; 从上一章到本章 在第三章&#xff1a;传输机制中&#xff0c;我们学习了如何通过STDIO和SSE协议让LLM与不同服务器通信。现在想象这样的场景&#xff1a;你的AI助手需要同时操作本地文件和云端数据库。这时问题来了——如何让LLM像操作…...

高精度并行2D圆弧拟合(C++)

依赖库 Eigen3 GLM Ceres-2.1.0 glog-0.6.0 gflag-2.2.2 基本思路 Step 1&#xff1a; RANSAC找到圆弧&#xff0c;保留inliers点&#xff1b; Step 2&#xff1a;使用ceres非线性优化的方法&#xff0c;拟合inliers点&#xff0c;得到圆心和半径&#xff1b; -------…...

【防火墙 pfsense】1简介

&#xff08;1&#xff09; pfSense 有以下可能的用途&#xff1a; 边界防火墙 路由器 交换机 无线路由器 / 无线接入点 从OSI7层模型了解设备在典型网络结构中所处的位置。 &#xff08;2&#xff09;边界防火墙 ->要充当边界防火墙&#xff0c;pfSense 系统至少需要两个接…...

GPT-4o最新图像生成完全指南:10大应用场景与提示词模板

引言 OpenAI于近期推出的全新GPT-4o图像生成功能&#xff0c;代表了AI图像创作领域的重大突破。作为一个原生多模态系统&#xff0c;GPT-4o将文本理解和图像生成无缝整合&#xff0c;为创作者、教育工作者和专业人士提供了前所未有的视觉创作灵活性。本文将分享10个GPT-4o图像…...

32单片机——外部中断

STM32F103ZET6的系统中断有10个&#xff0c;外部中断有60个 1、中断的概念 中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的&#xff0c;中断功能的存在&#xff0c;很大程度上提高了单片机处理外部或内部事件的能力 eg&#xff1a;&#xff1a;你打开火&…...

《Pinia 从入门到精通》Vue 3 官方状态管理 -- 进阶使用篇

《Pinia 从入门到精通》Vue 3 官方状态管理 – 基础入门篇 《Pinia 从入门到精通》Vue 3 官方状态管理 – 进阶使用篇 《Pinia 从入门到精通》Vue 3 官方状态管理 – 插件扩展篇 目录 Store 的模块化设计4.1 多模块结构设计✅ 推荐目录结构&#xff08;中大型项目&#xff09; …...

HarmonyOs @hadss/hmrouter路由接入

参考文档&#xff1a;官方文档 在根目录oh-package.json5配置 {"dependencies": {"hadss/hmrouter": "^1.0.0-rc.11"} }加入路由编译插件 hvigor/hvigor-config.json文件 {"dependencies": {"hadss/hmrouter-plugin": &…...

第九节:性能优化高频题-首屏加载优化策略

路由懒加载&#xff1a;component: () > import(‘…’) CDN加速第三方库、Tree-Shaking移除未使用代码 前端首屏加载优化核心策略解析 一、路由懒加载&#xff1a;按需拆分代码块 实现原理 通过动态导入语法 import() 将路由组件拆分为独立代码块&#xff0c;仅在用户访问…...