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'

CTCのbeam search を読む

Pb(b, t)+=Ptot(b, t-1)·mat(blank, t) の mat は最初に与えられた時系列のchar matrix のこと。

b: それまでappendされた文字列 のことっぽい。beamと書いてあるけど。

条件に従って、漸化式を計算していくと解けそう。

towardsdatascience.com

matplot の色をラベルで固定する方法

色の確認

import matplotlib as mpl
import matplotlib.pyplot as plt

def plot_colorMaps(cmap):

    fig, ax = plt.subplots(figsize=(4,0.4))
    col_map = plt.get_cmap(cmap)
    mpl.colorbar.ColorbarBase(ax, cmap=col_map, orientation = 'horizontal')

    plt.show()

for cmap_id in plt.colormaps():
    print(cmap_id)
    plot_colorMaps(cmap_id)

stackoverflow.com

色の固定

N = len(label)

cmap = plt.cm.spectral
# extract all colors from the .jet map
np.random.seed(seed=32)
clist = [cmap(np.random.randint(0, cmap.N)) for i in range(N)]

固定の色でplot

  • 平均の上位5項目をplot
for idx in range(len(X)):
    plt.figure(figsize=(12,4))
    for i in np.argsort(X[idx].mean(axis=0))[::-1][:5]:
        plt.plot(X[idx][:, i], label=label[i], color=clist[i])
    plt.legend(loc='upper right')
    plt.title(NAME_MAP[LABEL_MAP[idx]])
    plt.show()

色の数指定

my_pal = sns.color_palette(n_colors=10)