AutoMM 检测 - 使用自定义设置在 COCO 格式数据集上进行微调¶
在本节中,我们的目标是使用自定义设置在 COCO 格式数据集上快速微调和评估一个预训练模型。数据集是 Pothole 数据集。Pothole 是一个单目标(即 pothole
)检测数据集,包含 665 张带有边界框标注的图像,用于创建检测模型,并可作为道路维护的 POC/POV。有关如何准备 Pothole 数据集,请参见 AutoMM 检测 - 准备 Pothole 数据集。
首先,确保已安装 mmcv
和 mmdet
。注意:MMDet 不再积极维护,仅与 MMCV 2.1.0 版本兼容。由于 CUDA 版本兼容性问题,安装可能会出现问题。为了获得最佳结果
使用 CUDA 12.4 和 PyTorch 2.5
安装前,运行
pip install -U pip setuptools wheel sudo apt-get install -y ninja-build gcc g++
这将有助于防止 MMCV 在构建 wheel 时挂起。
在 Jupyter notebook 中安装后,请重新启动内核以使更改生效。
# Update package tools and install build dependencies
!pip install -U pip setuptools wheel
!sudo apt-get install -y ninja-build gcc g++
# Install MMCV
!python3 -m mim install "mmcv==2.1.0"
# For Google Colab users: If the above fails, use this alternative MMCV installation
# pip install "mmcv==2.1.0" -f https://download.openmmlab.com/mmcv/dist/cu121/torch2.1.0/index.html
# Install MMDet
!python3 -m pip install "mmdet==3.2.0"
# Install MMEngine (version >=0.10.6 for PyTorch 2.5 compatibility)
!python3 -m pip install "mmengine>=0.10.6"
显示代码单元格输出
Requirement already satisfied: pip in /home/ci/opt/venv/lib/python3.11/site-packages (25.1.1)
Requirement already satisfied: setuptools in /home/ci/opt/venv/lib/python3.11/site-packages (65.5.0)
Collecting setuptools
Downloading setuptools-80.3.1-py3-none-any.whl.metadata (6.5 kB)
Requirement already satisfied: wheel in /home/ci/opt/venv/lib/python3.11/site-packages (0.45.1)
Downloading setuptools-80.3.1-py3-none-any.whl (1.2 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 53.9 MB/s eta 0:00:00
?25h
Installing collected packages: setuptools
Attempting uninstall: setuptools
Found existing installation: setuptools 65.5.0
Uninstalling setuptools-65.5.0:
Successfully uninstalled setuptools-65.5.0
Successfully installed setuptools-80.3.1
/usr/bin/sh: 1: sudo: not found
Looking in links: https://download.openmmlab.com/mmcv/dist/cu124/torch2.6.0/index.html
Requirement already satisfied: mmcv==2.1.0 in /home/ci/opt/venv/lib/python3.11/site-packages (2.1.0)
Requirement already satisfied: addict in /home/ci/opt/venv/lib/python3.11/site-packages (from mmcv==2.1.0) (2.4.0)
Requirement already satisfied: mmengine>=0.3.0 in /home/ci/opt/venv/lib/python3.11/site-packages (from mmcv==2.1.0) (0.10.5)
Requirement already satisfied: numpy in /home/ci/opt/venv/lib/python3.11/site-packages (from mmcv==2.1.0) (2.1.3)
Requirement already satisfied: packaging in /home/ci/opt/venv/lib/python3.11/site-packages (from mmcv==2.1.0) (24.2)
Requirement already satisfied: Pillow in /home/ci/opt/venv/lib/python3.11/site-packages (from mmcv==2.1.0) (11.2.1)
Requirement already satisfied: pyyaml in /home/ci/opt/venv/lib/python3.11/site-packages (from mmcv==2.1.0) (6.0.2)
Requirement already satisfied: yapf in /home/ci/opt/venv/lib/python3.11/site-packages (from mmcv==2.1.0) (0.43.0)
Requirement already satisfied: matplotlib in /home/ci/opt/venv/lib/python3.11/site-packages (from mmengine>=0.3.0->mmcv==2.1.0) (3.10.3)
Requirement already satisfied: rich in /home/ci/opt/venv/lib/python3.11/site-packages (from mmengine>=0.3.0->mmcv==2.1.0) (14.0.0)
Requirement already satisfied: termcolor in /home/ci/opt/venv/lib/python3.11/site-packages (from mmengine>=0.3.0->mmcv==2.1.0) (3.1.0)
Requirement already satisfied: opencv-python>=3 in /home/ci/opt/venv/lib/python3.11/site-packages (from mmengine>=0.3.0->mmcv==2.1.0) (4.11.0.86)
Requirement already satisfied: contourpy>=1.0.1 in /home/ci/opt/venv/lib/python3.11/site-packages (from matplotlib->mmengine>=0.3.0->mmcv==2.1.0) (1.3.2)
Requirement already satisfied: cycler>=0.10 in /home/ci/opt/venv/lib/python3.11/site-packages (from matplotlib->mmengine>=0.3.0->mmcv==2.1.0) (0.12.1)
Requirement already satisfied: fonttools>=4.22.0 in /home/ci/opt/venv/lib/python3.11/site-packages (from matplotlib->mmengine>=0.3.0->mmcv==2.1.0) (4.57.0)
Requirement already satisfied: kiwisolver>=1.3.1 in /home/ci/opt/venv/lib/python3.11/site-packages (from matplotlib->mmengine>=0.3.0->mmcv==2.1.0) (1.4.8)
Requirement already satisfied: pyparsing>=2.3.1 in /home/ci/opt/venv/lib/python3.11/site-packages (from matplotlib->mmengine>=0.3.0->mmcv==2.1.0) (3.2.3)
Requirement already satisfied: python-dateutil>=2.7 in /home/ci/opt/venv/lib/python3.11/site-packages (from matplotlib->mmengine>=0.3.0->mmcv==2.1.0) (2.9.0.post0)
Requirement already satisfied: six>=1.5 in /home/ci/opt/venv/lib/python3.11/site-packages (from python-dateutil>=2.7->matplotlib->mmengine>=0.3.0->mmcv==2.1.0) (1.17.0)
Requirement already satisfied: markdown-it-py>=2.2.0 in /home/ci/opt/venv/lib/python3.11/site-packages (from rich->mmengine>=0.3.0->mmcv==2.1.0) (3.0.0)
Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /home/ci/opt/venv/lib/python3.11/site-packages (from rich->mmengine>=0.3.0->mmcv==2.1.0) (2.19.1)
Requirement already satisfied: mdurl~=0.1 in /home/ci/opt/venv/lib/python3.11/site-packages (from markdown-it-py>=2.2.0->rich->mmengine>=0.3.0->mmcv==2.1.0) (0.1.2)
Requirement already satisfied: platformdirs>=3.5.1 in /home/ci/opt/venv/lib/python3.11/site-packages (from yapf->mmcv==2.1.0) (4.3.8)
Requirement already satisfied: mmdet==3.2.0 in /home/ci/opt/venv/lib/python3.11/site-packages (3.2.0)
Requirement already satisfied: matplotlib in /home/ci/opt/venv/lib/python3.11/site-packages (from mmdet==3.2.0) (3.10.3)
Requirement already satisfied: numpy in /home/ci/opt/venv/lib/python3.11/site-packages (from mmdet==3.2.0) (2.1.3)
Requirement already satisfied: pycocotools in /home/ci/opt/venv/lib/python3.11/site-packages (from mmdet==3.2.0) (2.0.8)
Requirement already satisfied: scipy in /home/ci/opt/venv/lib/python3.11/site-packages (from mmdet==3.2.0) (1.15.3)
Requirement already satisfied: shapely in /home/ci/opt/venv/lib/python3.11/site-packages (from mmdet==3.2.0) (2.1.0)
Requirement already satisfied: six in /home/ci/opt/venv/lib/python3.11/site-packages (from mmdet==3.2.0) (1.17.0)
Requirement already satisfied: terminaltables in /home/ci/opt/venv/lib/python3.11/site-packages (from mmdet==3.2.0) (3.1.10)
Requirement already satisfied: tqdm in /home/ci/opt/venv/lib/python3.11/site-packages (from mmdet==3.2.0) (4.67.1)
Requirement already satisfied: contourpy>=1.0.1 in /home/ci/opt/venv/lib/python3.11/site-packages (from matplotlib->mmdet==3.2.0) (1.3.2)
Requirement already satisfied: cycler>=0.10 in /home/ci/opt/venv/lib/python3.11/site-packages (from matplotlib->mmdet==3.2.0) (0.12.1)
Requirement already satisfied: fonttools>=4.22.0 in /home/ci/opt/venv/lib/python3.11/site-packages (from matplotlib->mmdet==3.2.0) (4.57.0)
Requirement already satisfied: kiwisolver>=1.3.1 in /home/ci/opt/venv/lib/python3.11/site-packages (from matplotlib->mmdet==3.2.0) (1.4.8)
Requirement already satisfied: packaging>=20.0 in /home/ci/opt/venv/lib/python3.11/site-packages (from matplotlib->mmdet==3.2.0) (24.2)
Requirement already satisfied: pillow>=8 in /home/ci/opt/venv/lib/python3.11/site-packages (from matplotlib->mmdet==3.2.0) (11.2.1)
Requirement already satisfied: pyparsing>=2.3.1 in /home/ci/opt/venv/lib/python3.11/site-packages (from matplotlib->mmdet==3.2.0) (3.2.3)
Requirement already satisfied: python-dateutil>=2.7 in /home/ci/opt/venv/lib/python3.11/site-packages (from matplotlib->mmdet==3.2.0) (2.9.0.post0)
Collecting mmengine>=0.10.6
Downloading mmengine-0.10.7-py3-none-any.whl.metadata (20 kB)
Requirement already satisfied: addict in /home/ci/opt/venv/lib/python3.11/site-packages (from mmengine>=0.10.6) (2.4.0)
Requirement already satisfied: matplotlib in /home/ci/opt/venv/lib/python3.11/site-packages (from mmengine>=0.10.6) (3.10.3)
Requirement already satisfied: numpy in /home/ci/opt/venv/lib/python3.11/site-packages (from mmengine>=0.10.6) (2.1.3)
Requirement already satisfied: pyyaml in /home/ci/opt/venv/lib/python3.11/site-packages (from mmengine>=0.10.6) (6.0.2)
Requirement already satisfied: rich in /home/ci/opt/venv/lib/python3.11/site-packages (from mmengine>=0.10.6) (14.0.0)
Requirement already satisfied: termcolor in /home/ci/opt/venv/lib/python3.11/site-packages (from mmengine>=0.10.6) (3.1.0)
Requirement already satisfied: yapf in /home/ci/opt/venv/lib/python3.11/site-packages (from mmengine>=0.10.6) (0.43.0)
Requirement already satisfied: opencv-python>=3 in /home/ci/opt/venv/lib/python3.11/site-packages (from mmengine>=0.10.6) (4.11.0.86)
Requirement already satisfied: contourpy>=1.0.1 in /home/ci/opt/venv/lib/python3.11/site-packages (from matplotlib->mmengine>=0.10.6) (1.3.2)
Requirement already satisfied: cycler>=0.10 in /home/ci/opt/venv/lib/python3.11/site-packages (from matplotlib->mmengine>=0.10.6) (0.12.1)
Requirement already satisfied: fonttools>=4.22.0 in /home/ci/opt/venv/lib/python3.11/site-packages (from matplotlib->mmengine>=0.10.6) (4.57.0)
Requirement already satisfied: kiwisolver>=1.3.1 in /home/ci/opt/venv/lib/python3.11/site-packages (from matplotlib->mmengine>=0.10.6) (1.4.8)
Requirement already satisfied: packaging>=20.0 in /home/ci/opt/venv/lib/python3.11/site-packages (from matplotlib->mmengine>=0.10.6) (24.2)
Requirement already satisfied: pillow>=8 in /home/ci/opt/venv/lib/python3.11/site-packages (from matplotlib->mmengine>=0.10.6) (11.2.1)
Requirement already satisfied: pyparsing>=2.3.1 in /home/ci/opt/venv/lib/python3.11/site-packages (from matplotlib->mmengine>=0.10.6) (3.2.3)
Requirement already satisfied: python-dateutil>=2.7 in /home/ci/opt/venv/lib/python3.11/site-packages (from matplotlib->mmengine>=0.10.6) (2.9.0.post0)
Requirement already satisfied: six>=1.5 in /home/ci/opt/venv/lib/python3.11/site-packages (from python-dateutil>=2.7->matplotlib->mmengine>=0.10.6) (1.17.0)
Requirement already satisfied: markdown-it-py>=2.2.0 in /home/ci/opt/venv/lib/python3.11/site-packages (from rich->mmengine>=0.10.6) (3.0.0)
Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /home/ci/opt/venv/lib/python3.11/site-packages (from rich->mmengine>=0.10.6) (2.19.1)
Requirement already satisfied: mdurl~=0.1 in /home/ci/opt/venv/lib/python3.11/site-packages (from markdown-it-py>=2.2.0->rich->mmengine>=0.10.6) (0.1.2)
Requirement already satisfied: platformdirs>=3.5.1 in /home/ci/opt/venv/lib/python3.11/site-packages (from yapf->mmengine>=0.10.6) (4.3.8)
Downloading mmengine-0.10.7-py3-none-any.whl (452 kB)
Installing collected packages: mmengine
Attempting uninstall: mmengine
Found existing installation: mmengine 0.10.5
Uninstalling mmengine-0.10.5:
Successfully uninstalled mmengine-0.10.5
Successfully installed mmengine-0.10.7
from autogluon.multimodal import MultiModalPredictor
并导入本教程中将使用的其他一些包
import os
from autogluon.core.utils.loaders import load_zip
我们已经在云端准备好了样本数据集。让我们下载它并存储每个数据分割的路径
zip_file = "https://automl-mm-bench.s3.amazonaws.com/object_detection/dataset/pothole.zip"
download_dir = "./pothole"
load_zip.unzip(zip_file, unzip_dir=download_dir)
data_dir = os.path.join(download_dir, "pothole")
train_path = os.path.join(data_dir, "Annotations", "usersplit_train_cocoformat.json")
val_path = os.path.join(data_dir, "Annotations", "usersplit_val_cocoformat.json")
test_path = os.path.join(data_dir, "Annotations", "usersplit_test_cocoformat.json")
Downloading ./pothole/file.zip from https://automl-mm-bench.s3.amazonaws.com/object_detection/dataset/pothole.zip...
0%| | 0.00/351M [00:00<?, ?iB/s]
3%|▎ | 11.6M/351M [00:00<00:02, 116MiB/s]
7%|▋ | 23.2M/351M [00:00<00:04, 66.7MiB/s]
9%|▉ | 32.7M/351M [00:00<00:05, 60.4MiB/s]
11%|█ | 39.4M/351M [00:00<00:05, 53.5MiB/s]
15%|█▍ | 51.3M/351M [00:00<00:04, 69.8MiB/s]
17%|█▋ | 59.2M/351M [00:00<00:05, 58.0MiB/s]
19%|█▉ | 65.8M/351M [00:01<00:04, 57.7MiB/s]
21%|██ | 72.1M/351M [00:01<00:05, 47.5MiB/s]
24%|██▍ | 83.9M/351M [00:01<00:04, 62.7MiB/s]
26%|██▌ | 91.2M/351M [00:01<00:04, 58.1MiB/s]
29%|██▉ | 103M/351M [00:01<00:03, 64.5MiB/s]
33%|███▎ | 115M/351M [00:01<00:03, 75.9MiB/s]
35%|███▌ | 123M/351M [00:01<00:03, 69.8MiB/s]
38%|███▊ | 135M/351M [00:02<00:02, 81.3MiB/s]
41%|████ | 143M/351M [00:02<00:04, 49.1MiB/s]
44%|████▍ | 155M/351M [00:02<00:03, 51.8MiB/s]
47%|████▋ | 166M/351M [00:02<00:02, 63.1MiB/s]
50%|████▉ | 174M/351M [00:02<00:03, 53.0MiB/s]
52%|█████▏ | 183M/351M [00:03<00:02, 59.3MiB/s]
54%|█████▍ | 191M/351M [00:03<00:03, 53.4MiB/s]
56%|█████▌ | 197M/351M [00:03<00:03, 39.0MiB/s]
59%|█████▉ | 206M/351M [00:03<00:03, 43.4MiB/s]
60%|██████ | 211M/351M [00:03<00:03, 44.6MiB/s]
64%|██████▎ | 223M/351M [00:03<00:02, 59.4MiB/s]
66%|██████▌ | 230M/351M [00:03<00:02, 60.0MiB/s]
69%|██████▊ | 241M/351M [00:04<00:01, 71.6MiB/s]
72%|███████▏ | 252M/351M [00:04<00:01, 82.0MiB/s]
75%|███████▍ | 261M/351M [00:04<00:01, 71.4MiB/s]
78%|███████▊ | 273M/351M [00:04<00:00, 82.3MiB/s]
80%|████████ | 282M/351M [00:04<00:00, 68.9MiB/s]
83%|████████▎ | 292M/351M [00:04<00:00, 61.0MiB/s]
87%|████████▋ | 304M/351M [00:04<00:00, 72.3MiB/s]
89%|████████▉ | 312M/351M [00:05<00:00, 62.3MiB/s]
92%|█████████▏| 323M/351M [00:05<00:00, 74.2MiB/s]
95%|█████████▍| 332M/351M [00:05<00:00, 72.7MiB/s]
98%|█████████▊| 343M/351M [00:05<00:00, 82.7MiB/s]
100%|██████████| 351M/351M [00:05<00:00, 61.5MiB/s]
使用 COCO 格式数据集时,输入是数据集分割的 json 标注文件。在此示例中,usersplit_train_cocoformat.json
是训练分割的标注文件。usersplit_val_cocoformat.json
是验证分割的标注文件。而 usersplit_test_cocoformat.json
是测试分割的标注文件。
我们选择在 COCO 数据集上预训练的 YOLOX-small 模型。通过此设置,微调或推理速度快,并且易于部署。请注意,您可以使用更大的模型(通常速度较慢,但性能更好),方法是将 checkpoint_name
设置为相应的检查点名称。对于不同的模型,您可能需要更改 lr 和 per_gpu_batch_size。更简单的方法是使用我们预定义的预设,如 "medium_quality"
、"high_quality"
或 "best_quality"
。有关使用预设的更多信息,请参见 快速入门 Coco。
checkpoint_name = "yolox_s"
num_gpus = 1 # only use one GPU
我们使用选定的检查点名称和 GPU 数量创建 MultiModalPredictor。我们需要将 problem_type 指定为 "object_detection"
,并提供 sample_data_path
以便 Predictor 推断数据集的类别。这里我们提供了 train_path
,使用此数据集的任何其他分割也同样有效。
predictor = MultiModalPredictor(
hyperparameters={
"model.mmdet_image.checkpoint_name": checkpoint_name,
"env.num_gpus": num_gpus,
},
problem_type="object_detection",
sample_data_path=train_path,
)
我们将学习率设置为 1e-4
。请注意,默认情况下,我们在微调期间使用两阶段学习率选项,模型头部将具有 100 倍的学习率。使用高学习率的两阶段学习率仅应用于头部层,这使得模型在微调期间收敛更快。它通常也能提供更好的性能,尤其是在包含数百或数千张图像的小型数据集上。我们将批处理大小设置为 16,您可以根据可用的 GPU 内存增加或减少批处理大小。我们将最大 epoch 数设置为 30,每次间隔的验证检查次数设置为 1.0,每 n 个 epoch 进行一次验证检查设置为 3,以实现快速微调。我们还在此处计算了 fit 过程的时间,以便更好地了解速度。
predictor.fit(
train_path,
tuning_data=val_path,
hyperparameters={
"optim.lr": 1e-4, # we use two stage and detection head has 100x lr
"env.per_gpu_batch_size": 16, # decrease it when model is large or GPU memory is small
"optim.max_epochs": 30, # max number of training epochs, note that we may early stop before this based on validation setting
"optim.val_check_interval": 1.0, # Do 1 validation each epoch
"optim.check_val_every_n_epoch": 3, # Do 1 validation each 3 epochs
"optim.patience": 3, # Early stop after 3 consective validations are not the best
},
)
loading annotations into memory...
Done (t=0.00s)
creating index...
index created!
loading annotations into memory...
Done (t=0.00s)
creating index...
index created!
Downloading yolox_s_8x8_300e_coco_20211121_095711-4592a793.pth from https://download.openmmlab.com/mmdetection/v2.0/yolox/yolox_s_8x8_300e_coco/yolox_s_8x8_300e_coco_20211121_095711-4592a793.pth...
Loads checkpoint by local backend from path: yolox_s_8x8_300e_coco_20211121_095711-4592a793.pth
The model and loaded state dict do not match exactly
size mismatch for bbox_head.multi_level_conv_cls.0.weight: copying a param with shape torch.Size([80, 128, 1, 1]) from checkpoint, the shape in current model is torch.Size([1, 128, 1, 1]).
size mismatch for bbox_head.multi_level_conv_cls.0.bias: copying a param with shape torch.Size([80]) from checkpoint, the shape in current model is torch.Size([1]).
size mismatch for bbox_head.multi_level_conv_cls.1.weight: copying a param with shape torch.Size([80, 128, 1, 1]) from checkpoint, the shape in current model is torch.Size([1, 128, 1, 1]).
size mismatch for bbox_head.multi_level_conv_cls.1.bias: copying a param with shape torch.Size([80]) from checkpoint, the shape in current model is torch.Size([1]).
size mismatch for bbox_head.multi_level_conv_cls.2.weight: copying a param with shape torch.Size([80, 128, 1, 1]) from checkpoint, the shape in current model is torch.Size([1, 128, 1, 1]).
size mismatch for bbox_head.multi_level_conv_cls.2.bias: copying a param with shape torch.Size([80]) from checkpoint, the shape in current model is torch.Size([1]).
=================== System Info ===================
AutoGluon Version: 1.3.1b20250508
Python Version: 3.11.9
Operating System: Linux
Platform Machine: x86_64
Platform Version: #1 SMP Wed Mar 12 14:53:59 UTC 2025
CPU Count: 8
Pytorch Version: 2.6.0+cu124
CUDA Version: 12.4
Memory Avail: 28.41 GB / 30.95 GB (91.8%)
===================================================
No path specified. Models will be saved in: "AutogluonModels/ag-20250508_205733"
Using default root folder: ./pothole/pothole/Annotations/... Specify `model.mmdet_image.coco_root=...` in hyperparameters if you think it is wrong.
Using default root folder: ./pothole/pothole/Annotations/... Specify `model.mmdet_image.coco_root=...` in hyperparameters if you think it is wrong.
AutoMM starts to create your model. ✨✨✨
To track the learning progress, you can open a terminal and launch Tensorboard:
```shell
# Assume you have installed tensorboard
tensorboard --logdir /home/ci/autogluon/docs/tutorials/multimodal/object_detection/advanced/AutogluonModels/ag-20250508_205733
```
Seed set to 0
0%| | 0.00/36.1M [00:00<?, ?iB/s]
1%| | 278k/36.1M [00:00<00:12, 2.77MiB/s]
2%|▏ | 654k/36.1M [00:00<00:10, 3.32MiB/s]
3%|▎ | 1.15M/36.1M [00:00<00:08, 4.00MiB/s]
5%|▍ | 1.77M/36.1M [00:00<00:07, 4.85MiB/s]
7%|▋ | 2.57M/36.1M [00:00<00:05, 5.96MiB/s]
10%|▉ | 3.60M/36.1M [00:00<00:04, 7.40MiB/s]
14%|█▎ | 4.90M/36.1M [00:00<00:03, 9.20MiB/s]
18%|█▊ | 6.52M/36.1M [00:00<00:02, 11.4MiB/s]
23%|██▎ | 8.36M/36.1M [00:00<00:02, 13.6MiB/s]
28%|██▊ | 10.1M/36.1M [00:01<00:01, 14.7MiB/s]
33%|███▎ | 12.0M/36.1M [00:01<00:01, 16.1MiB/s]
39%|███▉ | 14.1M/36.1M [00:01<00:01, 17.2MiB/s]
45%|████▍ | 16.1M/36.1M [00:01<00:01, 18.1MiB/s]
50%|█████ | 18.1M/36.1M [00:01<00:00, 18.7MiB/s]
56%|█████▌ | 20.1M/36.1M [00:01<00:00, 18.9MiB/s]
62%|██████▏ | 22.2M/36.1M [00:01<00:00, 19.5MiB/s]
67%|██████▋ | 24.2M/36.1M [00:01<00:00, 19.4MiB/s]
72%|███████▏ | 26.1M/36.1M [00:01<00:00, 19.4MiB/s]
78%|███████▊ | 28.1M/36.1M [00:01<00:00, 19.4MiB/s]
83%|████████▎ | 30.1M/36.1M [00:02<00:00, 19.4MiB/s]
89%|████████▉ | 32.1M/36.1M [00:02<00:00, 19.5MiB/s]
94%|█████████▍| 34.0M/36.1M [00:02<00:00, 19.2MiB/s]
100%|█████████▉| 36.0M/36.1M [00:02<00:00, 19.1MiB/s]
GPU Count: 1
GPU Count to be Used: 1
Using 16bit Automatic Mixed Precision (AMP)
GPU available: True (cuda), used: True
TPU available: False, using: 0 TPU cores
HPU available: False, using: 0 HPUs
`Trainer(val_check_interval=1.0)` was configured so validation will run at the end of the training epoch..
LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]
| Name | Type | Params | Mode
-------------------------------------------------------------------------------
0 | model | MMDetAutoModelForObjectDetection | 8.9 M | train
1 | validation_metric | MeanAveragePrecision | 0 | train
-------------------------------------------------------------------------------
8.9 M Trainable params
0 Non-trainable params
8.9 M Total params
35.751 Total estimated model params size (MB)
376 Modules in train mode
0 Modules in eval mode
/home/ci/opt/venv/lib/python3.11/site-packages/mmdet/models/backbones/csp_darknet.py:118: FutureWarning: `torch.cuda.amp.autocast(args...)` is deprecated. Please use `torch.amp.autocast('cuda', args...)` instead.
with torch.cuda.amp.autocast(enabled=False):
/home/ci/opt/venv/lib/python3.11/site-packages/torch/functional.py:539: UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at /pytorch/aten/src/ATen/native/TensorShape.cpp:3637.)
return _VF.meshgrid(tensors, **kwargs) # type: ignore[attr-defined]
/home/ci/opt/venv/lib/python3.11/site-packages/torchmetrics/utilities/prints.py:43: UserWarning: Encountered more than 100 detections in a single image. This means that certain detections with the lowest scores will be ignored, that may have an undesirable impact on performance. Please consider adjusting the `max_detection_threshold` to suit your use case. To disable this warning, set attribute class `warn_on_many_detections=False`, after initializing the metric.
warnings.warn(*args, **kwargs)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[8], line 1
----> 1 predictor.fit(
2 train_path,
3 tuning_data=val_path,
4 hyperparameters={
5 "optim.lr": 1e-4, # we use two stage and detection head has 100x lr
6 "env.per_gpu_batch_size": 16, # decrease it when model is large or GPU memory is small
7 "optim.max_epochs": 30, # max number of training epochs, note that we may early stop before this based on validation setting
8 "optim.val_check_interval": 1.0, # Do 1 validation each epoch
9 "optim.check_val_every_n_epoch": 3, # Do 1 validation each 3 epochs
10 "optim.patience": 3, # Early stop after 3 consective validations are not the best
11 },
12 )
File ~/autogluon/multimodal/src/autogluon/multimodal/predictor.py:540, in MultiModalPredictor.fit(self, train_data, presets, tuning_data, max_num_tuning_data, id_mappings, time_limit, save_path, hyperparameters, column_types, holdout_frac, teacher_predictor, seed, standalone, hyperparameter_tune_kwargs, clean_ckpts, predictions, labels, predictors)
537 assert isinstance(predictors, list)
538 learners = [ele if isinstance(ele, str) else ele._learner for ele in predictors]
--> 540 self._learner.fit(
541 train_data=train_data,
542 presets=presets,
543 tuning_data=tuning_data,
544 max_num_tuning_data=max_num_tuning_data,
545 time_limit=time_limit,
546 save_path=save_path,
547 hyperparameters=hyperparameters,
548 column_types=column_types,
549 holdout_frac=holdout_frac,
550 teacher_learner=teacher_learner,
551 seed=seed,
552 standalone=standalone,
553 hyperparameter_tune_kwargs=hyperparameter_tune_kwargs,
554 clean_ckpts=clean_ckpts,
555 id_mappings=id_mappings,
556 predictions=predictions,
557 labels=labels,
558 learners=learners,
559 )
561 return self
File ~/autogluon/multimodal/src/autogluon/multimodal/learners/object_detection.py:243, in ObjectDetectionLearner.fit(self, train_data, presets, tuning_data, max_num_tuning_data, time_limit, save_path, hyperparameters, column_types, holdout_frac, seed, standalone, hyperparameter_tune_kwargs, clean_ckpts, **kwargs)
236 self.fit_sanity_check()
237 self.prepare_fit_args(
238 time_limit=time_limit,
239 seed=seed,
240 standalone=standalone,
241 clean_ckpts=clean_ckpts,
242 )
--> 243 fit_returns = self.execute_fit()
244 self.on_fit_end(
245 training_start=training_start,
246 strategy=fit_returns.get("strategy", None),
(...)
249 clean_ckpts=clean_ckpts,
250 )
252 return self
File ~/autogluon/multimodal/src/autogluon/multimodal/learners/base.py:577, in BaseLearner.execute_fit(self)
575 return dict()
576 else:
--> 577 attributes = self.fit_per_run(**self._fit_args)
578 self.update_attributes(**attributes) # only update attributes for non-HPO mode
579 return attributes
File ~/autogluon/multimodal/src/autogluon/multimodal/learners/object_detection.py:438, in ObjectDetectionLearner.fit_per_run(self, max_time, save_path, ckpt_path, resume, enable_progress_bar, seed, hyperparameters, advanced_hyperparameters, config, df_preprocessor, data_processors, model, standalone, clean_ckpts)
419 config = self.post_update_config_per_run(
420 config=config,
421 num_gpus=num_gpus,
422 precision=precision,
423 strategy=strategy,
424 )
425 trainer = self.init_trainer_per_run(
426 num_gpus=num_gpus,
427 config=config,
(...)
435 enable_progress_bar=enable_progress_bar,
436 )
--> 438 self.run_trainer(
439 trainer=trainer,
440 litmodule=litmodule,
441 datamodule=datamodule,
442 ckpt_path=ckpt_path,
443 resume=resume,
444 )
445 self.on_fit_per_run_end(
446 save_path=save_path,
447 standalone=standalone,
(...)
452 model=model,
453 )
455 return dict(
456 config=config,
457 df_preprocessor=df_preprocessor,
(...)
461 strategy=strategy,
462 )
File ~/autogluon/multimodal/src/autogluon/multimodal/learners/base.py:1211, in BaseLearner.run_trainer(self, trainer, litmodule, datamodule, ckpt_path, resume, pred_writer, is_train)
1209 warnings.filterwarnings("ignore", filter)
1210 if is_train:
-> 1211 trainer.fit(
1212 litmodule,
1213 datamodule=datamodule,
1214 ckpt_path=ckpt_path if resume else None, # this is to resume training that was broken accidentally
1215 )
1216 else:
1217 blacklist_msgs = []
File ~/opt/venv/lib/python3.11/site-packages/lightning/pytorch/trainer/trainer.py:561, in Trainer.fit(self, model, train_dataloaders, val_dataloaders, datamodule, ckpt_path)
559 self.training = True
560 self.should_stop = False
--> 561 call._call_and_handle_interrupt(
562 self, self._fit_impl, model, train_dataloaders, val_dataloaders, datamodule, ckpt_path
563 )
File ~/opt/venv/lib/python3.11/site-packages/lightning/pytorch/trainer/call.py:48, in _call_and_handle_interrupt(trainer, trainer_fn, *args, **kwargs)
46 if trainer.strategy.launcher is not None:
47 return trainer.strategy.launcher.launch(trainer_fn, *args, trainer=trainer, **kwargs)
---> 48 return trainer_fn(*args, **kwargs)
50 except _TunerExitException:
51 _call_teardown_hook(trainer)
File ~/opt/venv/lib/python3.11/site-packages/lightning/pytorch/trainer/trainer.py:599, in Trainer._fit_impl(self, model, train_dataloaders, val_dataloaders, datamodule, ckpt_path)
592 download_model_from_registry(ckpt_path, self)
593 ckpt_path = self._checkpoint_connector._select_ckpt_path(
594 self.state.fn,
595 ckpt_path,
596 model_provided=True,
597 model_connected=self.lightning_module is not None,
598 )
--> 599 self._run(model, ckpt_path=ckpt_path)
601 assert self.state.stopped
602 self.training = False
File ~/opt/venv/lib/python3.11/site-packages/lightning/pytorch/trainer/trainer.py:1012, in Trainer._run(self, model, ckpt_path)
1007 self._signal_connector.register_signal_handlers()
1009 # ----------------------------
1010 # RUN THE TRAINER
1011 # ----------------------------
-> 1012 results = self._run_stage()
1014 # ----------------------------
1015 # POST-Training CLEAN UP
1016 # ----------------------------
1017 log.debug(f"{self.__class__.__name__}: trainer tearing down")
File ~/opt/venv/lib/python3.11/site-packages/lightning/pytorch/trainer/trainer.py:1056, in Trainer._run_stage(self)
1054 self._run_sanity_check()
1055 with torch.autograd.set_detect_anomaly(self._detect_anomaly):
-> 1056 self.fit_loop.run()
1057 return None
1058 raise RuntimeError(f"Unexpected state {self.state}")
File ~/opt/venv/lib/python3.11/site-packages/lightning/pytorch/loops/fit_loop.py:216, in _FitLoop.run(self)
214 try:
215 self.on_advance_start()
--> 216 self.advance()
217 self.on_advance_end()
218 except StopIteration:
File ~/opt/venv/lib/python3.11/site-packages/lightning/pytorch/loops/fit_loop.py:455, in _FitLoop.advance(self)
453 with self.trainer.profiler.profile("run_training_epoch"):
454 assert self._data_fetcher is not None
--> 455 self.epoch_loop.run(self._data_fetcher)
File ~/opt/venv/lib/python3.11/site-packages/lightning/pytorch/loops/training_epoch_loop.py:150, in _TrainingEpochLoop.run(self, data_fetcher)
148 while not self.done:
149 try:
--> 150 self.advance(data_fetcher)
151 self.on_advance_end(data_fetcher)
152 except StopIteration:
File ~/opt/venv/lib/python3.11/site-packages/lightning/pytorch/loops/training_epoch_loop.py:282, in _TrainingEpochLoop.advance(self, data_fetcher)
280 else:
281 dataloader_iter = None
--> 282 batch, _, __ = next(data_fetcher)
283 # TODO: we should instead use the batch_idx returned by the fetcher, however, that will require saving the
284 # fetcher state so that the batch_idx is correct after restarting
285 batch_idx = self.batch_idx + 1
File ~/opt/venv/lib/python3.11/site-packages/lightning/pytorch/loops/fetchers.py:134, in _PrefetchDataFetcher.__next__(self)
131 self.done = not self.batches
132 elif not self.done:
133 # this will run only when no pre-fetching was done.
--> 134 batch = super().__next__()
135 else:
136 # the iterator is empty
137 raise StopIteration
File ~/opt/venv/lib/python3.11/site-packages/lightning/pytorch/loops/fetchers.py:61, in _DataFetcher.__next__(self)
59 self._start_profiler()
60 try:
---> 61 batch = next(self.iterator)
62 except StopIteration:
63 self.done = True
File ~/opt/venv/lib/python3.11/site-packages/lightning/pytorch/utilities/combined_loader.py:341, in CombinedLoader.__next__(self)
339 def __next__(self) -> _ITERATOR_RETURN:
340 assert self._iterator is not None
--> 341 out = next(self._iterator)
342 if isinstance(self._iterator, _Sequential):
343 return out
File ~/opt/venv/lib/python3.11/site-packages/lightning/pytorch/utilities/combined_loader.py:78, in _MaxSizeCycle.__next__(self)
76 for i in range(n):
77 try:
---> 78 out[i] = next(self.iterators[i])
79 except StopIteration:
80 self._consumed[i] = True
File ~/opt/venv/lib/python3.11/site-packages/torch/utils/data/dataloader.py:708, in _BaseDataLoaderIter.__next__(self)
705 if self._sampler_iter is None:
706 # TODO(https://github.com/pytorch/pytorch/issues/76750)
707 self._reset() # type: ignore[call-arg]
--> 708 data = self._next_data()
709 self._num_yielded += 1
710 if (
711 self._dataset_kind == _DatasetKind.Iterable
712 and self._IterableDataset_len_called is not None
713 and self._num_yielded > self._IterableDataset_len_called
714 ):
File ~/opt/venv/lib/python3.11/site-packages/torch/utils/data/dataloader.py:1480, in _MultiProcessingDataLoaderIter._next_data(self)
1478 del self._task_info[idx]
1479 self._rcvd_idx += 1
-> 1480 return self._process_data(data)
File ~/opt/venv/lib/python3.11/site-packages/torch/utils/data/dataloader.py:1505, in _MultiProcessingDataLoaderIter._process_data(self, data)
1503 self._try_put_index()
1504 if isinstance(data, ExceptionWrapper):
-> 1505 data.reraise()
1506 return data
File ~/opt/venv/lib/python3.11/site-packages/torch/_utils.py:733, in ExceptionWrapper.reraise(self)
729 except TypeError:
730 # If the exception takes multiple arguments, don't try to
731 # instantiate since we don't know how to
732 raise RuntimeError(msg) from None
--> 733 raise exception
TypeError: Caught TypeError in DataLoader worker process 0.
Original Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ci/opt/venv/lib/python3.11/site-packages/torch/utils/data/_utils/worker.py", line 349, in _worker_loop
data = fetcher.fetch(index) # type: ignore[possibly-undefined]
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/opt/venv/lib/python3.11/site-packages/torch/utils/data/_utils/fetch.py", line 52, in fetch
data = [self.dataset[idx] for idx in possibly_batched_index]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/opt/venv/lib/python3.11/site-packages/torch/utils/data/_utils/fetch.py", line 52, in <listcomp>
data = [self.dataset[idx] for idx in possibly_batched_index]
~~~~~~~~~~~~^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 146, in _load_item
return self.__getitem__((idx + 1) % self.__len__())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 167, in __getitem__
results = copy.deepcopy(self._load_item(idx))
^^^^^^^^^^^^^^^^^^^^
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 148, in _load_item
raise e
File "/home/ci/autogluon/multimodal/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py", line 134, in _load_item
per_ret = apply_data_processor(
^^^^^^^^^^^^^^^^^^^^^
TypeError: apply_data_processor() got an unexpected keyword argument 'feature_modalities'
要评估我们刚刚训练的模型,运行
predictor.evaluate(test_path)
请注意,始终建议使用我们预定义的预设以节省自定义时间,使用以下代码脚本
predictor = MultiModalPredictor(
problem_type="object_detection",
sample_data_path=train_path,
presets="medium_quality",
)
predictor.fit(train_path, tuning_data=val_path)
predictor.evaluate(test_path)
有关使用预设的更多信息,请参见 快速入门 Coco。
评估结果显示在命令行输出中。第一个值是 COCO 标准下的 mAP,第二个值是 VOC 标准下的 mAP (或 mAP50)。有关这些指标的更多详细信息,请参见 COCO 评估指南。
我们可以在测试集上获得预测结果
pred = predictor.predict(test_path)
我们还可以可视化预测结果
!pip install opencv-python
from autogluon.multimodal.utils import visualize_detection
conf_threshold = 0.25 # Specify a confidence threshold to filter out unwanted boxes
visualization_result_dir = "./" # Use the pwd as result dir to save the visualized image
visualized = visualize_detection(
pred=pred[12:13],
detection_classes=predictor.classes,
conf_threshold=conf_threshold,
visualization_result_dir=visualization_result_dir,
)
from PIL import Image
from IPython.display import display
img = Image.fromarray(visualized[0][:, :, ::-1], 'RGB')
display(img)
在此快速微调设置下,我们在一个包含数百张图像的新数据集上,仅用几百秒就达到了一个不错的 mAP 值!有关如何以更高性能进行微调,请参见 AutoMM 检测 - 在 COCO 格式数据集上进行高性能微调,我们在该教程中微调了一个 VFNet 模型,用时 5 小时,在该数据集上达到了 mAP = 0.450, mAP50 = 0.718
。
其他示例¶
您可以访问 AutoMM 示例 以探索关于 AutoMM 的其他示例。
自定义¶
要了解如何自定义 AutoMM,请参考 自定义 AutoMM。
引用¶
@article{DBLP:journals/corr/abs-2107-08430,
author = {Zheng Ge and
Songtao Liu and
Feng Wang and
Zeming Li and
Jian Sun},
title = {{YOLOX:} Exceeding {YOLO} Series in 2021},
journal = {CoRR},
volume = {abs/2107.08430},
year = {2021},
url = {https://arxiv.org/abs/2107.08430},
eprinttype = {arXiv},
eprint = {2107.08430},
timestamp = {Tue, 05 Apr 2022 14:09:44 +0200},
biburl = {https://dblp.org/rec/journals/corr/abs-2107-08430.bib},
bibsource = {dblp computer science bibliography, https://dblp.org},
}