RuntimeError: Given groups=1, weight of size [64, 64, 1, 1], expected input[1, 32, 128, 128] to have 64 channels, but got 32 channels instead

udsek: <pre><code class="lang-auto"># YOLOv5 🚀 by Ultralytics, AGPL-3.0 license

# Parameters
nc: 2 # number of classes
depth_multiple: 0.33 # model depth multiple
width_multiple: 0.50 # layer channel multiple
anchors:
  - [10, 13, 16, 30, 33, 23] # P3/8
  - [30, 61, 62, 45, 59, 119] # P4/16
  - [116, 90, 156, 198, 373, 326] # P5/32

# YOLOv5 v6.0 backbone
backbone:
  [
    [-1, 1, Conv, [64, 3, 1]],  # Conv:
    [-1, 1, MaxPool2d, [3, 2, 1]],  # MaxPool2d
    [-1, 1, BottleneckRES, [64, 64, 1]],  # BottleneckRES: 
    [-1, 2, BottleneckRES, [256, 64, 1]],  # BottleneckRES: 
    [-1, 1, BottleneckRES, [256, 128, 2]],  # BottleneckRES:
    [-1, 4, BottleneckRES, [512, 128, 1]],  # BottleneckRES: 
    [-1, 6, BottleneckRES, [512, 256, 2]],  # BottleneckRES
    [-1, 3, BottleneckRES, [1024, 256, 1]],  # BottleneckRES: 
    [-1, 3, BottleneckRES, [1024, 512, 2]],  # BottleneckRES: 
    [-1, 1, BottleneckRES, [2048, 512, 1]],  # BottleneckRES: 
  ]
  
# YOLOv5 v6.0 head
head:
  [
    [-1, 1, BottleneckCSP, [2048, 512, 1]],  # BottleneckCSP: 
    [-1, 1, Conv, [256, 1, 1]],  # Conv: 
    [-1, 1, nn.Upsample, [None, 2, "nearest"]],
    [[-1, 6], 1, Concat, [1]],  # cat backbone P4
    [-1, 3, C3, [512, 256, 1]],  # C3: 

    [-1, 1, Conv, [128, 1, 1]],  # Conv: 
    [-1, 1, nn.Upsample, [None, 2, "nearest"]],
    [[-1, 4], 1, Concat, [1]],  # cat backbone P3
    [-1, 3, C3, [256, 128, 1]],  # C3: 

    [-1, 1, Conv, [256, 3, 2]],  # Conv: 
    [[-1, 14], 1, Concat, [1]],  # cat head P4
    [-1, 3, C3, [512, 256, 1]],  # C3: 

    [-1, 1, Conv, [512, 3, 2]],  # Conv: 
    [[-1, 10], 1, Concat, [1]],  # cat head P5
    [-1, 3, C3, [1024, 512, 1]],  # C3: 

    [[17, 20, 23], 1, Detect, [nc, anchors]],  # Detect: P3, P4, P5
  ]

</code></pre>
<p>This is my YAML file. I have connected the ResNet50 backbone to the YOLOv5 head</p>
<p>and</p>
<pre><code class="lang-auto">class BottleneckRES(nn.Module):
    expansion = 4

    def __init__(self, in_planes, planes, stride=1):
        super(BottleneckRES, self).__init__()
        out_planes = planes * self.expansion
        
        self.conv1 = nn.Conv2d(in_planes, planes, kernel_size=1, bias=False)
        self.bn1 = nn.BatchNorm2d(planes)
        
        self.conv2 = nn.Conv2d(planes, planes, kernel_size=3, stride=stride, padding=1, bias=False)
        self.bn2 = nn.BatchNorm2d(planes)
        
        self.conv3 = nn.Conv2d(planes, out_planes, kernel_size=1, bias=False)
        self.bn3 = nn.BatchNorm2d(out_planes)

        self.relu = nn.ReLU(inplace=True)

        self.shortcut = nn.Sequential()
        if stride != 1 or in_planes != out_planes:
            self.shortcut = nn.Sequential(
                nn.Conv2d(in_planes, out_planes, kernel_size=1, stride=stride, bias=False),
                nn.BatchNorm2d(out_planes)
            )

    def forward(self, x):
        identity = x
        
        out = self.relu(self.bn1(self.conv1(x)))
        print(f"After conv1: {out.shape}")
        out = self.relu(self.bn2(self.conv2(out)))
        print(f"After conv2: {out.shape}")
        out = self.bn3(self.conv3(out))
        print(f"After conv3: {out.shape}")
        
        identity = self.shortcut(identity)
        
        out += identity
        out = self.relu(out)
        print(f"After shortcut and add: {out.shape}")
        return out
