2D-3D投影变换(PnP算法)

PnP算法详解

概述

PnP(Perspective-n-Point)算法的核心目标是通过已知3D点和对应的2D图像点,计算相机的旋转矩阵(R)平移向量(t),从而确定相机相对于3D点的位姿。

基本概念

  • 旋转矩阵(R):描述相机的姿态,3×3维度,用于表示3D世界坐标系到相机坐标系的旋转关系
  • 平移向量(t):描述相机的位置,3×1维度,用于表示3D世界坐标系原点到相机坐标系原点的平移关系

输入数据要求

计算PnP需要准备以下3组核心数据:

1. 3D点坐标

世界坐标系下的点:\(P_i = (X_i, Y_i, Z_i)^T\),至少需要4个非共线的点(P3P需3个点)

2. 2D图像点坐标

3D点在相机图像平面上的投影:\(p_i = (u_i, v_i)^T\),需与3D点一一对应

3. 相机内参矩阵

由相机自身参数决定,通过相机标定获得:

\[K = \begin{bmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix} \]

其中:

  • \(f_x, f_y\):相机在x、y轴方向的焦距
  • \(c_x, c_y\):图像坐标系的主点坐标(通常在图像中心)

PnP算法类型

1. P3P算法

适用场景:仅有3个不共线3D点的情况

原理:通过三角几何关系推导位姿,但可能存在多解(最多4个),需要额外点验证

优点

  • 计算速度快
  • 对点数量要求最低

缺点

  • 存在多解问题
  • 对噪声敏感
  • 鲁棒性较差

2. EPnP算法(Efficient PnP)

适用场景:4个及以上3D点的情况

原理:将3D点分解为"虚拟控制点",通过控制点求解位姿

优点

  • 鲁棒性强
  • 计算效率高
  • 解唯一

缺点

  • 需要至少4个点

3. DLT算法(Direct Linear Transform)

适用场景:点数量较多的情况

原理:通过直接线性变换求解相机的投影矩阵,再分解出R和t

优点

  • 实现简单
  • 适合大量点的场景

缺点

  • 没有考虑旋转矩阵的正交约束
  • 对噪声敏感

4. RANSAC PnP算法

适用场景:存在错误匹配点对(外点)的实际工程应用

详细原理和工程应用将在下一章节详细讨论

坐标变换与投影模型

坐标系转换

3D点从世界坐标系到图像坐标系的完整转换过程:

步骤1:世界坐标系→相机坐标系

通过旋转\(\mathbf{R}\)和平移\(\mathbf{t}\)变换:

\[\mathbf{P}'_i = \mathbf{R} \cdot \mathbf{P}_i + \mathbf{t} \]

其中\(\mathbf{P}'_i = (X'_i, Y'_i, Z'_i)^T\)是3D点在相机坐标系下的坐标

步骤2:相机坐标系→图像坐标系

通过相机内参\(\mathbf{K}\)进行透视变换:

