Skip to content

AttributeError: 'Conv' object has no attribute 'bn' #68

@cvhrnkmp

Description

@cvhrnkmp

Hello,

I got the following error, if I train the model on custom dataset with the following command:

Command:

python train.py --data Dataset --model m-doclayout --epoch 5 --image-size 1600 --project first_shot --device cpu

Error:

OLOv10m-doclayout summary (fused): 465 layers, 19924276 parameters, 0 gradients
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95):   0%|          | 0/1 [00:00<?
Traceback (most recent call last):
  File "C:\Users\Programming\Documents\DocLayout-YOLO-main\train.py", line 63, in <module>
    results = model.train(
              ^^^^^^^^^^^^
  File "C:\Users\Programming\Documents\DocLayout-YOLO-main\doclayout_yolo\engine\model.py", line 660, in train
    self.trainer.train()
  File "C:\Users\Programming\Documents\DocLayout-YOLO-main\doclayout_yolo\engine\trainer.py", line 214, in train
    self._do_train(world_size)
  File "C:\Users\Programming\Documents\DocLayout-YOLO-main\doclayout_yolo\engine\trainer.py", line 473, in _do_train
    self.final_eval()
  File "C:\Users\Programming\Documents\DocLayout-YOLO-main\doclayout_yolo\engine\trainer.py", line 630, in final_eval
    self.metrics = self.validator(model=f)
                   ^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Programming\Documents\DocLayout-YOLO-main\doclayout_yolo\engine\validator.py", line 192, in __call__
    preds = model(batch["img"], augment=augment)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Programming\AppData\Roaming\Python\Python311\site-packages\torch\nn\modules\module.py", line 1736, in _wrapped_call_impl
    return self._call_impl(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Programming\AppData\Roaming\Python\Python311\site-packages\torch\nn\modules\module.py", line 1747, in _call_impl
    return forward_call(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Programming\Documents\DocLayout-YOLO-main\doclayout_yolo\nn\autobackend.py", line 420, in forward
    y = self.model(im, augment=augment, visualize=visualize, embed=embed)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Programming\AppData\Roaming\Python\Python311\site-packages\torch\nn\modules\module.py", line 1736, in _wrapped_call_impl
    return self._call_impl(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Programming\AppData\Roaming\Python\Python311\site-packages\torch\nn\modules\module.py", line 1747, in _call_impl
    return forward_call(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Programming\Documents\DocLayout-YOLO-main\doclayout_yolo\nn\tasks.py", line 96, in forward
    return self.predict(x, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Programming\Documents\DocLayout-YOLO-main\doclayout_yolo\nn\tasks.py", line 114, in predict
    return self._predict_once(x, profile, visualize, embed)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Programming\Documents\DocLayout-YOLO-main\doclayout_yolo\nn\tasks.py", line 136, in _predict_once
    x = m(x)  # run
        ^^^^
  File "C:\Users\Programming\AppData\Roaming\Python\Python311\site-packages\torch\nn\modules\module.py", line 1736, in _wrapped_call_impl
    return self._call_impl(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Programming\AppData\Roaming\Python\Python311\site-packages\torch\nn\modules\module.py", line 1747, in _call_impl
    return forward_call(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Programming\Documents\DocLayout-YOLO-main\doclayout_yolo\nn\modules\g2l_crm.py", line 114, in forward
    y.append(m(y[-1]))
             ^^^^^^^^
  File "C:\Users\Programming\AppData\Roaming\Python\Python311\site-packages\torch\nn\modules\module.py", line 1736, in _wrapped_call_impl
    return self._call_impl(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Programming\AppData\Roaming\Python\Python311\site-packages\torch\nn\modules\module.py", line 1747, in _call_impl
    return forward_call(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Programming\Documents\DocLayout-YOLO-main\doclayout_yolo\nn\modules\g2l_crm.py", line 77, in forward
    return x + self.cv2(self.dilated_block(self.cv1(x))) if self.add else self.cv2(self.dilated_block(self.cv1(x)))
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Programming\AppData\Roaming\Python\Python311\site-packages\torch\nn\modules\module.py", line 1736, in _wrapped_call_impl
    return self._call_impl(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Programming\AppData\Roaming\Python\Python311\site-packages\torch\nn\modules\module.py", line 1747, in _call_impl
    return forward_call(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Programming\Documents\DocLayout-YOLO-main\doclayout_yolo\nn\modules\g2l_crm.py", line 43, in forward
    dx = [self.dilated_conv(x, d) for d in self.dilation]
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Programming\Documents\DocLayout-YOLO-main\doclayout_yolo\nn\modules\g2l_crm.py", line 43, in <listcomp>
    dx = [self.dilated_conv(x, d) for d in self.dilation]
          ^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Programming\Documents\DocLayout-YOLO-main\doclayout_yolo\nn\modules\g2l_crm.py", line 36, in dilated_conv
    bn = self.dcv.bn
         ^^^^^^^^^^^
  File "C:\Users\Programming\AppData\Roaming\Python\Python311\site-packages\torch\nn\modules\module.py", line 1931, in __getattr__
    raise AttributeError(
AttributeError: 'Conv' object has no attribute 'bn'

What is the cause of the issue?

Thanks in forward, best regards
Christian

Appendix

The folder structure is:

./DocLayout-YOLO-main
├── layout_data
│   ├── Dataset
│        ├── images
│        ├── labels
│        ├── val.txt
│        ├── text.txt
│        └── train.txt
├── doclayout_yolo
│   └── cfg
│         └── Dataset.yaml
└── train.py

Dataset.yaml:

# Ultralytics YOLO 🚀, AGPL-3.0 license
# COCO 2017 dataset https://cocodataset.org by Microsoft
# Documentation: https://docs.doclayout_yolo.com/datasets/detect/coco/
# Example usage: yolo train data=coco.yaml
# parent
# ├── doclayout_yolo
# └── datasets
#     └── coco  ← downloads here (20.1 GB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ./Dataset  # dataset root dir
train: C:\Users\Programming\Documents\DocLayout-YOLO-main\layout_data\Dataset\train.txt
val: C:\Users\Programming\Documents\DocLayout-YOLO-main\layout_data\Dataset\val.txt
test: C:\Users\Programming\Documents\DocLayout-YOLO-main\layout_data\Dataset\test.txt 

# Classes
names:
    0: 'figure'
    1: 'paragraph'
    2: 'section title'
    3: 'sub section title'
    4: 'subsub section title'
    5: 'table'

train.txt, test.txt, val.txt are with absolute path, like the following example:

C:\Users\Programming\Documents\DocLayout-YOLO-main\layout_data\Dataset\images\37b4ef0c-page_4.png
C:\Users\Programming\Documents\DocLayout-YOLO-main\layout_data\Dataset\images\a73b6a5e-page_3.png
C:\Users\Programming\Documents\DocLayout-YOLO-main\layout_data\Dataset\images\d7531bec-page_5.png

The settings.yaml in Ultraytics is set as follows:

settings_version: 0.0.4
datasets_dir: C:\Users\Programming\Documents\DocLayout-YOLO-main\layout_data
weights_dir: <Path_to_weights>\weights
runs_dir: <Path_to_runs>\runs
uuid: 4ba298c8490b48eee0c6ce4e5fcc68f485c9ae144b377321d03ec0fcd42d63dc
sync: true
api_key: ''
openai_api_key: ''
clearml: true
comet: true
dvc: true
hub: true
mlflow: true
neptune: true
raytune: true
tensorboard: true
wandb: true

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions