本指南僅有日文版(它是人寫的散文,這裡不做機械替換)。
電子顕微鏡(EM)の連続断面からニューロンを切り出した自動分割には、融合(別々の 2 細胞が 1 つの id)と分断(1 細胞が途中で 2 つの id)が残ります。校正(proofreading)は人がそれを探して直す作業で、先行研究(MergeNet 2017、Zung 2017、Dmitriev 2018、ConnectomeBench 2025)はどれも深層学習で候補を出します。この族は 学習なし・閉形式・ノブつき で同じ 2 種類の疑いを数え、深層学習の第 1 意見に原理の違う第 2 意見を並べます。前提はひとつ —— 細胞膜(暗い稜線)は本来ラベルの境界にしか無い。
7 op / 4 カテゴリ(numpy + scipy.ndimage のみ。台帳は opsemproof.py、実体は emproof.py):
• response(1) — seg_membrane_response: 生 EM → 膜応答(ガウス平滑した Hessian の固有値 λ1 − |λ2|、Steger の線検出の閉形式)。暗い塊(ミトコンドリア内部)は打ち消し合って 0 に近い。断面ごとに 99.5 percentile で正規化。scikit-image があるならレジストリの sk_frangi も同じ席に入る。
• suspect(2) — seg_membrane_chord_score(融合の疑い: ラベルの内部を横切る膜の弦の長さ / ラベルの径。穴を持つ膜成分 = 閉じた輪は除く)/ seg_boundary_membrane_gap(分断の疑い: 隣接ラベルの境界画素のうち膜応答が閾値未満の割合)。
• inject(3) — seg_inject_merge / seg_inject_split / seg_label_changes: 評価用に正解ラベルへ人工の融合・分断を仕込み、2 枚のラベルの差を対として取り出す。
• evaluate(1) — holdout_threshold: 閾値を訓練側のスコアで選び(負例の偽陽性率 ≤ target_fpr)、評価は別の側で AUC / TPR / FPR を返す。
Mermaid 図(ソース):
flowchart LR
raw[EM 断面 image2d] --> R[seg_membrane_response]
truth[正解ラベル labels2d] --> IM[seg_inject_merge] --> IS[seg_inject_split] --> cut[評価用ラベル]
truth --> CH[seg_label_changes]
cut --> CH
R --> C[seg_membrane_chord_score]
R --> G[seg_boundary_membrane_gap]
cut --> C
cut --> G
C --> H[holdout_threshold]
G --> H
CH --> H
import fullseye as fs L = fs.ledger M = L.seg_membrane_response(raw, sigma=2.0) # 4 nm/px なら膜の半幅 ≈ 2 px cut = L.seg_inject_split(L.seg_inject_merge(labels, n=1, seed=0), n=1, seed=0) truth = L.seg_label_changes(labels, cut) # 仕込んだ対(答え) chord = L.seg_membrane_chord_score(cut, M, tau=0.2, band=4) # 融合の疑い(score 降順) gap = L.seg_boundary_membrane_gap(cut, M, tau=0.2, min_len=60) # 分断の疑い(gap_fraction 降順) r = L.holdout_threshold(train_pos, train_neg, test_pos, test_neg, target_fpr=0.05) print(r["tau"], r["test_auc"], r["test_tpr"], r["test_fpr"])
| 検出器 | 評価 AUC | 乱数 | 大きさだけ |
|---|---|---|---|
| 分断 = 膜の無い境界 | 1.00(TPR 1.00 / FPR 0.11) | 0.65 | 0.54 |
| 融合 = 内部の膜の弦(面積で揃えた負例) | 0.83(TPR 0.12 / FPR 0.01) | 0.53 | 0.70 |
分断は膜の有無だけでほぼ確実に指せます。融合は弱い —— 内部に膜の多い細胞(ミトコンドリアが詰まった太い軸索、細胞体)が弦と同じ形で高く出るのが偽陽性の主因で、閉じた輪は穴で除けても切れた弧は除けません。人工の融合は「大きな 2 ラベルの和」なので面積で揃えずに測ると「大きいラベル = 怪しい」だけで AUC 0.87 が出てしまう(揃えると 0.70)。評価側の数字だけを主張に使うのが holdout_threshold を op にした理由です。
新しい型は作りません。断面のラベルは blob 族の labels2d(2-D 整数)、膜応答と生 EM は image2d、疑いの表と差分と評価は table(列名 → 配列 / 名前 → スカラ)。holdout_threshold は 4 本の signal。生データ(CREMI)は repo に入れず、集計と図だけを置きます(examples/poc_em_second_opinion.py、手元に無ければ合成の代替で同じ経路)。