修改rtdetr-ResNet50网络,对主干网络做了替换,但是在主干最后的输出和head的第一个卷积之间不能够通道匹配,报错如下:
Traceback (most recent call last):
File "F:/RTDETR_Daima/ultralytics-main/train/train-rtdetr-EMO5M.py", line 10, in <module>
model.train(data=r'F:\RTDETR_Daima\ultralytics-main\ultralytics\cfg\datasets\accident.yaml', epochs=72, batch=4, device='0', imgsz=640, workers=8, cache=False,
File "F:\RTDETR_Daima\ultralytics-main\ultralytics\engine\model.py", line 806, in train
self.trainer.train()
File "F:\RTDETR_Daima\ultralytics-main\ultralytics\engine\trainer.py", line 207, in train
self._do_train(world_size)
File "F:\RTDETR_Daima\ultralytics-main\ultralytics\engine\trainer.py", line 380, in _do_train
self.loss, self.loss_items = self.model(batch)
File "C:\Users\pc\.conda\envs\RTDETR-U-V11\lib\site-packages\torch\nn\modules\module.py", line 1501, in _call_impl
return forward_call(*args, **kwargs)
File "F:\RTDETR_Daima\ultralytics-main\ultralytics\nn\tasks.py", line 125, in forward
return self.loss(x, *args, **kwargs)
File "F:\RTDETR_Daima\ultralytics-main\ultralytics\nn\tasks.py", line 561, in loss
preds = self.predict(img, batch=targets) if preds is None else preds
File "F:\RTDETR_Daima\ultralytics-main\ultralytics\nn\tasks.py", line 601, in predict
x = m(x) # run
File "C:\Users\pc\.conda\envs\RTDETR-U-V11\lib\site-packages\torch\nn\modules\module.py", line 1501, in _call_impl
return forward_call(*args, **kwargs)
File "F:\RTDETR_Daima\ultralytics-main\ultralytics\nn\modules\conv.py", line 53, in forward
out = self.act(self.bn(self.conv(x)))
File "C:\Users\pc\.conda\envs\RTDETR-U-V11\lib\site-packages\torch\nn\modules\module.py", line 1501, in _call_impl
return forward_call(*args, **kwargs)
File "C:\Users\pc\.conda\envs\RTDETR-U-V11\lib\site-packages\torch\nn\modules\conv.py", line 463, in forward
return self._conv_forward(input, self.weight, self.bias)
File "C:\Users\pc\.conda\envs\RTDETR-U-V11\lib\site-packages\torch\nn\modules\conv.py", line 459, in _conv_forward
return F.conv2d(input, weight, bias, self.stride,
RuntimeError: Given groups=1, weight of size [288, 3, 1, 1], expected input[4, 288, 20, 20] to have 3 channels, but got 288 channels instead
按照默认函数的设置(在ultralytics中),conv的卷积输入应该来自上一层的输出,但是为什么会提示Conv2d的输入通道是最初的通道3呢