Küçük yamadan büyük taramaya

Projenin ilk hedefi, mikroskop görüntüsünden alınan küçük bir doku parçasında tümör dokusu bulunup bulunmadığını sınıflandırmaktı. Kullandığım PCam veri setinde her örnek 96×96 piksel ve etiket, görüntünün merkezindeki bölgede tümör dokusu olup olmadığını belirtiyor.

Asıl problem yalnızca tek bir yamayı sınıflandırmak değildi. Gerçek boyutlu bir doku taraması çok daha büyük olduğu için modeli görüntünün tamamında sistematik biçimde çalıştıracak ikinci bir katman gerekiyordu.

Kullanım sınırı

Bu çalışma eğitim ve araştırma amaçlı bir prototiptir; klinik tanı aracı değildir. Demo görüntüsündeki başarılı sonuç, gerçek hasta verisinde tıbbi doğruluk veya güvenlik kanıtı oluşturmaz.

Veriyi belleğe sığdırmak

Yüz binlerce görüntüyü aynı anda belleğe almak pratik değildi. Bu yüzden dosya yollarını tutan ve yalnızca ihtiyaç duyulan örneği diskten okuyan bir veri yükleme yapısı kurdum. Eğitim sırasında her batch için gerekli yamalar okunuyor, dönüştürülüyor ve modelden geçiriliyor.

Mikroskop dokusunun sabit bir yukarı-aşağı yönü olmadığı için rastgele döndürme ve aynalama kullandım. Bu veri artırma adımları modelin belirli bir konumu ezberlemek yerine doku örüntülerine odaklanmasına yardımcı oldu.

Isı haritası denemesinde kullanılan kontrollü demo doku görüntüsü
Sliding window akışını sınamak için kullandığım kontrollü demo taraması. Koyu kümeler, modelin görüntü boyunca bulmasını beklediğim hedef bölgeleri temsil ediyor.

DenseNet121 ile transfer learning

Sıfırdan bir sinir ağı tasarlamak yerine ImageNet üzerinde önceden eğitilmiş DenseNet121 kullandım. Ağın daha önce öğrendiği kenar, doku ve şekil temsillerini koruyup son sınıflandırma katmanını ikili çıktı üretecek şekilde değiştirdim.

Kayıp fonksiyonu olarak BCELoss, optimizasyon için Adam kullandım. Doğrulama başarımı iyileşmediğinde eğitimi durduran early stopping ekleyerek modelin eğitim örneklerini ezberlemesini sınırlamaya çalıştım.

Sliding window taraması

Eğitilen model 96×96 piksellik giriş bekliyor. Büyük görüntüyü aynı boyutta bir pencereyle, belirli adımlarla soldan sağa ve yukarıdan aşağıya taradım. Her konumda modelin ürettiği kanser olasılığını kaydettim.

Bir satırdaki pencere sayısı, görüntü genişliğinden pencere genişliğinin çıkarılıp adım aralığına bölünmesi ve bire bir eklenmesiyle bulunuyor. Örneğin 1024 piksellik görüntü, 96 piksellik pencere ve 32 piksellik adım kullanıldığında yaklaşık 30 konum taranıyor.

Kutular ve olasılık ısı haritası

Eşik üstündeki pencereleri orijinal görüntü üzerinde kırmızı kutularla gösterdim. Aynı olasılık değerlerini iki boyutlu bir matriste biriktirip renk skalasına dönüştürünce, modelin hangi bölgelerde daha güçlü sinyal gördüğü tek bakışta okunabilir hâle geldi.

Orijinal doku, kırmızı tespit kutuları ve olasılık ısı haritası karşılaştırması
Solda demo doku, ortada eşik üstündeki kırmızı pencereler, sağda model olasılıklarının ısı haritası bulunuyor. Bu örnekte sekiz pencere riskli olarak işaretlendi ve örtüşen pencereler dört ana bölgede yoğunlaştı.

Gerçek dünya sınırları

Kontrollü demo görüntüsünde hedef bölgeler görünür biçimde yakalandı; ancak bu sonuç klinik performansı ölçmüyor. Gerçek kullanım için farklı laboratuvar boyaları, tarayıcılar ve hasta grupları üzerinde dış doğrulama, hasta bazlı veri ayrımı, duyarlılık ve özgüllük analizi ile uzman değerlendirmesi gerekir.

Bu projede öğrendiğim en önemli şey, modeli eğitmenin çözümün yalnızca ilk yarısı olduğuydu. Küçük yama sınıflandırıcısını büyük bir görüntüde verimli ve anlaşılır biçimde kullanmak, sliding window ve ısı haritası katmanlarını tasarlamayı gerektirdi.

Sonraki adımlar

Bir sonraki sürümde örtüşen pencereleri daha akıcı bir haritada birleştirmek, taramayı batch hâlinde hızlandırmak ve sonuçları gerçek etiketli bütün slayt görüntülerinde ölçmek istiyorum. Böylece görsel bir demodan tekrarlanabilir bir araştırma değerlendirmesine geçebilirim.