open-mmlab / mmyolo

OpenMMLab YOLO series toolbox and benchmark. Implemented RTMDet, RTMDet-Rotated,YOLOv5, YOLOv6, YOLOv7, YOLOv8,YOLOX, PPYOLOE, etc.

Home Page:https://mmyolo.readthedocs.io/zh_CN/dev/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

使用tools/test.py画图yolox无法显示gt的bbox

LeoRainly opened this issue · comments

Prerequisite

🐞 Describe the bug

训练完yolox后进行测试,生成stitched image,右边预测图可以正常显示,左边只有原图而图中没有gt box,貌似是data_sample.gt_instances中的bbox信息为空。以下是我的配置文件:
_backend_args = None
auto_scale_lr = dict(base_batch_size=32)
backend_args = None
base_lr = 0.001
batch_augments_interval = 1
center_radius = 2.5
class_name = (
'background',
'jiaqian',
'cuxiaopai',
)
custom_hooks = [
dict(
new_train_pipeline=[
dict(backend_args=None, type='LoadImageFromFile'),
dict(type='LoadAnnotations', with_bbox=True),
dict(keep_ratio=True, scale=(
960,
960,
), type='mmdet.Resize'),
dict(
pad_to_square=True,
pad_val=dict(img=(
114.0,
114.0,
114.0,
)),
type='mmdet.Pad'),
dict(type='mmdet.YOLOXHSVRandomAug'),
dict(prob=0.5, type='mmdet.RandomFlip'),
dict(
keep_empty=False,
min_gt_bbox_wh=(
1,
1,
),
type='mmdet.FilterAnnotations'),
dict(type='mmdet.PackDetInputs'),
],
num_last_epochs=20,
priority=48,
type='YOLOXModeSwitchHook'),
dict(priority=48, type='mmdet.SyncNormHook'),
dict(
ema_type='ExpMomentumEMA',
momentum=0.0002,
priority=49,
strict_load=False,
type='EMAHook',
update_buffers=True),
]
data_root = '/root/data/jiaqian_det_train/'
dataset_type = 'YOLOv5CocoDataset'
deepen_factor = 0.33
default_hooks = dict(
checkpoint=dict(
interval=10, max_keep_ckpts=5, save_best='auto',
type='CheckpointHook'),
logger=dict(interval=50, type='LoggerHook'),
param_scheduler=dict(type='ParamSchedulerHook'),
sampler_seed=dict(type='DistSamplerSeedHook'),
timer=dict(type='IterTimerHook'),
visualization=dict(
draw=True,
test_out_dir='show_result/jiaqiandet',
type='mmdet.DetVisualizationHook'))
default_scope = 'mmyolo'
ema_momentum = 0.0002
env_cfg = dict(
cudnn_benchmark=False,
dist_cfg=dict(backend='nccl'),
mp_cfg=dict(mp_start_method='fork', opencv_num_threads=0))
img_scale = (
960,
960,
)
img_scales = [
(
640,
640,
),
(
320,
320,
),
(
960,
960,
),
]
launcher = 'pytorch'
load_from = './_work_dir/jiaqiandet/yolox_s_fast_8xb32/20240108/epoch_40.pth'
log_level = 'INFO'
log_processor = dict(by_epoch=True, type='LogProcessor', window_size=50)
loss_bbox_aux_weight = 1.0
loss_bbox_weight = 5.0
loss_cls_weight = 1.0
loss_obj_weight = 1.0
max_epochs = 40
max_keep_ckpts = 5
metainfo = dict(
classes=(
'background',
'jiaqian',
'cuxiaopai',
),
palette=[
(
100,
100,
100,
),
(
20,
200,
20,
),
(
255,
255,
0,
),
])
mixup_ratio_range = (
0.8,
1.6,
)
model = dict(
module=dict(
backbone=dict(
act_cfg=dict(inplace=True, type='SiLU'),
deepen_factor=0.33,
norm_cfg=dict(eps=0.001, momentum=0.03, type='BN'),
out_indices=(
2,
3,
4,
),
spp_kernal_sizes=(
5,
9,
13,
),
type='YOLOXCSPDarknet',
widen_factor=0.5),
bbox_head=dict(
head_module=dict(
act_cfg=dict(inplace=True, type='SiLU'),
feat_channels=256,
featmap_strides=(
8,
16,
32,
),
in_channels=256,
norm_cfg=dict(eps=0.001, momentum=0.03, type='BN'),
num_classes=3,
stacked_convs=2,
type='YOLOXHeadModule',
use_depthwise=False,
widen_factor=0.5),
loss_bbox=dict(
eps=1e-16,
loss_weight=5.0,
mode='square',
reduction='sum',
type='mmdet.IoULoss'),
loss_bbox_aux=dict(
loss_weight=1.0, reduction='sum', type='mmdet.L1Loss'),
loss_cls=dict(
loss_weight=1.0,
reduction='sum',
type='mmdet.CrossEntropyLoss',
use_sigmoid=True),
loss_obj=dict(
loss_weight=1.0,
reduction='sum',
type='mmdet.CrossEntropyLoss',
use_sigmoid=True),
type='YOLOXHead'),
data_preprocessor=dict(
batch_augments=[
dict(
interval=1,
random_size_range=(
480,
800,
),
size_divisor=32,
type='YOLOXBatchSyncRandomResize'),
],
pad_size_divisor=32,
type='YOLOv5DetDataPreprocessor'),
init_cfg=dict(
a=2.23606797749979,
distribution='uniform',
layer='Conv2d',
mode='fan_in',
nonlinearity='leaky_relu',
type='Kaiming'),
neck=dict(
act_cfg=dict(inplace=True, type='SiLU'),
deepen_factor=0.33,
in_channels=[
256,
512,
1024,
],
norm_cfg=dict(eps=0.001, momentum=0.03, type='BN'),
out_channels=256,
type='YOLOXPAFPN',
widen_factor=0.5),
test_cfg=dict(
max_per_img=300,
multi_label=True,
nms=dict(iou_threshold=0.65, type='nms'),
score_thr=0.001,
yolox_style=True),
train_cfg=dict(
assigner=dict(
center_radius=2.5,
iou_calculator=dict(type='mmdet.BboxOverlaps2D'),
type='mmdet.SimOTAAssigner')),
type='YOLODetector',
use_syncbn=False),
tta_cfg=dict(max_per_img=300, nms=dict(iou_threshold=0.65, type='nms')),
type='mmdet.DetTTAModel')
model_test_cfg = dict(
max_per_img=300,
multi_label=True,
nms=dict(iou_threshold=0.65, type='nms'),
score_thr=0.001,
yolox_style=True)
norm_cfg = dict(eps=0.001, momentum=0.03, type='BN')
num_classes = 3
num_last_epochs = 20
optim_wrapper = dict(
optimizer=dict(lr=0.001, type='AdamW', weight_decay=0.05),
paramwise_cfg=dict(
bias_decay_mult=0, bypass_duplicate=True, norm_decay_mult=0),
type='OptimWrapper')
param_scheduler = [
dict(
begin=0,
by_epoch=True,
convert_to_iter_based=True,
end=5,
type='mmdet.QuadraticWarmupLR'),
dict(
T_max=20,
begin=5,
by_epoch=True,
convert_to_iter_based=True,
end=20,
eta_min=5e-05,
type='CosineAnnealingLR'),
dict(begin=20, by_epoch=True, end=40, factor=1, type='ConstantLR'),
]
persistent_workers = True
pre_transform = [
dict(backend_args=None, type='LoadImageFromFile'),
dict(type='LoadAnnotations', with_bbox=True),
]
random_affine_scaling_ratio_range = (
0.1,
2,
)
resume = False
save_epoch_intervals = 10
test_cfg = dict(type='TestLoop')
test_dataloader = dict(
batch_size=1,
dataset=dict(
ann_file='annotations/test.json',
data_prefix=dict(img='test/'),
data_root='/root/data/jiaqian_det_train/',
metainfo=dict(
classes=(
'background',
'jiaqian',
'cuxiaopai',
),
palette=[
(
100,
100,
100,
),
(
20,
200,
20,
),
(
255,
255,
0,
),
]),
pipeline=[
dict(backend_args=None, type='LoadImageFromFile'),
dict(
transforms=[
[
dict(
keep_ratio=True,
scale=(
640,
640,
),
type='mmdet.Resize'),
dict(
keep_ratio=True,
scale=(
320,
320,
),
type='mmdet.Resize'),
dict(
keep_ratio=True,
scale=(
960,
960,
),
type='mmdet.Resize'),
],
[
dict(prob=1.0, type='mmdet.RandomFlip'),
dict(prob=0.0, type='mmdet.RandomFlip'),
],
[
dict(
pad_to_square=True,
pad_val=dict(img=(
114.0,
114.0,
114.0,
)),
type='mmdet.Pad'),
],
[
dict(
meta_keys=(
'img_id',
'img_path',
'ori_shape',
'img_shape',
'scale_factor',
'flip',
'flip_direction',
),
type='mmdet.PackDetInputs'),
],
],
type='TestTimeAug'),
],
test_mode=True,
type='YOLOv5CocoDataset'),
drop_last=False,
num_workers=2,
persistent_workers=True,
pin_memory=True,
sampler=dict(shuffle=False, type='DefaultSampler'))
test_evaluator = dict(
ann_file=
'/root/data/jiaqian_det_train/annotations/test.json',
metric='bbox',
proposal_nums=(
100,
1,
10,
),
type='mmdet.CocoMetric')
test_pipeline = [
dict(backend_args=None, type='LoadImageFromFile'),
dict(keep_ratio=True, scale=(
960,
960,
), type='mmdet.Resize'),
dict(
pad_to_square=True,
pad_val=dict(img=(
114.0,
114.0,
114.0,
)),
type='mmdet.Pad'),
dict(scope='mmdet', type='LoadAnnotations', with_bbox=True),
dict(
meta_keys=(
'img_id',
'img_path',
'ori_shape',
'img_shape',
'scale_factor',
),
type='mmdet.PackDetInputs'),
]
train_ann_file = 'annotations/train.json'
train_batch_size_per_gpu = 4
train_cfg = dict(
dynamic_intervals=[
(
20,
1,
),
],
max_epochs=40,
type='EpochBasedTrainLoop',
val_interval=10)
train_data_prefix = 'train/'
train_dataloader = dict(
batch_size=4,
collate_fn=dict(type='yolov5_collate'),
dataset=dict(
ann_file='annotations/train.json',
data_prefix=dict(img='train/'),
data_root='/root/data/jiaqian_det_train/',
filter_cfg=dict(filter_empty_gt=False, min_size=32),
metainfo=dict(
classes=(
'background',
'jiaqian',
'cuxiaopai',
),
palette=[
(
100,
100,
100,
),
(
20,
200,
20,
),
(
255,
255,
0,
),
]),
pipeline=[
dict(backend_args=None, type='LoadImageFromFile'),
dict(type='LoadAnnotations', with_bbox=True),
dict(
img_scale=(
960,
960,
),
pad_val=114.0,
pre_transform=[
dict(backend_args=None, type='LoadImageFromFile'),
dict(type='LoadAnnotations', with_bbox=True),
],
type='Mosaic'),
dict(
border=(
-480,
-480,
),
scaling_ratio_range=(
0.1,
2,
),
type='mmdet.RandomAffine'),
dict(
img_scale=(
960,
960,
),
pad_val=114.0,
pre_transform=[
dict(backend_args=None, type='LoadImageFromFile'),
dict(type='LoadAnnotations', with_bbox=True),
],
ratio_range=(
0.8,
1.6,
),
type='YOLOXMixUp'),
dict(type='mmdet.YOLOXHSVRandomAug'),
dict(prob=0.5, type='mmdet.RandomFlip'),
dict(
keep_empty=False,
min_gt_bbox_wh=(
1,
1,
),
type='mmdet.FilterAnnotations'),
dict(
meta_keys=(
'img_id',
'img_path',
'ori_shape',
'img_shape',
'flip',
'flip_direction',
),
type='mmdet.PackDetInputs'),
],
type='YOLOv5CocoDataset'),
num_workers=2,
persistent_workers=True,
pin_memory=True,
sampler=dict(shuffle=True, type='DefaultSampler'))
train_num_workers = 2
train_pipeline_stage1 = [
dict(backend_args=None, type='LoadImageFromFile'),
dict(type='LoadAnnotations', with_bbox=True),
dict(
img_scale=(
960,
960,
),
pad_val=114.0,
pre_transform=[
dict(backend_args=None, type='LoadImageFromFile'),
dict(type='LoadAnnotations', with_bbox=True),
],
type='Mosaic'),
dict(
border=(
-480,
-480,
),
scaling_ratio_range=(
0.1,
2,
),
type='mmdet.RandomAffine'),
dict(
img_scale=(
960,
960,
),
pad_val=114.0,
pre_transform=[
dict(backend_args=None, type='LoadImageFromFile'),
dict(type='LoadAnnotations', with_bbox=True),
],
ratio_range=(
0.8,
1.6,
),
type='YOLOXMixUp'),
dict(type='mmdet.YOLOXHSVRandomAug'),
dict(prob=0.5, type='mmdet.RandomFlip'),
dict(
keep_empty=False,
min_gt_bbox_wh=(
1,
1,
),
type='mmdet.FilterAnnotations'),
dict(
meta_keys=(
'img_id',
'img_path',
'ori_shape',
'img_shape',
'flip',
'flip_direction',
),
type='mmdet.PackDetInputs'),
]
train_pipeline_stage2 = [
dict(backend_args=None, type='LoadImageFromFile'),
dict(type='LoadAnnotations', with_bbox=True),
dict(keep_ratio=True, scale=(
960,
960,
), type='mmdet.Resize'),
dict(
pad_to_square=True,
pad_val=dict(img=(
114.0,
114.0,
114.0,
)),
type='mmdet.Pad'),
dict(type='mmdet.YOLOXHSVRandomAug'),
dict(prob=0.5, type='mmdet.RandomFlip'),
dict(
keep_empty=False,
min_gt_bbox_wh=(
1,
1,
),
type='mmdet.FilterAnnotations'),
dict(type='mmdet.PackDetInputs'),
]
tta_model = dict(
tta_cfg=dict(max_per_img=300, nms=dict(iou_threshold=0.65, type='nms')),
type='mmdet.DetTTAModel')
tta_pipeline = [
dict(backend_args=None, type='LoadImageFromFile'),
dict(
transforms=[
[
dict(keep_ratio=True, scale=(
640,
640,
), type='mmdet.Resize'),
dict(keep_ratio=True, scale=(
320,
320,
), type='mmdet.Resize'),
dict(keep_ratio=True, scale=(
960,
960,
), type='mmdet.Resize'),
],
[
dict(prob=1.0, type='mmdet.RandomFlip'),
dict(prob=0.0, type='mmdet.RandomFlip'),
],
[
dict(
pad_to_square=True,
pad_val=dict(img=(
114.0,
114.0,
114.0,
)),
type='mmdet.Pad'),
],
[
dict(
meta_keys=(
'img_id',
'img_path',
'ori_shape',
'img_shape',
'scale_factor',
'flip',
'flip_direction',
),
type='mmdet.PackDetInputs'),
],
],
type='TestTimeAug'),
]
val_ann_file = 'annotations/test.json'
val_batch_size_per_gpu = 1
val_cfg = dict(type='ValLoop')
val_data_prefix = 'test/'
val_dataloader = dict(
batch_size=1,
dataset=dict(
ann_file='annotations/test.json',
data_prefix=dict(img='test/'),
data_root='/root/data/jiaqian_det_train/',
metainfo=dict(
classes=(
'background',
'jiaqian',
'cuxiaopai',
),
palette=[
(
100,
100,
100,
),
(
20,
200,
20,
),
(
255,
255,
0,
),
]),
pipeline=[
dict(backend_args=None, type='LoadImageFromFile'),
dict(keep_ratio=True, scale=(
960,
960,
), type='mmdet.Resize'),
dict(
pad_to_square=True,
pad_val=dict(img=(
114.0,
114.0,
114.0,
)),
type='mmdet.Pad'),
dict(scope='mmdet', type='LoadAnnotations', with_bbox=True),
dict(
meta_keys=(
'img_id',
'img_path',
'ori_shape',
'img_shape',
'scale_factor',
),
type='mmdet.PackDetInputs'),
],
test_mode=True,
type='YOLOv5CocoDataset'),
drop_last=False,
num_workers=2,
persistent_workers=True,
pin_memory=True,
sampler=dict(shuffle=False, type='DefaultSampler'))
val_evaluator = dict(
ann_file=
'/root/data/jiaqian_det_train/annotations/test.json',
metric='bbox',
proposal_nums=(
100,
1,
10,
),
type='mmdet.CocoMetric')
val_num_workers = 2
vis_backends = [
dict(type='LocalVisBackend'),
]
visualizer = dict(
name='visualizer',
type='mmdet.DetLocalVisualizer',
vis_backends=[
dict(type='LocalVisBackend'),
])
weight_decay = 0.0005
widen_factor = 0.5
work_dir = './work_dirs/yolox_s_fast_8xb32-300e-rtmdet-hyp_coco'

Environment

mmyolo 0.6.0

Additional information

No response