rayleizhu / BiFormer

[CVPR 2023] Official code release of our paper "BiFormer: Vision Transformer with Bi-Level Routing Attention"
https://arxiv.org/abs/2303.08810
MIT License
485 stars 39 forks source link

关于模型复现和检测的问题 #10

Closed ChristianLean closed 1 year ago

ChristianLean commented 1 year ago

你好大佬,我看了你们的文章也star了你们的源码,想尝试复现一下目标检测这块,但目前遇到了几个问题: 1.我发现你们命令行命令是用slurm srun这个命令来启动的,然后gpu设置为8,但是我是单机也没有集群的环境,尝试改了一下直接运行train.py但还是有几个参数搞的不是很懂,请问可以出一个使用python命令行的配置吗? 2。源码上关于目标检测的部分好像都是使用mmdet这个框架,然后也没有提供修改数据集、batch_size和epoch的入口,如果我想使用自己的数据集进行训练的话是否需要先掌握一下mmdet的用法,或者还有别的方法进行更改。 3.训练完好像没有可以进行detect的代码,你们后续有开发可视化的计划吗?如果backbone更换为BiFormer的话检测效率可以达到每秒多少FPS呢 个人技术有限,想复现目前碰到了这些阻碍,如果有收到留言请问大佬方便解答一下吗?

rayleizhu commented 1 year ago

1.我发现你们命令行命令是用slurm srun这个命令来启动的,然后gpu设置为8,但是我是单机也没有集群的环境,尝试改了一下直接运行train.py但还是有几个参数搞的不是很懂,请问可以出一个使用python命令行的配置吗?

我没有不使用slurm管理的环境,所以无法测试。你可以参考这个issue的写法,或者mmdet官方的脚本

2。源码上关于目标检测的部分好像都是使用mmdet这个框架,然后也没有提供修改数据集、batch_size和epoch的入口,如果我想使用自己的数据集进行训练的话是否需要先掌握一下mmdet的用法,或者还有别的方法进行更改。

mmdet有改数据集,batch_size, epoch的入口,只改这些倒不是很困难。但是这个库的学习门槛相对比较高(太深的wrap, 滥用继承, 对编辑器提示不友好的配置系统),不如 detectron2上手容易。你需要自己权衡这两者哪个更容易:(1)把backbone移植到你熟悉的库;(2)学习mmdet。但是如果你是做研究,学习mmdet可能是绕不开的,因为很多需要对比的算法都在这里面。

3.训练完好像没有可以进行detect的代码,你们后续有开发可视化的计划吗?如果backbone更换为BiFormer的话检测效率可以达到每秒多少FPS呢 个人技术有限,想复现目前碰到了这些阻碍,如果有收到留言请问大佬方便解答一下吗?

可视化demo在我的todo list里面。没有测过detection下的FPS,但是当前的throughput肯定不太如意,因为pytorch提供的算子并不支持高效实现BRA,频繁且冗余的gather操作导致了很多kernel launch并且浪费了很多带宽。我正在用CUDA改进。因为手头有其它工作,可视化和CUDA开发可能需要几个月。

ChristianLean commented 1 year ago

1.我发现你们命令行命令是用slurm srun这个命令来启动的,然后gpu设置为8,但是我是单机也没有集群的环境,尝试改了一下直接运行train.py但还是有几个参数搞的不是很懂,请问可以出一个使用python命令行的配置吗?

我没有不使用slurm管理的环境,所以无法测试。你可以参考这个issue的写法,或者mmdet官方的脚本

2。源码上关于目标检测的部分好像都是使用mmdet这个框架,然后也没有提供修改数据集、batch_size和epoch的入口,如果我想使用自己的数据集进行训练的话是否需要先掌握一下mmdet的用法,或者还有别的方法进行更改。

mmdet有改数据集,batch_size, epoch的入口,只改这些倒不是很困难。但是这个库的学习门槛相对比较高(太深的wrap, 滥用继承, 对编辑器提示不友好的配置系统),不如 detectron2上手容易。你需要自己权衡这两者哪个更容易:(1)把backbone移植到你熟悉的库;(2)学习mmdet。但是如果你是做研究,学习mmdet可能是绕不开的,因为很多需要对比的算法都在这里面。

3.训练完好像没有可以进行detect的代码,你们后续有开发可视化的计划吗?如果backbone更换为BiFormer的话检测效率可以达到每秒多少FPS呢 个人技术有限,想复现目前碰到了这些阻碍,如果有收到留言请问大佬方便解答一下吗?

可视化demo在我的todo list里面。没有测过detection下的FPS,但是当前的throughput肯定不太如意,因为pytorch提供的算子并不支持高效实现BRA,频繁且冗余的gather操作导致了很多kernel launch并且浪费了很多带宽。我正在用CUDA改进。因为手头有其它工作,可视化和CUDA开发可能需要几个月。

好,谢谢大佬解惑,后续我会继续关注你们的工作!