■
rle_encode の +2
については、
- pixel は 1 から、採番していくため、
+1
- 0番目と1番目の差異を index=0とするため、実際のmask は
+1
def rle_encode(mask): """ Ref. https://www.kaggle.com/paulorzp/run-length-encode-and-decode """ pixels = mask.flatten('F') pixels[0] = 0 pixels[-1] = 0 runs = np.where(pixels[1:] != pixels[:-1])[0] + 2 runs[1::2] = runs[1::2] - runs[:-1:2] return ' '.join(str(x) for x in runs)
rle_encode(np.array([0,1,1,0])) >>> '2 2'