cheng peng
cheng peng
这个我自己也不太清楚。 不过使用DCN如果觉得麻烦的话,可以把DCN关掉,精度会下降0~2mAP左右,但是可以转换成caffe,onnx了,落地比较友好。 ``` MODEL: CENTERNET: USE_DEFORM: False ```
非常感谢你详细的描述!接下来我们来解决问题: 1. 阶段性保存模型的正确打开方式:cfg.SOLVER.CHECKPOINT_PERIOD,这个字段是用来调整保存模型的,你只需要在你的yaml的solver里面加一个这个字段就可以了 ``` SOLVER: CHECKPOINT_PERIOD: 2 (每2个epoch数量保存一次模型,具体可以根据你的实际需求调整) ``` 2. 看上去你是用的你自己的私库,用自己的私库的话记得调整CENTERENT的NUM_CLASSES为你自己的类别数。 3. val AP为0的可能问题: 1)你可以根据自己的私库,适当的调小BASE_LR,太大了在简单的数据集上可能不会收敛 2)你的图片像素值全部是170有点奇怪,不过我看到你自己在图上画了框,那应该没有问题 3)centerX和原始的centernet实现不太一样,我是复用的detectron2里面的random crop,而且每一个batch的shape都可能和上一个batch的不一样,这取决于数据集图片的shape。 4. 可以先试一下在原始的coco数据集上能否正常训练,再对比一下自己的私库有哪些改动。
@lbin 真是糟糕的消息,一度怀疑自己的代码哪里搞错了0 0. 可以看一下你的config或者改动么,我用默认的centernet_res18_coco_0.5.yaml跑结果是正常的。
啊这。。 这个bug之前困扰了我很久,一度以为自己解决了 加了COMMUNISM,或者调小BASE_LR可能会更稳定一些 ``` MODEL: CENTERNET: LOSS: COMMUNISM: ENABLE: True CLS_LOSS: 1.5 WH_LOSS: 0.3 OFF_LOSS: 0.1 ```
@Fly-dream12 目前只有resnet和regnet,需要的话可以自行在backbone里面添加自己的网络
这个有没有自己本地实验 打印一下optim下module的lr 看看是否奏效呀?
@BBuf 这里我不知道我理解的对不对, 在以`linear`为`warmup_method`的时候, 需要有且只有一个`end_factor` 所以它不支持你的`param`里面存在多个不同的base_lr 如果是上述这样的话, 我建议在libai就加入一个判断, 如果base_lr不一致的话, `warmup_method`就不能用`linear`, 只能用`constant` https://github.com/Oneflow-Inc/oneflow/blob/b22e7dc32004b032446513252b5372ac7a6dcd1d/python/oneflow/nn/optimizer/warmup_lr.py#L149-L169 ```python if self.warmup_method == "linear": if scheduler and self.warmup_prefix is False: base_lr = self.base_lrs[0] if not np.isclose(self.base_lrs, base_lr).all(): raise...
trainer里面的功能我在上面简单罗列了一下, 我理解trainer应该只用关心训练步骤, 我们可以先定义一个base_trainer 其实在detectron2里面都有写的都比较全了, [defeult_trainer.py.](https://github.com/facebookresearch/detectron2/blob/9176db667837c57e7118d92a90f887565bd6d4c1/detectron2/engine/defaults.py#L321) 在这个base_trainer里面以下几个功能我们是可以确定的: 1. optimizer 2. lr_scheduler 3. 模型验证 4. 日志记录 5. 打印训练信息metric 6. 评价指标metric 7. resume训练(这个功能不知道目前oneflow是否完善, 可以先空着) 8. 模型加载和保存 9. dataloader的创建在trainer里面可以写一个build_train_loader(), 然后调用写好的dataset创建接口. 如[build_train_loader](https://github.com/facebookresearch/detectron2/blob/0ce0e0cc180f9363f76d8325975470edd217d06f/detectron2/engine/defaults.py#L531-L539) ### eager &&...
这个功能可以先放着吧, eager to graph的转换, 我们可以给一个参考样例, 用户一看应该就是就明白了. 后续有比较好的想法我们可以做抽象
YOLO系列的有相关同事在做. 我看了一下 CvT LeVit LV-ViT好像都是图像分类的任务 Segformer是分割的任务. 从我个人的角度来说 比较偏向于添加不同任务的模型, 也就是Segformer. 不但可以丰富不同task的模型 期间更可能会引发libai的不足以及oneflow的一些坑. 看看其他同事有什么意见