簡體   English   中英

KeyError: 'player' 在訓練 YOLOX 時

[英]KeyError: 'player' while training YOLOX

  • 我從 voc_classes.py 中刪除了所有類並讓我擁有(球員和球)
  • 正確放置所有路徑
  • 以 Pascal Voc 格式從 roboflow 下載數據集
  • 我關注了博客鏈接

https://programmer.ink/think/set-up-yolox-environment-and-train-your-own-data-set-under-windows-10.html

我跑的命令:

python 工具/train.py -f exps/example/yolox_voc/yolox_voc_s.py -d 1 -b 8 --fp16 -o -c yolox_s.pth

----------------------------------------------------------------------------------------------
----------------------------- ERROR : 
----------------------------------------------------------------------------------------------

(latest) E:\Project\yolox_1\YOLOX>python tools/train.py -f exps/example/yolox_voc/yolox_voc_s.py -d 1 -b 8 --fp16 -o -c yolox_s.pth
2022-05-31 14:50:44 | INFO     | yolox.core.trainer:130 - args: Namespace(experiment_name='yolox_voc_s', name=None, dist_backend='nccl', dist_url=None, batch_size=8, devices=1, exp_file='exps/example/yolox_voc/yolox_voc_s.py', resume=False, ckpt='yolox_s.pth', start_epoch=None, num_machines=1, machine_rank=0, fp16=True, cache=False, occupy=True, logger='tensorboard', opts=[])
2022-05-31 14:50:44 | INFO     | yolox.core.trainer:131 - exp value:
╒═══════════════════╤════════════════════════════╕
│ keys              │ values                     │
╞═══════════════════╪════════════════════════════╡
│ seed              │ None                       │
├───────────────────┼────────────────────────────┤
│ output_dir        │ './YOLOX_outputs'          │
├───────────────────┼────────────────────────────┤
│ print_interval    │ 10                         │
├───────────────────┼────────────────────────────┤
│ eval_interval     │ 10                         │
├───────────────────┼────────────────────────────┤
│ num_classes       │ 2                          │
├───────────────────┼────────────────────────────┤
│ depth             │ 0.33                       │
├───────────────────┼────────────────────────────┤
│ width             │ 0.5                        │
├───────────────────┼────────────────────────────┤
│ act               │ 'silu'                     │
├───────────────────┼────────────────────────────┤
│ data_num_workers  │ 4                          │
├───────────────────┼────────────────────────────┤
│ input_size        │ (640, 640)                 │
├───────────────────┼────────────────────────────┤
│ multiscale_range  │ 5                          │
├───────────────────┼────────────────────────────┤
│ data_dir          │ None                       │
├───────────────────┼────────────────────────────┤
│ train_ann         │ 'instances_train2017.json' │
├───────────────────┼────────────────────────────┤
│ val_ann           │ 'instances_val2017.json'   │
├───────────────────┼────────────────────────────┤
│ test_ann          │ 'instances_test2017.json'  │
├───────────────────┼────────────────────────────┤
│ mosaic_prob       │ 1.0                        │
├───────────────────┼────────────────────────────┤
│ mixup_prob        │ 1.0                        │
├───────────────────┼────────────────────────────┤
│ hsv_prob          │ 1.0                        │
├───────────────────┼────────────────────────────┤
│ flip_prob         │ 0.5                        │
├───────────────────┼────────────────────────────┤
│ degrees           │ 10.0                       │
├───────────────────┼────────────────────────────┤
│ translate         │ 0.1                        │
├───────────────────┼────────────────────────────┤
│ mosaic_scale      │ (0.1, 2)                   │
├───────────────────┼────────────────────────────┤
│ enable_mixup      │ True                       │
├───────────────────┼────────────────────────────┤
│ mixup_scale       │ (0.5, 1.5)                 │
├───────────────────┼────────────────────────────┤
│ shear             │ 2.0                        │
├───────────────────┼────────────────────────────┤
│ warmup_epochs     │ 1                          │
├───────────────────┼────────────────────────────┤
│ max_epoch         │ 300                        │
├───────────────────┼────────────────────────────┤
│ warmup_lr         │ 0                          │
├───────────────────┼────────────────────────────┤
│ min_lr_ratio      │ 0.05                       │
├───────────────────┼────────────────────────────┤
│ basic_lr_per_img  │ 0.00015625                 │
├───────────────────┼────────────────────────────┤
│ scheduler         │ 'yoloxwarmcos'             │
├───────────────────┼────────────────────────────┤
│ no_aug_epochs     │ 15                         │
├───────────────────┼────────────────────────────┤
│ ema               │ True                       │
├───────────────────┼────────────────────────────┤
│ weight_decay      │ 0.0005                     │
├───────────────────┼────────────────────────────┤
│ momentum          │ 0.9                        │
├───────────────────┼────────────────────────────┤
│ save_history_ckpt │ True                       │
├───────────────────┼────────────────────────────┤
│ exp_name          │ 'yolox_voc_s'              │
├───────────────────┼────────────────────────────┤
│ test_size         │ (640, 640)                 │
├───────────────────┼────────────────────────────┤
│ test_conf         │ 0.01                       │
├───────────────────┼────────────────────────────┤
│ nmsthre           │ 0.65                       │
╘═══════════════════╧════════════════════════════╛
2022-05-31 14:50:44 | INFO     | yolox.core.trainer:136 - Model Summary: Params: 8.94M, Gflops: 26.64
2022-05-31 14:50:44 | INFO     | yolox.core.trainer:308 - loading checkpoint for fine tuning
2022-05-31 14:50:44 | WARNING  | yolox.utils.checkpoint:24 - Shape of head.cls_preds.0.weight in checkpoint is torch.Size([80, 128, 1, 1]), while shape of head.cls_preds.0.weight in model is torch.Size([2, 128, 1, 1]).
2022-05-31 14:50:44 | WARNING  | yolox.utils.checkpoint:24 - Shape of head.cls_preds.0.bias in checkpoint is torch.Size([80]), while shape of head.cls_preds.0.bias in model is torch.Size([2]).
2022-05-31 14:50:44 | WARNING  | yolox.utils.checkpoint:24 - Shape of head.cls_preds.1.weight in checkpoint is torch.Size([80, 128, 1, 1]), while shape of head.cls_preds.1.weight in model is torch.Size([2, 128, 1, 1]).
2022-05-31 14:50:44 | WARNING  | yolox.utils.checkpoint:24 - Shape of head.cls_preds.1.bias in checkpoint is torch.Size([80]), while shape of head.cls_preds.1.bias in model is torch.Size([2]).
2022-05-31 14:50:44 | WARNING  | yolox.utils.checkpoint:24 - Shape of head.cls_preds.2.weight in checkpoint is torch.Size([80, 128, 1, 1]), while shape of head.cls_preds.2.weight in model is torch.Size([2, 128, 1, 1]).
2022-05-31 14:50:44 | WARNING  | yolox.utils.checkpoint:24 - Shape of head.cls_preds.2.bias in checkpoint is torch.Size([80]), while shape of head.cls_preds.2.bias in model is torch.Size([2]).
2022-05-31 14:50:45 | ERROR    | yolox.core.launch:98 - An error has been caught in function 'launch', process 'MainProcess' (4368), thread 'MainThread' (14652):
Traceback (most recent call last):

  File "E:\Project\yolox_1\YOLOX\tools\train.py", line 134, in <module>
    launch(
    └ <function launch at 0x000001CD545E94C0>

> File "C:\Users\Moses\latest\lib\site-packages\yolox-0.3.0-py3.9.egg\yolox\core\launch.py", line 98, in launch
    main_func(*args)
    │          └ (╒═══════════════════╤═══════════════════════════════════════════════════════════════════════════════════════════════════════...
    └ <function main at 0x000001CD54DEE700>

  File "E:\Project\yolox_1\YOLOX\tools\train.py", line 118, in main
    trainer.train()
    │       └ <function Trainer.train at 0x000001CD57245940>
    └ <yolox.core.trainer.Trainer object at 0x000001CD57250A30>

  File "C:\Users\Moses\latest\lib\site-packages\yolox-0.3.0-py3.9.egg\yolox\core\trainer.py", line 74, in train
    self.before_train()
    │    └ <function Trainer.before_train at 0x000001CD5724B1F0>
    └ <yolox.core.trainer.Trainer object at 0x000001CD57250A30>

  File "C:\Users\Moses\latest\lib\site-packages\yolox-0.3.0-py3.9.egg\yolox\core\trainer.py", line 149, in before_train
    self.train_loader = self.exp.get_data_loader(
    │                   │    │   └ <function Exp.get_data_loader at 0x000001CD5724BE50>
    │                   │    └ ╒═══════════════════╤════════════════════════════════════════════════════════════════════════════════════════════════════════...
    │                   └ <yolox.core.trainer.Trainer object at 0x000001CD57250A30>
    └ <yolox.core.trainer.Trainer object at 0x000001CD57250A30>

  File "E:\Project\yolox_1\YOLOX\exps/example/yolox_voc\yolox_voc_s.py", line 44, in get_data_loader
    dataset = VOCDetection(
              └ <class 'yolox.data.datasets.voc.VOCDetection'>

  File "C:\Users\Moses\latest\lib\site-packages\yolox-0.3.0-py3.9.egg\yolox\data\datasets\voc.py", line 131, in __init__
    self.annotations = self._load_coco_annotations()
    │                  │    └ <function VOCDetection._load_coco_annotations at 0x000001CD572428B0>
    │                  └ <yolox.data.datasets.voc.VOCDetection object at 0x000001CD6181FD90>
    └ <yolox.data.datasets.voc.VOCDetection object at 0x000001CD6181FD90>

  File "C:\Users\Moses\latest\lib\site-packages\yolox-0.3.0-py3.9.egg\yolox\data\datasets\voc.py", line 140, in _load_coco_annotations
    return [self.load_anno_from_ids(_ids) for _ids in range(len(self.ids))]
            │    │                                              │    └ [('E:\\Project\\yolox_1\\YOLOX\\datasets\\VOC\\VOCdevkit\\VOC2007', 'frame_10024_jpg.rf.385270b90c71b5b04f238b7d5cbff174'), (...
            │    │                                              └ <yolox.data.datasets.voc.VOCDetection object at 0x000001CD6181FD90>
            │    └ <function VOCDetection.load_anno_from_ids at 0x000001CD572429D0>
            └ <yolox.data.datasets.voc.VOCDetection object at 0x000001CD6181FD90>

  File "C:\Users\Moses\latest\lib\site-packages\yolox-0.3.0-py3.9.egg\yolox\data\datasets\voc.py", line 140, in <listcomp>
    return [self.load_anno_from_ids(_ids) for _ids in range(len(self.ids))]
            │    │                  │         │                 │    └ [('E:\\Project\\yolox_1\\YOLOX\\datasets\\VOC\\VOCdevkit\\VOC2007', 'frame_10024_jpg.rf.385270b90c71b5b04f238b7d5cbff174'), (...
            │    │                  │         │                 └ <yolox.data.datasets.voc.VOCDetection object at 0x000001CD6181FD90>
            │    │                  │         └ 0
            │    │                  └ 0
            │    └ <function VOCDetection.load_anno_from_ids at 0x000001CD572429D0>
            └ <yolox.data.datasets.voc.VOCDetection object at 0x000001CD6181FD90>

  File "C:\Users\Moses\latest\lib\site-packages\yolox-0.3.0-py3.9.egg\yolox\data\datasets\voc.py", line 196, in load_anno_from_ids
    res, img_info = self.target_transform(target)
                    │    │                └ <Element 'annotation' at 0x000001CD5D3919A0>
                    │    └ <yolox.data.datasets.voc.AnnotationTransform object at 0x000001CD571BAC70>
                    └ <yolox.data.datasets.voc.VOCDetection object at 0x000001CD6181FD90>

  File "C:\Users\Moses\latest\lib\site-packages\yolox-0.3.0-py3.9.egg\yolox\data\datasets\voc.py", line 71, in __call__
    label_idx = self.class_to_ind[name]
                │    │            └ 'player'
                │    └ {'aeroplane': 0, 'bicycle': 1, 'bird': 2, 'boat': 3, 'bottle': 4, 'bus': 5, 'car': 6, 'cat': 7, 'chair': 8, 'cow': 9, 'dining...
                └ <yolox.data.datasets.voc.AnnotationTransform object at 0x000001CD571BAC70>

**KeyError: 'player'**

我正在使用自定義數據集,我也面臨同樣的問題。

我的數據集只有以下兩個類。

VOC_CLASSES = (
    "normal",
    "mp",
)

我已經提到了兩個教程, 這個那個

以下是我的錯誤信息,看起來和你的一樣。

  File "/home/student1/310112010/YOLOX/yolox/data/datasets/voc.py", line 71, in __call__
    label_idx = self.class_to_ind[name]
                │    │            └ 'Normal'
                │    └ {'normal': 0, 'mp': 1}
                └ <yolox.data.datasets.voc.AnnotationTransform object at 0x7f3dea8bc3a0>

KeyError: 'Normal'

真的很奇怪,如果我將班級從normal更改為Normal ,錯誤消息將如下所示。

  File "/home/student1/310112010/YOLOX/yolox/data/datasets/voc.py", line 71, in __call__
    label_idx = self.class_to_ind[name]
                │    │            └ 'normal'
                │    └ {'Normal': 0, 'mp': 1}
                └ <yolox.data.datasets.voc.AnnotationTransform object at 0x7f1d65dc83a0>

KeyError: 'normal'

這沒有意義。

最后,我將自定義數據集從 VOC 格式轉換為 COCO 格式標簽來訓練 YOLOX。

它可以正常工作!

您只升級了 voc_classes.py。 你也必須升級 coco_classes.py

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM