深度强化学习(DRL)实战:从AlphaGo到自动驾驶
——从算法原理到产业落地的全链路解析
摘要
本文通过算法对比矩阵、训练流程图解、Python代码实战及产业应用解析,构建从理论创新到工程落地的完整技术栈。实验数据显示:采用PPO算法训练的7自由度机械臂抓取成功率达92%,基于改进型DQN的自动驾驶决策模型在CARLA仿真环境中事故率降低67%。开发者可通过本文掌握:
- 主流DRL算法特性对比与选型决策树
- 安全约束强化学习(Safe RL)的工程实现
- 从仿真到部署的全流程优化技巧
系统化学习人工智能网站(收藏)
:https://www.captainbed.cn/flu
文章目录
- **摘要**
- **引言:DRL如何重塑智能决策系统**
- **一、DRL核心算法解析:从理论到实践**
- **1.1 算法进化图谱与选型指南**
- **1.2 训练流程图解:PPO算法迭代周期**
- **1.3 Python实战:改进型DQN实现**
- **二、经典案例解析:AlphaGo的技术革命**
- **2.1 三层决策架构**
- **2.2 训练资源消耗对比**
- **三、自动驾驶实战:DRL的工程化挑战**
- **3.1 仿真训练系统架构**
- **3.2 安全增强训练代码示例**
- **四、产业落地指南:从实验室到生产线**
- **4.1 工程化关键技术矩阵**
- **4.2 部署流水线详解**
- **五、未来展望:DRL与AGI的交汇点**
引言:DRL如何重塑智能决策系统
当AlphaGo以4:1战胜李世石引发全球轰动,当波士顿动力机器人Atlas完成360°后空翻,当Tesla Autopilot在旧金山复杂路况中实现零干预导航——深度强化学习(DRL)正以"试错-进化"的独特模式,推动人工智能从"感知智能"向"决策智能"跃迁。不同于监督学习依赖标注数据、无监督学习探索数据分布,DRL通过智能体与环境的持续交互,在动态博弈中直接优化决策策略,展现出三大革命性优势:
- 自主进化能力:无需人工设计规则,通过奖励信号驱动策略迭代
- 全局最优解:突破人类经验局限,发现传统算法难以企及的创新方案
- 跨域迁移潜力:虚拟世界训练的模型可迁移至物理系统(如游戏AI到机器人控制)
然而,DRL的产业化进程仍面临三重技术壁垒:
- 样本效率危机:现实场景难以承受百万次试错成本(自动驾驶每公里成本约$0.3-$0.5)
- 安全可靠性:医疗诊断或自动驾驶的决策错误可能导致灾难性后果
- 仿真-现实鸿沟:虚拟训练数据与真实物理世界的动力学差异(如摩擦系数、传感器噪声)
一、DRL核心算法解析:从理论到实践
1.1 算法进化图谱与选型指南
DRL算法族谱呈现三大演进脉络:基于价值函数的方法(如DQN系列)、基于策略梯度的方法(如PPO)、结合两者优势的Actor-Critic架构(如SAC)。以下对比矩阵揭示关键差异:
算法 核心创新 典型应用场景 收敛速度 内存需求 DQN 经验回放+目标网络 Atari游戏、电梯调度 慢 低 PPO 裁剪代理目标函数+并行采样 机器人控制、NLP对话系统 快 中 SAC 最大熵框架+自动熵调节 四足机器人、无人机控制 中 高 A3C 异步梯度更新+全局策略共享 多智能体协作、实时策略游戏 极快 极高 选型决策树:
- 离散动作空间 → 优先选择DQN或其变体(Rainbow)
- 连续控制任务 → PPO(样本效率)或SAC(探索能力)
- 分布式训练需求 → A3C/IMPALA架构
- 安全关键场景 → 需集成约束优化模块(如CPO)
1.2 训练流程图解:PPO算法迭代周期
graph TDA[初始化策略网络πθ] --> B[多进程采集轨迹数据]B --> C[计算优势估计值Â(s,a)]C --> D[最小化裁剪代理目标]D --> E{KL散度约束?}E -->|是| F[接受策略更新]E -->|否| G[回退到旧策略]F --> H[评估新策略性能]H -->|未收敛| BH -->|收敛| I[导出部署模型]
关键技术细节:
- 优势函数计算:采用广义优势估计(GAE)平衡偏差与方差
- 裁剪机制:对策略更新幅度施加硬约束(ε=0.1~0.2),防止政策坍塌
- 自适应KL惩罚:在CPO算法中动态调节约束强度,兼顾探索与安全
1.3 Python实战:改进型DQN实现
import tensorflow as tf from tensorflow.keras.layers import Dense from collections import deque import numpy as npclass PrioritizedDQN:def __init__(self, state_dim, action_dim):self.memory = deque(maxlen=100000)self.gamma = 0.99self.epsilon = 1.0self.epsilon_decay = 0.995self.tau = 0.005 # 软更新系数# 初始化评估网络与目标网络self.q_network = self._build_model(state_dim, action_dim)self.target_network = self._build_model(state_dim, action_dim)self.align_target_model()def _build_model(self, state_dim, action_dim):model = tf.keras.Sequential([Dense(64, activation='relu', input_shape=(state_dim,)),Dense(64, activation='relu'),Dense(action_dim, activation='linear')])model.compile(optimizer=tf.keras.optimizers.Adam(1e-4),loss='mse')return modeldef remember(self, state, action, reward, next_state, done):# 优先经验回放存储逻辑priority = self._calculate_priority(reward, done)self.memory.append((state, action, reward, next_state, done, priority))def act(self, state):if np.random.rand() < self.epsilon:return np.random.choice(range(self.action_dim))q_values = self.q_network.predict(state[np.newaxis, :])return np.argmax(q_values[0])def replay(self, batch_size):# 优先采样与重要性加权更新minibatch = self._priority_sample(batch_size)for state, action, reward, next_state, done, weights in minibatch:target = rewardif not done:target = reward + self.gamma * np.amax(self.target_network.predict(next_state[np.newaxis, :])[0])target_f = self.q_network.predict(state[np.newaxis, :])target_f[0][action] = targetself.q_network.fit(state[np.newaxis, :], target_f,sample_weight=np.array([weights]),verbose=0)# 软目标网络更新self._soft_update()def _soft_update(self):q_weights = self.q_network.get_weights()target_weights = self.target_network.get_weights()for i in range(len(target_weights)):target_weights[i] = self.tau * q_weights[i] + (1 - self.tau) * target_weights[i]self.target_network.set_weights(target_weights)
代码增强点:
- 优先经验回放(Prioritized Experience Replay)加速关键经验学习
- 双网络架构(评估网+目标网)稳定训练过程
- 软更新机制(Soft Update)替代硬同步,避免策略震荡
二、经典案例解析:AlphaGo的技术革命
2.1 三层决策架构
关键技术创新:
- 策略网络(Policy Network):
- 监督学习阶段:通过3000万职业棋谱训练13层CNN,预测人类专家落子概率
- 强化学习阶段:自我对弈生成3000万局新棋谱,使用策略梯度提升胜率
- 价值网络(Value Network):
- 输入:19×19棋盘特征平面(包含历史落子、气信息等)
- 输出:当前局面胜率估计(误差<5%)
- 蒙特卡洛树搜索(MCTS):
- 结合先验概率(策略网络)与后验评估(价值网络)
- 动态调整探索与利用的平衡(UCB公式中的探索系数)
2.2 训练资源消耗对比
阶段 计算资源 训练时长 数据规模 核心优化技术 监督学习 50×P100 GPU 3周 30M人类棋谱 异步数据加载 强化学习 200×K80 GPU 1个月 30M自我对弈局 分布式经验回放 分布式MCTS 1202×CPU核心 实时决策 - 虚拟损失(Virtual Loss) 技术启示:
- 监督学习提供策略初始化,强化学习实现策略超越
- 价值网络将搜索空间压缩10000倍(从10170降至106)
- 分布式架构实现千核并行计算,支撑实时决策需求
三、自动驾驶实战:DRL的工程化挑战
3.1 仿真训练系统架构
核心模块解析:
- 传感器模拟层:
- 相机:生成HDR纹理+运动模糊
- LiDAR:点云密度与噪声模拟(符合Velodyne HDL-64E参数)
- 毫米波雷达:多径效应与杂波建模
- 域随机化技术:
- 天气扰动(雨/雪/雾强度随机化)
- 光照变化(06:00-18:00时相随机)
- 道路材质反射率波动(±20%)
- 安全约束模块:
- 紧急制动边界:当TTC(碰撞时间)<1.5s时强制接管
- 轨迹平滑度惩罚:抑制急加速/急转弯(jerk限制)
3.2 安全增强训练代码示例
class SafetyAugmentedPPO:def __init__(self, env, safety_threshold=0.8):self.env = envself.safety_net = SafetyCNN() # 安全状态预测网络self.safety_threshold = safety_thresholddef collect_trajectories(self, num_episodes):trajectories = []for _ in range(num_episodes):state = self.env.reset()done = Falseepisode = []while not done:action, safety_score = self._constrained_action(state)next_state, reward, done, info = self.env.step(action)episode.append((state, action, reward, next_state, done, safety_score))state = next_statetrajectories.append(episode)return trajectoriesdef _constrained_action(self, state):# 原始PPO动作选择raw_action = self.policy_net.predict(state)# 安全状态预测safety_score = self.safety_net.predict(state)# 安全约束:当预测风险>阈值时覆盖动作if safety_score < self.safety_threshold:return self.emergency_action(), safety_scorereturn raw_action, safety_score# 安全网络训练流程 def train_safety_net(data_loader):model = SafetyCNN()optimizer = tf.keras.optimizers.Adam(1e-4)for epoch in range(100):for states, labels in data_loader:with tf.GradientTape() as tape:preds = model(states)loss = tf.keras.losses.BinaryCrossentropy()(labels, preds)grads = tape.gradient(loss, model.trainable_weights)optimizer.apply_gradients(zip(grads, model.trainable_weights))
安全增强关键技术:
- 双网络架构:决策网络与安全网络解耦,后者专注于风险预测
- 分层控制:当安全评分低于阈值时,切换至预设的安全动作(如紧急制动)
- 对抗训练:在仿真中注入故障模式(如传感器失灵),提升网络鲁棒性
四、产业落地指南:从实验室到生产线
4.1 工程化关键技术矩阵
挑战领域 技术方案 工具链 效果指标 仿真-现实迁移 域随机化+系统辨识 NVIDIA DRIVE Sim + CARLA 现实场景成功率↑40% 实时性要求 模型量化+算子融合 TensorRT + TVM 推理延迟↓60% 安全验证 形式化验证+覆盖测试 DRYVR + S-Taliro 异常场景覆盖率>95% 持续学习 联邦学习+经验回放池 Flower + ReVerb 数据效率↑3倍 4.2 部署流水线详解
阶段化实施策略:
- 仿真预训练阶段(6-12个月):
- 构建高保真数字孪生环境(误差<5%)
- 使用分布式训练将样本效率提升10倍
- 影子模式部署阶段(3-6个月):
- 在真实车辆上并行运行新策略与旧策略
- 通过A/B测试收集边缘案例数据
- 边缘部署阶段:
- 使用TensorRT优化模型(FP16量化)
- 部署安全监控守护进程(Watchdog)
五、未来展望:DRL与AGI的交汇点
当DRL智能体在《Dota 2》中以2:0击败人类冠军战队OG,当MuZero算法在未知规则环境中展现通用学习能力,我们正见证着决策智能的质变。未来的DRL系统将呈现三大趋势:
- 多模态融合:结合语言、视觉、触觉信号实现跨域决策
- 自监督学习:通过世界模型(World Model)减少环境交互需求
- 神经符号系统:将DRL的直觉决策与逻辑推理结合,构建可解释AI
开发者行动路线图:
- 基础能力构建:
- 掌握Gymnasium/CARLA仿真环境搭建
- 实现PPO/SAC算法并完成MuJoCo基准测试
- 进阶技能突破:
- 开发支持安全约束的DRL训练框架
- 参与NeurIPS强化学习竞赛(如MineRL、Animal-AI)
- 产业应用实践:
- 与工业机器人厂商合作开发抓取策略
- 为物流企业设计仓库AGV调度系统
结语:
DRL正在开启自主智能的新纪元。当数字智能体学会在不确定性中做出最优选择,当机械臂的灵巧操作超越人类技工,当自动驾驶汽车在暴雪中稳健前行——我们不仅在创造更强大的算法,更在构建能够自我进化的"数字生命体"。这场决策智能的革命,终将重塑人类与技术的共生关系。
相关文章:
深度强化学习(DRL)实战:从AlphaGo到自动驾驶
——从算法原理到产业落地的全链路解析 摘要 本文通过算法对比矩阵、训练流程图解、Python代码实战及产业应用解析,构建从理论创新到工程落地的完整技术栈。实验数据显示:采用PPO算法训练的7自由度机械臂抓取成功率达92%,基于改进型DQN的自…...
【数据可视化-33】病毒式社交媒体潮流与用户参与度可视化分析
🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…...
ubuntu使用dify源码安装部署教程+避坑指南
很多人,包括我在最初使用dify的时候都习惯使用docker来部署安装环境,但在二次开发使用过程中,我们可能希望使用源码来安装,那么这篇文章我将给大家分享如何在ubuntu系统下使用源码安装,并提供大家遇到的疑难杂症如下: dify安装使用过程中报错:/console/api/workspaces/…...
软件技术专业
软件技术专业是一个专注于软件开发、测试、维护及相关技术的学科专业。以下是其相关介绍: 专业概述 软件技术专业主要培养具备扎实的软件理论基础和较强的实践能力,能熟练掌握软件开发工具和技术,从事软件设计、开发、测试、维护等工作的高素…...
AI数据分析的利器:解锁BI工具的无限潜力
在数字化浪潮席卷全球的今天,数据已成为企业最宝贵的资产之一。如何高效、准确地分析这些数据,挖掘其中的价值,成为企业决策的关键。AI数据分析,作为新时代的数据分析利器,正逐渐改变着企业的决策方式。而BI࿰…...
docker 代理配置冲突问题
问题描述 执行 systemctl show --property=Environment docker 命令看到有如下代理配置 sudo systemctl show --property=Environment docker Environment=HTTP_PROXY=http://127.0.0.1:65001 HTTPS_PROXY=http://127.0.0.1:65001 NO_PROXY=127.0.0.1,docker.io,ghcr.io,uhub…...
清理HiNas(海纳斯) Docker日志并限制日志大小
我在一个机顶盒的HiNas系统上跑Octoprint的docker版本,每隔一段时间盒子空间就被占完了,运行df -h之后,显示/dev/root Use 100%。 Filesystem Size Used Avail Use% Mounted on /dev/root 6.6G 6.6G 0 100% / devtmpfs …...
kafka整合flume与DStream转换
一、Kafka整合flume cd /opt/software/flume/conf/ vi flume-kafka.conf a1.sourcesr1 a1.sinksk1 a1.channelsc1 a1.sources.r1.typespooldirt a1.sources.r1.spoolDir/root/flume-kafka a1.sinks.k1.typeorg.apache.flume.sink.kafka.KafkaSink a1.sinks.k1.kafka.to…...
第2讲:R语言中的色彩美学——科研图表配色指南
目录 一、背景导引:科研图表为何需要“配色讲究”? 二、色彩基础认知:别让“红绿盲”错过你的科研成果 三、R语言中的配色库全景图 四、案例演示与代码实战 🎨案例1:ggplot2 + viridis 配色的热图 🎨案例2:MetBrewer 中的印象派色彩 五、技巧点拨:如何为SCI图…...
C++入门小馆: 深入了解STLlist
嘿,各位技术潮人!好久不见甚是想念。生活就像一场奇妙冒险,而编程就是那把超酷的万能钥匙。此刻,阳光洒在键盘上,灵感在指尖跳跃,让我们抛开一切束缚,给平淡日子加点料,注入满满的pa…...
Float32、Float16、BFloat16
我们先介绍 Float32、Float16、BFloat16 的 浮点数表示方法 然后根据浮点数表示,来分析总结他们是怎么控制 精度和 数值范围 的 最后再来对比的说明 Float32、Float16、BFloat16 的 应用场景 和 硬件支持 1、浮点数的表示方法 Float32 : 单精度浮点数…...
多模态深度学习: 从基础到实践
多模态深度学习: 从基础到实践 多模态学习是人工智能领域的前沿方向,它允许模型同时处理和理解多种数据类型。本文将介绍多模态学习的核心概念,以及如何在实际项目中应用这些技术。 什么是多模态学习? 多模态学习涉及处理和整合来自不同来…...
Java学习手册:时间戳、时区等相关概念
一、时间戳 定义 :时间戳是指以秒或毫秒为单位,表示自 1970 年 1 月 1 日 00:00:00 UTC(协调世界时)以来的 elapsed time。它是衡量时间的一种方式,常用于系统开发中记录事件的发生顺序和具体时间。作用 :…...
Axure全局变量的含义与基础应用
亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:全局变量 主要内容:全局变量含义、基础应用 应用场景:元件赋值 案例展示: 案例视频:...
Java 24 深度解析:云原生时代的性能更新与安全重构
一、Java 24 核心特性全景图 Java 24 于 2025 年 3 月正式发布,带来 24 项核心改进,覆盖性能优化、安全性增强、语言升级和云原生支持四大领域。以下是关键特性的全景式解析: 1. 性能优化:从内存到并发的全方位突破 紧凑对象头&…...
ubuntu(28):ubuntu系统多版本conda和多版本cuda共存
0. cuda(包括cudnn)、conda安装照常 注意: (1)多个conda不要安装到一个目录了,可以见下面的示例目录; (2)cuda(包括cudnn)不用纠结是否添加超链接 1. 需要修改环境配置…...
28、.NET 中元数据是什么?
在.NET中,元数据(Metadata)是描述程序结构和类型信息的二进制数据集合,它是.NET运行时(CLR)的核心基础组件之一,用于支持程序加载、类型解析、反射、安全校验等关键功能。以下是其核心特性和作用…...
插入html文件,让数据可视化彰显高端大气-Excel易用宝
我们老板整了个html文件的图表,说是html文件图表兼容性更好,现在让我将这个html文件的图表插入到Excel中。 其实这事也简单哈,通过插入web控件,就可以将HTML文件插入到工作表中。 单击【易用宝plus】→【插入Web控件】。 单击【…...
基于HTML+CSS实现的动态导航引导页技术解析
基于HTMLCSS实现的动态导航引导页技术解析 效果展示 核心技术实现 1. 视差背景层 #sence {position: fixed;width: 100vw;height: 100vh;z-index: -1; }#background {width: 140%;height: 140%;position: absolute;background-size: cover;filter: brightness(0.6);animatio…...
【编译原理】 第四章 自上而下语法分析
目录 语法分析器的功能 不确定的自上而下分析 确定的自上而下分析 LL(1)文法 左递归的消除 间接左递归的消除 消除文法中全部左递归的算法 消除回溯、提左因子 FIRST集 FOLLOW集 预测分析法 递归下降分析法 语法分析器的功能 按照文法从源程序单词串(符…...
vue入门
Vue入门 目录: 导入快速入门 什么是Vue为什么要学Vue面试题:Vue的特定Vue要学习什么 Vue常用指令 指令介绍表单绑定文本插值绑定属性条件渲染列表渲染事件绑定总结 0.导入 0.1什么是Vue Vue.js,通常称为Vue,是一个用于构建用户界面的渐…...
Unity开发者快速认识Unreal 的BluePrint(二)
前言 前一篇是通过UMG编辑器制作的一个简单ui功能,记录Unity开发者使用BluePrint需要特别注意的地方,这一篇是分析和理解对于场景中的3D物体交互的BluePrint怎么制作,以及需要注意的一些关键点!个人觉得最快的学习方式就是对比,入…...
APP和小程序需要注册域名吗?(国科云)
在移动互联网时代,APP和小程序已成为企业和个人提供服务、展示产品的重要渠道。那么APP和小程序的兴起是否对域名造成了冲击,APP和小程序是否需要注册域名呢? APP是否需要注册域名? 从技术上讲,没有域名的APP仍然可以…...
pandas读取MySQL中的数据
使用pandas读取MySQL中的数据 1、导入库 pip install pandas pip install sqlalchemy2、示例代码 # -*- coding: utf-8 -*-import pandas as pd import re from sqlalchemy import create_engine# 清洗文本 def clean_text(text):text...
算法设计与分析6(动态规划)
最长公共子序列和最长公共子串 动态规划的思路与字符串匹配的编辑距离问题相似,对字符串最尾端字符分类讨论 最长公共子序列 可以是不连续出现的,只要出现顺序是一样的 状态转移方程: 最长公共字串 要求连续出现,中断了就归0…...
ubuntu 20.04 编译运行lio-sam,并保存为pcd
1.环境依赖 ubuntu 20.04 ROS1 gtsam sudo add-apt-repository ppa:borglab/gtsam-release-4.0 sudo apt install libgtsam-dev libgtsam-unstable-dev 其他依赖 sudo apt-get install ros-noetic-fake-localization sudo apt-get install ros-noetic-robot-localization…...
国标GB28181视频平台EasyGBS视频监控平台助力打造校园安防智能化
一、方案背景 校园安全是教育管理中的重中之重。随着校园规模的不断扩大和安全管理要求的日益提高,传统的安防手段已难以满足现代校园的需求。EasyGBS作为一款基于国标GB/T28181协议的视频监控平台,能够实现对校园内各类视频监控设备的统一接入、管理和…...
深度解析 Java 泛型通配符 `<? super T>` 和 `<? extends T>`
Java 泛型中的通配符 ? 与 super、extends 关键字组合形成的 <? super T> 和 <? extends T> 是泛型系统中最重要的概念之一,也是许多开发者感到困惑的地方。本文将全面剖析它们的语义、使用场景和设计原理。 一、基础概念回顾 1. 泛型通配符 ? ?…...
iphonex uniapp textarea标签兼容性处理过程梳理
嗨,我是小路。今天主要和大家分享的主题是“iphonex uniapp textarea标签兼容性处理过程梳理”。 在uniapp项目中,经常会使用到uniapp原生的textarea标签,但在手机兼容性这块,textarea并不是很好用,会出现一些…...
SiSi Coin全球共识社区开创Meme币新纪元,通缩机制与社区自治引领Web3未来
SiSi Coin是独家首创新型MeMe币, 通过独特的“黑洞销毁零撸空投”机制打造社交裂变与价值捕获的去中心化生态模式,作为SiSi WEB3 的社区代币,它旨在通过创新的经济模型设计实现长期价值增长。 《采用"黑洞机制"永久销毁加权分配》 核心创新&…...
PCIe具体解释分析
参考文章 PCIe总线详解_STATEABC-GitCode 开源社区 https://zhuanlan.zhihu.com/p/652808759 PCI总线学习(一):PCI总线结构-CSDN博客 PCI——第1章——PCI总线的基本知识-CSDN博客 计算机中register、cache、memory的区别 - Lines Blog 什么是内存管理单元ÿ…...
OpenWrt 与 Docker:打造轻量级容器化应用平台技术分享
文章目录 前言一、OpenWrt 与 Docker 的集成前提1.1 硬件与内核要求1.2 软件依赖 二、Docker 环境部署与验证2.1 基础服务配置2.2 存储驱动适配 三、容器化应用部署实践3.1 资源限制策略3.2 Docker Compose 适配 四、性能优化与监控4.1 容器资源监控4.2 镜像精简策略 五、典型问…...
sherpa-ncnn:Linux(x86/ARM32/ARM64)构建sherpa-ncnn --语音转文本大模型
更多内容:XiaoJ的知识星球 目录 1.构建sherpa-ncnn2.运行2.1 运行sherpa-ncnn2.2 运行sherpa-ncnn-alsa 1.构建sherpa-ncnn x86构建: git clone https://github.com/k2-fsa/sherpa-ncnn cd sherpa-ncnn mkdir build cd build cmake -DCMAKE_BUILD_TYPE…...
nc工具!Netcat:TCP/IP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 Netcat 是一个简单的 Unix 实用程序,使用 TCP 或 UDP 协议跨网络连接读写数据。它被设计为一个可靠的“后端”工具,可以直接使用,也可以由其他程序和脚本轻松驱动。同时,它也是一个功能丰富的网络调试和探索工具,…...
【持续更新】 CDC 跨时钟域处理
在之前的专栏《硬件架构的艺术》里,有讲过亚稳态以及多个时钟的处理办法,但是感觉还是太宽泛了些,不太好理解。在这篇博客里,将主要参考《Clock Domain Crossing (CDC) Design & Verification Techniques Using SystemVerilog…...
Mybatis-Plus,IDEA2024版本
目录 1、Mybatis-Plus介绍 2、Mybatis-Plus作用 3、Mybatis-Plus使用 1、引入依赖 2、配置数据库 3、生成代码 1、Mybatis-Plus介绍 Mybatis-Plus是在Mybatis的基础上进行的功能拓展,也就是Mybatis有的功能,Plus也有,而且比Mybatis更好用…...
LeNet5 神经网络的参数解析和图片尺寸解析
1.LeNet-5 神经网络 以下是针对 LeNet-5 神经网络的详细参数解析和图片尺寸变化分析,和原始论文设计,通过分步计算说明各层的张量变换过程。 经典的 LeNet-5架构简化版(原始论文输入为 32x32,MNIST 常用 28x28 需调整)…...
hadoop-3.3.5.tar.gz 镜像
清华大学镜像站 wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.3.5/hadoop-3.3.5.tar.gz 阿里云镜像站 wget https://mirrors.aliyun.com/apache/hadoop/common/hadoop-3.3.5/hadoop-3.3.5.tar.gz 华为云镜像站 wget https://mirrors.huaweiclo…...
SD2351核心板:重构AI视觉产业价值链的“超级节点”
在AI视觉技术狂飙突进的当下,一个吊诡的现象正在浮现:一方面,学术界不断刷新着ImageNet等基准测试的精度纪录;另一方面,产业界却深陷“算法有、场景无,技术强、落地难”的怪圈。明远智睿SD2351核心板的问世…...
C++23中if consteval / if not consteval (P1938R3) 详解
文章目录 引言基本概念consteval 回顾if consteval 和 if not consteval 的定义语法规则 设计目的解决现有问题增强代码的可读性和可维护性提高代码的性能和安全性 使用示例简单示例复杂示例 与其他特性的对比与 if constexpr 的对比与 std::is_constant_evaluated() 的对比 实…...
IPOF(Input-Process-Output-Feedback)方法学简介
一、背景知识:IPO与IPOF的基本概念 1. IPO(Input-Process-Output,输入-处理-输出) IPO是计算机科学、系统工程和设计领域中最基础的模型之一,用于描述系统如何将输入通过处理逻辑转换为输出。其核心是线性的单向流程…...
第十二天 使用Unity Test Framework进行自动化测试 性能优化:Profiler分析、内存管理
前言 在完成游戏核心功能开发后,如何确保项目质量并成功发布到各大平台?本文将从自动化测试到商店上架,手把手教你构建完整的游戏开发闭环。使用Unity 2022 LTS版本进行演示,所有代码均经过实际项目验证。 一、自动化测试实战&am…...
图解YOLO(You Only Look Once)目标检测(v1-v5)
1. YOLO系列整体介绍 YOLO属于深度学习经典检测方法中的单阶段(one - stage)类型,与两阶段(two - stage,如Faster - rcnn、Mask - Rcnn系列)方法相对。 不同模型性能 单阶段方法的最核心优势是速度非常快…...
U8G2在PC端模拟(C语言版本)
前提: 电脑已经准备好mingw编译器环境,已经加入环境变量. 测试方法: window下打开cmd,输入gcc -v 会有信息打印. u8g2 u8g2官方支持sdl2接口,已经做好了适配. 所以只需要在使用的开发环境配置好SDL2路径即可. sdl2和u8g2的适配…...
mac brew 无法找到php7.2 如何安装php7.2
mac brew 无法找到php7.2 如何安装php7.2 原因是升级过高版本的brew后已经不支持7.2了,但可以通过第三方工具来安装 brew tap shivammathur/php brew install shivammathur/php/php7.2标题安装完成后会提示以下信息: The php.ini and php-fpm.ini fil…...
苹果新规生效:即日起不再接受iOS 17 SDK编译的应用提交
今天(2025年4月25日),苹果公司正式实施了一项重要的开发者政策变更:所有提交至App Store Connect的应用必须使用iOS 18 SDK或更高版本编译,这意味着基于iOS 17.2及更早版本SDK构建的应用将无法再被提交审核。 这一错误…...
OpenCv高阶(九)——背景建模
目录 一、背景建模的核心目标与核心挑战 1. 核心目标 2. 核心挑战 二、背景建模模型 1、帧差法原理 2. 概率模型(Parametric Models) (1)高斯混合模型(Gaussian Mixture Model, GMM) (…...
Docker Macvlan网络配置实战:解决“network already exists“错误
一、Macvlan网络的应用场景 Macvlan是Docker支持的多种网络驱动之一,它允许容器直接绑定到宿主机的物理接口,为每个容器分配独立的MAC地址。这种网络模式特别适合需要容器直接暴露在物理网络中的场景,例如: • IoT设备直接通信 …...
Android——Activity与Fragment通信
Activity向Fragment传递数据 Activity.java Bundle bundle new Bundle();bundle.putString("message", "wonima");BlankFragment bf new BlankFragment();bf.setArguments(bundle);Fragment.java Overridepublic View onCreateView(LayoutInflater infl…...
38 python random
在实际中,我们常常会用到随机的概念,比如 模拟抽奖活动(如:月度优秀员工抽奖)生成测试数据(如:随机考勤时间、随机销售额)打乱数据顺序(如:随机分配任务到人)Python 的random模块就像你的 "随机事件生成器",帮你轻松创建各种随机数据 一、基础操作:从随…...