Browse Source

update for inference

master
cyx 1 year ago
parent
commit
1f24dc740c
4 changed files with 145 additions and 80 deletions
  1. +65
    -65
      configs/AD_mlops/AD_mlops_test18.py
  2. +61
    -3
      configs/atss/atss_r101_fpn_1x_coco.py
  3. +3
    -3
      tools/train.py
  4. +16
    -9
      transformer/postprocess.py

+ 65
- 65
configs/AD_mlops/AD_mlops_test18.py View File

@@ -1,5 +1,5 @@
_base_ = [ _base_ = [
'../_base_/schedules/schedule_1x.py', '../_base_/default_runtime.py'
'../_base_/schedules/schedule_1x.py', '../_base_/datasets/coco_detection.py', '../_base_/default_runtime.py'
] ]
norm_cfg = dict(type='BN', requires_grad=True) norm_cfg = dict(type='BN', requires_grad=True)
model = dict( model = dict(
@@ -61,71 +61,71 @@ model = dict(
nms=dict(type='nms', iou_threshold=0.6), nms=dict(type='nms', iou_threshold=0.6),
max_per_img=100)) max_per_img=100))


dataset_type = 'CocoDataset'
classes = ('yiwei','loujian','celi','libei','fantie','lianxi','duojian','shunjian','shaoxi','jiahan','yiwu')
#dataset_type = 'CocoDataset'
#classes = ('yiwei','loujian','celi','libei','fantie','lianxi','duojian','shunjian','shaoxi','jiahan','yiwu')


img_norm_cfg = dict(
mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True)
#img_norm_cfg = dict(
# mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True)


train_pipeline = [
dict(type='LoadImageFromFile'),
dict(type='LoadAnnotations', with_bbox=True),
dict(
type='Resize',
img_scale=[(512, 512), (640, 640)],
multiscale_mode='value',
keep_ratio=True),
dict(type='RandomFlip', flip_ratio=[0.2,0.2,0.2], direction=['horizontal', 'vertical', 'diagonal']),
dict(type='BrightnessTransform', level=5, prob=0.5),
dict(type='ContrastTransform', level=5, prob=0.5),
dict(type='RandomShift', shift_ratio=0.5),
dict(type='MinIoURandomCrop', min_ious=(0.5, 0.7, 0.9), min_crop_size=0.8),
dict(type='Normalize', **img_norm_cfg),
dict(type='Pad', size_divisor=32),
dict(type='DefaultFormatBundle'),
dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels']),
]
test_pipeline = [
dict(type='LoadImageFromFile'),
dict(
type='MultiScaleFlipAug',
img_scale=[(640, 640)],
flip=False,
transforms=[
dict(type='Resize', keep_ratio=True),
dict(type='RandomFlip'),
dict(type='Normalize', **img_norm_cfg),
dict(type='Pad', size_divisor=32),
dict(type='ImageToTensor', keys=['img']),
dict(type='Collect', keys=['img']),
])
]
#train_pipeline = [
# dict(type='LoadImageFromFile'),
# dict(type='LoadAnnotations', with_bbox=True),
# dict(
# type='Resize',
# img_scale=[(512, 512), (640, 640)],
# multiscale_mode='value',
# keep_ratio=True),
# dict(type='RandomFlip', flip_ratio=[0.2,0.2,0.2], direction=['horizontal', 'vertical', 'diagonal']),
# dict(type='BrightnessTransform', level=5, prob=0.5),
# dict(type='ContrastTransform', level=5, prob=0.5),
# dict(type='RandomShift', shift_ratio=0.5),
# dict(type='MinIoURandomCrop', min_ious=(0.5, 0.7, 0.9), min_crop_size=0.8),
# dict(type='Normalize', **img_norm_cfg),
# dict(type='Pad', size_divisor=32),
# dict(type='DefaultFormatBundle'),
# dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels']),
#]
#test_pipeline = [
# dict(type='LoadImageFromFile'),
# dict(
# type='MultiScaleFlipAug',
# img_scale=[(640, 640)],
# flip=False,
# transforms=[
# dict(type='Resize', keep_ratio=True),
# dict(type='RandomFlip'),
# dict(type='Normalize', **img_norm_cfg),
# dict(type='Pad', size_divisor=32),
# dict(type='ImageToTensor', keys=['img']),
# dict(type='Collect', keys=['img']),
# ])
#]


