08|总复盘:统一框架、资料索引与自测

统一框架

输入数据
  → 表示与预处理
  → Backbone / Encoder 提取特征
  → 多尺度或全局信息交互
  → 任务 Head / Decoder
  → logits、框、mask、深度或重建图像
  → loss → backward → 参数更新

无论图片多复杂,我都可以问:输入输出、旧瓶颈、新数据流、训练监督、推理代价。

资料索引

基础、并行与环境

计算图.png、2.png、分布式.png、张量并行.png、113.png、aa.png,以及 pycharm报错处理/ 下 8 张截图。

骨干与卷积结构

DenseNet.png、VoVNet.png、ACNet_DBB.png、RFB-Net.png。

目标检测

YOLO v3.png、FCOS.png、Cascade R-CNN_HTC .png、DETR.png、Deformable-DETR.png、DINO.png、BorderDet.png、MimicDet.png、DCL.png、SaccadeNet.png。

实例分割

Mask R-CNN_Mask Scoring R-CNN_PointRend.png、YOLACT_YOLACT++.png、BlendMask.png、CondInst-BoxInst.png、CenterMask.png、SOLO.png、PolarMask.png、TensorMask.png。

Transformer 与自监督

Transformer.png、ViT.png、Swin_Transformer.png、MAE_drawio.png。

具体任务

RDN_Meta-SR.png、HDR-Net.png、DeepLPF.png、AEMatter.png、Mannequin_Challenge_Depth.png、VideoFlow_drawio.png、PredNet.png。

比较模型时的统一表格

维度 我要问什么
任务 分类、检测、分割、深度、重建还是视频?
表示 anchor、中心点、query、mask、射线还是 patch token?
特征 CNN、层级 Transformer,还是混合结构?
多尺度 FPN、膨胀卷积、窗口层级或多尺度采样?
监督 分类、框回归、IoU、mask、重建或一致性?
成本 标注、收敛、显存、通信、延迟和后处理?

论文 AP、FPS、参数量不能脱离数据集、输入尺寸、硬件、batch、精度模式和代码实现直接横比。结构图能证明模型怎么设计,不能证明它一定适合我的任务。

阅读检查

  1. backward() 与 step() 分别做什么?
  2. 数据并行和张量并行分别切分什么?
  3. FCOS 没有 anchor,为什么仍需要样本分配?
  4. DETR 为什么可以不用传统 NMS?
  5. YOLACT 的 prototype 和实例系数分别负责什么?
  6. patch 变小后,ViT 为什么明显变贵?
  7. Swin 的 shifted window 解决什么问题?
  8. MAE 预训练后为什么通常只保留 Encoder?
  9. 为什么 KMP_DUPLICATE_LIB_OK=TRUE 不能算正式修复?

能用自己的话回答这些问题,才算把 47 张孤立图片变成一套可继续生长的知识框架。

讨论稿

1. backward() 与 step() 分别做什么?

loss.backward() 沿计算图使用链式法则,把损失对各个可训练参数的梯度写入参数的 .grad;它只负责“算应该往哪里改”。optimizer.step() 才根据优化算法、学习率和这些梯度真正修改参数。因此只有 backward() 而没有 step(),模型不会学习;普通训练还要先 zero_grad(),否则梯度会继续累积。

2. 数据并行和张量并行分别切分什么?

数据并行复制完整模型,把一个 batch 切给不同 GPU,各卡算出梯度后再同步。张量并行把同一层的大矩阵或张量切到多卡上,各卡共同完成一次前向与反向。前者解决吞吐量问题,前提是模型能放进单卡;后者主要解决模型或单层放不进单卡的问题。

3. FCOS 没有 anchor,为什么仍需要样本分配?

去掉 anchor 只是取消预设框,并没有自动回答“特征图上的哪个位置负责哪个真实目标”。训练仍要决定正负位置、重叠目标如何选择、不同尺度的目标分到哪一层。分配规则如果不好,模型会得到冲突或低质量监督,所以 anchor-free 不等于 assignment-free。

4. DETR 为什么可以不用传统 NMS?

经典检测器常让多个候选同时命中同一目标,因此推理后用 NMS 去重。DETR 通过匈牙利匹配,把每个真实目标一对一分配给一个预测 query,其余预测对应 no-object。重复框在训练阶段就会受到惩罚,因此模型被训练为直接输出一个无重复的目标集合,通常不再需要传统 NMS。

5. YOLACT 的 prototype 和实例系数分别负责什么?

prototype masks 是整张图共享的一组基础形状或空间成分;实例系数决定某个目标如何线性组合这些基础成分。前者回答“有哪些可复用的 mask 基底”,后者回答“这个实例该用哪些基底、各占多少”。最后再裁剪到对应框附近,得到实例 mask。

6. patch 变小后,ViT 为什么明显变贵?

patch 数 N = HW/P2。边长 P 减半时,token 数变成 4 倍;全局注意力矩阵是 N × N,相关计算和显存会接近原来的 16 倍。更小 patch 保留了更多空间细节,但代价不是线性增长。

7. Swin 的 shifted window 解决什么问题?

如果每层都使用相同的不重叠窗口,窗口内部可以交流,窗口之间却长期隔离。下一层把窗口平移后,原来属于不同窗口的 token 会进入同一个新窗口,从而产生跨窗口连接。它以局部注意力的成本,逐层扩大信息传播范围。

8. MAE 预训练后为什么通常只保留 Encoder?

Decoder 的作用是完成预训练阶段的像素/patch 重建任务,而真正希望迁移到分类、检测、分割等下游任务的是 Encoder 学到的视觉表征。MAE 特意让 Decoder 较轻,因此预训练结束后可以丢弃它,再给 Encoder 接上新的任务头。

9. 为什么 KMP_DUPLICATE_LIB_OK=TRUE 不能算正式修复?

它只是允许进程继续加载多个 OpenMP runtime,没有消除二进制依赖冲突。程序可能暂时运行,也可能出现性能下降、崩溃,甚至难以察觉的错误结果。正式修复应统一解释器与包来源,在干净环境中重装兼容依赖,并确认进程只加载一套 OpenMP runtime。

回到研究主线

这九个答案又回到同一个学习方法:先找数据如何流,再找监督如何分配,最后区分训练机制与推理行为。只要这三条线清楚,新模型的名字再多,也能被放进已有知识地图里。

研究向后续计划

下一轮整理可以从“资料索引”升级为“论文阅读矩阵”:每个模型补充论文年份、核心假设、数据集、指标、关键消融、计算成本和失败场景。这样这套资料会从学习笔记变成可持续扩展的视觉模型研究手册。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