596. SenNet + HOA - Hacking the Human Vasculature in 3D | blood-vessel-segmentation

def get_min_max_val(image_dir):
img_paths = sorted(glob(os.path.join(image_dir, "*.tif")))
pixels = np.zeros((65536,), dtype=np.int64)
for img_path in tqdm(img_paths):
img = cv2.imread(img_path, cv2.IMREAD_UNCHANGED)
_pixels = np.bincount(img.flatten(), minlength=65536)
pixels += _pixels
bin = 1000
hist = []
bins = []
for i in range(0, 65535+bin, bin):
hist.append(pixels[i:i+bin].sum())
bins.append(i)
hist = np.array(hist)
hist_rate = hist/hist.max()
idxes = np.where(hist_rate>0.01)[0]
min_idx = idxes[0]
max_idx = idxes[-1]
return bins[min_idx]-5000, bins[max_idx]+5000
min_val, max_val = get_min_max_val(inference_img_dir)
img = cv2.imread(path, cv2.IMREAD_UNCHANGED)
img = img.astype('float32')
img = np.clip(img, min_value, max_value)
img = (img-min_value)/max_value


最终分数如下表所示:
| 模型 | N(通道数) | 训练数据 | 验证数据 | 输入尺寸(训练) | 输入尺寸(推理) | CV分数 | 公开分数 | 私有分数 |
|---|---|---|---|---|---|---|---|---|
| resnest14d | 7 | kidney_1_dense | kidney_3_dense | 1920x1920 | 2304x2304 | 0.909 | 0.835 | 0.659 |
| resnest50d | 5 | kidney_1_dense | kidney_3_dense | 1536x1536 | 1920x1920 | 0.903 | 0.818 | 0.599 |
| maxvit_tiny | 7 | kidney_1_dense, kidney_2(伪标签), extra_data(伪标签) | kidney_3_dense | 1536x1536 | 2048x2048 | 0.901 | 0.810 | 0.623 |
| 集成 | - | - | - | - | - | 0.913 | 0.824 | 0.645 |