data = dict(
samples_per_gpu=4,
workers_per_gpu=2,
train=dict(
type='AD_ClassBalancedDataset',
dataset=dict(
type=dataset_type,
img_prefix='data/coco/train2017/',
classes=classes,
ann_file='data/coco/annotations/instances_train2017.json',
pipeline=train_pipeline,
),
oversample_thr = 1.0),
val=dict(
type=dataset_type,
img_prefix='data/coco/train2017/',
classes=classes,
ann_file='data/coco/annotations/instances_train2017.json',
pipeline=test_pipeline),
test=dict(
type=dataset_type,
img_prefix='data/coco/train2017/',
classes=classes,
ann_file='data/coco/annotations/instances_train2017.json',
pipeline=test_pipeline))
#data = dict(
# samples_per_gpu=4,
# workers_per_gpu=2,
# train=dict(
# type='AD_ClassBalancedDataset',
# dataset=dict(
# type=dataset_type,
# img_prefix='data/coco/train2017/',
# classes=classes,
# ann_file='data/coco/annotations/instances_train2017.json',
# pipeline=train_pipeline,
# ),
# oversample_thr = 1.0),
# val=dict(
# type=dataset_type,
# img_prefix='data/coco/train2017/',
# classes=classes,
# ann_file='data/coco/annotations/instances_train2017.json',
# pipeline=test_pipeline),
# test=dict(
# type=dataset_type,
# img_prefix='data/coco/train2017/',
# classes=classes,
# ann_file='data/coco/annotations/instances_train2017.json',
# pipeline=test_pipeline))


# optimizer # optimizer
optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001) optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001)
@@ -139,5 +139,5 @@ lr_config = dict(
min_lr_ratio=1e-5) min_lr_ratio=1e-5)
runner = dict(type='EpochBasedRunner', max_epochs=20) runner = dict(type='EpochBasedRunner', max_epochs=20)


evaluation = dict(interval=1, metric='bbox')
checkpoint_config = dict(interval=1)
evaluation = dict(interval=10, metric='bbox')
checkpoint_config = dict(interval=5)

+ 61
- 3
configs/atss/atss_r101_fpn_1x_coco.py View File

@@ -1,6 +1,64 @@
_base_ = './atss_r50_fpn_1x_coco.py'
_base_ = [
'../_base_/datasets/coco_detection.py',
'../_base_/schedules/schedule_1x.py', '../_base_/default_runtime.py'
]
model = dict( model = dict(
type='ATSS',
backbone=dict( backbone=dict(
type='ResNeXt',
depth=101, depth=101,
init_cfg=dict(type='Pretrained',
checkpoint='torchvision://resnet101')))
groups=64,
base_width=4,
num_stages=4,
out_indices=(0, 1, 2, 3),
frozen_stages=1,
norm_cfg=norm_cfg,
style='pytorch',
init_cfg=dict(
type='Pretrained', checkpoint='/tmp/code/code_test/resnext101_64x4d-ee2c6f71.pth')),
neck=dict(
type='FPN',
in_channels=[256, 512, 1024, 2048],
out_channels=256,
start_level=1,
add_extra_convs='on_output',
num_outs=5),
bbox_head=dict(
type='ATSSHead',
num_classes=80,
in_channels=256,
stacked_convs=4,
feat_channels=256,
anchor_generator=dict(
type='AnchorGenerator',
ratios=[1.0],
octave_base_scale=8,
scales_per_octave=1,
strides=[8, 16, 32, 64, 128]),
bbox_coder=dict(
type='DeltaXYWHBBoxCoder',
target_means=[.0, .0, .0, .0],
target_stds=[0.1, 0.1, 0.2, 0.2]),
loss_cls=dict(
type='FocalLoss',
use_sigmoid=True,
gamma=2.0,
alpha=0.25,
loss_weight=1.0),
loss_bbox=dict(type='GIoULoss', loss_weight=2.0),
loss_centerness=dict(
type='CrossEntropyLoss', use_sigmoid=True, loss_weight=1.0)),
# training and testing settings
train_cfg=dict(
assigner=dict(type='ATSSAssigner', topk=9),
allowed_border=-1,
pos_weight=-1,
debug=False),
test_cfg=dict(
nms_pre=1000,
min_bbox_size=0,
score_thr=0.05,
nms=dict(type='nms', iou_threshold=0.6),
max_per_img=100))
# optimizer
optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001)

