İki laboratuvarın boyasını optik yoğunluk uzayında ayrıştırın, birini diğerine normalize edin ve bunun bir dikkat-MIL ağına ne yaptığını ölçün.
Separate two labs' stains in optical-density space, normalise one onto the other, and measure what that does to an attention-MIL network.
Slaytlar Slayt Torba Ağı'ndakilerle aynıdır: 80 eğitim, 40 test, 16 karo, aynı tohum. Fark şurada: bu kez boyaya piksel düzeyinde bakıyoruz. Parlak alan mikroskopisinde boya ışığı soğurur; Beer–Lambert yasasına göre soğurma, piksel yoğunluğunun logaritmasıyla doğrusaldır. Bu yüzden önce optik yoğunluğa geçeriz: OD = −log((I+1)/256). OD uzayında her boya bir yöndür (boya vektörü) ve bir pikselin rengi, boyaların konsantrasyonlarıyla ağırlıklı toplamıdır. QuPath'in "stain vectors" dediği şey tam olarak budur.
A laboratuvarı referanstır. B laboratuvarının hematoksileni daha zayıf ve biraz daha mordur: hem konsantrasyon düşer hem vektör döner. Macenko yöntemi, her laboratuvarın karolarından bu iki vektörü gözetimsiz bulur: OD bulutunun en geniş iki ekseninin düzlemine iner, uç açılardaki yönleri H ve E olarak alır.
The slides are the same as in Slide Bag Net: 80 training, 40 test, 16 patches, same seed. The difference is that this time we look at the stain at pixel level. In brightfield microscopy a stain absorbs light; by the Beer–Lambert law absorbance is linear in the logarithm of pixel intensity. So we first move to optical density: OD = −log((I+1)/256). In OD space each stain is a direction (a stain vector) and a pixel's colour is the sum of the stains weighted by their concentrations. This is exactly what QuPath calls "stain vectors".
Lab A is the reference. Lab B's haematoxylin is weaker and slightly more purple: the concentration drops and the vector rotates. The Macenko method finds the two vectors of each lab from its patches without supervision: it projects the OD cloud onto the plane of its two widest axes and takes the directions at the extreme angles as H and E.
Bir B karosu seçin (üstteki şerit). Normalizasyon üç adımdır: karoyu B'nin vektörleriyle konsantrasyonlara ayır → her boyanın konsantrasyonunu A'nın 99. yüzdeliğine ölçekle → A'nın vektörleriyle yeniden renklendir. Sağdaki üçüncü kare, karşılaştırma için bir A karosudur.
Pick a lab-B patch (strip above). Normalisation is three steps: unmix the patch into concentrations with B's vectors → scale each stain's concentration to A's 99th percentile → recolour with A's vectors. The third square is a lab-A patch for comparison.
Slayt Torba Ağı'nda boya tek bir sayıydı (x₆). Gerçekte soluk bir boya, segmentasyonun ölçtüğü her şeyi oynatır: soluk çekirdekler küçük bulunur, bazıları hiç bulunmaz, çekirdekçik kaybolur, sitoplazma daha soluk görünür. Bu simülasyon, B karolarının ölçümlerine şu varsayılan bozulmaları uygular (gerçek bir hat üzerinde ölçülmüş değerler değil, soluk slaytlarda bir segmentasyonun yaptığının yerine geçen sayılar):
| Ölçüm | B laboratuvarında ham | Normalizasyondan sonra |
|---|---|---|
| x₁ çekirdek boyutu | × 0,88 | × 0,97 (artık %25) |
| x₂ çekirdek yoğunluğu | × 0,90 | × 0,975 |
| x₃ sitoplazmik solukluk | + 0,10 | + 0,025 |
| x₄ çekirdekçik belirginliği | × 0,75 | × 0,94 |
| x₆ hematoksilen | pikselden ölçülür | normalize görüntüden ölçülür |
Boya artırma (stain augmentation) farklı bir yol seçer: görüntüyü düzeltmek yerine eğitim sırasında her slaytın boyasını rastgele oynatır (konsantrasyonları ölçekler, vektörleri biraz döndürür), böylece ağ boyaya güvenmeyi öğrenemez. Burada aynı bozulma ekseni, her devirde rastgele bir t ∈ [−1,2; 1,2] katsayısıyla uygulanır ve x₆'ya rastgele kayma eklenir.
In Slide Bag Net the stain was one number (x₆). In reality a pale stain moves everything a segmentation measures: pale nuclei are found smaller, some are missed, nucleoli vanish, cytoplasm looks paler. This simulation applies the following assumed distortions to lab-B measurements (not values measured on a real pipeline; stand-ins for what a segmentation does on pale slides):
| Measurement | Raw, lab B | After normalisation |
|---|---|---|
| x₁ nuclear size | × 0.88 | × 0.97 (25% residual) |
| x₂ nuclear density | × 0.90 | × 0.975 |
| x₃ cytoplasmic pallor | + 0.10 | + 0.025 |
| x₄ nucleolar prominence | × 0.75 | × 0.94 |
| x₆ haematoxylin | measured from pixels | measured from the normalised image |
Stain augmentation takes a different route: instead of correcting the image it perturbs every slide's stain at random during training (scales concentrations, rotates vectors a little), so the network cannot learn to rely on stain. Here the same distortion axis is applied each epoch with a random factor t ∈ [−1.2, 1.2] and a random shift is added to x₆.
Ağ, Slayt Torba Ağı'ndaki dikkat-MIL ağıdır (paylaşımlı kodlayıcı → dikkat havuzlaması → sınıflandırıcı, AdamW, ağırlık sönümü 0,03). Yeni olan tek şey ağa giden ölçümlerin nereden geldiğidir: ham, normalize edilmiş, artırılmış ya da ikisi. Karışıklık varsayılan olarak açıktır (eğitim mutantlarının %90'ı B'den); test kümesi her zaman dengelidir. Karşılaştırma için test AUROC'u eğitim sırasında gösterilir; gerçek bir çalışmada bu iş doğrulama kümesinindir.
The network is Slide Bag Net's attention-MIL network (shared encoder → attention pooling → classifier, AdamW, weight decay 0.03). The only new thing is where the measurements fed to it come from: raw, normalised, augmented, or both. The confound is on by default (90% of training mutants from lab B); the test set is always balanced. Test AUROC is shown during training for comparison; in a real study that is the validation split's job.
Eğitim 200 devirde kendiliğinden durur ve satır eklenir; daha erken de kaydedebilirsiniz. Boya ağırlığı, kodlayıcının x₆ sütunundaki mutlak ağırlıkların toplamıdır.
Training stops by itself at 200 epochs and adds a row; you can record earlier. Stain weight is the sum of absolute encoder weights in the x₆ column.
Kırk ayrılmış slayt, iki laboratuvardan eşit sayıda. Ön işlem seçimi test slaytlarına da uygulanır (normalizasyon test zamanında da çalışır; artırma yalnızca eğitimdedir). N ile sınıflandırın.
Forty held-out slides, equal numbers from both labs. The preprocessing choice applies to test slides too (normalisation also runs at test time; augmentation is training-only). Classify with N.
Normalizasyon bir hedef gerektirir: burada A. Bu üç şeyi gizler. Birincisi, A'nın kendi değişkenliği referans olur; A kötü boyanmışsa herkes kötü boyanır. İkincisi, Macenko vektörleri dokunun içeriğine bağlıdır: nekroz, mürekkep, kan ya da çoğunluğu stroma olan bir karo "boya vektörü" olarak başka bir şey bulur; QuPath'te boya vektörlerini temsil edici bir alanda kestirmeniz söylenmesinin nedeni budur. Üçüncüsü, eğitimde görülmeyen bir C laboratuvarı — farklı eozin, farklı tarayıcı — normalizasyonla düzelmeyebilir, çünkü normalizasyon öğrenilmiş bir şey değil, iki vektör çiftidir. Artırma bu üçüncü durumda daha dayanıklıdır; literatürde de en tutarlı kazancı artırma verir, normalizasyonun katkısı yönteme ve veri setine göre değişir. En iyi uygulama ikisini birleştirmek ve merkeze göre katmanlı dış doğrulama yapmaktır.
Gerçek bir hatta normalizasyon ve artırma karo piksellerine uygulanır, ölçümlere değil; temel modeller çoğunlukla artırmayla ön-eğitilir ve çoğu zaman normalizasyon olmadan kullanılır. Bu simülasyonun ölçüm bozulma tablosu bir varsayımdır; kendi laboratuvarınızda ölçebilirsiniz: aynı bloğun iki boyama çalıştırmasını QuPath'te aynı ayarlarla analiz edip ölçüm farkını tablolaştırın. Boya vektörlerinin QuPath'te nasıl kestirildiği ve normalizasyonun ölçüme etkisi için QuPath atölyesindeki Boya Normalizasyonu ekine bakın.
Normalisation needs a target: here, A. That hides three things. First, A's own variability becomes the reference; if A was badly stained, everyone is. Second, Macenko vectors depend on tissue content: necrosis, ink, blood or a mostly-stromal patch yield something else as the "stain vector", which is why QuPath tells you to estimate stain vectors on a representative region. Third, a lab C never seen in training, with a different eosin and a different scanner, may not be fixed by normalisation, because normalisation is not learned; it is two pairs of vectors. Augmentation is more robust in that third case; in the literature augmentation gives the most consistent gain, while the contribution of normalisation varies by method and dataset. Best practice combines both and validates externally, stratified by site.
In a real pipeline normalisation and augmentation act on patch pixels, not on measurements; foundation models are mostly pretrained with augmentation and often used without normalisation. This simulation's distortion table is an assumption; you can measure it in your own lab: analyse two staining runs of the same block in QuPath with identical settings and tabulate the measurement differences. For how stain vectors are estimated in QuPath and what normalisation does to measurements, see the Stain normalisation appendix of the QuPath workshop.