小论文工作日记(三)

最近又做了一些无用的工作,尝试写SDM_UniPS 的训练脚本,但是没写明白,耽误了一点时间…

对科研又有了一些新的心得,理想的顺序应该是先做一个baseline(基准),然后基于这个基准去逐步改进,并做消融实验,逐步的观察模型效果,而不是上来就用一个新的模型新的结构,两眼一抹黑的乱改

为什么又放弃了SDM_UniPS?主要还是因为他是做的高分,还是比较占内存的,硬件限制~

下定决心开始从 UniPS 开始改进,但是原作者写的比较乱,花了2天时间重写了一下外围的训练和推理脚本,修复了一些BUG。现在大概训练了15个epoch,结果为:

Ball Bear Buddha Cat Cow Goblet Harvest Pot1 Pot2 Reading Avg
4.79 10.53 17.17 12.72 16.02 23.47 33.23 13.42 12.11 23.43 16.69

哈哈,我感觉他的效果也很一般,找了一下论文,他果然没有在DiLiGenT上做测试,可能是指标太差了吧~

Baseline 跑好了之后,接下来就是修改。整理了一下各个AI老师给我的意见,整理一下:

顺便写一个通用提示词方便复制:

我在复现论文UniPS satoshi-ikehata/Universal-PS-CVPR2022: Official Pytorch Implementation of Universal Photometric Stereo Network using Global Lighting Contexts (CVPR2022),并以其作为baseline进行改进。我如果…

一、改进方向

1. 损失
  • 来源:ChatGPT/GLM
  • 难度:简单

光度立体问题中,一直都是用MSE作为损失计算法向量。可以考虑增加法线梯度损失,边缘感知损失

but,逐像素怎么做高频约束?需要细细讨论…

GLM老师甩给我一篇论文Image Gradient-Aided Photometric Stereo Network

由于现在的网络是先两阶段损失,逐像素计算损失 + 低像素特征图损失

2. 小波输入
  • 来源:Claude
  • 难度:简单

Claude老师参考Lino UniPS, 把输入的图先做一个小波分解,然后视为图片直接送入编码器

有想法,不过有点抄袭的嫌疑,我个人没啥兴趣…
而且原作者还在解码器端也做了一些手脚
回头可以让AI帮我写一个版本试试看

3. Dino嵌入
  • 来源:Claude
  • 难度:中等

使用DINOv3-ConvNeXt-Tiny / small 作为几何先验。

Dino 输出为:

维度 分辨率(H,W)
96 H/4, W/4
192 H/8, W/8
384 H/16 , W/16
768 H/32, W/32
同时也提供token形式的特征输出(1+ H * W / 1024, 768)。

而恰好的是,UniPS中,swin Transformer的输出的维度一模一样。

按照C老师的说法,可以冻结DINO,然后在communication之前把特征concat一下,或者再增加一个cross attention
相当于提供了一些材质和几何的先验,可能会有改善

这个方案深得我心,明天可以做个消融实验试一下,而且也可以测试把swin transformer干掉

4. VGGT嵌入
  • 来源:GLM/
  • 难度:困难

在熟悉dino之后,可以把VGGT的global attention搬进来,并少做几层attention,最后在更靠后的位置嵌入特征,作为一种几何先验。这里就有点远了,上面的任务就够做一段时间实验了

二、原模型改进

1. 模型职责分离

原模型把网络结构、优化器、调度器,损失都揉在一起了,不太利于后期的修改,不过目前来看,各位老师提出的方案还不至于修改这里,可以先放一放

2. 保存读取

原模型把各个结构的权重文件是分开保存的,这个可以考虑保存权重字典,要不然后面也不好增加模块,在做dino嵌入的时候可以考虑一下

3. 分辨率

这个我认为是个大问题,在池田后面的工作SDM中,第一个解决的问题就是分辨率,把图片裁成patch再输入而不是下采样输入。UniPS中resize也是为了节省内存,这里我分析还是要借鉴VGGT,分块,分片。

欸?突然有个大胆的想法

vggt是 global attention , frame attention ,为什么不加一个pixel attention?

暂时不考虑patch的问题的话,

global attention 是[N* H* W , embedding]

frame attention 是N * [ H * W, embedding]

pixel attention 是 [H* W, N* C]

但是这样H* W 作为transformer的序列显得实在是太长太长了,但是如果做patch级别的又没什么意义

再议,再议吧…先做一些务实的改进,这些天马行空的想法暂时还是做不了,无论是能力还是资源…


小论文工作日记(三)
http://blog.mingxuan.xin/2026/04/13/20260403/
作者
Obscure
发布于
2026年4月13日
许可协议