Я столкнулся с этой проблемой, искал на форумах, но не смог ее решить. Как я могу решить эту проблему?
Я попытался добавить модуль CBAM в yolov12 для своего пользовательского набора данных, чтобы повысить точность. Я поделился своим кодом и результатами ниже. В дополнение к:
насколько вам известно, у Yolo есть разные версии, и каждая из них имеет в основном разную архитектуру и коды. есть примеры, такие как изменение архитектуры или добавление модуля CBAM, но нет пошагового руководства, и я новичок, поэтому я ценю, что вы можете подробно рассказать мне, например:
Как я могу решить эту проблему?
Что мне делать дальше?
Сталкивались ли вы раньше с этой проблемой или подобной проблемой, если да, как вы ее решили или что вы сделали дальше?
если это невозможно исправить, что мне делать еще?
Traceback (most recent call last):
File "C:\Users\Enes Microsoft\PycharmProjects\mealpy-tune_refactor\refactor_yolo_architecture.py", line 26, in
main()
~~~~^^
File "C:\Users\Enes Microsoft\PycharmProjects\mealpy-tune_refactor\refactor_yolo_architecture.py", line 23, in main
test_everything()
~~~~~~~~~~~~~~~^^
File "C:\Users\Enes Microsoft\PycharmProjects\mealpy-tune_refactor\refactor_yolo_architecture.py", line 20, in test_everything
obj_func()
~~~~~~~~^^
File "C:\Users\Enes Microsoft\PycharmProjects\mealpy-tune_refactor\refactor_yolo_architecture.py", line 12, in obj_func
model = YOLO(YAML_PATH).load('epc_yolo12_best.pt')
~~~~^^^^^^^^^^^
File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\ultralytics\models\yolo\model.py", line 83, in __init__
super().__init__(model=model, task=task, verbose=verbose)
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\ultralytics\engine\model.py", line 151, in __init__
self._new(model, task=task, verbose=verbose)
~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\ultralytics\engine\model.py", line 263, in _new
self.model = (model or self._smart_load("model"))(cfg_dict, verbose=verbose and RANK == -1) # build model
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\ultralytics\nn\tasks.py", line 420, in __init__
m.stride = torch.tensor([s / x.shape[-2] for x in _forward(torch.zeros(1, ch, s, s))]) # forward
~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\ultralytics\nn\tasks.py", line 416, in _forward
return self.forward(x)[0] if isinstance(m, (Segment, YOLOESegment, Pose, OBB)) else self.forward(x)
~~~~~~~~~~~~^^^
File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\ultralytics\nn\tasks.py", line 141, in forward
return self.predict(x, *args, **kwargs)
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\ultralytics\nn\tasks.py", line 159, in predict
return self._predict_once(x, profile, visualize, embed)
~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\ultralytics\nn\tasks.py", line 182, in _predict_once
x = m(x) # run
File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\torch\nn\modules\module.py", line 1773, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\torch\nn\modules\module.py", line 1784, in _call_impl
return forward_call(*args, **kwargs)
File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\ultralytics\nn\modules\block.py", line 2044, in forward
x = self.channel_attention(x) * x
~~~~~~~~~~~~~~~~~~~~~~^^^
File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\torch\nn\modules\module.py", line 1773, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\torch\nn\modules\module.py", line 1784, in _call_impl
return forward_call(*args, **kwargs)
File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\ultralytics\nn\modules\block.py", line 2061, in forward
avg_out = self.fc(self.avg_pool(x))
File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\torch\nn\modules\module.py", line 1773, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\torch\nn\modules\module.py", line 1784, in _call_impl
return forward_call(*args, **kwargs)
File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\torch\nn\modules\container.py", line 244, in forward
input = module(input)
File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\torch\nn\modules\module.py", line 1773, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\torch\nn\modules\module.py", line 1784, in _call_impl
return forward_call(*args, **kwargs)
File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\torch\nn\modules\conv.py", line 549, in forward
return self._conv_forward(input, self.weight, self.bias)
~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\torch\nn\modules\conv.py", line 544, in _conv_forward
return F.conv2d(
~~~~~~~~^
input, weight, bias, self.stride, self.padding, self.dilation, self.groups
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
RuntimeError: Given groups=1, weight of size [64, 1024, 1, 1], expected input[1, 256, 1, 1] to have 1024 channels, but got 256 channels instead
есть ли модуль или что-то, что мне следует добавить? или я сделал что-то не так?
Я столкнулся с этой проблемой, искал на форумах, но не смог ее решить. Как я могу решить эту проблему? Я попытался добавить модуль CBAM в yolov12 для своего пользовательского набора данных, чтобы повысить точность. Я поделился своим кодом и результатами ниже. [b]В дополнение к:[/b] насколько вам известно, у Yolo есть разные версии, и каждая из них имеет в основном разную архитектуру и коды. есть примеры, такие как изменение архитектуры или добавление модуля CBAM, но нет пошагового руководства, и я новичок, поэтому я ценю, что вы можете подробно рассказать мне, например: [list] [*]Как я могу решить эту проблему? [*]Что мне делать дальше? [*]Сталкивались ли вы раньше с этой проблемой или подобной проблемой, если да, как вы ее решили или что вы сделали дальше? [*]если это невозможно исправить, что мне делать еще? [/list] [b]это мой пользовательский файл Yaml:[/b] [code]nc: 80 scales: n: [0.50, 0.25, 1024] # summary: 497 layers, 2,553,904 parameters, 2,553,888 gradients, 6.2 GFLOPs s: [0.50, 0.50, 1024] # summary: 497 layers, 9,127,424 parameters, 9,127,408 gradients, 19.7 GFLOPs m: [0.50, 1.00, 512] # summary: 533 layers, 19,670,784 parameters, 19,670,768 gradients, 60.4 GFLOPs l: [1.00, 1.00, 512] # summary: 895 layers, 26,506,496 parameters, 26,506,480 gradients, 83.3 GFLOPs x: [1.00, 1.50, 512] # summary: 895 layers, 59,414,176 parameters, 59,414,160 gradients, 185.9 GFLOPs
def forward(self, x): avg_out = torch.mean(x, dim=1, keepdim=True) max_out, _ = torch.max(x, dim=1, keepdim=True) x = torch.cat([avg_out, max_out], dim=1) x = self.conv1(x) return self.sigmoid(x) [/code] [b]и я добавил Tasks.py в код MyCustomCBAM для анализа:[/b] [code] elif m in frozenset({TorchVision, Index}): c2 = args[0] c1 = ch[f] args = [*args[1:]] elif m in {MyCustomCBAM}: c1, c2 = ch[f], args[0] if c2 != nc: c2 = make_divisible(min(c2, max_channels) * width, 8) args = [c1, *args[1:]] else: c2 = ch[f] [/code] [b]Послушайте мои коды ошибок:[/b] [code]Traceback (most recent call last): File "C:\Users\Enes Microsoft\PycharmProjects\mealpy-tune_refactor\refactor_yolo_architecture.py", line 26, in main() ~~~~^^ File "C:\Users\Enes Microsoft\PycharmProjects\mealpy-tune_refactor\refactor_yolo_architecture.py", line 23, in main test_everything() ~~~~~~~~~~~~~~~^^ File "C:\Users\Enes Microsoft\PycharmProjects\mealpy-tune_refactor\refactor_yolo_architecture.py", line 20, in test_everything obj_func() ~~~~~~~~^^ File "C:\Users\Enes Microsoft\PycharmProjects\mealpy-tune_refactor\refactor_yolo_architecture.py", line 12, in obj_func model = YOLO(YAML_PATH).load('epc_yolo12_best.pt') ~~~~^^^^^^^^^^^ File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\ultralytics\models\yolo\model.py", line 83, in __init__ super().__init__(model=model, task=task, verbose=verbose) ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\ultralytics\engine\model.py", line 151, in __init__ self._new(model, task=task, verbose=verbose) ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\ultralytics\engine\model.py", line 263, in _new self.model = (model or self._smart_load("model"))(cfg_dict, verbose=verbose and RANK == -1) # build model ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\ultralytics\nn\tasks.py", line 420, in __init__ m.stride = torch.tensor([s / x.shape[-2] for x in _forward(torch.zeros(1, ch, s, s))]) # forward ~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\ultralytics\nn\tasks.py", line 416, in _forward return self.forward(x)[0] if isinstance(m, (Segment, YOLOESegment, Pose, OBB)) else self.forward(x) ~~~~~~~~~~~~^^^ File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\ultralytics\nn\tasks.py", line 141, in forward return self.predict(x, *args, **kwargs) ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\ultralytics\nn\tasks.py", line 159, in predict return self._predict_once(x, profile, visualize, embed) ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\ultralytics\nn\tasks.py", line 182, in _predict_once x = m(x) # run File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\torch\nn\modules\module.py", line 1773, in _wrapped_call_impl return self._call_impl(*args, **kwargs) ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^ File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\torch\nn\modules\module.py", line 1784, in _call_impl return forward_call(*args, **kwargs) File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\ultralytics\nn\modules\block.py", line 2044, in forward x = self.channel_attention(x) * x ~~~~~~~~~~~~~~~~~~~~~~^^^ File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\torch\nn\modules\module.py", line 1773, in _wrapped_call_impl return self._call_impl(*args, **kwargs) ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^ File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\torch\nn\modules\module.py", line 1784, in _call_impl return forward_call(*args, **kwargs) File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\ultralytics\nn\modules\block.py", line 2061, in forward avg_out = self.fc(self.avg_pool(x)) File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\torch\nn\modules\module.py", line 1773, in _wrapped_call_impl return self._call_impl(*args, **kwargs) ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^ File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\torch\nn\modules\module.py", line 1784, in _call_impl return forward_call(*args, **kwargs) File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\torch\nn\modules\container.py", line 244, in forward input = module(input) File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\torch\nn\modules\module.py", line 1773, in _wrapped_call_impl return self._call_impl(*args, **kwargs) ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^ File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\torch\nn\modules\module.py", line 1784, in _call_impl return forward_call(*args, **kwargs) File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\torch\nn\modules\conv.py", line 549, in forward return self._conv_forward(input, self.weight, self.bias) ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Enes Microsoft\miniconda3\Lib\site-packages\torch\nn\modules\conv.py", line 544, in _conv_forward return F.conv2d( ~~~~~~~~^ input, weight, bias, self.stride, self.padding, self.dilation, self.groups ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ RuntimeError: Given groups=1, weight of size [64, 1024, 1, 1], expected input[1, 256, 1, 1] to have 1024 channels, but got 256 channels instead [/code] есть ли модуль или что-то, что мне следует добавить? или я сделал что-то не так?