|
11 | 11 | parse = argparse.ArgumentParser()
|
12 | 12 | parse.add_argument('--im_root', dest='im_root', type=str, default='./datasets/cityscapes',)
|
13 | 13 | parse.add_argument('--im_anns', dest='im_anns', type=str, default='./datasets/cityscapes/train.txt',)
|
| 14 | +parse.add_argument('--lb_ignore', dest='lb_ignore', type=int, default=255) |
14 | 15 | args = parse.parse_args()
|
15 | 16 |
|
| 17 | +lb_ignore = args.lb_ignore |
| 18 | + |
16 | 19 |
|
17 | 20 | with open(args.im_anns, 'r') as fr:
|
18 | 21 | lines = fr.read().splitlines()
|
|
54 | 57 | if shape[1] < min_shape_width[1]:
|
55 | 58 | min_shape_width = shape
|
56 | 59 |
|
57 |
| - max_lb_val = max(max_lb_val, np.max(lb.ravel())) |
58 |
| - min_lb_val = min(min_lb_val, np.min(lb.ravel())) |
59 |
| - |
| 60 | + lb = lb[lb != lb_ignore] |
| 61 | + if lb.size > 0: |
| 62 | + max_lb_val = max(max_lb_val, np.max(lb)) |
| 63 | + min_lb_val = min(min_lb_val, np.min(lb)) |
60 | 64 |
|
| 65 | +min_lb_val = 0 |
| 66 | +max_lb_val = 181 |
| 67 | +lb_minlength = 182 |
61 | 68 | ## label info
|
62 | 69 | lb_minlength = max_lb_val+1-min_lb_val
|
63 | 70 | lb_hist = np.zeros(lb_minlength)
|
64 |
| -for impth in tqdm(impaths): |
65 |
| - lb = cv2.imread(lbpth, 0).ravel() + min_lb_val |
| 71 | +for lbpth in tqdm(lbpaths): |
| 72 | + lb = cv2.imread(lbpth, 0) |
| 73 | + lb = lb[lb != lb_ignore] + min_lb_val |
66 | 74 | lb_hist += np.bincount(lb, minlength=lb_minlength)
|
67 | 75 |
|
68 | 76 | lb_missing_vals = [ind + min_lb_val
|
|
75 | 83 | n_pixels = 0
|
76 | 84 | for impth in tqdm(impaths):
|
77 | 85 | im = cv2.imread(impth)[:, :, ::-1].astype(np.float32)
|
78 |
| - im = im.reshape(-1, 3) |
| 86 | + im = im.reshape(-1, 3) / 255. |
79 | 87 | n_pixels += im.shape[0]
|
80 | 88 | rgb_mean += im.sum(axis=0)
|
81 |
| -rgb_mean = rgb_mean / n_pixels |
| 89 | +rgb_mean = (rgb_mean / n_pixels) |
82 | 90 |
|
83 | 91 | rgb_std = np.zeros(3).astype(np.float32)
|
84 | 92 | for impth in tqdm(impaths):
|
85 | 93 | im = cv2.imread(impth)[:, :, ::-1].astype(np.float32)
|
86 |
| - im = im.reshape(-1, 3) |
| 94 | + im = im.reshape(-1, 3) / 255. |
87 | 95 |
|
88 | 96 | a = (im - rgb_mean.reshape(1, 3)) ** 2
|
89 | 97 | rgb_std += a.sum(axis=0)
|
90 |
| -rgb_std = (rgb_std / n_pixels) ** (0.5) |
| 98 | +rgb_std = (rgb_std / n_pixels) ** 0.5 |
| 99 | + |
| 100 | +rgb_mean = rgb_mean.tolist() |
| 101 | +rgb_std = rgb_std.tolist() |
91 | 102 |
|
92 | 103 |
|
| 104 | +print('\n') |
93 | 105 | print(f'there are {n_pairs} lines in {args.im_anns}, which means {n_pairs} image/label image pairs')
|
94 | 106 | print('\n')
|
95 | 107 |
|
96 |
| -print('max and min image shapes by area are: ') |
97 |
| -print(f'\t{max_shape_area}, {min_shape_area}') |
98 |
| -print('max and min image shapes by height are: ') |
99 |
| -print(f'\t{max_shape_height}, {min_shape_height}') |
100 |
| -print('max and min image shapes by width are: ') |
101 |
| -print(f'\t{max_shape_width}, {min_shape_width}') |
| 108 | +print(f'max and min image shapes by area are: {max_shape_area}, {min_shape_area}') |
| 109 | +print(f'max and min image shapes by height are: {max_shape_height}, {min_shape_height}') |
| 110 | +print(f'max and min image shapes by width are: {max_shape_width}, {min_shape_width}') |
102 | 111 | print('\n')
|
103 | 112 |
|
104 |
| -print(f'label values are within range of ({min_lb_val}, {max_lb_val})') |
105 |
| -print('label values that are missing: ') |
106 |
| -print('\t', lb_missing_vals) |
| 113 | +print(f'we ignore label value of {args.lb_ignore} in label images') |
| 114 | +print(f'label values are within range of [{min_lb_val}, {max_lb_val}]') |
| 115 | +print(f'label values that are missing: {lb_missing_vals}') |
107 | 116 | print('ratios of each label value: ')
|
108 | 117 | print('\t', lb_ratios)
|
109 | 118 | print('\n')
|
110 | 119 |
|
111 |
| -print('pixel mean rgb: ', mean) |
112 |
| -print('pixel std rgb: ', std) |
| 120 | +print('pixel mean rgb: ', rgb_mean) |
| 121 | +print('pixel std rgb: ', rgb_std) |
0 commit comments