关于四个neck都添加进可训练参数
Closed this issue · 7 comments
像SiamBAN、SiamCAR好像都只是添加一个neck作为可训练参数,为什么看你的模型设计采用了四个neck作为可训练参数
1.SiamRPN++论文中已经表明并证实,非对称性结构对跟踪任务是有益的。
1.SiamRPN++论文中已经表明并证实,非对称性结构对跟踪任务是有益的。
2.在该项目中,我也做过实验,得出的结论是,非对称性结构相比SiamCAR中的对称性结,在实验的各项指标中表现更好。至于原因,非对称性结构可能是一方面,另一方面的猜测是参数量的上涨可能缓解了过拟合问题,使得模型在多个Benchmark上表现超过了原有的对称性结构。
谢谢作者的解答,另外还有一个疑惑,就是为什么backbone部分也没有采用resnet stage(3、4、5)三块融合后的特征或者采用stage5,而是只用了第四层作为输出。
另外,关于pysot分布式训练部分,SiamCAR还有SiamFDB在分布式训练包装部分采用nn.dataparrllel,我尝试过将SiamCAR的分布式包装改为pysot原生的DistModule,训练速度大幅度提升,可以进行分布式训练,而SiamCAR采用原论文代码中的nn.dataparrllel速度在双卡反而比仅在单卡还要慢一些。但是当我用同样的方法替换SiamFDB的分布式包装后,在双卡进行训练时,报错(具体是'AttributeError: ‘NoneType’ object has no attribute ‘data’)
谢谢作者的解答,另外还有一个疑惑,就是为什么backbone部分也没有采用resnet stage(3、4、5)三块融合后的特征或者采用stage5,而是只用了第四层作为输出。
至于为什么只使用第四层作为输出,因为实验发现,如果采用SiamCAR的方式,在GOT10k下,效果反而特别差, AO只能到50.0%,而且是训练50个epoch的结果,至于效果为什么这么差未能做详细分析。后面借鉴Ocean的方式,效果得到了大幅提升
另外,关于pysot分布式训练部分,SiamCAR还有SiamFDB在分布式训练包装部分采用nn.dataparrllel,我尝试过将SiamCAR的分布式包装改为pysot原生的DistModule,训练速度大幅度提升,可以进行分布式训练,而SiamCAR采用原论文代码中的nn.dataparrllel速度在双卡反而比仅在单卡还要慢一些。但是当我用同样的方法替换SiamFDB的分布式包装后,在双卡进行训练时,报错(具体是'AttributeError: ‘NoneType’ object has no attribute ‘data’)
至于分布式训练速度问题,双卡比单卡慢是因为双卡之间有数据通信,且通信速度与显卡带宽有关,同时多卡训练时会有一张卡做模型平均,而单卡则不需要通信和最后的模型参数平局的过程,所以速度问题可能是显卡带宽的限制,至于这个错误,有完整的错误提示么?单看这个看不出是哪里的问题?
另外,关于pysot分布式训练部分,SiamCAR还有SiamFDB在分布式训练包装部分采用nn.dataparrllel,我尝试过将SiamCAR的分布式包装改为pysot原生的DistModule,训练速度大幅度提升,可以进行分布式训练,而SiamCAR采用原论文代码中的nn.dataparrllel速度在双卡反而比仅在单卡还要慢一些。但是当我用同样的方法替换SiamFDB的分布式包装后,在双卡进行训练时,报错(具体是'AttributeError: ‘NoneType’ object has no attribute ‘data’)
至于分布式训练速度问题,双卡比单卡慢是因为双卡之间有数据通信,且通信速度与显卡带宽有关,同时多卡训练时会有一张卡做模型平均,而单卡则不需要通信和最后的模型参数平局的过程,所以速度问题可能是显卡带宽的限制,至于这个错误,有完整的错误提示么?单看这个看不出是哪里的问题?
现在显卡同门在使用,等几天我把整个报错提示发来
另外,关于pysot分布式训练部分,SiamCAR还有SiamFDB在分布式训练包装部分采用nn.dataparrllel,我尝试过将SiamCAR的分布式包装改为pysot原生的DistModule,训练速度大幅度提升,可以进行分布式训练,而SiamCAR采用原论文代码中的nn.dataparrllel速度在双卡反而比仅在单卡还要慢一些。但是当我用同样的方法替换SiamFDB的分布式包装后,在双卡进行训练时,报错(具体是'AttributeError: ‘NoneType’ object has no attribute ‘data’)
至于分布式训练速度问题,双卡比单卡慢是因为双卡之间有数据通信,且通信速度与显卡带宽有关,同时多卡训练时会有一张卡做模型平均,而单卡则不需要通信和最后的模型参数平局的过程,所以速度问题可能是显卡带宽的限制,至于这个错误,有完整的错误提示么?单看这个看不出是哪里的问题?
这个是具体报错部分的日志
/home/yxy/anaconda3/envs/pysot/lib/python3.9/site-packages/torch/functional.py:478: UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at /opt/conda/conda-bld/pytorch_1659484809662/work/aten/src/ATen/native/TensorShape.cpp:2894.)
return _VF.meshgrid(tensors, **kwargs) # type: ignore[attr-defined]
/home/yxy/anaconda3/envs/pysot/lib/python3.9/site-packages/torch/functional.py:478: UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at /opt/conda/conda-bld/pytorch_1659484809662/work/aten/src/ATen/native/TensorShape.cpp:2894.)
return _VF.meshgrid(tensors, **kwargs) # type: ignore[attr-defined]
[2023-10-22 18:14:48,374-rk0-distributed.py<reduce_gradients>#134] gradients method is sum
Traceback (most recent call last):
File "/home/yxy/xyz/SiamFDB_origin/tools/train.py", line 322, in
main()
File "/home/yxy/xyz/SiamFDB_origin/tools/train.py", line 317, in main
train(train_loader, dist_model, optimizer, lr_scheduler, tb_writer)
File "/home/yxy/xyz/SiamFDB_origin/tools/train.py", line 213, in train
reduce_gradients(model)
File "/home/yxy/xyz/SiamFDB_origin/pysot/utils/distributed.py", line 138, in reduce_gradients
dist.all_reduce(param.grad.data)
AttributeError: 'NoneType' object has no attribute 'data'
Traceback (most recent call last):
File "/home/yxy/xyz/SiamFDB_origin/tools/train.py", line 322, in
main()
File "/home/yxy/xyz/SiamFDB_origin/tools/train.py", line 317, in main
train(train_loader, dist_model, optimizer, lr_scheduler, tb_writer)
File "/home/yxy/xyz/SiamFDB_origin/tools/train.py", line 213, in train
reduce_gradients(model)
File "/home/yxy/xyz/SiamFDB_origin/pysot/utils/distributed.py", line 138, in reduce_gradients
dist.all_reduce(param.grad.data)
AttributeError: 'NoneType' object has no attribute 'data'
WARNING:torch.distributed.elastic.multiprocessing.api:Sending process 44994 closing signal SIGTERM
ERROR:torch.distributed.elastic.multiprocessing.api:failed (exitcode: 1) local_rank: 1 (pid: 44995) of binary: /home/yxy/anaconda3/envs/pysot/bin/python
Traceback (most recent call last):
File "/home/yxy/anaconda3/envs/pysot/bin/torchrun", line 33, in
sys.exit(load_entry_point('torch', 'console_scripts', 'torchrun')())
File "/home/yxy/anaconda3/envs/pysot/lib/python3.9/site-packages/torch/distributed/elastic/multiprocessing/errors/init.py", line 345, in wrapper
return f(*args, **kwargs)
File "/home/yxy/anaconda3/envs/pysot/lib/python3.9/site-packages/torch/distributed/run.py", line 761, in main
run(args)
File "/home/yxy/anaconda3/envs/pysot/lib/python3.9/site-packages/torch/distributed/run.py", line 752, in run
elastic_launch(
File "/home/yxy/anaconda3/envs/pysot/lib/python3.9/site-packages/torch/distributed/launcher/api.py", line 131, in call
return launch_agent(self._config, self._entrypoint, list(args))
File "/home/yxy/anaconda3/envs/pysot/lib/python3.9/site-packages/torch/distributed/launcher/api.py", line 245, in launch_agent
raise ChildFailedError(
torch.distributed.elastic.multiprocessing.errors.ChildFailedError:
train.py FAILED
Failures:
<NO_OTHER_FAILURES>
Root Cause (first observed failure):
[0]:
time : 2023-10-22_18:15:25
host : 121
rank : 1 (local_rank: 1)
exitcode : 1 (pid: 44995)
error_file: <N/A>
traceback : To enable traceback see: https://pytorch.org/docs/stable/elastic/errors.html
这两个是我对SiamFDB训练部分分布式包装的修改和Distributed.py的修改,在SiamCAR是可以双卡训练的