Derin Öğrenme İle Beyin Tümörü Tespiti : U-Net

Bu yazımızda derin öğrenme yöntemini kullanarak beyin MR görüntülerinden tümörlü alanı tespit eden bir modeli tanıtacağız. Bu işlemi görüntü segmentasyonunda son yıllarda çok popüler olan U-Net modeli ile yapacağız. Bunun için öncelikle U-Net mimarisini ve kod yapısını detaylı olarak inceleyelim.

U-NET MİMARİSİ VE KOD YAPISI

U-Net modeli 2015 yılında Olaf Ronneberger, Phillip Fischer, ve Thomas Brox tarafından “U-Net: Convolutional Networks for Biomedical Image Segmentation” makalesi ile yayına sunuldu.

Şekil-1 : U-Net Mimarisi

U-Net adını Şekil-1’den de anlaşılacağı gibi mimarisinin “U” şeklinde olmasından alır. Model çok detaylı çalıştığı için genellikle biyomedikal ve savunma alanlarında kullanılır. Mimariyi kısaca özetlersek:

Modelin sol tarafı Encoder(Kodlayıcı) taraftır. Yani burada görüntünün “Ne” olduğu öğrenilir. Sağ tarafı ise Decoder(Kod çözücü) kısımdır. Burada da görüntünün “Nerede” olduğu öğrenilir. Mimarideki asıl detay, katmanların hem kendisiyle hem de karşı katmanla evrişim içinde olmasında saklıdır. Hadi bunu kodlarla beraber satır satır inceleyelim.

Şekil-2 : U-Net Encoder Tarafı

Şekil-2’de eğitim için modele 572x572x1 boyutlarında bir resim ekleniyor. Bu resim Encoder katmanında sürekli sıkıştırılıyor. Yani görüntünün boyutu her katmanda yarıya düşürülüyor (568->284). İç katmanlarda aktivasyon fonksiyonu olarak ‘Relu’ , Padding (Dolgu veya Piksel Ekleme olarak çevirebiliriz.) işlemi için ise ‘Same’ kullanılıyor. 572×572 input görüntünün ilk katmandaki işlemlerden sonra 568×568 piksele düşmesinin sebebi; uygulanan ‘Same’ işlemidir.

‘Same’ işleminden kısaca bahsedersek :

Şekil-3 : Padding (Dolgu) Stratejisi

Görüntünün kenar pikselleri Şekil-3’de görüldüğü gibi aynalama tekniği ile belirlenir. Yani model, sınır piksellerin üst ve yan tarafa doğru simetriğini alarak çevreler (Şekil-3’teki mavi kutu gibi). Böylece sınır pikselleri daha ayrıntılı bir şekilde belirlenmiş olur. Bu işlem sonunda her 3×3 erişim işlemi sonucunda 1 piksel kayıp olur. Şekil-1’deki veri 572×572 input olarak girmiş ancak ilk katmandaki 1. Padding işleminden sonra 570×570, 2. Padding işleminden sonra ise 568×568 piksele düşmüş. Bu düşüşler çıkış verisinin 388×388 piksele kadar düşmesine neden olmuş. Ancak bizi daha büyük kayıplardan koruyup sınır pikselleri daha rahat bulduğu için bu işlem sıklıkla tercih ediliyor. 

Görüntü 572×572 boyutla çıktığı serüvene ilk katmandan sonra 284×284 olarak devam ediyor. Bu yarılama işlemi MaxPooling(Maksimum havuzlama) sayesinde gerçekleşiyor. MaxPooling işlemi görüntüyü 2×2 bloklara ayırır ve bu bloklardaki maksimum pikseli alır. Böylece her bloktaki önemli özellikler korunur ve önemli olmayan bilgiler atılır. Yazının başında da belirttiğimiz gibi görüntü bu kısımda ‘Ne’ olduğunu öğrenmeye çalışır. MaxPooling işlemi bunu sağlar ancak görüntünün ‘Nerede’ olduğu bilgisini ihmal eder.

Şekil-4 : MaxPooling(Maksimum Havuzlama) İşlemi
Kaynak: https://www.quora.com/What-is-max-pooling-in-convolutional-neural-networks#

