Skip to content

Commit

Permalink
forklift 7kp detection at new mmpose version
Browse files Browse the repository at this point in the history
  • Loading branch information
Andrii-Sheba committed Nov 12, 2024
1 parent 5408bc7 commit 003cac4
Show file tree
Hide file tree
Showing 10 changed files with 445 additions and 146 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -132,3 +132,6 @@ docs/**/modelzoo.md
*.pth

*.DS_Store

data/*
work_dirs/*
150 changes: 27 additions & 123 deletions configs/_base_/datasets/coco.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,170 +12,74 @@
),
keypoint_info={
0:
dict(name='nose', id=0, color=[51, 153, 255], type='upper', swap=''),
dict(
name='rear_left',
id=0,
color=[51, 153, 255],
type='upper',
swap='rear_right'),
1:
dict(
name='left_eye',
name='rear_right',
id=1,
color=[51, 153, 255],
type='upper',
swap='right_eye'),
swap='rear_left'),
2:
dict(
name='right_eye',
name='front_left',
id=2,
color=[51, 153, 255],
type='upper',
swap='left_eye'),
swap='front_right'),
3:
dict(
name='left_ear',
name='front_right',
id=3,
color=[51, 153, 255],
type='upper',
swap='right_ear'),
swap='front_left'),
4:
dict(
name='right_ear',
name='L_Fork',
id=4,
color=[51, 153, 255],
type='upper',
swap='left_ear'),
swap='R_Fork'),
5:
dict(
name='left_shoulder',
name='R_Fork',
id=5,
color=[0, 255, 0],
type='upper',
swap='right_shoulder'),
swap='L_Fork'),
6:
dict(
name='right_shoulder',
name='C_Fork',
id=6,
color=[255, 128, 0],
type='upper',
swap='left_shoulder'),
7:
dict(
name='left_elbow',
id=7,
color=[0, 255, 0],
type='upper',
swap='right_elbow'),
8:
dict(
name='right_elbow',
id=8,
color=[255, 128, 0],
type='upper',
swap='left_elbow'),
9:
dict(
name='left_wrist',
id=9,
color=[0, 255, 0],
type='upper',
swap='right_wrist'),
10:
dict(
name='right_wrist',
id=10,
color=[255, 128, 0],
type='upper',
swap='left_wrist'),
11:
dict(
name='left_hip',
id=11,
color=[0, 255, 0],
type='lower',
swap='right_hip'),
12:
dict(
name='right_hip',
id=12,
color=[255, 128, 0],
type='lower',
swap='left_hip'),
13:
dict(
name='left_knee',
id=13,
color=[0, 255, 0],
type='lower',
swap='right_knee'),
14:
dict(
name='right_knee',
id=14,
color=[255, 128, 0],
type='lower',
swap='left_knee'),
15:
dict(
name='left_ankle',
id=15,
color=[0, 255, 0],
type='lower',
swap='right_ankle'),
16:
dict(
name='right_ankle',
id=16,
color=[255, 128, 0],
type='lower',
swap='left_ankle')
swap=''),
},
skeleton_info={
0:
dict(link=('left_ankle', 'left_knee'), id=0, color=[0, 255, 0]),
dict(link=('rear_left', 'rear_right'), id=0, color=[0, 255, 0]),
1:
dict(link=('left_knee', 'left_hip'), id=1, color=[0, 255, 0]),
dict(link=('front_left', 'front_right'), id=1, color=[0, 255, 0]),
2:
dict(link=('right_ankle', 'right_knee'), id=2, color=[255, 128, 0]),
dict(link=('rear_left', 'front_left'), id=2, color=[0, 255, 0]),
3:
dict(link=('right_knee', 'right_hip'), id=3, color=[255, 128, 0]),
dict(link=('rear_right', 'front_right'), id=3, color=[0, 255, 0]),
4:
dict(link=('left_hip', 'right_hip'), id=4, color=[51, 153, 255]),
dict(link=('L_Fork', 'R_Fork'), id=4, color=[255, 128, 0]),
5:
dict(link=('left_shoulder', 'left_hip'), id=5, color=[51, 153, 255]),
dict(link=('L_Fork', 'C_Fork'), id=5, color=[255, 128, 0]),
6:
dict(link=('right_shoulder', 'right_hip'), id=6, color=[51, 153, 255]),
7:
dict(
link=('left_shoulder', 'right_shoulder'),
id=7,
color=[51, 153, 255]),
8:
dict(link=('left_shoulder', 'left_elbow'), id=8, color=[0, 255, 0]),
9:
dict(
link=('right_shoulder', 'right_elbow'), id=9, color=[255, 128, 0]),
10:
dict(link=('left_elbow', 'left_wrist'), id=10, color=[0, 255, 0]),
11:
dict(link=('right_elbow', 'right_wrist'), id=11, color=[255, 128, 0]),
12:
dict(link=('left_eye', 'right_eye'), id=12, color=[51, 153, 255]),
13:
dict(link=('nose', 'left_eye'), id=13, color=[51, 153, 255]),
14:
dict(link=('nose', 'right_eye'), id=14, color=[51, 153, 255]),
15:
dict(link=('left_eye', 'left_ear'), id=15, color=[51, 153, 255]),
16:
dict(link=('right_eye', 'right_ear'), id=16, color=[51, 153, 255]),
17:
dict(link=('left_ear', 'left_shoulder'), id=17, color=[51, 153, 255]),
18:
dict(
link=('right_ear', 'right_shoulder'), id=18, color=[51, 153, 255])
dict(link=('C_Fork', 'R_Fork'), id=6, color=[255, 128, 0]),
},
joint_weights=[
1., 1., 1., 1., 1., 1., 1., 1.2, 1.2, 1.5, 1.5, 1., 1., 1.2, 1.2, 1.5,
1.5
1., 1., 1., 1., 1., 1., 1.,
],
sigmas=[
0.026, 0.025, 0.025, 0.035, 0.035, 0.079, 0.079, 0.072, 0.072, 0.062,
0.062, 0.107, 0.107, 0.087, 0.087, 0.089, 0.089
0.05, 0.05, 0.05, 0.05, 0.06, 0.06, 0.07,
])
6 changes: 3 additions & 3 deletions configs/_base_/default_runtime.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
timer=dict(type='IterTimerHook'),
logger=dict(type='LoggerHook', interval=50),
param_scheduler=dict(type='ParamSchedulerHook'),
checkpoint=dict(type='CheckpointHook', interval=10),
checkpoint=dict(type='CheckpointHook', interval=10, max_keep_ckpts=1),
sampler_seed=dict(type='DistSamplerSeedHook'),
visualization=dict(type='PoseVisualizationHook', enable=False),
visualization=dict(type='PoseVisualizationHook', enable=True),
badcase=dict(
type='BadCaseAnalysisHook',
enable=False,
Expand All @@ -32,7 +32,7 @@
# visualizer
vis_backends = [
dict(type='LocalVisBackend'),
# dict(type='TensorboardVisBackend'),
dict(type='TensorboardVisBackend'),
# dict(type='WandbVisBackend'),
]
visualizer = dict(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
_base_ = ['../../../_base_/default_runtime.py']

# runtime
train_cfg = dict(max_epochs=210, val_interval=10)
train_cfg = dict(max_epochs=300, val_interval=10)

# optimizer
optim_wrapper = dict(optimizer=dict(
Expand All @@ -17,17 +17,33 @@
dict(
type='MultiStepLR',
begin=0,
end=210,
milestones=[170, 200],
end=300,
milestones=[200, 250],
gamma=0.1,
by_epoch=True)
]

# automatically scaling LR based on the actual training batch size
auto_scale_lr = dict(base_batch_size=512)
auto_scale_lr = dict(base_batch_size=64)

# hooks
default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater'))
default_hooks = dict(
checkpoint=dict(save_best='coco/AP', rule='greater'),
)

custom_hooks = [
# dict(type='PCKAccuracyTrainHook', interval=10, thr=0.05),
dict(
type='EarlyStoppingHook',
monitor='5pr_/PCK',
rule='greater',
min_delta=0.001,
patience=20,
stopping_threshold=None,
strict=False,
check_finite=True
),
]

# codec settings
codec = dict(
Expand All @@ -43,13 +59,13 @@
bgr_to_rgb=True),
backbone=dict(
type='ResNet',
depth=50,
init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50'),
depth=18,
init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet18'),
),
head=dict(
type='HeatmapHead',
in_channels=2048,
out_channels=17,
in_channels=512,
out_channels=7,
loss=dict(type='KeypointMSELoss', use_target_weight=True),
decoder=codec),
test_cfg=dict(
Expand All @@ -61,16 +77,39 @@
# base dataset settings
dataset_type = 'CocoDataset'
data_mode = 'topdown'
data_root = 'data/coco/'
# data_root = 'data/2144_split_exported_data_project_id_422/'
# data_root = 'data/2769_split_exported_data_project_id_422/'
data_root = "data/joined/"

# pipelines
train_pipeline = [
dict(type='LoadImage'),
dict(type='GetBBoxCenterScale'),
dict(type='RandomFlip', direction='horizontal'),
dict(type='RandomHalfBody'),
dict(type='RandomBBoxTransform'),
dict(type='TopdownAffine', input_size=codec['input_size']),
dict(
type='Albumentation',
transforms=[
dict(type='RandomBrightnessContrast', brightness_limit=[-0.4, 0.4], contrast_limit=[-0.4, 0.4], p=0.6),

dict(
type='OneOf',
transforms=[
dict(type='MotionBlur', blur_limit=5, p=0.3),
dict(type='MedianBlur', blur_limit=5, p=0.3),
dict(type='Blur', blur_limit=5, p=0.3),
], p=0.4),

dict(
type='OneOf',
transforms=[
dict(type='GaussNoise', var_limit=(10.0, 50.0), p=0.4),
dict(type='MultiplicativeNoise', multiplier=(0.9, 1.1), p=0.4),
], p=0.4),

dict(type='HueSaturationValue', hue_shift_limit=20, sat_shift_limit=20, val_shift_limit=20, p=0.5),
]),
dict(type='GenerateTarget', encoder=codec),
dict(type='PackPoseInputs')
]
Expand All @@ -84,38 +123,55 @@
# data loaders
train_dataloader = dict(
batch_size=64,
num_workers=2,
num_workers=4,
persistent_workers=True,
sampler=dict(type='DefaultSampler', shuffle=True),
dataset=dict(
type=dataset_type,
data_root=data_root,
data_mode=data_mode,
ann_file='annotations/person_keypoints_train2017.json',
ann_file='annotations/forklift_keypoints_train2017.json',
data_prefix=dict(img='train2017/'),
pipeline=train_pipeline,
))
val_dataloader = dict(
batch_size=32,
num_workers=2,
num_workers=4,
persistent_workers=True,
drop_last=False,
sampler=dict(type='DefaultSampler', shuffle=False, round_up=False),
dataset=dict(
type=dataset_type,
data_root=data_root,
data_mode=data_mode,
ann_file='annotations/person_keypoints_val2017.json',
bbox_file='data/coco/person_detection_results/'
'COCO_val2017_detections_AP_H_56_person.json',
ann_file='annotations/forklift_keypoints_train2017.json',
bbox_file='',
data_prefix=dict(img='val2017/'),
test_mode=True,
pipeline=val_pipeline,
))
test_dataloader = val_dataloader

# evaluators
val_evaluator = dict(
type='CocoMetric',
ann_file=data_root + 'annotations/person_keypoints_val2017.json')
val_evaluator = [
dict(
type='CocoMetric',
ann_file=data_root + 'annotations/forklift_keypoints_train2017.json'
),
dict(
type='EPE',
),
dict(
type='PCKAccuracy',
prefix="5pr_",
),
dict(
type='PCKAccuracy',
thr=0.1,
prefix="10pr_",
),
dict(
type='AUC',
),
]
test_evaluator = val_evaluator
Loading

0 comments on commit 003cac4

Please sign in to comment.