Skip to content

Commit 3c053e9

Browse files
authored
Merge pull request #2 from nuguziii/develop
Develop
2 parents 015c946 + f7cf78c commit 3c053e9

21 files changed

+2565
-555
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ eggs/
3939
parts/
4040
sdist/
4141
var/
42+
experiments/
4243
*.egg-info/
4344
.installed.cfg
4445
*.egg

experiments/pano/pano_hrnet48.yaml

+127
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
AUTO_RESUME: false
2+
CUDNN:
3+
BENCHMARK: true
4+
DETERMINISTIC: false
5+
ENABLED: true
6+
DATA_DIR: ''
7+
GPUS: (0,)
8+
OUTPUT_DIR: 'output'
9+
LOG_DIR: 'log'
10+
WORKERS: 4
11+
PRINT_FREQ: 10
12+
13+
DATASET:
14+
COLOR_RGB: true
15+
DATASET: 'pano'
16+
DATA_FORMAT: jpg
17+
FLIP: false
18+
NUM_JOINTS_HALF_BODY: 0
19+
PROB_HALF_BODY: 0.0
20+
ROOT: 'data/pano/'
21+
ROT_FACTOR: 0
22+
SCALE_FACTOR: 0.0
23+
TEST_SET: 'test'
24+
TRAIN_SET: 'train'
25+
MODEL:
26+
INIT_WEIGHTS: true
27+
NAME: pose_hrnet
28+
NUM_JOINTS: 32
29+
PRETRAINED: ''
30+
TARGET_TYPE: gaussian
31+
IMAGE_SIZE:
32+
- 512
33+
- 256
34+
HEATMAP_SIZE:
35+
- 128
36+
- 64
37+
SIGMA: 1
38+
EXTRA:
39+
PRETRAINED_LAYERS:
40+
- 'conv1'
41+
- 'bn1'
42+
- 'conv2'
43+
- 'bn2'
44+
- 'layer1'
45+
- 'transition1'
46+
- 'stage2'
47+
- 'transition2'
48+
- 'stage3'
49+
- 'transition3'
50+
- 'stage4'
51+
FINAL_CONV_KERNEL: 1
52+
STAGE2:
53+
NUM_MODULES: 1
54+
NUM_BRANCHES: 2
55+
BLOCK: BASIC
56+
NUM_BLOCKS:
57+
- 4
58+
- 4
59+
NUM_CHANNELS:
60+
- 48
61+
- 96
62+
FUSE_METHOD: SUM
63+
STAGE3:
64+
NUM_MODULES: 4
65+
NUM_BRANCHES: 3
66+
BLOCK: BASIC
67+
NUM_BLOCKS:
68+
- 4
69+
- 4
70+
- 4
71+
NUM_CHANNELS:
72+
- 48
73+
- 96
74+
- 192
75+
FUSE_METHOD: SUM
76+
STAGE4:
77+
NUM_MODULES: 3
78+
NUM_BRANCHES: 4
79+
BLOCK: BASIC
80+
NUM_BLOCKS:
81+
- 4
82+
- 4
83+
- 4
84+
- 4
85+
NUM_CHANNELS:
86+
- 48
87+
- 96
88+
- 192
89+
- 384
90+
FUSE_METHOD: SUM
91+
LOSS:
92+
USE_TARGET_WEIGHT: true
93+
TRAIN:
94+
BATCH_SIZE_PER_GPU: 16
95+
SHUFFLE: true
96+
BEGIN_EPOCH: 0
97+
END_EPOCH: 200
98+
OPTIMIZER: adam
99+
LR: 0.001
100+
LR_FACTOR: 0.1
101+
LR_STEP:
102+
- 150
103+
- 180
104+
WD: 0.0001
105+
GAMMA1: 0.99
106+
GAMMA2: 0.0
107+
MOMENTUM: 0.9
108+
NESTEROV: false
109+
TEST:
110+
BATCH_SIZE_PER_GPU: 1
111+
COCO_BBOX_FILE: 'data/coco/person_detection_results/COCO_val2017_detections_AP_H_56_person.json'
112+
BBOX_THRE: 1.0
113+
IMAGE_THRE: 0.0
114+
IN_VIS_THRE: 0.2
115+
MODEL_FILE: ''
116+
NMS_THRE: 1.0
117+
OKS_THRE: 0.9
118+
USE_GT_BBOX: false
119+
FLIP_TEST: false
120+
POST_PROCESS: true
121+
SHIFT_HEATMAP: false
122+
DEBUG:
123+
DEBUG: true
124+
SAVE_BATCH_IMAGES_GT: true
125+
SAVE_BATCH_IMAGES_PRED: true
126+
SAVE_HEATMAPS_GT: true
127+
SAVE_HEATMAPS_PRED: true