</code></pre>
<p>defined the bottleneckRES function to use ResNet50</p>
<p>Traceback (most recent call last):<br>
File “train.py”, line 858, in <br>
main(opt)<br>
File “train.py”, line 632, in main<br>
train(opt.hyp, opt, device, callbacks)<br>
File “train.py”, line 199, in train<br>
model = Model(cfg, ch=3, nc=nc, anchors=hyp.get(“anchors”)).to(device)  # create<br>
File “/home/firo-msi/RESNET/yolov5/models/yolo.py”, line 253, in <strong>init</strong><br>
m.stride = torch.tensor([s / x.shape[-2] for x in forward(torch.zeros(1, ch, s, s))])  # forward<br>
File “/home/firo-msi/RESNET/yolov5/models/yolo.py”, line 252, in <br>
forward = lambda x: self.forward(x)[0] if isinstance(m, Segment) else self.forward(x)<br>
File “/home/firo-msi/RESNET/yolov5/models/yolo.py”, line 268, in forward<br>
return self._forward_once(x, profile, visualize)  # single-scale inference, train<br>
File “/home/firo-msi/RESNET/yolov5/models/yolo.py”, line 171, in _forward_once<br>
x = m(x)  # run<br>
File “/home/firo-msi/anaconda3/envs/yolov5/lib/python3.8/site-packages/torch/nn/modules/module.py”, line 1511, in _wrapped_call_impl<br>
return self._call_impl(*args, **kwargs)<br>
File “/home/firo-msi/anaconda3/envs/yolov5/lib/python3.8/site-packages/torch/nn/modules/module.py”, line 1520, in _call_impl<br>
return forward_call(*args, **kwargs)<br>
File “/home/firo-msi/RESNET/yolov5/models/common.py”, line 1163, in forward<br>
out = self.relu(self.bn1(self.conv1(x)))<br>
File “/home/firo-msi/anaconda3/envs/yolov5/lib/python3.8/site-packages/torch/nn/modules/module.py”, line 1511, in _wrapped_call_impl<br>
return self._call_impl(*args, **kwargs)<br>
File “/home/firo-msi/anaconda3/envs/yolov5/lib/python3.8/site-packages/torch/nn/modules/module.py”, line 1520, in _call_impl<br>
return forward_call(*args, **kwargs)<br>
File “/home/firo-msi/anaconda3/envs/yolov5/lib/python3.8/site-packages/torch/nn/modules/conv.py”, line 460, in forward<br>
return self._conv_forward(input, self.weight, self.bias)<br>
File “/home/firo-msi/anaconda3/envs/yolov5/lib/python3.8/site-packages/torch/nn/modules/conv.py”, line 456, in _conv_forward<br>
return F.conv2d(input, weight, bias, self.stride,<br>
<strong>RuntimeError: Given groups=1, weight of size [64, 64, 1, 1], expected input[1, 32, 128, 128] to have 64 channels, but got 32 channels instead</strong></p>
<p>However, I am encountering an error that seems related to incorrect channels. Is there a solution for this? PLEASE ㅠㅠ</p>