在线代码库 · 全部演示脚本
本站全部 34 个 Python 演示脚本,点击任意卡片即可在线查看完整源码(语法高亮 + 行号 + 输出图)。源码仅提供在线学习,不提供文件下载。
核心讲义 · CG × AI
原理总览 + 齐次变换 → 可微分渲染 · 10 个脚本原理图解: 生成入门文档所需的概念示意图。
1. fig_pipeline.png 总流程图: 拆线 -> 分类 -> 识别 -> 拓扑 -> 3D 2. fig_hough_vote.png 霍夫参数空间投票…
演示11: 齐次变换矩阵 — 平移/旋转/缩放 + 复合变换。
2D 演示: 一个三角形依次经过 旋转 -> 缩放 -> 平移 三个变换, 说明齐次坐标如何把三种变换统一成矩阵乘法。
演示12: 正交投影 vs 透视投影。
同一个 3D 立方体, 分别用正交投影和透视投影映射到 2D 平面, 对比"近大远小"(透视)与"平行等大"(正交)的区别。
演示13: Bézier 曲线 (de Casteljau 递推) 与 B-Spline 对比。
用控制点拟合自由形状曲线, 展示: - 三次 Bézier: 由 4 个控制点决定, 递推求值; - 均匀三次 B-Spline: 每 4 个控制点一段, 全局平滑。
演示14: 光栅化 + 深度缓冲 (Z-Buffer)。
手写一个小型三角形光栅化器: 把两个前后重叠的三角形投影后画到像素网格, 用 Z-Buffer 保证"离相机近的像素覆盖远的", 展示遮挡如何被解决。
演示15: 感知机/全连接 — 从"原子"到线性分类。
生成两簇线性可分数据, 手写感知机学习规则 w += lr·y·x 训练, 画出决策边界, 对比感知机(硬阈值)与逻辑回归(软概率)决策边界。
演示16: 卷积 — 视觉特征的"扫描器"。
用几个经典卷积核(Sobel 边缘、高斯模糊、锐化)对合成棋盘/数字图做卷积, 可视化"核与局部窗口的点积"如何提取特征。
演示17: 注意力机制 — 全局关联的"聚光灯"。
手写 scaled dot-product attention: Query 与 Key 做点积 -> softmax 归一化 -> 加权求和 Value。 用一句话(3 个词)…
演示18: 反向传播 + 梯度下降 — 模型训练的"引擎"。
手写一个 2 层全连接网络在 MNIST 子集(或合成两类点)上训练: 1. 前向传播: y = softmax(W2·relu(W1·x + b1) + b2) 2. 反向传播…
演示19: 激活函数与损失函数 — 非线性来源与训练目标。
1. 激活函数: Sigmoid / ReLU / Tanh 曲线及其导数(梯度饱和现象直观可见)。 2. 损失函数: MSE 与 交叉熵 在二分类上的形状对比。
识别系列 · 从 2D 到 3D
霍夫 → RANSAC → 线框 → 三维重建 → 三维模型处理 · 14 个脚本演示1: 霍夫变换检测断裂直线。
生成一张"断成几截"的直线图像, 用 cv2.HoughLinesP 把断裂的直线重新连接起来, 输出 原图 | 边缘图 | 检测结果 三栏对比图。
演示2: 霍夫梯度法检测断裂圆弧。
生成一张"断成多段"的圆环图像, 用 cv2.HoughCircles 识别出完整圆, 输出 原图 | 中值滤波+边缘 | 检测结果 三栏对比图。
演示3: RANSAC 从含大量离群噪声中稳健拟合直线。
对比: 普通最小二乘(被离群点带偏) vs RANSAC(忽略离群点, 拟合主流数据)。
演示4: RANSAC 从含离群噪声的角点/点集中拟合圆。
生成一个带高斯噪声的圆 + 大量随机离群点, 用 skimage.measure.ransac + CircleModel 拟合。
演示5: 几何分析法 — 平面线框图的拓扑图构建与房间识别。
合成一张类似建筑平面图的 2x2 网格墙体线框图(含一个门口缺口与噪点), 流程: 霍夫提取线段 -> 求交点(顶点) -> 构建属性邻接图 -> networkx 最小环基(房…
演示6: 几何分析法 — 属性邻接图构建 + 子图同构识别图元符号。
场景: 一张线框图中包含多个图元(矩形+双对角线、三角形、圆形)。 先将图元转换成"顶点-边"属性邻接图, 再用 networkx GraphMatcher 在大图中 搜索与"矩…
演示7: 点 — 多视图三角测量恢复三维坐标。
模拟两台相机从不同角度观察一个"正方体角点"点云, 用对极几何/DLT 三角化 从两视图同名点恢复三维坐标, 并与真实值对比误差。
演示8: 面 — 长方体最小环基识别 6 个表面 + 平面拟合校验。
已知一个长方体 3D 线框(8 顶点、12 条边), 用图论方法: 1. 构建顶点-边图; 2. 求最小环基(Minimum Cycle Basis), 期望得到 6 个四边形环…
演示9: 线 — 破除非真实交点(视觉伪交点)与虚拟延伸补全。
场景: 两条 3D 线段在 2D 投影中交叉(看起来相交), 但实际在空间中一前一后。 用"拓扑一致性"校验: 两条 3D 线的空间最近距离若超过阈值, 判定为视觉交叉并断开。…
演示1: 三维模型识别与分类 — 三大表示流派对比 + 经典方法.
1. 左: 三种输入表示(多视图 / 体素 / 点云)示意 2. 中: 经典"视图特征 + 形状描述子"分类流程(可运行) — 用 PCA 描述子做简单分类 3. 右: 各流派代…
演示2: 三维点云分割 — 区域生长 + 平面拟合 (经典方法).
用合成点云(两个平面 + 噪声)演示区域生长分割: 1. 计算每个点法向 (PCA 邻域) 2. 选种子点, 向法向/距离一致的邻域生长 3. 分割出不同平面区域
演示3: 三维快速建模 — SfM/多视图三角化 + ICP 配准.
1. 左: 多视图三角化重建稀疏点云 (复用双视图 DLT 原理, 扩展到多视图) 2. 右: ICP 点云配准 — 两片点云对齐成完整模型
演示4: 三维自动化建模 — 程序化/参数化建模 + 生成式对比.
1. 左: 程序化建模 — 用参数(旋转体/挤出)生成复杂形状, 展示"参数→模型" 2. 中: 参数化建模 — 一个参数变化 → 模型连续变形 (控制柄) 3. 右: 生成式建…
演示5: 三维模型分析 — 法向估计 + 曲率分析 + 拓扑(Euler特征).
1. 左: PCA 法向估计 (曲面点云) 2. 中: 主曲率/高斯曲率可视化 (用合成曲面) 3. 右: 拓扑分析 — Euler 特征数 + 面/边/顶点关系
工程实践 · 模型训练实战
初始化 → 训练 → 评价 → 避坑 · 8 个脚本演示20: 参数初始化策略 — Xavier vs He vs 零初始化。
在 10 层全连接网络上比较三种初始化: - 零初始化: 梯度对称, 无法学习; - Xavier: 适合 Sigmoid/Tanh, 保持前向方差; - He: 适合 ReLU…
演示21: 学习率调度 — Step / Cosine / Warm-up / Plateau。
画出 4 种经典学习率调度策略随训练步数的变化曲线。
演示22: 数据增强可视化 — 几何变换 / 颜色抖动 / MixUp。
对一张合成图片依次展示: 旋转、翻转、裁剪缩放、颜色抖动, 以及 MixUp 混合。
演示23: 类别不平衡 — 交叉熵 vs Focal Loss。
在极不平衡二分类(正例占 1%)上比较普通交叉熵与 Focal Loss 的损失曲线与 "易分样本抑制"效果。Focal Loss: FL = -(1-p_t)^γ · log(…
演示24: 过拟合 vs 欠拟合 + 正则化对比。
在多项式回归(真实为 3 次函数, 30 个样本)上: - 欠拟合: 1 次模型; - 恰好: 3 次模型; - 过拟合: 15 次模型(训练误差小, 泛化差); - 正则化:…
演示25: 梯度灾难 — 梯度消失/爆炸 与 梯度裁剪。
1. 深层网络激活梯度随层数衰减/爆炸的示意曲线(理论: 梯度 × 权重谱半径 逐层乘)。 2. 梯度裁剪效果: 训练中出现梯度爆炸时, 裁剪 L2 范数到阈值可稳定训练。
演示26: 评价指标体系 — 混淆矩阵 / Precision-Recall / ROC-AUC。
对一组模拟的二分类预测(含正负例与不同阈值), 画出: - 混淆矩阵 + 四大指标(P/R/F1/Acc); - Precision-Recall 曲线 与 ROC 曲线(AUC…
演示27: 模型复杂度 — Params 与 FLOPs 的手工计算与对比。
用 numpy 手算常见层的参数量(Params)与浮点运算量(FLOPs): - 全连接 FC: W∈R^{m×n} -> params=mn+m, flops…