open-mmlab/mmyolo

when i use the test.py after train, it didn't work,the problem is "AssertionError"

1-etudiant opened this issue · 2 comments

Prerequisite

🐞 Describe the bug

Traceback (most recent call last):
File "tools/test.py", line 158, in
main()
File "tools/test.py", line 154, in main
runner.test()
File "/home/sh/miniconda3/envs/mmyolo/lib/python3.8/site-packages/mmengine/runner/runner.py", line 1823, in test
metrics = self.test_loop.run() # type: ignore
File "/home/sh/miniconda3/envs/mmyolo/lib/python3.8/site-packages/mmengine/runner/loops.py", line 435, in run
self.run_iter(idx, data_batch)
File "/home/sh/miniconda3/envs/mmyolo/lib/python3.8/site-packages/torch/autograd/grad_mode.py", line 28, in decorate_context
return func(*args, **kwargs)
File "/home/sh/miniconda3/envs/mmyolo/lib/python3.8/site-packages/mmengine/runner/loops.py", line 456, in run_iter
self.runner.call_hook(
File "/home/sh/miniconda3/envs/mmyolo/lib/python3.8/site-packages/mmengine/runner/runner.py", line 1839, in call_hook
getattr(hook, fn_name)(self, **kwargs)
File "/home/sh/miniconda3/envs/mmyolo/lib/python3.8/site-packages/mmdet/engine/hooks/visualization_hook.py", line 140, in after_test_iter
self._visualizer.add_datasample(
File "/home/sh/miniconda3/envs/mmyolo/lib/python3.8/site-packages/mmengine/dist/utils.py", line 418, in wrapper
return func(*args, **kwargs)
File "/home/sh/miniconda3/envs/mmyolo/lib/python3.8/site-packages/mmdet/visualization/local_visualizer.py", line 446, in add_datasample
gt_img_data = self._draw_instances(image,
File "/home/sh/miniconda3/envs/mmyolo/lib/python3.8/site-packages/mmdet/visualization/local_visualizer.py", line 138, in _draw_instances
self.draw_bboxes(
File "/home/sh/miniconda3/envs/mmyolo/lib/python3.8/site-packages/mmengine/dist/utils.py", line 418, in wrapper
return func(*args, **kwargs)
File "/home/sh/miniconda3/envs/mmyolo/lib/python3.8/site-packages/mmengine/visualization/visualizer.py", line 768, in draw_bboxes
return self.draw_polygons(
File "/home/sh/miniconda3/envs/mmyolo/lib/python3.8/site-packages/mmengine/dist/utils.py", line 418, in wrapper
return func(*args, **kwargs)
File "/home/sh/miniconda3/envs/mmyolo/lib/python3.8/site-packages/mmengine/visualization/visualizer.py", line 818, in draw_polygons
edge_colors = color_val_matplotlib(edge_colors) # type: ignore
File "/home/sh/miniconda3/envs/mmyolo/lib/python3.8/site-packages/mmengine/visualization/utils.py", line 114, in color_val_matplotlib
colors = [
File "/home/sh/miniconda3/envs/mmyolo/lib/python3.8/site-packages/mmengine/visualization/utils.py", line 115, in
color_val_matplotlib(color) # type:ignore
File "/home/sh/miniconda3/envs/mmyolo/lib/python3.8/site-packages/mmengine/visualization/utils.py", line 108, in color_val_matplotlib
assert len(colors) == 3
AssertionError

Environment

sys.platform: linux
Python: 3.8.18 (default, Sep 11 2023, 13:40:15) [GCC 11.2.0]
CUDA available: True
numpy_random_seed: 2147483648
GPU 0: NVIDIA GeForce RTX 3060
CUDA_HOME: /usr
NVCC: Cuda compilation tools, release 10.1, V10.1.24
GCC: gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
PyTorch: 1.10.1
PyTorch compiling details: PyTorch built with:

  • GCC 7.3
  • C++ Version: 201402
  • Intel(R) oneAPI Math Kernel Library Version 2023.1-Product Build 20230303 for Intel(R) 64 architecture applications
  • Intel(R) MKL-DNN v2.2.3 (Git Hash 7336ca9f055cf1bfa13efb658fe15dc9b41f0740)
  • OpenMP 201511 (a.k.a. OpenMP 4.5)
  • LAPACK is enabled (usually provided by MKL)
  • NNPACK is enabled
  • CPU capability usage: AVX2
  • CUDA Runtime 11.3
  • NVCC architecture flags: -gencode;arch=compute_37,code=sm_37;-gencode;arch=compute_50,code=sm_50;-gencode;arch=compute_60,code=sm_60;-gencode;arch=compute_61,code=sm_61;-gencode;arch=compute_70,code=sm_70;-gencode;arch=compute_75,code=sm_75;-gencode;arch=compute_80,code=sm_80;-gencode;arch=compute_86,code=sm_86;-gencode;arch=compute_37,code=compute_37
  • CuDNN 8.2
  • Magma 2.5.2
  • Build settings: BLAS_INFO=mkl, BUILD_TYPE=Release, CUDA_VERSION=11.3, CUDNN_VERSION=8.2.0, CXX_COMPILER=/opt/rh/devtoolset-7/root/usr/bin/c++, CXX_FLAGS= -Wno-deprecated -fvisibility-inlines-hidden -DUSE_PTHREADPOOL -fopenmp -DNDEBUG -DUSE_KINETO -DUSE_FBGEMM -DUSE_QNNPACK -DUSE_PYTORCH_QNNPACK -DUSE_XNNPACK -DSYMBOLICATE_MOBILE_DEBUG_HANDLE -DEDGE_PROFILER_USE_KINETO -O2 -fPIC -Wno-narrowing -Wall -Wextra -Werror=return-type -Wno-missing-field-initializers -Wno-type-limits -Wno-array-bounds -Wno-unknown-pragmas -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wno-unused-function -Wno-unused-result -Wno-unused-local-typedefs -Wno-strict-overflow -Wno-strict-aliasing -Wno-error=deprecated-declarations -Wno-stringop-overflow -Wno-psabi -Wno-error=pedantic -Wno-error=redundant-decls -Wno-error=old-style-cast -fdiagnostics-color=always -faligned-new -Wno-unused-but-set-variable -Wno-maybe-uninitialized -fno-math-errno -fno-trapping-math -Werror=format -Wno-stringop-overflow, LAPACK_INFO=mkl, PERF_WITH_AVX=1, PERF_WITH_AVX2=1, PERF_WITH_AVX512=1, TORCH_VERSION=1.10.1, USE_CUDA=ON, USE_CUDNN=ON, USE_EXCEPTION_PTR=1, USE_GFLAGS=OFF, USE_GLOG=OFF, USE_MKL=ON, USE_MKLDNN=ON, USE_MPI=OFF, USE_NCCL=ON, USE_NNPACK=ON, USE_OPENMP=ON,

TorchVision: 0.11.2
OpenCV: 4.8.1
MMEngine: 0.10.2
MMCV: 2.0.1
MMDetection: 3.2.0
MMYOLO: 0.6.0+8c4d9dc

Additional information

i use the seaships dataset.
the configs is below:
base = 'yolov5_s-p6-v62_syncbn_fast_8xb16-300e_coco.py'

data_root = './data/seaships/'
class_name = ('ore carrier', 'passenger ship','bulk cargo carrier','general cargo ship',
'container ship','fishing boat')
num_classes = len(class_name)
metainfo = dict(classes=class_name, palette=[(20, 220, 60,40,80,100)])
img_scale=(1920,1080)
anchors = [
[(157, 22), (287, 37), (523, 39)], # P3/8
[(395, 60), (652, 67), (647, 104)], # P4/16
[(1068, 82), (978, 141), (1562, 148)] # P5/32
]

max_epochs = 10
train_batch_size_per_gpu = 4
train_num_workers = 4

load_from = 'https://download.openmmlab.com/mmyolo/v0/yolov5/yolov5_s-v61_syncbn_fast_8xb16-300e_coco/yolov5_s-v61_syncbn_fast_8xb16-300e_coco_20220918_084700-86e02187.pth' # noqa

load_from='https://download.openmmlab.com/mmyolo/v0/yolov5/yolov5_s-p6-v62_syncbn_fast_8xb16-300e_coco/yolov5_s-p6-v62_syncbn_fast_8xb16-300e_coco_20221027_215044-58865c19.pth'

model = dict(

# backbone=dict(frozen_stages=4),

bbox_head=dict(

head_module=dict(num_classes=num_classes),

prior_generator=dict(base_sizes=anchors)))

train_dataloader = dict(
batch_size=train_batch_size_per_gpu,
num_workers=train_num_workers,
dataset=dict(
data_root=data_root,
metainfo=metainfo,
ann_file='annotations/trainval.json',
data_prefix=dict(img='images/')))

val_dataloader = dict(
dataset=dict(
metainfo=metainfo,
data_root=data_root,
ann_file='annotations/test.json',
data_prefix=dict(img='images/')))

test_dataloader = val_dataloader

base.optim_wrapper.optimizer.batch_size_per_gpu = train_batch_size_per_gpu

val_evaluator = dict(ann_file=data_root + 'annotations/test.json')
test_evaluator = val_evaluator

default_hooks = dict(
checkpoint=dict(interval=10, max_keep_ckpts=2, save_best='auto'),
# The warmup_mim_iter parameter is critical.
# The default value is 1000 which is not suitable for cat datasets.
param_scheduler=dict(max_epochs=max_epochs, warmup_mim_iter=10),
logger=dict(type='LoggerHook', interval=5))
train_cfg = dict(max_epochs=max_epochs, val_interval=10)
visualizer = dict(vis_backends = [dict(type='LocalVisBackend'), dict(type='WandbVisBackend')]) # noqa

it seems the problem of config files.but during train,the code can output the AR and AP ,why it didn't work in test

i printed the colors, and it's (20, 220, 60, 40, 80, 100),and the type is tuple