Bu işlemler 5 katman boyunca devam ediyor. Görüntünün boyutları 32×32 piksele kadar düşüyor. 5. Katmanda model artık sıkıştırma işlemini bırakıyor. Bu yüzden MaxPooling yapılmıyor ve sadece aktivasyon fonksiyonu kullanılarak padding işlemi yapılıyor. Burdan sonra Decoder işlemine dönüşüyor.

Şekil-5 : U-Net Decoder Tarafı

Decoder işleminde görüntü artık genişlemeye başlıyor. Burada görüntünün boyu tekrar 2 katına çıkarılarak UpConv işlemi yapılıyor. Yazımızın başında da ifade ettiğimiz gibi modelin asıl detayı bu kısımda ortaya çıkıyor. Çünkü decoder tarafındaki her katman encoder tarafında karşılık geldiği katmanla birleştiriliyor. Mesela 6. Katman 4. Katmanla birleştiriliyor (Concatenate). Yani 6.katmandaki görüntünün yarısı 5.katmandan gelen görüntünün UpConv işleminden doğan görüntü iken diğer yarısı 4.katmandan gelen görüntüdür. Bu işlem 7 , 8 ve 9. Katmanda aynı şekilde uygulanarak görüntü açılıyor. Ancak buradaki Concatenate işlemi görüntünün 4 boyut olarak çıkmasına neden oluyor. Bu nedenle U-Net’e girecek veri: Boy, en ve kanal sayısı olmak üzere 3 boyuta sahip olması gerekir. Optimizer olarak Adam , metrics olarak ise Dice coefficient en iyi sonuçları veriyor. Bunlar opsiyoneldir. Ancak makale yazarları giriş de çıkış da resim olacağı için Dice coefficient parametresinin en iyi sonucu vereceğini söylüyorlar.

Yazının başında da söylediğimiz gibi U-Net ağır bir modeldir. Yazdığımız bu kodun özetine bakarsak 2 milyona yakın parametrenin hesaplandığını görürüz.

Şekil-6 : Modelin Özeti

Bu çok ciddi bir sayıdır ve modelin çok detaylı hesap yaptığını gösterir.

Modeli tanıtan makalede diğer modellerle kıyaslama açısından EM verileri ile bir eğitim yapılmış ve çıkan sonuç ile (0.000353 Warping Error oranı) bu alanda en iyi başarıyı yakalayan model olmuştur.

Şekil 7 : Modelin EM Verileri ile Eğitim Sonucu

Üstelik bu oran sadece 10 saatlik bir eğitim sonucunda elde edilmiş. Ve referans alınan CNN modeline göre çok iyi bir sonuç elde edilmiş.

Şekil-8: U-Net ‘in Başarı Sırası

Şekil-8’de görüldüğü gibi U-Net EM verilerinde en iyi başarıyı yakalayan model. DIVE-SCI ile arasındaki fark çok ufak olsa da diğer modellerle arasında ciddi bir fark var.

Model az veriyle bile çok başarılı sonuçlar verdiği için (Yazının genelinde de bahsettiğimiz gibi), basit inputlar için 4. ve 6. Katmanlar çoğu zaman kullanılmıyor. Böylece hem programın ağırlaşması önleniyor hem de sonuçta çok değişiklik olmuyor.

BEYİN TÜMÖRÜ TESPİTİ

Uygulama kısmında Perelman Tıp Fakültesinin düzenlediği Multimodal Brain Tumor Segmentation Challenge 2020 adlı yarışmayı U-Net modeli ile yapacağız. Veri setine https://www.med.upenn.edu/cbica/brats2020/data.html adresinden ulaşabilirsiniz. Uygulamanın amacı, beyindeki tümörleri yapay zeka ile tespit eden bir algoritma oluşturmaktır. Veri seti beynin 3 Boyutlu olarak çekilmiş MR görüntülerinden oluşmaktadır. Bu görüntüler Flair ,T1ce , T2 , T1 ve radyolog tarafından segmente edilmiş tümör bölgesinin bulunduğu görüntülerdir. Veri setinin görselleştirilmiş hali Şekil-9’da verilmiştir.

Şekil-9 : Veri Seti

