一、前言
在上周主要完成了可变形卷积的学习的部署。
本周,结合前段时间的工作与闵老师的讨论,思考了接下来的一些尝试方向。本周重新在之前的网络上尝试添加可变形卷积v4,或者将可变形卷积v2修改为可变形卷积v4。另外,继续学习了数学公式;在空闲之余完成了Latex的下载与安装。
自我反思:在这周花了几天时间忙于毕业典礼、离校、协助弟弟填写志愿等,耽误了一些时间,在之后会加快进度。
二、完成情况
2.1 实验情况
在此之前使用TWM纹理扭曲模块、多任务学习、注意力机制等思想设计了两个基于Unet的网络架构,取得了一定的效果。但是网络中的大部分创新点都是结合师兄师姐已有的思想而设计的,缺少自己的内容。深入思考后,我觉得这两个网络都不太适合写文章,决定在此基础上进行一点点小改动。我需要将别人的思想正确转换为自己思想。
因此,在之前的基础上,计划将可变形卷积v2修改为可变形卷积v4,看一下效果。由于可变形卷积v4的调用与之前有些不一样,在解决上出现了一些问题,选取了下列几个记录:
- ① assert _d_per_group % 16 == 0 AssertionError
在可变形卷积的代码中包含一个断言检查语句,该语句是在检查 _d_per_group
这个变量除以 16 的余数是否为 0。如果余数不为 0,那么 assert
语句就会失败,并引发 AssertionError。由于输入的通道数不准确,所以出现上述问题。
- ② RuntimeError: Boolean value of Tensor with more than one value is ambiguous
这个错误是说,尝试将一个包含多个值的Tensor当作一个布尔值来使用,但是PyTorch无法确定这个Tensor的哪个值应该被用来表示布尔结果。仔细查看报错提示,锁定到具体的某一步。
- ③ N, L, C = input.shape ValueError: too many values to unpack (expected 3)
在代码中,一般的tensor形状为四个维度,但是可变形卷积只接受三个维度的数据,宽度和高度合并在一起了。这个问题需要将NCHW四个维度的数据转化为N,H*W,C三个维度的数据。最后,使用view函数改变张量tensor的形状shape。同样,在之后需要再进行复原操作,还原为NCHW四个维度的数据:
x = x.view ( x.size(0), x.size(2) * x.size(3), x.size(1))
经过上面的一些尝试, 终于成功将可变形卷积应用与网络中。尝试将Unet网络中的一些基础卷积修改为可变形卷积,参数量大大减少,如下图所示:
正当我激动于成功将该模块应用与网络,准备训练看看效果。但是训练到一半我发现了问题:训练过程的学习率设置为0.001,但是训练的时候损失值不下降,停留于0.3附近,如下图所示。
因此,之后要继续思考如何调整与修改,比如调整学习率?优化方式?网络结构?
2.2 Latex的下载与安装
在这段时间,也抽空安装与下载了Latex,见链接:LaTex的下载与安装(2024小白+windows系统)-CSDN博客。在该链接中写明了本次安装过程与遇到的问题及解决方式。
2.3 数学公式的学习
三、下周安排
3.1 存在的问题
- 如何解决损失值不下降的问题?
- 论文的开展:目前最大的问题是实验部分存在问题,网络结构还在修改中。因此,请求延期上交时间,也会加快进度完成。
3.2 计划
- 一边完成实验一边学习论文的书写,两步同时进行。
- 继续学习数学公式。