fullseye

分割の採点と真値つき合成世界 — どの物差しがどの壊れ方に盲目か

セグメンテーション拡充 第 1 陣の 2 カテゴリ。segeval(score、採点の物差し 8 本)と segworld(world、閉形式の真値を持つ合成世界 8 本)です。前者は「予測と真値がどれだけ 違うか」を数え、後者は「原理的に 1 つの手法を壊す」入力を真値つきで作ります。学習器は 載せません —— どの物差しも 定理か第 2 実装の門、どの世界も 閉形式の真値 を持つものだけ。

score(segeval): 1 枚の予測ラベル × 1 枚の真値ラベル → 数

入口はどちらも labels2d(非負整数、0 は背景)。出力は table(平らな dict)。

world(segworld): ノブ → 画像 + 真値ラベル + 閉形式の真値

world_* は入力を取らず(ノブだけ)、image・labels・truth を持つ table を返します。 各世界は 1 つの手法を壊す理由 を持ちます:

流れ

flowchart TD
    W["world_blobs_touching / world_grains_voronoi / …<br/>(ノブだけ)"] --> IMG["image + labels + truth (table)"]
    IMG -->|labels| PRED["手法で分割<br/>(fs.apply / fs.ledger)"]
    IMG -->|labels = 真値| TRUE["labels_true"]
    PRED --> SC["seg_score_card<br/>Dice/Jaccard・VI・ARI・境界 F・HD95・過分割/未分割・個数"]
    TRUE --> SC
    LA["lens_area(r, d)"] -. 真値の検算 .-> W
    VC["voronoi_cells(seeds, size)"] -. 真値の検算 .-> W

最短の使い方

import fullseye as fs

wld = fs.ledger.world_blobs_touching(n=8, overlap=0.25, seed=0)   # ノブ → 真値つきの世界
truth_labels = wld["labels"]

# 手法の予測(ここでは真値をそのまま採点 = 満点を確かめる)
card = fs.ledger.seg_score_card(truth_labels, truth_labels)
assert card["dice"] == 1.0 and card["voi"] == 0.0 and card["counts_match"]

# 融合に盲目なマスクの物差し vs 融合を見る個数の物差し
merged = truth_labels.copy()
merged[merged > 0] = 1                                            # 全部 1 つにつぶす(最悪の未分割)
cm = fs.ledger.seg_object_counts_match(merged, truth_labels)
assert cm["merged"] == 1 and not cm["counts_match"]               # Dice は高いままでも個数は崩れる

症状 → 原因(採点でだまされないために)

症状 原因 見る物差し
Dice・Jaccard は高いのに物体が足りない マスクの物差しは 融合・分裂に盲目(画素の重なりしか見ない) seg_object_counts_match の merged / split、seg_under_over_segmentation
境界 F は高いのに領域が無数にある 境界の物差しは 過分割に盲目(割れ目が合っていれば満点) seg_under_over_segmentation の over、seg_score_card の voi
ASSD は小さいのに 1 か所だけ大きく外す 平均は 外れ値に鈍い seg_hausdorff(最悪、HD95)
seg_hausdorff が ValueError 片方が 1 色(境界が無い)= 測る表面が無い 入力に 2 つ以上のラベルがあるか確認
class_2dim_unsup のラベル 0 が背景に化ける k-means の 0 はクラス番号であって背景ではない blob_features に渡す前に 1 から振り直す
真値どおりなのに満点にならない 手法が 全画素分割(背景の概念が無い)を返している マスクの Dice は —、ARI / VI で比べる

一次情報

関連