yolov7_d2
yolov7_d2 copied to clipboard
训练问题
@jinfagang ,你好 感谢你提供优质的开源项目,由于我对detectron2不够熟悉,有如下问题
- 为什么在meta_arch中进行preprocess_img,MyDatasetMapper不是已经进行了预处理吗?如果我想构建自己的预处理,你建议构建在哪里
- 我想添加自己特定的log,请问如何在一个step后获取loss和metric 期待你的回复,谢谢!
MyDatasetMapper没有做归一化,preprocees主要是做归一化。 第二点我建议你放弃。
你好,对于第二个问题,需要更改已有的write hook,或者添加自己的hook。 这里还想请教下,我在使用COCO测试数据时,指定多个GPU时出现了卡住的情况,我发现你也有出现过这种情况,请问你是如何解决的,谢谢! #3562
根本原因是 多线程导致的 cpu 挂起(卡死),造成这个问题的原因很多,例如batchsize太大,内存小了等等。可以控制一下吞吐。
谢谢,我找到一个解决方法,build_test_loader里默认使用了一个Testsampler的方式,我修改了这个sampler,现在可以正常多gpu使用了
@curry8 怎么修改的啊
- build_detection_test_loader中默认使用了InferenceSampler,我测试了下,如果测试集数量与gpu数量无法整除,这个地方就会出现cpu挂起的情况
- 我仅仅是替换了这个sampler,比如SequentialSampler,同时COCOEvaluator中distributed=False,但这样每个gpu都会计算一遍测试结果
- 你如果有好的方法欢迎指导
此外还有一个问题请教
- max_iter与学习率的选择,有什么建议吗
- 默认的coco配置config中max_iter不到10w次,按照数据量,这样一个epoch都没有训练到,是我有什么地方理解错了吗
- 从头训练一个模型,在coco数据上,大概需要多长时间,麻烦解答,谢谢!
InferenceSample应该就是d2默认的配置,无法整除应该不是根本原因,很多数据及都可能出现无法整除,d2应该也不会出现这种低级bug
你可以按照 max_iter * image_per_batch 计算 总共计算了多少图片,与其他的配置epochs * coco_all_num 比对。d2默认是八卡的配置,理论上还得乘以 8/num_gpus.
- build_detection_test_loader中默认使用了InferenceSampler,我测试了下,如果测试集数量与gpu数量无法整除,这个地方就会出现cpu挂起的情况
- 我仅仅是替换了这个sampler,比如SequentialSampler,同时COCOEvaluator中distributed=False,但这样每个gpu都会计算一遍测试结果
- 你如果有好的方法欢迎指导
我在evaluate的时候会出现卡住的情况,若是设置gpus=1则可以正常运行