
做醫學圖像分割的同學應該都有同感病灶數據永遠是“不夠用”的。一份高質量的腫瘤掩膜需要影像科醫生在 CT、MRI 切片上一層一層手動勾畫成本高、周期長而且部分病灶形態本身就十分罕見——比如小尺寸轉移瘤、貼近血管生長的結節、跨解剖區域的不規則病變。如果訓練集里從未出現過這樣的形狀和位置模型到了真實場景中很容易漏檢、誤檢甚至把正常組織判成病灶。常規的緩解手段是數據增強旋轉、翻轉、縮放、彈性形變都是常見操作。但這些方法本質是在“已有病灶”的基礎上做幾何擾動并不具備生成“新形狀、新位置病灶”的能力。于是問題變得很有意思能不能像捏橡皮泥一樣把兩個真實病灶的形狀、位置和紋理做一次可解釋的融合從而合成大量“介于兩者之間”的逼真病灶樣本OTLesMix 正是沿著這條思路提出的方法。它的核心不是復雜神經網絡而是一套經典數學工具最優傳輸Optimal Transport, OT與 Wasserstein 重心Wasserstein Barycenter。這篇文章我會從問題背景、數學原理、方法拆解、代碼復現思路、實驗驗證方式和工程落地建議幾個維度把 OTLesMix 完整地講清楚。無論你是醫學圖像方向的算法工程師還是對最優傳輸在深度學習中的應用感興趣的研究者這篇文章都會對你有幫助。1. 醫學圖像分割的病灶數據難題1.1 病灶數據為什么稀缺病灶分割數據的稀缺并不是單純“數據量少”而是好幾個因素疊加在一起的結果。首先是標注成本。CTA、MRI 或者病理切片中的病灶邊界往往并不清晰不同醫生對同一病灶的勾畫也可能存在差異。要獲得一份高質量標注通常需要多位醫生交叉驗證甚至病理結果對照這在時間、人力和資金上都是很大開銷。其次是隱私約束。醫學影像屬于敏感個人數據脫敏、加密、倫理審批、數據使用協議等環節都會拖慢數據收集節奏。即便拿到數據不同醫院之間的數據格式、掃描協議、設備型號差異也會造成分布偏移。最核心的問題是長尾分布。病灶在真實世界中不是均勻出現的比如早期小病灶、罕見位置的病灶在數據集中占比很低而數據增強恰恰需要在這些樣本上下更多功夫。如果只是簡單復制粘貼這類樣本模型很快就會過擬合換一個姿勢、一個角度、一個位置就認不出來。1.2 傳統數據增強為什么不夠先列一下醫學分割里用得最多的幾何增強增強方式作用局限旋轉、翻轉改變病灶方向不改變形狀本質小病灶仍難泛化縮放改變病灶尺寸實際病變大小與解剖結構相關不能隨意縮放彈性形變輕微扭曲形狀幅度太大易失真幅度太小不足以增加多樣性亮度對比度擾動模擬不同掃描參數不能生成新的結構信息Mixup / CutMix像素級或塊級混合通常不做空間對應病灶位置錯開時會產生重影Mixup、CutMix 這類通用增強方法在自然圖像分類上效果很好但直接搬到醫學圖像分割時有一個明顯問題病灶不是“一塊普通貼紙”它有自身的形狀組織、紋理統計和空間語義。當兩個病灶位置距離較遠時線性插值會產生模糊和重影當你把病灶 A 直接復制到病灶 B 的位置時兩個病灶邊緣之間的過渡又非常突兀模型學到的更多是“貼圖偽影”而不是有意義的病理結構。1.3 合成病灶的兩條技術路線為了讓訓練集覆蓋更多形狀和位置研究者通常走兩條路。一條是生成模型路線典型代表是 GAN 和擴散模型。GAN 可以生成非常逼真的合成病灶但訓練不穩定、需要大量真實樣本作為監督、生成結果的病理語義難以保證。擴散模型效果更細膩但采樣速度慢、訓練成本高并且依然存在“生成的內容是否符合真實病理特征”這一可解釋性問題。另一條路線是幾何變換與圖像混合路線OTLesMix 屬于這一類。它在兩個真實病灶之間建立一個“質量搬運”方案讓形狀、位置和紋理可以解耦處理。這樣做的好處是合成病灶的紋理完全來自真實病灶不存在紋理漂移問題形狀和位置則來自數學上可解釋的插值過程穩定且可控。2. 先搞清楚最優傳輸與 Wasserstein 重心2.1 最優傳輸問題從搬運沙土說起最優傳輸是一個有 200 多年歷史的數學問題最早可以追溯到法國工程師 Monge 在 1781 年提出的“搬土問題”。想象地上有一堆沙子分布形狀為 A現在要求你把它搬成分布形狀為 B并且每一粒沙子從起點到終點都會產生搬運成本。如果搬運成本用兩點之間的距離來度量那么最優傳輸問題要回答的就是怎樣規劃每一粒沙子的搬運路徑讓總成本最低這個“搬運方案”在數學上稱為傳輸計劃transport plan記作 γ(x, y)表示有多少質量從源位置 x 流向目標位置 y。Kantorovich 后來對問題做了松弛化處理允許質量被“拆分”于是最優傳輸問題變成了一個線性規劃問題min ∫ c(x, y) dγ(x, y)其中 c(x, y) 是搬運代價函數通常取距離的平方 ||x - y||2。這個公式看起來抽象但含義非常樸素在所有可能的搬運方案里找一個總成本最小的。在圖像處理里一張圖像的灰度值可以歸一化成一個概率分布病灶的掩膜也可以看成一個概率分布。于是最優傳輸就提供了一種“把一個病灶變成另一個病灶”的最優幾何對應關系。2.2 Wasserstein 距離分布之間的距離當最優傳輸的最優總代價被定義出來后它本身也可以用來度量兩個分布之間的距離。這就是 Wasserstein 距離。Wasserstein-p 距離的定義是W_p(μ, ν) (min ∫ ||x - y||^p dγ(x, y))^(1/p)當 p 1 時它也叫推土機距離Earth Movers Distance, EMD在圖像檢索、生成模型評估等領域有廣泛應用。Wasserstein 距離有一個非常重要的幾何直覺它考慮的是“質量分布的形狀差異”。兩個分布即使支撐集完全不重疊Wasserstein 距離也依然有明確的有限值因為質量可以沿著空間距離流動。對比 KL 散度和 JS 散度它們在兩個分布支撐集不重疊時可能退化為無窮大或常數導致梯度消失而 Wasserstein 距離不會。在 OTLesMix 中Wasserstein 距離可以用來度量兩個病灶掩膜之間的“形狀距離”也可以作為插值過程中的一致性指標。2.3 Wasserstein Barycenter分布的“平均”給定多個概率分布 μ?, μ?, ..., μ_N它們的 Wasserstein 重心是一個新分布 μ*使得所有分布與 μ* 之間 Wasserstein 距離的加權和最小μ* argmin_μ Σ λ_k · W_p(μ, μ_k)^p如果 λ_k 是權重且所有權重之和為 1那么 μ* 就可以理解為這些分布在“最優傳輸意義下的平均”。這種平均和歐氏平均很不一樣。歐氏平均只是逐點取像素值的加權平均容易產生模糊、重影而 Wasserstein 重心會盡量保持分布本身的結構——在病灶掩膜的場景里它傾向于生成一個“形狀介于兩個病灶之間”的掩膜而不是簡單地灰度混合。舉個例子一個病灶是圓形另一個是細長形它們的歐氏平均可能是一團模糊的灰塊但 Wasserstein 重心可以生成一個從圓形到細長形漸變過程中的“中間形態”這個形態仍然具有清晰的輪廓和可解釋的形狀結構。3. OTLesMix 方法拆解形狀、位置與紋理如何被“搬運”從命名看OTLesMix 可以拆解為 OT最優傳輸 Les病變 Lesion Mix混合。它要解決的核心問題是給定兩個真實病灶樣本如何合成一系列形狀、位置都不同但紋理統計真實可信的新病灶。3.1 病灶掩膜作為概率分布OTLesMix 首先把病灶掩膜mask看作一個二維概率分布。假設掩膜中病灶區域像素值為 1背景為 0那么將掩膜歸一化后它就是一個定義在像素平面上的離散概率分布源的病灶掩膜 μ_s質量集中在病灶區域目標的病灶掩膜 μ_t質量集中在另一個病灶區域用概率分布的語言來描述病灶是 OTLesMix 最關鍵的一步。因為這樣一來形狀差異就變成了“兩個概率分布之間的差異”而形狀插值就變成了“分布之間的重心計算”。3.2 最優傳輸映射建立空間對應關系有了兩個概率分布下一步是計算它們之間的最優傳輸映射。這里要說一下“最優傳輸映射”與“最優傳輸計劃”的區別。最優傳輸計劃 γ(x, y) 是一個聯合分布表示質量從 x 到 y 的流量而在某些情況下這個計劃可以退化為一個確定性的函數 T: x → y即每個源像素點都映射到唯一的目標像素點這個函數就叫最優傳輸映射。OTLesMix 使用最優傳輸計劃的核心動機是它比仿射變換、TPS 薄板樣條等傳統配準方法更靈活能夠捕捉兩個病灶之間任意的質量對應關系同時保證這種對應是“全局最優”的不會因為局部貪心而產生扭曲。在工程實現中這一步通常通過計算兩個掩膜像素坐標之間的代價矩陣然后求解線性規劃來完成也就是計算G EMD(μ_s, μ_t, M)其中 M 是像素坐標之間的代價矩陣G 是傳輸計劃。G 本身可以理解為一張“從源病灶到目標病灶的質量流量圖”它標識了源病灶每一個像素應該搬運到目標病灶的哪個位置。3.3 Wasserstein 重心生成多樣中間形狀有了傳輸計劃之后OTLesMix 要做的不是直接跳到最極端的目標形狀而是在源病灶和目標病灶之間生成一系列中間形態。這一部分用到的正是 Wasserstein 重心。考慮兩個掩膜 μ_s 和 μ_t取權重 λ ∈ [0, 1]計算它們的 Wasserstein 重心μ_λ argmin_μ [ (1-λ) · W_p(μ, μ_s)^p λ · W_p(μ, μ_t)^p ]當 λ 0 時重心就是源掩膜當 λ 1 時重心就是目標掩膜當 λ 0.5 時重心是“中間形狀”。由于 Wasserstein 重心本身是概率分布因此合成掩膜依然保留著清晰的形態結構不會像線性插值那樣出現模糊和重影。通過改變 λ 的取值可以生成一系列形狀平滑變化的病灶掩膜這就是“Diverse Shapes”的來源。3.4 紋理保持與位置遷移單純生成形狀還不夠合成病灶必須帶上真實的紋理灰度統計特征才可用于模型訓練。OTLesMix 的做法是用最優傳輸計劃把源病灶的圖像紋理“搬運”到目標病灶的位置上去。具體來說給定傳輸計劃 G對于目標位置的每一個像素我們根據 G 中對應的權重從源病灶圖像里加權采樣像素值得到一張“遷移動態紋理圖”。這樣整個方法就把病灶的“形狀”和“紋理”解耦了形狀來自 Wasserstein 重心插值紋理來自真實源病灶的傳輸搬運位置來自最優傳輸映射所建立的空間對應關系通過改變源病灶、目標病灶的組合以及權重 λ可以生成“形狀像 A、紋理像 B、位置接近 A/B 之間”的大量合成病灶。病灶位置的多樣性主要來自兩個方面一是源病灶和目標病灶本身位置不同傳輸計劃會把紋理搬運到新的位置二是在多個真實病灶之間兩兩組合時會形成大量沒有在原始數據中出現過的位置分布。3.5 合成病灶如何融入訓練數據在實際訓練時OTLesMix 通常作為一個在線數據增強模塊接入分割訓練管線。流程大致如下訓練集中維護一個“真實病灶庫”每個樣本包含病灶小塊和對應掩膜。每個訓練 step 隨機抽取兩個病灶樣本。用 OTLesMix 合成新的病灶 patch。將合成 patch 粘貼到訓練圖像的隨機位置或通過 OT 映射得到的合理位置。合成 patch 對應的掩膜直接作為訓練標簽。通過這種方式訓練集每次迭代都有新的合成病灶出現模型能夠見到更多樣的形狀和位置組合。4. 代碼復現思路用 Python 實現核心模塊下面給出一個基于 POTPython Optimal Transport庫的示例實現。需要提前說明這部分代碼是為了幫助你理解 OTLesMix 的核心思路并不是論文官方實現的完整代碼。實際復現時需要根據你自己的數據格式、病灶尺寸和訓練框架進行調整。4.1 環境準備與依賴建議使用以下環境Python 3.8 PyTorch 1.10訓練分割模型用 POT 0.9.0最優傳輸計算 NumPy OpenCV圖像讀寫與后處理安裝 POTpip install POT如果你已經安裝了 PyTorch可以用下面命令驗證 POT 是否安裝成功python -c import ot; print(ot.__version__)4.2 計算最優傳輸映射下面的函數接收兩個二值掩膜返回一個從源掩膜到目標掩膜的傳輸計劃import numpy as np import ot def compute_ot_map(mask_src, mask_tgt, eps1e-6): 計算從源掩膜到目標掩膜的最優傳輸計劃。 參數: mask_src (np.ndarray): 源病灶掩膜形狀 (H, W)像素值為 0/1 mask_tgt (np.ndarray): 目標病灶掩膜形狀 (H, W)像素值為 0/1 eps: 防止除零的極小值 返回: G (np.ndarray): 傳輸計劃形狀 (H, W, H, W) G[i, j, a, b] 表示從源像素 (i, j) 搬運到目標像素 (a, b) 的質量 h, w mask_src.shape # 1. 將掩膜展平成概率分布 mu_s mask_src.reshape(-1).astype(np.float64) mu_t mask_tgt.reshape(-1).astype(np.float64) mu_s / (mu_s.sum() eps) mu_t / (mu_t.sum() eps) # 2. 生成像素坐標網格 yy, xx np.mgrid[0:h, 0:w] coords np.stack([xx.ravel(), yy.ravel()], axis1).astype(np.float64) # 3. 計算代價矩陣歐氏距離的平方 M ot.dist(coords, coords, metricsqeuclidean) M / (M.max() eps) # 4. 使用 EMD 求解最優傳輸計劃 G ot.emd(mu_s, mu_t, M) return G.reshape(h, w, h, w)這段代碼最核心的是兩個部分ot.dist(coords, coords, metricsqeuclidean)計算所有源像素與所有目標像素之間的代價矩陣。ot.emd(mu_s, mu_t, M)用線性規劃求解最優傳輸計劃。代價矩陣的標準通常會顯著影響數值穩定性所以我對 M 做了歸一化處理讓最大值等于 1。實際使用中如果你的病灶尺寸較大比如 128×128直接展開像素會得到 16384×16384 的代價矩陣內存開銷極高建議先在連通域級別計算或者縮小到 32×32 再上采樣。4.3 計算 Wasserstein 重心POT 提供了ot.bregman.convolutional_barycenter2d可以直接對多張二維圖像計算熵正則化的 Wasserstein 重心def wasserstein_barycenter(masks, reg1e-2, num_iters100): 計算多張掩膜的 Wasserstein 重心。 參數: masks (np.ndarray): 形狀 (N, H, W) 的二值掩膜數組 reg: 熵正則化系數越大速度越快但形狀越模糊 num_iters: Sinkhorn 迭代次數 返回: bary (np.ndarray): 形狀 (H, W) 的密度圖值在 0~1 之間 n, h, w masks.shape # 歸一化為概率分布 A np.stack([ m.astype(np.float64) / (m.sum() 1e-6) for m in masks ], axis0) bary ot.bregman.convolutional_barycenter2d( A, reg, numItermaxnum_iters ) return bary需要注意convolutional_barycenter2d使用的是卷積 Sinkhorn 算法計算效率比普通 Sinkhorn 高很多適合圖像這種二維網格數據。reg是一個關鍵參數reg 太小形狀更銳利但迭代收斂慢。reg 太大計算快但得到的重心會偏模糊。由于我們最終需要合成清晰的病灶掩膜通常會在得到重心密度圖后用閾值比如 0.5進行二值化或者再做一次連通域篩選去掉零碎噪聲。4.4 紋理搬運與合成病灶傳輸計劃的作用是把源病灶紋理搬運到目標位置。一個樸素的實現如下def transport_texture(image_src, G): 根據傳輸計劃 G 將源圖像紋理搬運到目標坐標位置。 參數: image_src (np.ndarray): 源病灶圖像形狀 (H, W, C) 或 (H, W) G (np.ndarray): 傳輸計劃形狀 (H, W, H, W) 返回: warped (np.ndarray): 搬運后的紋理圖形狀與 image_src 一致 h, w image_src.shape[:2] channel_dim image_src.ndim warped np.zeros_like(image_src, dtypenp.float64) # 對每個目標像素 (a, b) 加權聚合源像素的值 for a in range(h): for b in range(w): weights G[:, :, a, b] total weights.sum() if total 1e-12: continue weights weights / total if channel_dim 2: warped[a, b] (image_src * weights).sum() else: for c in range(image_src.shape[2]): warped[a, b, c] (image_src[:, :, c] * weights).sum() return warped這個雙重循環在理論上是正確的但效率很低。實際工程中可以先把傳輸計劃轉化為一個稀疏的“源坐標重映射表”再用scipy.ndimage.map_coordinates做一次插值速度會快得多。下面把整個 OTLesMix 合成流程串起來def otlesmix_synthesize(image_src, mask_src, image_tgt, mask_tgt, lam0.5): 合成一個位于源病灶與目標病灶之間的新病灶。 參數: image_src: 源病灶圖像塊形狀 (H, W, 3) mask_src: 源病灶掩膜形狀 (H, W)0/1 image_tgt: 目標病灶圖像塊形狀 (H, W, 3) mask_tgt: 目標病灶掩膜形狀 (H, W)0/1 lam: Wasserstein 重心的權重越大越接近目標病灶 返回: synth_image: 合成病灶圖像塊 synth_mask: 合成病灶掩膜 # 1. 計算源到目標的最優傳輸計劃 G compute_ot_map(mask_src, mask_tgt) # 2. 將源紋理搬運到目標病灶位置 warped_texture transport_texture(image_src, G) # 3. 計算兩個掩膜的 Wasserstein 重心 bary wasserstein_barycenter( np.stack([mask_src, mask_tgt], axis0), reg1e-2 ) # 4. 根據 lam 生成中間形狀掩膜 synth_mask bary (1 - lam) # 5. 背景部分保留目標圖像病灶區域使用搬運后的紋理 synth_image image_tgt.copy() synth_image[synth_mask] warped_texture[synth_mask] return synth_image, synth_mask.astype(np.float32)這段代碼中lam既是重心權重也充當了掩膜閾值的調節。實際使用中可以拆分成兩個獨立參數便于控制“形狀接近程度”和“掩膜閾值”。5. 從想法到實驗如何驗證 OTLesMix 的有效性設計好合成方法之后最關鍵的驗證工作是把合成樣本真正用到分割模型訓練中并和 baseline 對比。這里的實驗協議值得認真設計。5.1 評測任務選擇OTLesMix 適合作為病灶分割任務的數據增強模塊。常見的驗證數據集包括BraTS2021多模態腦膠質瘤 MRI 數據集包含 T1、T1ce、T2、FLAIR 四個模態標注有壞死、水腫、增強腫瘤等結構。LiTS肝臟及肝臟腫瘤 CT 數據集常用于腹部病灶分割。MSDMedical Segmentation Decathlon包含多種器官與病灶分割任務如胰腺、肝臟、結腸癌等。選擇數據集時最好選擇病灶形狀差異大、位置分布廣的數據這樣才能體現 OTLesMix 的優勢。如果數據集里全是圓心近似、大小相近的小病灶OT 方法和普通旋轉縮放的區別就不明顯。5.2 對比基線設置至少需要設置以下幾組對比方法說明無增強直接用原始數據訓練幾何增強旋轉、翻轉、縮放、彈性形變Mixup / CutMix通用混合增強作為像素混合基線OTLesMix本文討論的最優傳輸合成方法評價指標建議同時看全局指標和困難樣本指標Dice 系數最常用的區域重疊指標。IoU交并比對邊界誤差更敏感。HD9595% 豪斯多夫距離反映邊界最大偏差對病灶邊緣質量敏感。罕見形狀子集指標把測試集中形狀最不規則、位置最邊緣的樣本單獨統計更容易看出 OTLesMix 帶來的提升。5.3 訓練流程與超參數建議在實際訓練中OTLesMix 通常作為一個在線增強器使用。推薦流程如下離線抽取訓練集中所有病灶 patch 和對應掩膜構建病灶庫。每個訓練 step 以一定概率比如 0.3~0.5觸發 OTLesMix 增強。每次觸發時從病灶庫隨機抽取兩個病灶隨機選擇 λ ∈ [0.1, 0.9]。用 OTLesMix 生成合成 patch粘貼到當前訓練圖像中。使用合成 patch 的掩膜作為對應位置的真實標簽參與損失計算。這里有一個值得注意的細節合成病灶粘貼到訓練圖時需要避免粘貼到不合理的解剖位置。最簡單的方式是保持源病灶與目標病灶的相對解剖位置關系或者限制粘貼位置在特定器官區域內。6. 常見理解誤區與排查建議在理解和復現 OTLesMix 的過程中下面幾個誤區比較常見我整理成表格方便排查。誤區產生原因正確理解與解決思路把 Wasserstein 重心當作逐像素線性插值沒有理解分布的“質量流動”概念線性插值在歐氏空間逐點平均容易產生模糊Wasserstein 重心是概率分布之間的幾何平均能保留結構直接把 OTLesMix 當 GAN 用期望生成全新語義混淆“融合已有樣本”和“從潛空間采樣生成”OTLesMix 是在真實樣本之間插值語義由真實樣本約束不會憑空創造病灶代價矩陣用像素歐氏距離但不歸一化EMD 求解數值不穩定建議先對代價矩陣做歸一化處理或改用熵正則化 Sinkhorn 求解只生成病灶但不檢查視覺合理性實驗流程不夠嚴謹至少要做人工抽樣檢查保證紋理連續、邊界不出現明顯偽影在整張圖上計算 OT內存溢出圖像尺寸太大先裁剪病灶區域到小 patch 上計算合成后再貼回原圖認為 λ 越極端多樣性越好對插值系數作用理解不深λ 接近 0 或 1 時合成結果接近真實樣本多樣性有限0.3~0.7 區間更值得探索如果你遇到合成結果中出現大量空洞或者噪聲點優先檢查掩膜歸一化是否遺漏以及reg正則化系數是否過大。reg過大會讓重心變得過于平滑二值化后很容易出現零碎偽影。7. 工程化落地的幾條建議把 OTLesMix 從論文實驗遷移到實際項目中有幾個工程層面的問題值得提前規劃。7.1 病灶庫的構建與管理病灶庫的質量直接決定合成樣本質量。建議在訓練流程開始前先對訓練集做一次離線分析篩選出面積適中、邊界清晰的病灶。太小的病灶比如只有十幾個像素在 OT 計算中噪聲非常大邊界模糊的病灶掩膜本身就不準合成出來的樣本也會帶偏模型。病灶庫可以采用統一尺寸的 patch 存儲例如統一縮放到 64×64 或 128×128。為了避免病灶形態被縮放扭曲記錄每個 patch 的原始尺寸和縮放比例合成后再變換回原圖尺度。7.2 在線增強 vs 離線增強OTLesMix 的計算開銷主要集中在 EMD 求解上在線增強時如果每個 batch 都重新計算會拖慢訓練速度。實際工程中推薦“離線預計算 在線隨機組合”的方式離線階段從病灶庫中挑選有代表性的配對組合預計算傳輸計劃和重心形狀保存到磁盤。在線階段訓練時直接讀取預計算的組合結果隨機選擇 λ 進行紋理搬運和粘貼將單次增強開銷控制在毫秒級。這種方式犧牲了一部分隨機性但大幅提高了訓練效率更適合大規模數據場景。7.3 質量控制與醫學合規合成病灶生成得再逼真也不能繞過醫學數據的合規要求。使用真實病人數據構建病灶庫前必須確認數據的合法授權、匿名化處理和倫理審批。合成樣本不應包含可識別患者身份的信息也不能當成真實影像用于任何臨床診斷目的。此外如果項目要上線到真實醫療場景建議邀請影像科醫生對合成樣本進行抽樣評估確認病灶的形態、邊緣和紋理在病理上合理。這一點是最容易被算法團隊忽視但又是最重要的環節。7.4 增強策略的動態調整不建議在訓練全程使用固定的 OTLesMix 觸發概率。更合理的做法是課程式增強訓練早期模型還在學習基礎特征以常規幾何增強為主訓練中期逐步引入 OTLesMix提高樣本多樣性訓練后期收斂階段再降低觸發概率避免模型過于依賴合成樣本而產生分布偏移。你可以用一個簡單的 epoch 調度函數來控制觸發概率def get_otlesmix_prob(epoch, max_epochs, p_max0.5): 隨著訓練進行先提升再降低 OTLesMix 使用概率。 前半程線性上升到 p_max后半程線性下降。 half max_epochs / 2 if epoch half: return p_max * (epoch / half) else: return p_max * (1 - (epoch - half) / half)7.5 與其它增強方法的組合OTLesMix 并不排斥傳統增強方法。推薦在 OTLesMix 合成結束后再疊加隨機旋轉、小幅度縮放和亮度擾動進一步增加多樣性。但要注意控制組合強度避免病灶紋理被過度擾動而失真。組合增強的順序也影響效果。通常建議先做空間變換旋轉、翻轉再做強度變換亮度、對比度最后再做隨機遮擋類增強。對醫學圖像而言空間變換要保持解剖關系所以旋轉角度不宜過大比如限制在 ±15 度以內。8. 總結與下一步學習方向OTLesMix 的價值在于提供了一種真正可解釋、可控制的病灶合成思路。它把病灶分割中的數據稀缺問題轉化為經典的最優傳輸數學問題用 Wasserstein 重心生成多樣形狀用最優傳輸映射搬運紋理和位置。這種方法不需要訓練額外的生成模型也不會出現 GAN 常見的訓練不穩定問題。如果你想把 OTLesMix 用在自己的任務里我的建議是從小規模開始先拿一個小數據集只做兩個病灶之間的 OT 混合看看生成的 patch 在視覺上是否合理確認紋理和形狀都自然之后再把它接入訓練管線。最優傳輸的數學看起來硬核但它最終解決的問題非常直觀——把一個分布搬到另一個分布。理解了這句話就理解了 OTLesMix 的一半。接下來你可以繼續深入的方向包括Sinkhorn 算法與熵正則化的原理、切片 Wasserstein 距離在高維問題中的應用、最優傳輸在域適應中的用法以及如何用卷積 Sinkhorn 加速圖像級重心計算。如果這篇文章對你有幫助可以先收藏備用如果你在復現中遇到了具體報錯或效果異常歡迎在評論區把你的處理步驟和現象發出來一起排查。