yolov7_d2 icon indicating copy to clipboard operation
yolov7_d2 copied to clipboard

训练问题

Open curry8 opened this issue 2 years ago • 9 comments

@jinfagang ,你好 感谢你提供优质的开源项目,由于我对detectron2不够熟悉,有如下问题

  • 为什么在meta_arch中进行preprocess_img,MyDatasetMapper不是已经进行了预处理吗?如果我想构建自己的预处理,你建议构建在哪里
  • 我想添加自己特定的log,请问如何在一个step后获取loss和metric 期待你的回复,谢谢!

curry8 avatar Jul 19 '22 13:07 curry8

MyDatasetMapper没有做归一化,preprocees主要是做归一化。 第二点我建议你放弃。

lucasjinreal avatar Jul 19 '22 14:07 lucasjinreal

你好,对于第二个问题,需要更改已有的write hook,或者添加自己的hook。 这里还想请教下,我在使用COCO测试数据时,指定多个GPU时出现了卡住的情况,我发现你也有出现过这种情况,请问你是如何解决的,谢谢! #3562

curry8 avatar Aug 05 '22 12:08 curry8

根本原因是 多线程导致的 cpu 挂起(卡死),造成这个问题的原因很多,例如batchsize太大,内存小了等等。可以控制一下吞吐。

lucasjinreal avatar Aug 07 '22 07:08 lucasjinreal

谢谢,我找到一个解决方法,build_test_loader里默认使用了一个Testsampler的方式,我修改了这个sampler,现在可以正常多gpu使用了

curry8 avatar Aug 14 '22 14:08 curry8

@curry8 怎么修改的啊

lucasjinreal avatar Aug 15 '22 02:08 lucasjinreal

  • build_detection_test_loader中默认使用了InferenceSampler,我测试了下,如果测试集数量与gpu数量无法整除,这个地方就会出现cpu挂起的情况
  • 我仅仅是替换了这个sampler,比如SequentialSampler,同时COCOEvaluator中distributed=False,但这样每个gpu都会计算一遍测试结果
  • 你如果有好的方法欢迎指导

curry8 avatar Aug 15 '22 13:08 curry8

此外还有一个问题请教

  • max_iter与学习率的选择,有什么建议吗
  • 默认的coco配置config中max_iter不到10w次,按照数据量,这样一个epoch都没有训练到,是我有什么地方理解错了吗
  • 从头训练一个模型,在coco数据上,大概需要多长时间,麻烦解答,谢谢!

curry8 avatar Aug 15 '22 13:08 curry8

InferenceSample应该就是d2默认的配置,无法整除应该不是根本原因,很多数据及都可能出现无法整除,d2应该也不会出现这种低级bug

你可以按照 max_iter * image_per_batch 计算 总共计算了多少图片,与其他的配置epochs * coco_all_num 比对。d2默认是八卡的配置,理论上还得乘以 8/num_gpus.

lucasjinreal avatar Aug 16 '22 02:08 lucasjinreal

  • build_detection_test_loader中默认使用了InferenceSampler,我测试了下,如果测试集数量与gpu数量无法整除,这个地方就会出现cpu挂起的情况
  • 我仅仅是替换了这个sampler,比如SequentialSampler,同时COCOEvaluator中distributed=False,但这样每个gpu都会计算一遍测试结果
  • 你如果有好的方法欢迎指导

我在evaluate的时候会出现卡住的情况,若是设置gpus=1则可以正常运行

yangzilongdmgy avatar Dec 20 '22 08:12 yangzilongdmgy