# 解剖位置嵌入

探索面向医学影像应用的解剖位置嵌入：一种编码空间与解剖上下文、以改善医学图像分析的新思路。

Canonical: https://astro-blog-bice-chi.vercel.app/cn/blog/anatomical-positional-embedding

Edition: cn · Language: zh-CN · Revision: 2026-10-21

Published: 2026-10-21

这个想法在我脑子里放了一阵子。 我承认，它仍然有些牵强。 愿意把它写出来，只因为我觉得它很有意思，或许也能带来一点启发。 所以，且听我说。

## [**要点**](https://astro-blog-bice-chi.vercel.app/cn/blog/anatomical-positional-embedding#%E8%A6%81%E7%82%B9)

解剖嵌入有两个目标：

1.  把“全局”的结构上下文传递给局部图像块（也传给 **LLM**？）
2.  当 **LLM** 发起查询时，检索最相关的图像块（例如，“再看一眼左心室”）

## [这是用来做什么的？](https://astro-blog-bice-chi.vercel.app/cn/blog/anatomical-positional-embedding#%E8%BF%99%E6%98%AF%E7%94%A8%E6%9D%A5%E5%81%9A%E4%BB%80%E4%B9%88%E7%9A%84)

在讨论它是什么之前，我想先说清楚：**为什么**我们需要另一种位置嵌入？传统的自学习位置嵌入或正弦位置嵌入，在自然图像上已经表现得相当不错。

这又回到了“数据空间大、样本量小”的问题。

常见做法是以 滑动窗口的方式 图像块之间很可能有重叠 处理图像，尤其是在需要细致分析纹理的应用中（例如小病灶分析）。不过，也有研究表明，更大的上下文窗口通常会有帮助。[^1]

当输入只有局部图像时，传统位置嵌入所编码的信息有限——可能只是图像块之间的相对排列关系。

实际上，还有更重要的上下文可以、也应该被带入局部图像块的分析：它相对于全身的位置，以及所在身体区域的大体形态变化与拓扑结构。

这就是我提出解剖嵌入的原因。

## [好的位置嵌入应具备什么](https://astro-blog-bice-chi.vercel.app/cn/blog/anatomical-positional-embedding#%E5%A5%BD%E7%9A%84%E4%BD%8D%E7%BD%AE%E5%B5%8C%E5%85%A5%E5%BA%94%E5%85%B7%E5%A4%87%E4%BB%80%E4%B9%88)

如果你没有关注过位置嵌入的演变，可以看看 [designing-positional-encoding](https://huggingface.co/blog/designing-positional-encoding)。

作者指出，对于**一般序列**，好的位置嵌入应当具备以下性质：

1.  每个位置都有**唯一**的编码
2.  两个已编码位置之间**可以插值**
3.  能够**泛化**到更长的序列
4.  对于给定输入，结果是**确定的**
5.  能够**扩展**到多个维度

我发现，只要把 物理空间 坐标空间中的一个点 中“位置”的含义，换成 人体 人体中的一个位置 中的“解剖位置”，这些性质几乎都适用。 （第 3 条除外，因为人体之外的空间在这里没有意义。）

## [解剖嵌入与分割嵌入](https://astro-blog-bice-chi.vercel.app/cn/blog/anatomical-positional-embedding#%E8%A7%A3%E5%89%96%E5%B5%8C%E5%85%A5%E4%B8%8E%E5%88%86%E5%89%B2%E5%B5%8C%E5%85%A5)

紧接着的问题是：我们已经有大量关于身体区域语义分割的研究，那么它与解剖嵌入有什么区别，又有什么联系？

从对齐的角度看，这是在输入像素空间与“参数化”的结构空间之间做取舍。

具体来说，解剖嵌入更侧重整体表征，而分割更侧重逐像素的精确映射。这种区别相当微妙，在处理模糊区域时才格外明显：解剖嵌入从整体身体布局出发，进行**自上而下**的推断；分割则主要依据视觉线索，进行**自下而上**的推断。

> （这个例子由 Gemini 提议，我觉得很贴切。）

想象 CT 扫描中一个边界模糊的区域，例如肝脏与右肾之间的边界。

如果两侧像素强度相近，分割模型（自下而上）可能难以判断，甚至把边界标错。

解剖嵌入（自上而下）则会提供这样的上下文：这个图像块位于肾脏上极通常与肝脏下表面相邻的位置。这种关于人体整体布局的“知识”，提供了可以消解局部歧义的强先验。

最后，要让它对语言模型有用，还需要额外考虑。这意味着，我们应该能够借助这样的嵌入，通过提示词得到恰当的文本信息（也许需要额外的投影层？）。

## [可能的实现方式](https://astro-blog-bice-chi.vercel.app/cn/blog/anatomical-positional-embedding#%E5%8F%AF%E8%83%BD%E7%9A%84%E5%AE%9E%E7%8E%B0%E6%96%B9%E5%BC%8F)

要实现它，可以使用擅长学习数据压缩表征的变分自编码器（VAE）。关键是用 三个不同的目标，或者说三种“监督”，来训练它，确保最终嵌入能够捕捉我们需要的全部上下文 看上去似乎太多了，但图像生成中的 VAE 也用三种监督来训练，这样说来似乎也正常？ ：

*   像素级对齐：为了让嵌入理解局部组织，使用标准的重建损失。解码器必须能够从嵌入中重建出原始图像块。VAE 有很多选择，[^2]我目前倾向于 beta-VAE，因为它简单，而且可以控制重建质量与解耦之间的取舍，这也可能适合解剖嵌入。
    
*   结构对齐：为了让嵌入知道自己在人体整体中的位置，可以借鉴掩码自编码器（MAE）。[^3]模型需要仅凭少数局部图像块的嵌入，预测整体器官结构（例如全身掩膜）。这会迫使它学习全局解剖布局。
    
*   语言对齐：为了能够通过文本提示词（如“给我看看左心室”）检索嵌入，再增加第三个解码器。它负责连接图像嵌入与语言模型的嵌入空间，可能会使用类似 SigLIP 的对比损失。[^4]
    

希望通过平衡这三项，就能得到一个好的嵌入，把解剖上下文传递给局部图像块和 **LLM**。

出处与延伸

## 参考资料

[^1]: Why is patch size important? Dealing with context variability in segmentation networks: [https://openreview.net/forum?id=y6g0cu8q19#discussion](https://openreview.net/forum?id=y6g0cu8q19#discussion)

[^2]: From Autoencoder to Beta-VAE: [https://lilianweng.github.io/posts/2018-08-12-vae/](https://lilianweng.github.io/posts/2018-08-12-vae/)

[^3]: Masked Autoencoders Are Scalable Vision Learners: [https://arxiv.org/abs/2111.06377](https://arxiv.org/abs/2111.06377)

[^4]: Sigmoid Loss for Language Image Pre-Training: [https://arxiv.org/abs/2303.15343](https://arxiv.org/abs/2303.15343)
