Projemizde, bilgisayarlı görü teknikleri kullanarak mamografi görüntülerinde kitle ve kalsifikasyon tespiti yapmayı ve BI-RADS (1, 2, 4, 5) kategorilerini tahmin etmeyi başardık. Mamografi radyoloji raporlarından varlık ismi çıkarımı (Named Entity Recognition) gerçekleştirerek, raporlardaki önemli tıbbi terimleri otomatik olarak tanımladık. Ayrıca, bu raporlardan BI-RADS kategorilerini doğru bir şekilde tahmin eden modeller geliştirdik. Bu yaklaşımlar ile mamografi değerlendirmelerinin hızını ve tutarlılığını artırarak sağlık profesyonellerine teşhis ve tedavi süreçlerinde önemli bir destek sağlamayı hedefliyoruz.
- Görüntü Ön İşleme Adımları
- BI-RADS Sınıflandırma
- Kitle ve Kalsfikasyon Tespiti
- Varlık İsmi Çıkarımı(NER)
- BIRADS Kategori Tahmini (TEXT CLASFFICATION)
- Dicom to PNG
Veri kümesi boyutu 70 GB idi. Daha sonra, DICOM formatındaki veriler Pydicom kütüphanesi kullanılarak PNG formatına dönüştürüldü ve böylece işlenmesi daha kolay hale geldi.
- Siyah ve Beyaz Görüntüleri Ayarlama
Görüntüler DICOM'dan PNG'ye dönüştürüldükten sonra, bazıları beyaz modda dönüştürülürken diğerleri siyah moddaydı. Bu karışıklığı gidermek için tüm görüntülerin ya beyaz ya da siyah modda olması gerekir. Tıbbi görüntülemede genellikle siyah mod tercih edildiği için siyah mod seçilmiştir.
- Görüntü Kırpma
Görüntü kırpma işlemi, MakeSenseAI platformunda nesne algılama modelini (YOLOv8s) eğitmek için meme bölgeleri etiketlenerek manuel olarak gerçekleştirilmiştir. Etiketlenen veriler modeli eğitmek için kullanılmış ve daha sonra yerel bilgisayara indirilmiştir. Daha sonra, meme bölgeleri için sınırlayıcı kutu bilgileri elde edilmiş ve görüntüler bu alanlardan kırpılmıştır.
- Yeniden Boyutlandırma
Görüntüler 512x512 olarak yeniden boyutlandırılarak, sinir ağlarının giriş katmanındaki nöron sayısı sabit tutulmuştur.
BIRADS için YOLO sınıflandırma modellerinden biri kullanılmıştır. YOLO öncelikle nesne tespiti için bilinmesine rağmen, geleneksel sinir ağı mimarisi nedeniyle sınıflandırma yapma kabiliyetine de sahiptir.
Kitleler ve kalsifikasyonlar için görüntüler önce kırpılmış ve modele (YOLOv10x) beslenmiştir. Ardından görüntüler basitçe yeniden boyutlandırılarak modele sunulmuş ve BIRADS modelinin aksine doğrulukta bir fark gözlenmemiştir. Bu nedenle test sırasında karmaşıklığı ve hata oranlarını azaltmak için görüntüler sadece yeniden boyutlandırılarak modele sunulmuştur.
Etiketler şunları ifade etmektedir;
-
ANAT: Anatomik bir kısım, lokalizasyon, histolojik antite, anatomik dağılım ifadeleri, taraf bulgusu
-
OBS-PRESENT: Radyolojik bir özelliğin varlığının olma durumu, tanımlanabilir patofizyolojik süreç, veya tanısal hastalık olma durumu, bir bulgunun olma durumu, normal bir sürecin olma durumu
-
OBS-ABSENT: Radyolojik bir özelliğin bulunmaması, tanımlanabilir patofizyolojik süreç, veya tanısal hastalık olmama durumu, bir bulgunun olmama durumu
-
OBS-UNCERTAIN: Şüphe var ama bir konuda kesinlik yok, belirsizlik içeren bir bulgu, ayırıcı tanı, belirsiz net olmayan patofizyolojik süreç veya teşhis hastalık
Aşağıdaki kod parçasını çalıştırarak gerekli olan bütün kütüphaneleri indirin
pip install -r ner_requirements.txt
JSONL formatında alınan veriler dataframe (csv) ve Conll formatına çevrilir .
Gerekli Preprocessing kodlarına NER_Preprocessing.py
Örnek Dataframe:
sentence_id | word | label |
---|---|---|
0 | BİLATERAL | O |
0 | MAMOGRAFİ | O |
0 | İNCELEMESİ | O |
0 | Her | O |
0 | iki | ANAT |
Örnek conll
Meme O
parankimi O
heterojen O
yoğun O
olduğu O
için O
küçük O
boyutlu OBS-PRESENT
lezyonlar OBS-PRESENT
mamografide OBS-PRESENT
saptanamayabilir OBS-PRESENT
Üretilen ve etiketlenen veriler ön işleme adımlarından geçirilerek SpaCy, CRF, LSTM ve bert-base-turkish-ner-cased modelleri eğitildi. BERT modeli, diğer modellere göre sekans bazlı verilerde üstün performans sergileyerek karmaşık ilişkileri daha etkili bir şekilde işleyebilme yeteneğiyle öne çıktı. Türkçe metinlerdeki dil yapısını anlama ve uzun dönem bağımlılıkları yönetme konusundaki başarısı, BERT modelinin seçilmesinde etkili oldu. Ayrıca, BERT'ün sürekli olarak geliştirilen ve geniş kullanıcı kitlesi tarafından benimsenen bir model olması, güvenilirliğini ve etkinliğini pekiştirdi
Model çıktıları:
Model Adı | Doğruluk (Acc) | macro avg |
---|---|---|
CRF | %80 | %75 |
SpaCy | %75,9 | %72,3 |
LSTM | %95,3 | %84,3 |
BERT Base NER Turkish Cased | %92 | %86 |
Mamografi raporlarından BIRADS sınıflarını tahmin eden bir yapay zeka modeli geliştirildi .Bu model, raporları analiz ederek BIRADS 1, 2, 3, 4, ve 5 kategorilerine sınıflandırma yapabiliyor.Amacımız, doktorlara destek olarak, meme kanseri risk seviyelerinin belirlenmesine katkı sağlamak ve erken teşhis süreçlerinde daha hızlı ve güvenilir sonuçlar elde edilmesine yardımcı olmaktır.
Kategoriler :
-
BIRADS 1 (Negatif): Meme dokusu tamamen normaldir. Görüntülemede hiçbir anormal bulgu, kitle, kireçlenme veya lezyon tespit edilmemiştir. Bu durumda, hastanın mamografisi tamamen temiz olarak değerlendirilir.
-
BIRADS 2 (Benign): Meme dokusunda, kansersiz ve tamamen iyi huylu bir durum tespit edilmiştir. Örneğin, bir kist, fibrokistik değişiklikler, veya iyi huylu bir kireçlenme gibi bulgular görülebilir. Bu tür bulgular, kansere işaret etmez ve genellikle tedavi veya takip gerektirmez.
-
BIRADS 3 (Muhtemelen Benign): Küçük bir olasılıkla kötü huylu olabilecek bir bulgu tespit edilmiştir. Genellikle 6 ay sonra tekrar kontrol edilmesi önerilir.
-
BIRADS 4 (Şüpheli Malignite): Kötü huylu, yani kanser olma olasılığı olan bir bulgu mevcuttur. Bu durum genellikle biyopsi gibi ileri tetkikler gerektirir. BIRADS 4, kendi içinde kanser olasılığına göre 4A (düşük), 4B (orta), ve 4C (yüksek) olarak alt kategorilere ayrılabilir.
-
BIRADS 5 (Yüksek Olasılıkla Malignite): Kanser olma olasılığı çok yüksektir. Bu durumda acil biyopsi ve tedavi gereklidir.
pip install -r tc-requirements.txt
Bu Python scripti, mamografi raporları içeren bir veri setini işleyerek BIRADS sınıflarını tahmin edebilen bir makine öğrenmesi modeli için veri hazırlamak amacıyla tasarlanmıştır. Script şu işlemleri gerçekleştirir:
1 - Veri Setinin Gezinmesi: Ana dizin altında bulunan alt klasörlerdeki metin dosyalarını (mamografi raporları) rekürsif olarak tarar.
2 - BIRADS Skorlarının tespit edilmesi : Metin dosyalarında "BIRADS" veya "SONUÇ" gibi anahtar kelimeler aranarak raporların BIRADS skorları tespit edilir ve csv dosyasına dosya adı ile beraber ait oldupu sınıf kaydedilir .
3 - Skorların Normalizasyonu: Çıkarılan BIRADS skorları, tutarlılık sağlamak amacıyla normalize edilir. Bu işlem, raporda farklı şekillerde yazılmış (örneğin "BIRADS 4", "BIRADS Düzey 4" gibi) BIRADS skorlarının, standart bir formatta sunulmasını sağlar. Script, metin içerisindeki sayıları algılar ve sadece skoru temsil eden numarayı alarak diğer gereksiz karakterleri temizler. Bu sayede, modelin eğitiminde kullanılacak verilerdeki BIRADS skorları tekdüze hale getirilmiş olur.
4 - Metin Verisinin Temizlenmesi: BIRADS skorları tespit edildikten sonra, bu skorların bulunduğu satırlar metin dosyasından kaldırılır. Bu işlem, raporun kalan kısmını temizleyerek, eğitime uygun hale getirilmesini sağlar. Böylece, modelin yalnızca raporun geri kalan kısmından öğrenme yapması sağlanır, bu da modelin daha doğru tahminler yapmasına katkıda bulunur.
5 - Veri Hazırlığı: Çıkarılan skorlar ve ilgili dosya adlarını ve içeriklerini bir csv dosyası halinde derleyerek, model eğitimi veya daha ileri işleme için hazır hale getirir.
Örnek Dataset:
Content | BIRADS SCORE |
---|---|
BİLATERAL MAMOGRAFİ İNCELEMESİ:\nMeme parankim... | 1 |
BİLATERAL MAMOGRAFİ İNCELEMESİ\nMeme paterni:T... | 3 |
Her iki memeye yönelik Mammografi İncelemesi,... | 5 |
BİLATERAL MAMOGRAFİ İNCELEMESİ:\nCilt-cilt alt... | 4 |
Grafik incelendiğinde BIRADS 1 kategorisine ait yetersiz veri olduğu tespit edilmiştir . Bu durum veri dengesizliğine yol açmakta ve Modelin BIRADS1 kategorisine ait verilerde kötü sonuçlar doğurmasına sebep olmuştur .
Bi önceki bölümde bahsedilen Veri dengesizliği sorununa çözüm olarak veri arttırımı yöntemi geliştirilmiştir .
Bu yöntemde amaç Gemini 1.5 Flash modeli kullanılarak 1 tane rapordan 4 tane yeni rapor üretmektir . Projede kullanılan yöntem, prompt tabanlıdır ve bu prompt başka kategoriler (labeller) için de uygulanabilir.
Kullanılan Gemini 1.5 Flash modeli için ücretsiz olarak buradan API KEY alabilirsiniz . Bu kodu çalıştırmadan önce kendi API KEY girmeyi unutmayın
genai.configure(api_key="WRİTE_YOUR_OWN_API_KEY") # Add your API_KEY
model = genai.GenerativeModel('gemini-1.5-flash', safety_settings=safety_settings)
Aşağıda veri artırımı işlemini gerçekleştirmek için yazılan promptu, çoğaltmak istediğiniz sınıfa göre ayarlayınız.
response = model.generate_content("""
Sen bir yapay zeka modelisin ve verilen Türkçe memeografi raporunu genel anlam ve kelime anlamı açısından analiz eden bir sentetik veri üreticisisin.
Bu rapor, BIRADS 1 kategorisine aittir ve normal, herhangi bir malignite belirtisi olmayan bulgular içermektedir.
Aşağıda verilen raporu analiz et ve anla. Anlamını anladıktan sonra, bu raporu hazırlayan bir doktorun aynı BIRADS 1 kategorisinde benzer raporları nasıl yazmış olabileceğini düşün. Bu doğrultuda, orijinal raporun uzunluğuna yakın ve tıbbi doğruluğa sahip 4 adet yeni rapor üret.
Sadece aşağıdaki Python liste formatında yaz. Başka hiçbir şey yazma:
Çıktı formatı: ["<rapor1>", "<rapor2>", "<rapor3>", "<rapor4>"]
\n\n
Orijinal Rapor: """ + sentence)
Veri setini genişletmek ve model performansını artırmak amacıyla çeşitli veri artırma (Data Augmen tation) teknikleri uygulanmıştır. Karakter değişimi, karakter silme, karakter ekleme ve eşanlamlı değiştirme gibi yöntemler kullanılmıştır. Karakter değişimi ile metindeki belirli karakterler farklı karak terlerle değiştirilirken, karakter silme yöntemiyle belirli karakterler silinerek veri setinde çeşitlilik sağlanmıştır. Karakter ekleme ile metne ekstra karakterler eklenmiş ve eşanlamlı değiştirme ile be lirli kelimeler eşanlamlılarıyla değiştirilmiştir. Bu teknikler, modelin küçük yazım hatalarına, farklı karakter varyasyonlarına, eksik veya hatalı karakter içeren verilerle, fazladan karakter içeren ver ilerle ve farklı kelime kullanımlarıyla başa çıkma yeteneğini artırarak dayanıklılığını ve genelleme yeteneğini güçlendirmiştir. Bu teknikler, modelin daha geniş bir veri senaryosu yelpazesiyle eğitilme sine ve test edilmesine olanak tanıyarak, gerçek dünya verilerindeki varyasyonlara karşı daha esnek ve güvenilir olmasını sağlamıştır.
Gerekli kodlara Augmentation.py
Orjinal Metin
Bu örnek metin, karakter düzeyinde veri çoğaltma yöntemlerini göstermektedir.
# Define all the augmentation methods
def character_swap(text, swap_prob=0.1):
text_chars = list(text)
for i in range(len(text_chars) - 1):
if random.random() < swap_prob:
text_chars[i], text_chars[i + 1] = text_chars[i + 1], text_chars[i]
return ''.join(text_chars)
def character_replacement(text, replace_prob=0.1):
text_chars = list(text)
for i in range(len(text_chars)):
if random.random() < replace_prob:
text_chars[i] = random.choice('abcdefghijklmnoprstuvyzABCDEFGHIJKLMNOPRSTUVYZ')
return ''.join(text_chars)
def character_deletion(text, delete_prob=0.1):
text_chars = list(text)
new_text_chars = [ch for ch in text_chars if random.random() > delete_prob]
return ''.join(new_text_chars)
def character_insertion(text, insert_prob=0.1):
text_chars = list(text)
new_text_chars = []
for ch in text_chars:
new_text_chars.append(ch)
if random.random() < insert_prob:
new_text_chars.append(random.choice('abcdefghijklmnoprstuvyzABCDEFGHIJKLMNOPRSTUVYZ'))
return ''.join(new_text_chars)
Model çıktıları:
Model Adı | Doğruluk (Acc) | macro avg |
---|---|---|
Logistic Regression | %91 | %79 |
Naive Bayes | %80 | %64 |
XGboost | %96 | %86 |
LSTM | %95 | %90 |
BERT | %99 | %99 |
tranformers-interpret kütüphanesi kullanılmıştır . Bu sayede çıktıdaki kelimelerin hedef etiket ile nasıl bir korelasyona sahip olduğu görülmektedir.
BIRADS1