+ 3
- 3
tools/train.py View File

@@ -399,8 +399,8 @@ def main():
#if on platform, change the classnum fit the user define dataset #if on platform, change the classnum fit the user define dataset
if args.data_path is not None: if args.data_path is not None:
coco_config=COCO(os.path.join(args.data_path,"annotations/instances_annotations.json")) coco_config=COCO(os.path.join(args.data_path,"annotations/instances_annotations.json"))
cfg.data.train.dataset.img_prefix = os.path.join(args.data_path,"images")
cfg.data.train.dataset.ann_file = os.path.join(args.data_path,"annotations/instances_annotations.json")
cfg.data.train.img_prefix = os.path.join(args.data_path,"images")
cfg.data.train.ann_file = os.path.join(args.data_path,"annotations/instances_annotations.json")


cfg.data.val.img_prefix = os.path.join(args.data_path,"images") cfg.data.val.img_prefix = os.path.join(args.data_path,"images")
cfg.data.val.ann_file = os.path.join(args.data_path,"annotations/instances_annotations.json") cfg.data.val.ann_file = os.path.join(args.data_path,"annotations/instances_annotations.json")
@@ -411,7 +411,7 @@ def main():
for cat in coco_config.cats.values(): for cat in coco_config.cats.values():
cfg.classes = cfg.classes + tuple([cat['name']]) cfg.classes = cfg.classes + tuple([cat['name']])


cfg.data.train.dataset.classes = cfg.classes
cfg.data.train.classes = cfg.classes
cfg.data.val.classes = cfg.classes cfg.data.val.classes = cfg.classes
cfg.data.test.classes = cfg.classes cfg.data.test.classes = cfg.classes




+ 16
- 9
transformer/postprocess.py View File

@@ -81,7 +81,14 @@ class Filter:
def filter(self, inputs, meta_list): def filter(self, inputs, meta_list):
results = [] results = []
for dets, labels, feature, det_features, det_lloss, meta in zip(inputs['dets'], inputs['labels'], inputs['feature'], inputs['entropy'], inputs['learning_loss'], meta_list): for dets, labels, feature, det_features, det_lloss, meta in zip(inputs['dets'], inputs['labels'], inputs['feature'], inputs['entropy'], inputs['learning_loss'], meta_list):

pred = Predict() pred = Predict()
if len(labels) == 0:
result = Any()
result.Pack(pred, pred.DESCRIPTOR.file.package)
results.append([result.SerializeToString()])
continue

meta['result'] = 'OK' meta['result'] = 'OK'
meta['score'] = 0 meta['score'] = 0
@@ -104,18 +111,18 @@ class Filter:
label_id=index) label_id=index)
) )
scores = dets[:,4]
entropy_nms = get_entropy_by_enms(labels, scores, det_features)
#scores = dets[:,4]
#entropy_nms = get_entropy_by_enms(labels, scores, det_features)
learning_loss_nms = get_lloss_by_lnms(labels, det_lloss, det_features)
#learning_loss_nms = get_lloss_by_lnms(labels, det_lloss, det_features)
meta['attributes']={}
#meta['attributes']={}
#meta['attributes']['feature'] = feature.tolist() #meta['attributes']['feature'] = feature.tolist()
meta['attributes']['entropy'] = float(entropy)
meta['attributes']['learning_loss'] = float(learning_loss)
meta['attributes']['entropy_nms'] = float(entropy_nms)
meta['attributes']['learning_loss_nms'] = float(learning_loss_nms)
meta['attributes']['distance'] = 0
#meta['attributes']['entropy'] = float(entropy)
#meta['attributes']['learning_loss'] = float(learning_loss)
#meta['attributes']['entropy_nms'] = float(entropy_nms)
#meta['attributes']['learning_loss_nms'] = float(learning_loss_nms)
#meta['attributes']['distance'] = 0
result = Any() result = Any()
result.Pack(pred, pred.DESCRIPTOR.file.package) result.Pack(pred, pred.DESCRIPTOR.file.package)


Loading…
Cancel
Save