Medikal Görüntülerde Bilgisayarlı Görü
Bilgisayarlı görüde medikal görüntüler ile çalışırken dikkat edilmesi gerekenler
“Bir şeyi yalnız tek bir yönden anlarsanız onu hiç anlamamışsınız demektir.” Marvin Minsky
Bu blog yazısının içeriği Sanayi ve Teknoloji Bakanlığı tarafından düzenlenen Açık Seminer dizisinin 20. gününde Derin Öğrenme ile Göğüs Röntgeni Görüntülerinde Tanı Önerisi Çalışması başlığı altında 14 Mayıs 2020'de sunulmuştur.
Farklı görüntü verileri işleyerek ve yapay öğrenme teknikleri kullanarak çeşitli problemlere çözümler üretmeye çalışıyoruz. Ancak unutulmamalı ki verilerin hangi alandan (domain) geldiği, probleme olan yaklaşımımızı bazen kısmen bazen tamamen değiştirmektedir. Öyle ki, klasik bir nesne sınıflandırma yapar gibi medikal görüntülerle çalışmanın ne kadar sorunu beraberinde getireceğini uzman olmayan kişiler kestiremeyebilir. Bu yazıda görüntü temelli sağlık verilerinde yapay öğrenme modelleri uygularken karşılaştığımız zorlukları aşmanın yöntemleri ve dikkat edilmesi gerekenleri anlatmaya çalışacağım. Ek olarak da sağlık verisi gibi hassas verilerde açıklanabilirlik ve mahremiyete ilişkin bir bakış açısı ile sizi başbaşa bırakacağım.
Görüntü Temelli Sağlık Verileri ve Evrişimli Sinir Ağları
Evrişimli sinir ağları temelleri ile çeşitli medikal görüntüler üzerine literatürde çok kıymetli çalışmalar bulabilirsiniz (örnek verilen tüm çalışmalar kaynaklar bölümünde listelenmiştir). Bu çalışmalarda deri hastalıkları, göz retina görüntülerinden diyabetik tanısı ya da mikroskop görüntülerinden belki türlü kan kanserleri teşhis edilebilmektedir.
Evrişimli sinir ağı temelleri için Derine Daha Derine başlıklı yazımdan da faydalanabilirsiniz.
2019 yılının Aralık ayında Çin’de ortaya çıkan ve 2020 yılının şimdilik ilk yarısına damgasını vuran, milyonlarca insanın yakalandığı COVID-19 salgını ile mücadele kapsamında göğüs X-ray görüntüleri bir çok sağlık personeli ve kurumunun tanı konmasında hızını artırmıştır. Çünkü hastalık zatürre benzeri semptomlar barındırmaktadır ve bunlar görüntüde kendini belli etmektedir. 2017 yılında National Health Institute tarafından 8 farklı göğüs hastalığının tanınması için de evrişim temelli derin öğrenme modeli önerilmiştir.
Amacımız etiketli veride etiket ile kestirim olasılığı arasındaki farkı hesaplamak, bu doğrultuda modeli güncellemek ve yeniden daha iyi bir kestirim yapmaktır. Bu çok tanıdık bir yöntem, o zaman klasik nesne sınıflandırma gibi düşünsek olmuyor mu? Olmuyor! O halde bakalım farklı olarak bu çalışmalarda nelere dikkat etmek gerekiyormuş.
🏋 Zorluklar ve Üstesinden Gelme Yöntemleri
Üç temel zorlukla başlayabiliriz. Sağlık verileri ile çalışırken karşımıza çıkacak önemli sorunlardan biri, verinin dengesiz (imbalanced) olmasıdır. Sağlıklı verilerin daha fazla, hastalıklı verilerin ise daha az olması (ya da tam tersi) durumudur.
Tabi bunu çözmenin yollarından en yaygın kullanılanları Ağırlıklandırılmış Yitim hesabı yapmak ya da daha az olan veriden kopyalayarak çoğaltmaya çalışmaktır.
Dengeli bir veri kümesinde yaptığımız gibi İkili Çapraz Entropi (Binary Cross Entropy) kullandığımızda hesapladığımız yitim değerleri ile modelimizi doğru şekilde güncelleyemeyiz. Bu yüzden örneklerin veri kümesi içindeki dağılımlarına göre ağırlıklandırarak bu hesabı gerçekleştirmeliyiz. Diğer bir ihtimal de veri kümesinde az olan verinin kopyalanarak çoğaltılması ki bu daha az tercih edilen bir yöntemdir.
Eğer ikiden fazla sınıfın yani etiketin olduğu durum varsa yine aynı şekilde ağırlıklandırılmış yitim hesabı yapılırken her bir etiket için bu işlem gerçekleştirilmelidir.
Diğer bir sorun da veri kümesi boyutunun az olmasıdır. Genelde nesne sınıflandırma gibi çalışmalarda böyle bir sorun yoktur. Konu sağlık verisi olunca işler değişiyor. Bu problemi çözmek için de temel iki yaklaşımı benimsemek uygun olur. Ama yine de dikkatlı olmalıyız! Önceden eğitilmiş model ile sağlık veri kümemizi eğiterek bir transfer öğrenme uygulaması yapabiliriz. Burada da sık yapılan bir hata, modelin son katmanlarında hatta bazen sadece sınıflandırma katmanından faydalanarak medikal bir görüntüyü sınıflandırmaya çalışmaktır. Oysa eğitilmiş modelin hangi tür ve domaindeki verilerle eğitildiği de çok önemlidir. Sizin veriniz ile model ön eğitiminde (pre-training) kullanılan verinin boyutları arasındaki ilişki de değerli bir kriterdir. Aşağıdaki şekilde de gördüğünüz gibi 4 farklı şekilde transfer öğrenme stratejisi benimseyebiliriz. Eğitilen modelin veri kümesi ile sağlık görüntüsünün benzerliği zayıftır. Elimizdeki X-ray görüntü büyüklüğümüz de azdır. Demek oluyor ki; aşağıdaki veri büyüklüğü-veri benzerliği grafiğinde sol alttaki gibi ilk katmanları farklı veri kümesinde eğitilmiş ancak modelin orta ve daha derin katmanlarında sağlık verileri ile eğitim yapılması gerekir.
Transfer öğrenme hakkında daha detaylı bilgiye buradan erişebilirsiniz.
Bu sorun için önerilen bir başka yöntem de veri artırmadır. Ancak yine nesne tanıma problemlerini ele aldığımız gibi davranamayız. Soldaki şekilde yukarda gördükleriniz uygun veri artırma yöntemidir. Ancak aşağıdaki gibi y ekseninde simetrisi alınan bir görüntüde kalbin yeri tamamen değişir ve bu nadir rastlanan bir hastalığın belirtisidir. Bu yüzden eğer bu şekilde bir çalışma yapıldıysa ya mutlaka çoğaltılmış olan verinin etiketi konusunda da hemfikir olması gerekir ya da güvenilir veri artırma yöntemleri uygulanmalıdır.
Veri artırma uygulamalı anlatımına buradan erişebilirsiniz.
📈 Değerlendirme Metrikleri
Tabiri caizse veri kümenizin çöp olmaması ve modelinizin başarımını doğru anlamlandırabilmeniz için hastanın çakışması, küme örnekleme stratejisi ve gerçek etiket kesinliği gibi 3 konuyu doğru şekilde ele almış olmanız gerekir.
Nesne tanıma problemlerinde aynı verilerin eğitim, test ve geçerleme (validation) kümelerinde olmamasına özen gösteririz. Sağlık verisinde bir hastanın birden fazla görüntüsü varsa bu görüntüler farklı mıdır yoksa aynı mıdır? Görüntülerin etiketleri değişmiş; yani kişi hastalanmış ya da iyileşmiş olsa da aynı kişiye ait bir veri hem eğitimde hem de test kümesinde olmamalıdır. Basit örüntüler evrişimli sinir ağları tarafından kolay öğrenilir ve kolay unutulmaz. Eğer böyle bir hata yapılırsa, test performansını yukarı çeken bir manipülasyon yapılmış olur ve bu hatanın literatürdeki adı aşırı-iyimser test seti performansıdır (over-optimistic test set performance) ve gerçeği yansıtmaz!
Pekala; eğitim ve geçerleme setlerini hasta IDlerine göre ayırdığımızı varsayalım ve test kümesindeki rastgele örneklerimizi test edelim. Biraz bekleyin! Yukardaki şekilde bir sorun daha var: hastalıklı görüntülerdeki veri dengesizliği sebebiyle genellikle test kümeniz normale (bias) yanlıdır. Bu da test kümesinden doğru bir performans değerlendirmesi yapılamamasına sebep olur. Bu yüzden nesne tanıma problemlerinden farklı olarak, önce test kümesi mümkün derecede sınıflandırılması istenen etiketli verilerden barındırdığına emin olarak düzenlenmelidir. Ardından geçerleme ve eğitim kümeleri uygun şekilde hazırlanmalıdır.
Gerçek etiketimizden şüphe duyduduğumuz durumlar olabilir. Örneğin; soldaki şekilde bir X-ray görüntüsü uzmanlara gösterildiğinde kimi zatürre kimi ise COVID-19 tanısı koyabilmektedir. O halde, biz bunu nasıl güvenilir şekilde etiketleyebiliriz? Uzmanların eş görüş veremediği durumda, uzman görüşlerinin ortalamaları bizim etiketimiz olarak atanabilir ya da bir grup uzmanın kendi arasında tartışıp tek bir görüş sunması istenebilir. Ancak bu şekilde görüş alarak bu sorunun önüne geçmek mümkün olabilir.
Diğer bir konu: başarım metriklerinin hesaplanmasıdır. Sağlık verilerinde çalışırken yalnızca klasik doğruluk (accuracy) hesabı yapmak yanıltıcı performans değerlendirmeleri yapılmasına sebep olabilir. Bu yüzden mutlaka gerçekten pozitif, yanlışlıkla pozitif, gerçekten negatif ve yanlışlıkla negatif olarak sınıflandırılan durumların ilişkilerine bakılarak çalışmayı değerlendirmek gerekir. Duyarlılık, özgünlük, pozitif görme ve negatif görme değerleri mutlaka hesaplanmalı ve tartışılmalıdır. Çünkü bir erkeğe hamile tanısını yanlışlıkla koyarsanız bir terslik olduğunu anlayabilirsiniz. Ancak kanser olmayan birisine kanser tanısı koyup tedavi uygulamak ya da COVID-19 olan bir kişiyi sağlıklı diyerek evine göndermek, kişilerin ve toplumun sağlığını tehdit eder.
✔️ Açıklanabilirlik
Derin öğrenme modelleri her ne kadar yüksek başarımlı sonuçlar veriyor olsalar da karmaşıklıkları dolayısıyla açıklanabilirlikleri tartışılmaktadır. Bu yüzden modelin aktivasyon ağırlıklarından elde edilen ısı haritaları (Grad-Cam) sayesinde elde edilen sonucu hesaplarken görüntünün hangi bölgelerindeki verilerin ağırlığının yüksek ve düşük olduğunu görselleştiriyoruz. Böylece gerçekten uzmanların gözlemlediği yerlerden bu sınıflandırmayı yapıyorsak; evet modelimiz bizim istediğimiz gibi çalışıyor diyebiliyoruz.
Açıklanabilirlikle ilgili blog yazıma buradan erişebilirsiniz.
🔐 Mahremiyet
Sağlık verilerinin (yalnızca sağlık verileri değil) üretilmesi, toplanması, kalitesi, paylaşımı ve işlenmesine ilişkin tüm adımlar aşağıdaki şekilde gösterilmektedir.
Verilerin anonimleştirilmesi bu bağlamda incelenmesi gereken konulardandır. Sağlık alanında uygulamaların güvenilirliğini artırmak için geliştirilen mahremiyet yaklaşımlarını araştırmanızı tavsiye edebilirim.
👾 Demo ve ek kaynaklar için👇🏻
yz-ai/acikseminer2020
Türkiye Açık Kaynak Platformunun organizasyonluğunda düzenlenen Açık Seminer serisinin Yapay Zekâ haftasında Açık…
github.com
🎬Sunum videosu için 👇🏻
🍎 Sağlık görüntülerini de içeren diğer yazılarımdan seçkiler:
Ölçeklendirme ile CNN Modelinin Doğruluk ve Verimliliğini Artırma: EfficientNet
Rethinking Model Scaling for Convolutional Neural Networks “Nasıl düşüneceğini bilmek, sadece ne düşüneceğini…
medium.com
Görüntü Bölütleme (Segmentasyon) için Derin Öğrenme: U-Net
“Hayatım bir dizi olay ve kaza gibi görünüyordu. Yine de arkama baktığımda bir örüntü görüyorum.” Benoit Mandelbrot
medium.com