|
import sys |
|
import sys |
|
import os |
|
sys.path.append(os.path.join(os.path.dirname(__file__), "../env")) |
|
import pandas as pd |
|
from encode import rle_decode |
|
import numpy as np |
|
|
|
def dice_score(y_p, y_t, smooth=1e-6): |
|
i = np.sum(y_p * y_t) |
|
u = np.sum(y_p) + np.sum(y_t) |
|
score = (2 * i + smooth)/(u + smooth) |
|
return score |
|
|
|
def get_score(submission_folder = "../env"): |
|
submission_path = os.path.join(submission_folder, "submission.csv") |
|
submission = pd.read_csv(submission_path, index_col='record_id') |
|
ids = os.listdir(os.path.join(os.path.dirname(__file__), "test_answer")) |
|
total_score = 0 |
|
for id in ids: |
|
pred = submission.loc[int(id), 'encoded_pixels'] |
|
pred = rle_decode(pred) |
|
score = dice_score(pred, np.load(f"{os.path.dirname(__file__)}/test_answer/{id}/human_pixel_masks.npy")[:,:,0]) |
|
total_score += score |
|
|
|
return total_score/len(ids) |
|
|
|
if __name__ == "__main__": |
|
print(get_score()) |