lib/config/default.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
_C.MODEL.NAME = 'pose_hrnet'
3838
_C.MODEL.INIT_WEIGHTS = True
3939
_C.MODEL.PRETRAINED = ''
40-
_C.MODEL.NUM_JOINTS = 17
40+
_C.MODEL.NUM_JOINTS = 32
4141
_C.MODEL.TAG_PER_JOINT = True
4242
_C.MODEL.TARGET_TYPE = 'gaussian'
4343
_C.MODEL.IMAGE_SIZE = [256, 256] # width * height, ex: 192 * 256
@@ -82,6 +82,7 @@
8282
_C.TRAIN.NESTEROV = False
8383
_C.TRAIN.GAMMA1 = 0.99
8484
_C.TRAIN.GAMMA2 = 0.0
85+
_C.TRAIN.LOSS_WEIGHT = [1e1,1e1,1e1]
8586

8687
_C.TRAIN.BEGIN_EPOCH = 0
8788
_C.TRAIN.END_EPOCH = 140

lib/core/evaluate.py

+46-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def calc_dists(preds, target, normalize):
2828
return dists
2929

3030

31-
def dist_acc(dists, thr=0.5):
31+
def dist_acc(dists, thr=0.2):
3232
''' Return percentage below threshold while ignoring values with a -1 '''
3333
dist_cal = np.not_equal(dists, -1)
3434
num_dist_cal = dist_cal.sum()
@@ -70,4 +70,49 @@ def accuracy(output, target, hm_type='gaussian', thr=0.5):
7070
acc[0] = avg_acc
7171
return acc, avg_acc, cnt, pred
7272

73+
def accuracy_classification(output, target, thres=0.0):
74+
'''
75+
Calculate accuracy according to PCK,
76+
but uses ground truth heatmap rather than x,y locations
77+
First value to be returned is average accuracy across 'idxs',
78+
followed by individual accuracies
79+
'''
80+
81+
output[output<thres] = 0
82+
output[output>=thres] = 1
83+
84+
cnt = output.shape[0]
85+
acc = np.zeros(cnt)
86+
87+
target = target.reshape(cnt, -1)
88+
89+
for i in range(cnt):
90+
acc[i] = sum(output[i]==target[i])/32
91+
92+
avg_acc = np.mean(acc)
93+
return avg_acc, cnt
94+
95+
def accuracy_landmark(output, target, thres=6.0):
96+
'''
97+
Calculate accuracy according to PCK,
98+
but uses ground truth heatmap rather than x,y locations
99+
First value to be returned is average accuracy across 'idxs',
100+
followed by individual accuracies
101+
'''
102+
batch = output.shape[0]
103+
acc = np.zeros(batch)
104+
105+
output = output.reshape(batch, 32, 2)
106+
target = target.reshape(batch, 32, 2)
107+
108+
diff = np.sqrt(np.square(output[:,:,0] - target[:,:,0]) + np.square(output[:,:,1] - target[:,:,1]))
109+
110+
for i in range(batch):
111+
cur = diff[i]
112+
cur[cur < thres] = 0
113+
acc[i] = (32-np.count_nonzero(cur))/32
114+
115+
avg_acc = np.mean(acc)
116+
return avg_acc, batch
117+
73118

0 commit comments

Comments
 (0)