Uygulamanın ilk bölümünde veri setinde bulunan segmente görüntüleri ile Flair ve T1 görüntülerinin üst üste çakıştırılmasından el edilen görüntüleri eğitimine sokalım. Bunu yapmamızın sebebi ; Flair ve T2 görünütüleri birbirinin tam zıttı veriler. Bu yüzden birbirini tamamlıyor ve bu şekilde daha iyi sonuç veriyor.

Şekil-10 : Beynin Flair + T2 Görüntüsü

Şekil-10’daki görüntü ile radyoloğun segmente ettiği tümör görüntüsünü U-Net’e sokarak modeli eğitelim ve daha sonra modelden aynı görüntü için tahmin alalım.

Şekil-11 : U-Net’in Segmente Tümör Görüntüleri için Yaptığı Tahmin

Veriler çok ağır olduğu için bir kısmı kesilerek eğitilmiştir. Epoch değeri ise 10 olarak belirlenmiştir. Dice coefficient değeri 0.9042 olarak bulunmuştur. Şekil-11’de Beynin Flair+T2 görüntüsü , radyoloğun segmente ettiği alan ve modelin bu tümörlü alan için tahmini görülmektedir. Az veriye rağmen modelin tahminleri iyi denilecek orandadır. Daha fazla veri ve Epoch değeri ile model çok daha başarılı sonuçlar bulacaktır.

Uygulamanın 2. Kısmında ise segmente tümör bölgesinin içindeki tam tümör alanı , nekroz alanı , ödemsiz alan , ve genişleyen tümör alanını tek tek eğitime sokarak modelin bu alanları da öğrenmesini sağlayacağız.

Şekil-12 : Tam Tümör Alanı , Nekroz Alanı , Ödemsiz Alan , Genişleyen Tümör Alanı

Radyolog segmente alanın içindeki bölgelere tek tek etiket vererek bu alanların tespitini sağlıyor. Segmente görüntü içinde 1 olarak işaretlediği alanları ‘Tam tümör alanı’ , 2 olarak işaretlediği alanları ‘Nekroz alan’ , 3 olarak işaretlediği alanları ‘Ödemsiz alan’ , 4 olarak işaretlediği alanları ise ‘Genişleyen Tümör alanı’ olarak belirliyor. Bu görüntüleri T1ce görüntüleri ile eğitime sokarak çıkan sonucu inceleyeceğiz. Nekroz görüntüleri çok küçük olduğu için bu görüntüleri direkt eğitime sokmak yerine genişleyen tümör ve ödemsiz alan görüntülerini eğitime sokup bunları birbirine ekleyerek nekroz görüntülerini elde edebiliriz.

Şekil-13 : Modelin Nekroz Alan ve Genişleyen Tümör Alanı İçin Tahminleri

Veriler yine 10 Epoch değeri ile eğitildi. Dice coefficient değerleri sırası ile 0.9555 ve 0.9196 olarak bulundu. Şekil-13’te U-Net’in yine çok iyi tahminler yaptığını görebiliriz. Genişleyen tümör görüntüsünün iç kısmında bulunan küçük Nekroz alanı bile başarılı bir şekilde tahmin edebiliyor.

Uygulamanın son bölümü olan 3. Kısımda ise bulduğumuz bütün tahminleri üst üste ekleyerek beyindeki tam tümör alanını , nekroz alanı , genişleyen tümör alanını ve ödemsiz alanı görelim.

Şekil-14 : Modelin Son Tahminleri

Şekil-14’te U-Net’in kısıtlı veri ile çok iyi sonuçlar verdiğini görebiliriz.

Bir radyolog bu beyindeki tümör alanını belirlemek için yaklaşık 10 dakika zaman harcar. Ancak U-Net Modeli ile 10 dakikada binlerce tümörü tespit edip bunları gruplandırabiliriz.

Kaynaklar

U-Net: Convolutional Networks for Biomedical Image Segmentation

5 Minute Teaser Presentation of the U-net

Kaynak U-Net Kodları

Grafik Sinir Ağları ve GNN Uygulamaları – Bilmeniz Gereken Her Şey

Göğüs radyografisi görüntülerinden web tabanlı Covid-19 tespiti

One thought on “Derin Öğrenme İle Beyin Tümörü Tespiti : U-Net

Comments are closed.