Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

看文章中的一些疑问 #25

Open
Alexwong-1024 opened this issue Jul 5, 2024 · 22 comments
Open

看文章中的一些疑问 #25

Alexwong-1024 opened this issue Jul 5, 2024 · 22 comments

Comments

@Alexwong-1024
Copy link

师兄,您好,您的工作做得很不错,在这里我想问下,您这里在表格中测试的AP值用的是测试集测试的,还是验证集测试的,期待您的回复,感谢师兄。

@WindVChen
Copy link
Owner

哈喽 @Alexwong-1024 ,

都是在测试集测试的哈.

@Alexwong-1024
Copy link
Author

好的,十分感谢师兄。

@Alexwong-1024
Copy link
Author

@WindVChen 师兄,我还有个疑问,就是您模型的训练次数是500还是1000呢?文章中好像提及是500,但是您代码默认是1000,期待您的回答。

@WindVChen
Copy link
Owner

文章中的是500,实际要训得话也可以调到1000,两者性能不会有太大差异,但1000步收敛更稳定些~

@Alexwong-1024
Copy link
Author

@WindVChen 好的,谢谢师兄您,十分感谢您的答复。

@Alexwong-1024
Copy link
Author

师兄,我这里还有个问题,就是我发现每次跑的结果都不一样,而且有时候还差一两个点,请问您那边有这样的情况吗?如果有的话是怎样处理的呢?期待您的答复,感谢师兄。

@WindVChen
Copy link
Owner

是指“多次训练”的结果在测试集上的性能会差一两个点吗?还是说“同一次训练”结果在“多次测试”上性能会不一致呢?

@wap1024
Copy link

wap1024 commented Jul 13, 2024

就是同一个模型,我多次训练,训练次数一样,然后使用测试集测试,每次结果都不一样。

@WindVChen
Copy link
Owner

哈喽 @wap1024

我查了下之前我测试这个仓库的两次实验记录(在一台3090上测的),下面的曲线表示的是随训练步数增长验证集性能变化(我没记错的话),然后上面的图注后面那个数字是测试集的指标:
image

多次训练确实结果会有偏差,我这边显示的两次偏差会有~0.5,这种情况可以训练3-5次取平均来平稳效果.

@Alexwong-1024
Copy link
Author

好的,十分感谢师兄您的答复

@wap1024
Copy link

wap1024 commented Jul 15, 2024

师兄,我还有个疑问就是,我有点不明白您在推理阶段时,是如何将您图片重建分支给去除的,期待您的答复,谢谢师兄。

@WindVChen
Copy link
Owner

哈喽,仓库提供的推理代码(detect.py)是直接基于完整模型参数的网络权重哈,也就是在推理阶段还包含了图像重建分支的那部分冗余。

要排除那部分的计算冗余的话,一个比较粗暴的做法就是将图像分支那块儿的相关网络的forward改成比如恒等映射;而如果要同时排除那部分参数和计算冗余的话,可以在网络配置文件那儿将图像分支那块儿的网络设置删掉,然后用所提供的网络权重来初始化对应层的参数,主要涉及到的代码应该就是yolo.py和common.py (这部分记不太清楚了)

@Alexwong-1024
Copy link
Author

@WindVChen 好的,明白了,再次十分感谢师兄您的回复。祝您生活愉快。

@wap1024
Copy link

wap1024 commented Aug 24, 2024

师兄,我想向您请教一个问题,就是您对于本数据集的划分方式是怎样划分的呢?随机划分吗?

@WindVChen
Copy link
Owner

嗯嗯对的,可以参考这里的划分代码https://github.com/WindVChen/LEVIR-Ship/blob/main/Partition_LEVIR-Ship.py.

@Alexwong-1024
Copy link
Author

Alexwong-1024 commented Aug 26, 2024 via email

@wap1024
Copy link

wap1024 commented Dec 21, 2024

师兄您好,我想请问您一个问题,就是我现在也是打算从网络中拉取一个特征图出来进行重建,但是我发现我这个特征图经过前面网络层的batch norm后值出现在[0,1]之间,然后与我的重建label图片进行MSE操作时,会出现很大的损失,请问师兄您认为我该怎么处理呢?是把前面的特征图反归一化还是对label图片归一化。期待您的回答。

@WindVChen
Copy link
Owner

哈喽 @wap1024

如果上一层是batch norm的话,我觉得可以直接扔掉batch norm试试看?对label图片的归一化是指用同一的mean和std进行归一吗,如果是这样的话,它跟batch norm的归一化是不一样的

@wap1024
Copy link

wap1024 commented Dec 21, 2024

哈喽 @wap1024

如果上一层是batch norm的话,我觉得可以直接扔掉batch norm试试看?对label图片的归一化是指用同一的mean和std进行归一吗,如果是这样的话,它跟batch norm的归一化是不一样的

首先非常感谢师兄您的答复,您所提到的“对label图片的归一化是指用同一的mean和std进行归一吗?”,我这边使用的就是同一的mean和std进行归一化,对于这里提到的"如果上一层是batch norm的话,我觉得可以直接扔掉batch norm试试看?",我前面的网络层没有使用batch norm,此外还有一个问题就是关于您在此项目中就是之间拉取特征图出来和label图片进行MSE操作吗?再次期待您的回答。

@WindVChen
Copy link
Owner

但是我发现我这个特征图经过前面网络层的batch norm后值出现在[0,1]之间,然后与我的重建label图片进行MSE操作时,会出现很大的损失

这里提到的出现很大的损失,是因为label图片的值是在[0, 255]吗?没有提前缩放到[0,1]之间嘛

@wap1024
Copy link

wap1024 commented Dec 21, 2024

label图片是经过归一化处理的,所用的归一化是指用自定义的mean和std进行归一的,我发现我再将label图片除以255.0的话,这样损失就很小了。感谢师兄您这么晚还再帮我答疑解惑。

@WindVChen
Copy link
Owner

嗯嗯,如果原先的label图像像素值量级和网络输出的差异较大,那可以尝试将图像放缩到[0,1]之间,再进行mean和std的归一化,这样确保量级一致

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants