TT Lab
博客

한국어 English 日本語 中文

开始
博客

博客

U-Net 与 HRNet:保持分辨率的结构与热图输出

状态:草稿(2026-10-13),部分为实测值。 第 1 节和第 4 节的示例是在笔记本电脑 CPU 上直接运行得到的值(code/03_heatmap.py, 3 秒)。论文数据引自原文并附带了相应的条件。寻球模型的实测数据引用自 TT Score 模型剖析第 2 篇。 编写规则:以实测数据为基础,未能测得的数据标记为“未实测”。

目录

1. 分类要缩小,而位置必须保留

在第 1 篇中提到过,池化在扩大感受野的同时会模糊位置。我们来亲自看看它模糊到了什么程度。我们在 32×32 的图像上画了一个直径 3px 的球,并反复进行了 2×2 的平均池化(实测)。

分辨率 尺寸 保留为球的格子数(值 > 0.25) 最亮格子
1 32×32 7 1.00
1/2 16×16 2 1.00
1/4 8×8 1 0.31
1/8 4×4 0 0.08
1/16 2×2 0 0.02

在 1/8 分辨率下,球几乎无法与背景区分。这意味着在分类模型(ResNet 通常会缩小到 1/32)的深层中,并没有保留球的准确位置。然而,深层具有判断“这是球吗”的广阔上下文。 我们需要一种兼具上下文(深而广的视角)和位置(浅而细致的视角)的结构。答案由此分为了两个分支。

해상도를 지키는 두 방법 U-Net: 줄였다가 키우고, 같은 층끼리 잇는다 인코더(줄이기) 디코더(키우기) 점선 = 건너뛰기 연결: 줄이기 전의 세밀한 위치를 디코더에 다시 준다 HRNet: 고해상도 갈래를 끝까지 둔다 1/4 1/8 1/16 1/32 세로 화살표 = 여러 해상도를 계속 섞는다 출력 히트맵은 가장 위(1/4) 갈래에서 나온다 둘 다 「작은 물체의 정확한 위치」를 잃지 않으려는 설계다. 공 찾기의 WASB·BlurBall 은 HRNet 쪽이다.
图:U-Net 通过先缩小再放大并在同层之间进行连接,而 HRNet 则在保持高分辨率分支到底的同时混合多种分辨率

2. U-Net(2015):缩小再放大,同层相连

Ronneberger 等人为了对显微镜细胞图像进行分割(为每个像素涂上“是细胞还是背景”)而开发了 U-Net。正如其名,它呈 U 字形。

第 2 篇中 ResNet 的捷径是将值 相加,而 U-Net 的跳跃连接则是 拼接。相加是对相同信息的轻微修正,而拼接则是将不同种类的信息(位置和语义)并排放在一起,让下一层去融合它们。

用于在少量数据下进行训练的机制

医疗影像的标注成本很高。该论文的训练数据仅有约 30 张电子显微镜分割图(512×512)以及 35 张和 20 张的细胞追踪竞赛数据。因此,其设计完全迎合了数据节省的需求。

结果(论文):在电子显微镜分割竞赛中以 0.000353 的畸变误差获得第一名(此前最高为 0.000420)。在 2015 年细胞追踪竞赛的两组数据中,IoU 分别为 0.9203(第二名 0.83)和 0.7756(第二名 0.46)。当时的 GPU 在 1 秒内即可完成一张 512×512 图像的分割,训练则使用 6GB 内存的桌面 GPU 花费了 10 个小时。

U-Net 不仅超越了医疗影像领域,还成为了几乎所有“需要输出与输入相同大小的地图”的任务的基础形态。乒乓球寻找模型 TrackNetV2 也采用了 U-Net 结构(TT Score 模型剖析第 2 篇)。

3. HRNet(2019):高分辨率贯穿始终

U-Net 先缩小一次再放大。尽管在缩小过程中丢失的位置信息通过跳跃连接被找回,但解码器接收到的高分辨率特征属于 浅层,因此语义较弱。Sun 等人为人体姿态估计(寻找 17 个关节的位置)开辟了另一条道路。那就是 从头到尾维持高分辨率分支。

结果,高分辨率分支在不断吸收深层语义信息的同时,没有丢失分辨率。

模型(COCO 姿态,验证集) 输入 AP 参数量 GFLOPs
SimpleBaseline(ResNet-152) 256×192 72.0 6860万 15.7
HRNet-W32(无预训练) 256×192 73.4 2850万 7.10
HRNet-W32(ImageNet 预训练) 256×192 74.4 2850万 7.10
SimpleBaseline(ResNet-152) 384×288 74.3 6860万 35.6
HRNet-W48 384×288 76.3 6360万 32.9

(论文表 1。AP 是对多个阈值下的关节位置准确度求平均得到的值。)在测试集(test-dev)上,HRNet-W48 384×288 达到了 75.5。该表的核心要点是,在相同输入下,它比 SimpleBaseline 的参数和计算量更少,却更加准确。“先丢弃分辨率再找回”远不如“不丢弃”来得高效。

4. 热图:绘制地图而非输出坐标

U-Net 和 HRNet 都会输出 地图。对于分割而言,它是为每个像素涂上“属于物体的概率”;对于姿态和寻球而言,它则是涂上“关节(球)在此处概率”的 热图。标准答案也是用地图制作的。在关节位置绘制一个小型高斯山丘,并测量预测地图与每个像素的均方误差(MSE)。Stacked Hourglass(2016)使用的是标准差 1px 的山丘,HRNet 论文也写着 1px,而官方配置文件中则使用了 σ=2。根据 HRNet 官方配置标准,输出分辨率为输入的 1/4(256×192 → 64×48)。

亲自尝试:将热图读回坐标

热图最终必须转换成坐标才能使用。方法有两种。

  1. argmax:最亮格子的位置。简单但会产生一个格子大小的误差。
  2. 加权中心:对超过阈值(最大值的一半)的格子位置按其数值进行加权平均。能够恢复格子间的位置(亚像素)。

我们在 256×256 图像的 2000 个随机位置绘制了 σ=2 格子的山丘,并针对不同的热图步长(相对于原图的缩小程度)进行了读回,测量了原图坐标误差(实测,无噪声的理想情况)。

步长 热图尺寸 argmax 平均误差 加权中心平均误差
1 256×256 0.37px 0.05px
2 128×128 0.77px 0.10px
4 64×64 1.53px 0.20px
8 32×32 3.05px 0.40px

从中可以读出两点。第一,argmax 误差与步长成正比。如果用 argmax 读取 1/4 分辨率的热图,平均会直接损失 1.5px。第二,加权中心将误差减少了 7–8 倍。因此,姿态估算代码会在 argmax 之后附加诸如向邻近格子方向偏移 1/4 格子的校正等后处理,而寻球的 WASB 使用的是斑块的 加权中心。不过,实际的热图中存在噪声和第二个峰值(如日光灯之类的假球),因此不会像这张表那么干净。

5. 局限性

6. 与我们项目的联系

TT Score 的寻球完全遵循了本文的脉络(TT Score 模型剖析第 2 篇)。

下一篇文章将介绍如何对这些地图进行评分以及如何对其进行训练,内容涉及损失函数与训练技巧。

蒂蒂小结。 缩小到 1/8 的话球就消失啦。所以寻球模型会把大地图一直带在身边。虽然很重,但总比弄丢球要好呢。

参考文献

登录后即可点赞

评论

还没有评论。

登录后即可发表评论