做医学图像实验时,最容易被忽略的不是模型结构,而是记录方式。 很多实验在当天看起来很清楚:用了哪批数据,改了哪个损失函数,哪张图效果变好了,哪张图出现伪影。可是一旦过了两周,再回头看那些截图和指标,常常只剩一个模糊印象:这个版本好像还可以,但到底为什么好,已经说不清了。
所以我现在更愿意把实验日志当成实验本身的一部分,而不是附属材料。日志不是为了写得漂亮,而是为了让后续的自己能重新进入当时的判断现场。
先记录不可变的信息
一条实验记录最先应该写清楚的,是以后很难凭记忆恢复的信息:
- 数据集版本和病例范围;
- 训练、验证、测试的划分方式;
- 输入图像的预处理流程;
- 网络结构与主要超参数;
- 损失函数、优化器、学习率策略;
- 训练时长、显卡环境和随机种子;
- 输出模型权重、日志、可视化结果的路径。
这些内容看起来琐碎,但它们决定了一个结果是否能被复现。尤其是 CBCT 到 CT、pseudo CT 生成、图像重建这类任务,数据预处理里的一个插值方式、裁剪范围或归一化策略,都可能让结果发生明显变化。
如果一条记录只写“模型效果提升”,但没有写清楚输入数据和配置,那么它更像是心情日记,不像实验日志。
把指标和图像放在一起看
医学图像任务不能只看单个平均指标。PSNR、SSIM、MAE 这些数值可以提供方向,但真正决定方法是否可靠的,往往是局部结构、边界、低对比区域和异常病例上的表现。
我会在日志里保留两类结果:
第一类是整体指标。它们帮助快速判断一个版本是否值得继续追。 第二类是固定病例的可视化对比。每次实验都抽同一组病例、同一层面、同一窗宽窗位,避免因为挑图方式不同而制造错觉。
比较时最好不要只贴“最好看的图”。更有价值的是把典型失败样例放进去:骨边界断裂、软组织过平滑、金属伪影扩散、空气区域异常、局部结构被网络补错。失败样例会告诉你下一轮实验该往哪里改。
记录判断,而不是只记录结果
实验日志里最有用的一段,通常不是表格,而是判断。
例如:
这一版 MAE 略降,但骨结构边缘更糊,说明损失函数可能在平均误差上获益,却牺牲了高频细节。下一步优先检查边缘区域权重,而不是继续扩大模型。
这样的判断可以不完美,但一定要明确。因为研究和工程推进都不是单线性的,后面回看时,真正能帮你接上思路的是“当时为什么做这个选择”。
我会尽量让每条实验记录回答三个问题:
- 这次实验想验证什么?
- 结果支持还是反驳了这个想法?
- 下一步应该继续、修改,还是放弃?
如果这三个问题答不出来,说明实验设计本身可能还不够清楚。
保留最小可复查包
一条完整记录不一定很长,但最好能指向一个最小可复查包:
experiment-id/
config.yaml
train.log
metrics.csv
checkpoints/
previews/
notes.md
notes.md 写人的判断,config.yaml 写机器能复现的配置,metrics.csv 保存指标,previews/ 放固定病例的图像对比。这样做的好处是,文章、项目页和实验目录之间能互相对应,不会变成散落在不同地方的碎片。
最后
我越来越觉得,实验记录的专业感不来自术语密度,而来自可追踪性。 能把一次尝试的动机、配置、结果、失败和下一步讲清楚,比只展示一张好看的结果图更有价值。
对于 CBCT、pseudo CT 和医学图像重建这样的方向,模型当然重要,但长期来看,稳定的记录方式同样重要。它会把一次次零散尝试,慢慢沉淀成真正可以继续生长的研究线索。