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.
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.
Hazır modeli doku görüntülerine uyarlamak
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, modelin ağırlıklarını güncellemek için Adam kullandım. Doğrulama başarımı iyileşmediğinde eğitimi durduran erken durdurma (early stopping) ekleyerek modelin eğitim örneklerini ezberlemesini sınırlamaya çalıştım.
Büyük görüntüyü parça parça taramak
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.
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.
Mülakatta sorulabilecek bir soru
Isı haritasını nasıl oluşturdun?
Görüntünün üzerinde küçük bir pencereyi kaydırıp her parçanın tahmin değerini kaydettim. Bu değerleri renklere çevirerek modelin daha yüksek olasılık verdiği bölgeleri görünür hale getirdim.
Kısa Özet
Doku görüntülerinde tümör içerebilecek bölgeleri işaretleyen eğitim amaçlı bir görüntü analizi prototipi geliştirdim. Python, PyTorch ve DenseNet121 kullandım. Model küçük görüntü parçalarıyla çalıştığı için büyük taramayı parça parça analiz edip sonuçları kutular ve ısı haritasıyla gösterdim. Bu projede modelin tahminini büyük bir görüntüye nasıl uygulayacağımı öğrendim. Çalışma, tıbbi tanı için doğrulanmış bir ürün değil.