\[\begin{bmatrix} \hat{u}_i \\ \hat{v}_i \\ 1 \end{bmatrix} = \frac{1}{Z'_i} \cdot \mathbf{K} \cdot \begin{bmatrix} X'_i \\ Y'_i \\ Z'_i \end{bmatrix} \]

简化为分量形式:

\[\hat{u}_i = f_x \cdot \frac{X'_i}{Z'_i} + c_x, \quad \hat{v}_i = f_y \cdot \frac{Y'_i}{Z'_i} + c_y \]

坐标变换计算实例

示例场景

假设一个简单的PnP场景,包含以下数据:

已知条件

  • 相机内参\(f_x = 800\), \(f_y = 800\), \(c_x = 320\), \(c_y = 240\)
  • 真实位姿:相机绕Y轴旋转30°,平移\(t = [0, 0, 5]^T\)
  • 世界坐标系中的3D点
    • \(P_1 = (1, 0, 0)^T\) (前方1米)
    • \(P_2 = (0, 1, 0)^T\) (左侧1米)
    • \(P_3 = (0, 0, 1)^T\) (上方1米)

步骤1:构建旋转矩阵

绕Y轴旋转30°的旋转矩阵:

\[\mathbf{R} = \begin{bmatrix} \cos 30° & 0 & \sin 30° \\ 0 & 1 & 0 \\ -\sin 30° & 0 & \cos 30° \end{bmatrix} = \begin{bmatrix} 0.866 & 0 & 0.5 \\ 0 & 1 & 0 \\ -0.5 & 0 & 0.866 \end{bmatrix}\]

步骤2:坐标变换计算

对于点\(P_1 = (1, 0, 0)^T\)

  • 世界坐标系→相机坐标系:

    \[\mathbf{P}'_1 = \mathbf{R} \cdot P_1 + \mathbf{t} = \begin{bmatrix} 0.866 & 0 & 0.5 \\ 0 & 1 & 0 \\ -0.5 & 0 & 0.866 \end{bmatrix} \begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix} + \begin{bmatrix} 0 \\ 0 \\ 5 \end{bmatrix} = \begin{bmatrix} 0.866 \\ 0 \\ -0.5 \end{bmatrix} + \begin{bmatrix} 0 \\ 0 \\ 5 \end{bmatrix} = \begin{bmatrix} 0.866 \\ 0 \\ 4.5 \end{bmatrix}\]

  • 相机坐标系→图像坐标系:

    \[\hat{u}_1 = 800 \cdot \frac{0.866}{4.5} + 320 = 800 \cdot 0.192 + 320 = 153.6 + 320 = 473.6 \]

    \[\hat{v}_1 = 800 \cdot \frac{0}{4.5} + 240 = 0 + 240 = 240 \]

    预测图像点\(\hat{p}_1 = (473.6, 240)\)

对于点\(P_2 = (0, 1, 0)^T\)

  • 世界坐标系→相机坐标系:

    \[\mathbf{P}'_2 = \mathbf{R} \cdot P_2 + \mathbf{t} = \begin{bmatrix} 0.866 & 0 & 0.5 \\ 0 & 1 & 0 \\ -0.5 & 0 & 0.866 \end{bmatrix} \begin{bmatrix} 0 \\ 1 \\ 0 \end{bmatrix} + \begin{bmatrix} 0 \\ 0 \\ 5 \end{bmatrix} = \begin{bmatrix} 0 \\ 1 \\ 0 \end{bmatrix} + \begin{bmatrix} 0 \\ 0 \\ 5 \end{bmatrix} = \begin{bmatrix} 0 \\ 1 \\ 5 \end{bmatrix}\]

  • 相机坐标系→图像坐标系:

    \[\hat{u}_2 = 800 \cdot \frac{0}{5} + 320 = 0 + 320 = 320 \]

    \[\hat{v}_2 = 800 \cdot \frac{1}{5} + 240 = 800 \cdot 0.2 + 240 = 160 + 240 = 400 \]

    预测图像点\(\hat{p}_2 = (320, 400)\)

对于点\(P_3 = (0, 0, 1)^T\)

  • 世界坐标系→相机坐标系:

    \[\mathbf{P}'_3 = \mathbf{R} \cdot P_3 + \mathbf{t} = \begin{bmatrix} 0.866 & 0 & 0.5 \\ 0 & 1 & 0 \\ -0.5 & 0 & 0.866 \end{bmatrix} \begin{bmatrix} 0 \\ 0 \\ 1 \end{bmatrix} + \begin{bmatrix} 0 \\ 0 \\ 5 \end{bmatrix} = \begin{bmatrix} 0.5 \\ 0 \\ 0.866 \end{bmatrix} + \begin{bmatrix} 0 \\ 0 \\ 5 \end{bmatrix} = \begin{bmatrix} 0.5 \\ 0 \\ 5.866 \end{bmatrix}\]

  • 相机坐标系→图像坐标系:

    \[\hat{u}_3 = 800 \cdot \frac{0.5}{5.866} + 320 = 800 \cdot 0.0852 + 320 = 68.2 + 320 = 388.2 \]

    \[\hat{v}_3 = 800 \cdot \frac{0}{5.866} + 240 = 0 + 240 = 240 \]

    预测图像点\(\hat{p}_3 = (388.2, 240)\)

重投影误差计算实例

实际观测与预测对比

假设实际检测到的图像点(含有一些噪声)为:

  • 实际点:\(p_1 = (475, 242)\)
  • 实际点:\(p_2 = (318, 398)\)
  • 实际点:\(p_3 = (390, 238)\)

重投影误差计算(欧式距离)

点1的误差

\[e_1 = \sqrt{(473.6 - 475)^2 + (240 - 242)^2} = \sqrt{(-1.4)^2 + (-2)^2} = \sqrt{1.96 + 4} = \sqrt{5.96} = 2.44 \text{像素} \]

点2的误差

\[e_2 = \sqrt{(320 - 318)^2 + (400 - 398)^2} = \sqrt{2^2 + 2^2} = \sqrt{4 + 4} = \sqrt{8} = 2.83 \text{像素} \]

点3的误差

\[e_3 = \sqrt{(388.2 - 390)^2 + (240 - 238)^2} = \sqrt{(-1.8)^2 + 2^2} = \sqrt{3.24 + 4} = \sqrt{7.24} = 2.69 \text{像素} \]

总体误差评估

总误差平方和

\[\sum_{i=1}^3 e_i^2 = 2.44^2 + 2.83^2 + 2.69^2 = 5.95 + 8.01 + 7.24 = 21.2 \]

均方根误差(RMSE)

\[\text{RMSE} = \sqrt{\frac{1}{3} \times 21.2} = \sqrt{7.07} = 2.66 \text{像素} \]

结果分析

  • 平均重投影误差约为2.7像素,属于可接受范围
  • 点2误差最大,可能是特征检测精度问题
  • 总体拟合效果良好,说明位姿估计准确

PnP求解过程演示

反向求解位姿

现在假设我们只知道3D点和对应的2D观测点,要求解相机位姿:

输入数据

  • 3D点:\(P_1 = (1, 0, 0)^T\), \(P_2 = (0, 1, 0)^T\), \(P_3 = (0, 0, 1)^T\)
  • 观测2D点:\(p_1 = (475, 242)\), \(p_2 = (318, 398)\), \(p_3 = (390, 238)\)
  • 相机内参:同上

RANSAC PnP求解过程

  1. 随机采样:从3个点中选择所有3个点(最小子集)
  2. EPnP求解:计算初始位姿估计
  3. 一致性验证:计算所有点的重投影误差
  4. 结果:得到最优位姿估计
    • 旋转向量:\(\mathbf{r} = (0, 0.524, 0)\)(约30°)
    • 平移向量:\(\mathbf{t} = (0, 0, 5)\)

验证:将求解的位姿用于重新投影,验证重投影误差是否最小。

重投影误差与优化

重投影误差定义

单点重投影误差:\(e_i = \sqrt{(\hat{u}_i - u_i)^2 + (\hat{v}_i - v_i)^2}\)

优化目标

最小化所有点的总重投影误差:

\[\min_{\mathbf{R}, \mathbf{t}} \sum_{i=1}^n e_i^2 \]

精度评估

使用均方根误差(RMSE)评估求解精度:

\[\text{RMSE} = \sqrt{\frac{1}{n} \sum_{i=1}^n e_i^2} \]

误差来源分析

  1. 特征点检测误差:角点提取精度通常为0.1-1像素
  2. 相机标定误差:内参矩阵的不准确性
  3. 镜头畸变:未完全校正的径向和切向畸变
  4. 数值计算误差:浮点运算精度限制
  5. 运动模糊:相机运动或物体运动造成的图像模糊

误差优化策略

  • 亚像素精度:使用亚像素角点检测算法
  • 多帧融合:利用时间序列信息提高精度
  • 非线性优化:使用Levenberg-Marquardt算法进行Bundle Adjustment
  • 外点剔除:通过RANSAC等鲁棒方法去除异常点

RANSAC PnP算法详解(工程应用重点)

算法原理

RANSAC(Random Sample Consensus,随机采样一致性)是一种用于处理含有外点(outliers)数据的鲁棒估计算法。在PnP问题中,RANSAC用于处理错误的3D-2D点对匹配。

数学基础

外点概率模型

  • 假设数据集中外点的比例为\(\epsilon\)
  • 单次采样得到纯内点集的概率为\((1-\epsilon)^m\),其中\(m\)为最小采样点数

迭代次数计算

\[N = \frac{\log(1-p)}{\log(1-(1-\epsilon)^m)} \]

其中:

  • \(N\):需要的迭代次数
  • \(p\):期望的成功概率(通常取0.99或0.995)
  • \(\epsilon\):估计的外点比例
  • \(m\):最小采样点数(PnP中为4)

详细算法流程

1. 随机采样阶段

从所有\(n\)个3D-2D点对中随机选择\(m=4\)个非共线点作为最小子集

2. 模型拟合阶段

使用选中的4个点计算初始位姿\((\mathbf{R}, \mathbf{t})\)

  • 通常使用EPnP算法进行快速求解
  • 验证旋转矩阵的正交性:\(\mathbf{R}^T\mathbf{R} = \mathbf{I}\)

3. 一致性验证阶段

计算所有\(n\)个点对的重投影误差:

\[e_i = \sqrt{(\hat{u}_i - u_i)^2 + (\hat{v}_i - v_i)^2} \]

将误差小于阈值\(\tau\)的点标记为内点:

\[\text{inlier}_i = \begin{cases} 1 & \text{if } e_i < \tau \\ 0 & \text{otherwise} \end{cases}\]

4. 最优模型选择

统计内点数量,保留内点最多的模型作为候选

5. 全局优化

使用所有内点重新优化位姿,通常采用Levenberg-Marquardt算法最小化总重投影误差

工程应用要点

参数设置策略

迭代次数选择

// OpenCV典型参数设置
int iterationsCount = 300;      // 最大迭代次数
float reprojectionError = 2.0;   // 重投影误差阈值(像素)
double confidence = 0.99;       // 期望置信度

阈值设定指导原则

  • 重投影误差阈值:通常设为1-3像素
    • 高精度场景:1.0像素
    • 一般场景:2.0像素
    • 噪声较大场景:3.0像素

外点比例估计

  • 特征匹配场景:外点比例通常为20-50%
  • SLAM回环检测:外点比例可能高达60-80%
  • 标定场景:外点比例通常较低,约5-15%

性能优化技巧

早期终止策略

  • 当内点数量超过设定比例时提前终止
  • 动态调整迭代次数:\(N_{adaptive} = \min(N_{max}, N_{theoretical})\)

预处理优化

  • 使用归一化坐标减少数值误差
  • 预先剔除明显异常的点对
  • 使用分层RANSAC提高效率

计算复杂度分析

时间复杂度\(O(N \cdot m \cdot n)\)

  • \(N\):迭代次数
  • \(m\):最小采样点数(固定为4)
  • \(n\):总点数

内存复杂度\(O(n)\)

适用场景分析

高适用性场景

  • 视觉SLAM:处理动态环境中的外点
  • AR应用:快速鲁棒位姿估计
  • 机器人导航:传感器噪声处理

不适用场景

  • 外点比例过高(>80%)的情况
  • 实时性要求极高的嵌入式系统
  • 点数极少(<4个)的场景

与其他算法对比

算法 外点处理能力 计算速度 精度 适用场景
RANSAC PnP 优秀 中等 含外点的实际应用
EPnP 理想数据
DLT 大量点数据
P3P 最快 最少点要求

代码实现示例

// RANSAC PnP典型实现
cv::Mat rvec, tvec;
cv::Mat inliers;// 设置RANSAC参数
int iterationsCount = 300;
float reprojectionError = 2.0;
double confidence = 0.99;// 执行RANSAC PnP
bool success = cv::solvePnPRansac(objectPoints,           // 3D点imagePoints,            // 2D点cameraMatrix,           // 相机内参distCoeffs,             // 畸变系数rvec, tvec,             // 输出位姿false,                  // 使用初始估计iterationsCount,        // 最大迭代次数reprojectionError,      // 重投影误差阈值confidence,             // 置信度inliers,                // 内点标记cv::SOLVEPNP_EPNP       // 内部使用EPnP
);// 评估结果
double inlier_ratio = (double)inliers.total() / objectPoints.size();
std::cout << "Inlier ratio: " << inlier_ratio << std::endl;

实际应用案例分析

案例1:AR标记检测

场景描述

  • 检测平面AR标记的6个角点
  • 相机分辨率:640×480
  • 标记尺寸:10cm×10cm

参数设置

int iterationsCount = 100;
float reprojectionError = 1.5;
double confidence = 0.99;

典型结果

  • 内点比例:85-95%
  • RMSE:< 1像素
  • 处理时间:5-15ms

案例2:机器人导航

场景描述

  • 使用AprilTag进行机器人定位
  • 相机:全局快门,640×480
  • 环境:室内结构化环境

参数设置

int iterationsCount = 500;
float reprojectionError = 3.0;
double confidence = 0.99;

典型结果

  • 内点比例:70-85%
  • RMSE:< 2像素
  • 处理时间:10-25ms

算法性能分析与对比

计算复杂度对比

算法 时间复杂度 空间复杂度 最小点数 外点处理
P3P \(O(1)\) \(O(1)\) 3
EPnP \(O(n)\) \(O(n)\) 4
DLT \(O(n^3)\) \(O(n^2)\) 6
RANSAC PnP \(O(N \cdot n)\) \(O(n)\) 4 优秀

参数优化建议

高精度场景(如:工业检测):

iterationsCount = 1000;
reprojectionError = 1.0;
confidence = 0.999;

自适应参数调整策略

// 基于内点比例的自适应调整
double inlier_ratio = (double)inliers.total() / objectPoints.size();if (inlier_ratio < 0.3) {// 外点过多,增加迭代次数iterationsCount *= 2;
} else if (inlier_ratio > 0.9) {// 内点比例很高,可以减少迭代次数iterationsCount = std::min(100, iterationsCount);
}

与SVD的关系与对比

相同点

  • 都用于求解刚体变换(旋转+平移)
  • 都基于最小二乘优化
  • 都可应用于3D点配准问题

核心区别

特性 SVD方法 PnP方法
输入数据 两组3D点 3D点 + 对应2D图像点
变换类型 3D-3D变换 3D-2D投影变换
坐标系 任意坐标系间变换 世界坐标系→相机坐标系
约束条件 欧氏距离保持 透视投影约束
应用场景 点云配准、ICP 相机标定、位姿估计

实际应用中的互补关系

SLAM系统中的典型应用

  • 前端跟踪:使用PnP进行帧间位姿估计
  • 后端优化:使用SVD进行全局优化
  • 回环检测:PnP+RANSAC进行候选验证

多传感器融合

  • 激光雷达+相机:SVD处理激光点云,PnP处理视觉特征
  • IMU+视觉:PnP提供视觉约束,SVD优化多传感器数据

常见问题与解决方案

1. 退化情况处理

共线点问题

// 检查点是否共线
bool checkCollinearity(const std::vector<cv::Point3f>& points) {if (points.size() < 3) return true;cv::Point3f v1 = points[1] - points[0];cv::Point3f v2 = points[2] - points[0];cv::Point3f cross = v1.cross(v2);return cv::norm(cross) < 1e-6;
}

平面退化

  • 当所有3D点位于同一平面时,深度信息不明确
  • 解决方案:添加额外约束或使用平面PnP算法

2. 数值稳定性优化

坐标归一化

// Hartley归一化
cv::Mat normalizePoints(const std::vector<cv::Point2f>& points) {cv::Mat mean, std_dev;cv::Mat data = cv::Mat(points).reshape(1);cv::reduce(data, mean, 0, cv::REDUCE_AVG);cv::Mat diff = data - cv::repeat(mean, data.rows, 1);cv::pow(diff, 2, diff);cv::reduce(diff, std_dev, 0, cv::REDUCE_AVG);cv::sqrt(std_dev, std_dev);cv::Mat T = cv::Mat::eye(3, 3, CV_64F);T.at<double>(0,0) = 1.0/std_dev.at<double>(0);T.at<double>(1,1) = 1.0/std_dev.at<double>(1);T.at<double>(0,2) = -mean.at<double>(0)/std_dev.at<double>(0);T.at<double>(1,2) = -mean.at<double>(1)/std_dev.at<double>(1);return T;
}

3. 性能优化技巧

并行化处理

// 使用OpenMP并行计算重投影误差
#pragma omp parallel for
for (int i = 0; i < objectPoints.size(); i++) {cv::Point2f projected;cv::projectPoints(objectPoints[i], rvec, tvec, cameraMatrix, distCoeffs, projected);errors[i] = cv::norm(projected - imagePoints[i]);
}

总结

RANSAC PnP算法是实际工程中应用最广泛的位姿估计方法,其核心优势在于:

  1. 鲁棒性强:能有效处理外点和噪声
  2. 精度高:在内点比例合理的情况下能达到亚像素精度
  3. 适用性广:适应各种实际应用场景

在实际应用中,需要根据具体场景选择合适的参数设置,并注意数值稳定性和计算效率的平衡。与SVD等方法结合使用,可以在更复杂的多传感器系统中发挥重要作用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/945004.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年知名的煤气加压风机,稀释风机实力源头

2025年知名的煤气加压风机与稀释风机实力源头企业推荐 在工业领域,煤气加压风机和稀释风机是关键的设备,广泛应用于化工、石油、冶金、电力等行业。随着技术的进步,风机行业涌现出一批技术领先、品质过硬的企业。本…

linux流量检测

在工作,会遇到需要排查当前的网络流量,排查当前哪些服务进程比较耗流量,这里就介绍几个参考工具 iftop - 实时流量监控神器 安装 apt install iftop # Ubuntu/Debian yum install iftop # CentOS/RHEL使用方式 # …

2025/10/24

2025/10/24学习算法

[AT_nikkei2019_2_final_h] 逆にする関数 题解

神秘题观察函数,发现 \(f(1) = a_n, f(n) = a_1, ......\) 其实描述了一种对应关系,如果一个对应矛盾则该序列不合法。 考虑 \(O(n^2)\) 的暴力怎么写,枚举区间的中点,向左右拓展维护是否合法,和已知的对应关系。…

一文剖析 丨什么是多模态大模型?

从 “纸上谈兵” 到 “融会贯通”,多模态大模型正在赋予人工智能感知和理解复杂现实世界的能力。在人工智能发展历程中,我们曾见证过只懂文本的 “书生”、只识图像的 “画师”,以及只辨语音的 “听者”。这些单模态…

【linux内核】super_lock

struct super_block {struct list_head s_list; /* Keep this first */dev_t s_dev; /* search index; _not_ kdev_t */unsigned char s_blocksize_bits;unsigned long s_blocksize;loff_t s_maxbytes; /* Max…

OPPO手机“绿线”障碍争议,高价等于高端,何以分食iPhone市场?

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

k8s中nginx和headless服务搭配使用引发的小问题

某天收到一个奇怪的问题,这个故障感觉还挺好玩,所以分享出来。 背景 某个生产业务部署在k8s中,业务的nginx和服务a(2个副本 下面称为pod-a-1,pod-a-2 ),全部运行在同一个ns下面,同时为pod-a创建一个headless服…

2025 年家用电梯厂家最新推荐榜单:实力厂商安全性能与定制优势深度解析,助别墅 / 自建房用户精准选购适配产品

引言 当前国内别墅、自建楼等住宅数量持续增长,家用电梯需求随之大幅攀升,但市场乱象却让消费者选购陷入困境。众多厂商资质良莠不齐,部分小型企业缺乏核心技术支撑,产品安全性能无法保障,且安装流程不规范、售后…

SpringBoot整合SpringDoc

SpringBoot整合SpringDoc 一、SpringDoc 是什么? SpringDoc 是一个基于 OpenAPI 3.0 规范的开源 API 文档生成工具,专为 Spring Boot 应用设计。它能自动扫描项目中的 REST 接口,生成标准化的 API 文档,并提供交互…

GEO靠谱推荐:GEO技术开启精准农业与资源管理新纪元 - 勤懒调和者

在保障粮食安全和实现资源可持续利用的全球议题下,GEO技术正以其宏观、精准、高效的特点,为农业与资源管理领域带来革命性变革。通过整合遥感监测、地理信息系统和全球定位技术,GEO为实现精准化、智能化的农业生产和…

下一代 AI Agent 的基石:Real-Time AI 新基建丨Convo AIRTE2025

超低延迟的实时 AI 是实现人机交互无缝融入日常生活的关键。从推理加速、流式模型设计,到高并发调度,都对底层设施提出了极限挑战。由 硅基流动 和 TEN Framework 联合出品的 「Real-Time AI Infra 专场」 将剖析实时…

2025 年水性透水地坪专用漆制造商最新推荐榜:聚焦企业专利技术、品质管控及知名客户合作案例的权威解析

随着生态城市建设和海绵城市政策的推进,水性透水地坪专用漆作为环保铺装材料的关键组成部分,其市场需求持续增长。该产品不仅需要具备优异的透水性能和耐磨性,还需符合严格的环保标准。本文基于行业调研数据和技术参…

区间摩尔投票 - 教程

区间摩尔投票 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "…

一张图讲清楚企业微信的好友和群

适用企业微信版本:2025年10月24日前后。企业微信一直在改版,官方文档大部分滞后,参考性不强,主要还得靠自己试。

中国企业DevOps工具链选型:本土化适配与安全可控成关键考量

中国企业DevOps工具链选型:本土化适配与安全可控成关键考量 随着中国企业数字化转型进入深水区,DevOps工具链的选择已成为企业技术战略的重要组成部分。在云原生、安全合规等核心需求驱动下,国内企业正面临阿里云效…

技术拐点将至:AI 大模型的挑战突围与产业重构 - 指南

技术拐点将至:AI 大模型的挑战突围与产业重构 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&qu…

详细介绍:如何将华为手机的照片转移到电脑

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Executing System Commands in Python - ENGINEER

Executing System Commands in Python Executing system commands in Python can be done using the os and subprocess modules. These modules allow you to run shell commands from within your Python code, whi…

【读论文】AI笔记(一)9月26日组会前 - 教程

【读论文】AI笔记(一)9月26日组会前 - 教程2025-10-24 10:18 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: b…