NVIDIA VISTA-3D NIM Mikroservisi Kullanılarak Bilgisayarlı Tomografi Organ ve Hastalık Segmentasyonu
Dünya çapında 300 milyondan fazla bilgisayarlı tomografi (BT) taraması gerçekleştiriliyor, bunların 85 milyonu yalnızca ABD’de. Radyologlar iş akışlarını hızlandırmanın ve doğru raporlar üretmenin yollarını arıyorlar, bu nedenle tüm organları ve hastalıkları segmentlere ayırmak için bir temel modele sahip olmak faydalı olacaktır. İdeal olarak, bu modeli üretimde ölçekte çalıştırmak için optimize edilmiş bir yolunuz olurdu.
NVIDIA Research, tüm vücut BT görüntülerini segmentlemek için yeni bir temel model oluşturdu ve bunu dağıtımda ölçeklenebilen son derece optimize edilmiş bir kapsayıcıya paketledi. Bu gönderide, VISTA-3D temel modelini tartışıyoruz, NVIDIA NIMve modeli verileriniz üzerinde nasıl çalıştıracağınızı öğrenin.
VISTA-3D
Vizyon temel modelleri giderek daha fazla ilgi görüyor. Tıbbi görüntü analizi bağlamında, bu modelleri özellikle pratik kılan iki temel özellik:
- Yaygın görevler için hızlı ve kesin çıkarım
- Yeni görevlere etkili adaptasyon veya sıfır atış yeteneği
NVIDIA, 3D BT segmentasyonuna odaklanıyor ve yakın zamanda geliştirildi VISTA-3D (Çok Yönlü Görüntüleme Segmentasyonu ve Açıklaması)). Model, 127 tip insan anatomik yapısı ve çeşitli lezyonları (akciğer nodülleri, karaciğer tümörleri, pankreas tümörleri, kolon tümörleri, kemik lezyonları ve böbrek tümörleri) kapsayan 12 binden fazla cilt üzerinde sistematik olarak eğitilmiştir.
Hem doğru kullanıma hazır segmentasyon hem de son teknoloji, sıfır atışlı etkileşimli segmentasyon sağlar. Yeni model tasarımı ve eğitim tarifi, çok yönlü bir tıbbi görüntü temel modeli geliştirmeye yönelik umut verici bir adımı temsil eder.
VISTA-3D, semantik segmentasyonu etkileşimle birleştiren, tıbbi görüntüleme için çeşitli anatomik alanlarda yüksek doğruluk ve uyarlanabilirlik sunan, alan-özel etkileşimli bir temel modeldir. Aşağıdaki temel iş akışlarına sahiptir:
- Her şeyi parçalara ayır: Birden fazla organı etkileyen karmaşık hastalıkların anlaşılması ve bütünsel tedavi planlaması için hayati önem taşıyan tüm vücudun keşfedilmesini sağlar.
- Sınıf kullanarak segment: Kritik organlarda tümör tanımlaması gibi hedeflenen hastalık analizi veya organ haritalaması için gerekli olan belirli sınıflara dayalı ayrıntılı kesit görünümleri sağlar.
- Segment noktası istemleri: Kullanıcı tarafından yönlendirilen, tıklama tabanlı seçim yoluyla segmentasyon hassasiyetini artırır. Bu etkileşimli yaklaşım, tıbbi görüntüleme analizinde önemli olan doğru zemin gerçeği verilerinin oluşturulmasını hızlandırır.
Şekil 1, bir kodlayıcı katmanının ardından paralel iki kod çözücü katmanının geldiği VISTA-3D mimarisinin üst düzey bir diyagramını göstermektedir. Bir kod çözücü otomatik segmentasyon içinken diğer kod çözücü nokta istemi içindir.
Her kafa, segmentasyonu yönlendirmek için kullanıcı tarafından sınıf istemleri veya nokta tıklamaları olarak karşılık gelen girdiyi alır. Her kafa ayrıca kendi segmentasyon sonuçlarını verir ve bunlar daha sonra birleştirme algoritması kullanılarak nihai segmentasyon sonucuna birleştirilir.
Mimari hakkında daha fazla bilgi için bkz. VISTA3D: 3D Bilgisayarlı Tomografi için Çok Yönlü Görüntüleme Segmentasyonu ve Açıklama modeli Araştırma kağıdı.
VISTA-3D NIM mikro servisi
Tüm NVIDIA NIM mikro hizmetleri şurada barındırılmaktadır: NVIDIA API Kataloğu Farklı mikroservisleri test etmeniz ve yeteneklerini keşfetmeniz için.
VISTA-3D’yi aşağıda bulabilirsiniz Sağlık hizmetive örnek verilerle test edin. Test veri setini aksiyel ve koronal veya sagital görünümde görüntüleyin. VISTA-3D 100’den fazla organı segmentlere ayırabilir veya ilgi duyduğunuz belirli sınıfları seçebilirsiniz.
NVIDIA tarafından barındırılan NIM mikro hizmetlerini kullanma
NVIDIA tarafından barındırılan NIM mikroservisini kullanarak verileriniz üzerinde VISTA-3D çalıştırabilirsiniz. Kaydolun kişisel bir anahtar alNVIDIA, kullanıcılarına NIM mikro servislerinden herhangi birini denemeleri için 1000 ücretsiz kredi veriyor.
Kişisel anahtarınıza bir ad ve bir son kullanma tarihi verin. AI Temel Modelleri ve Son Noktalarıdahil edilen hizmetlerde. Bu anahtarı tüm API çağrıları için kullanırsınız. Daha fazla bilgi için bkz. İsteğe bağlı olarak bir NGC Anahtarı Oluşturun.
Kredilerinizi kontrol etmek için şuraya giriş yapın: NVIDIA API Kataloğu ve profilinizi kontrol edin. Kredileriniz sağ üstte listelenmiştir.
İlk VISTA-3D NIM mikro servis çağrınızı test etmek için, en sevdiğiniz dilin (kabuk betiği, Python veya Node.JS) kodunu kopyalayın ve yakın zamanda oluşturulan API_KEY
NVIDIA AI çözüm sayfasında kullandığınız aynı örnekte çıkarım çalıştırmak için değer, Python’daki aşağıdaki örneğe benzer.
import requests
invoke_url = "https://health.api.nvidia.com/v1/medicalimaging/nvidia/vista-3d"
headers = {"Authorization": "Bearer <place you key here it should start with nvapi-> ",}
filename="example-1"
payload = {
"image": f"https://assets.ngc.nvidia.com/products/api-catalog/vista3d/{filename}.nii.gz",
"output": {"extension": ".nii.gz","dtype": "uint8"}}
session = requests.Session()
response = session.post(invoke_url, headers=headers, json=payload)
response.raise_for_status()
file_name=f"{filename}_seg.nii.gz"
with open(file_name, "wb") as file:
file.write(response.content)
print("File downloaded successfully!")
Tebrikler, örnek veriler üzerinde ilk VISTA-3D NIM mikro servis çağrınızı çalıştırdınız. Bu ayrıca şunu da doğrular: API_KEY
değer çalışıyor ve yeterli krediniz var, artık kendi verilerinizle test etmeye hazırsınız.
Her çıkarım çağrısı bir kredi kullanır ve kredileriniz tüm NIM mikro servisleri arasında paylaşılır.
Verilerinizle VISTA-3D’yi çalıştırma
VISTA-3D çıkarımını kendi verilerinizde görmek için, tıbbi görüntülerinizi sunacak bir FTP sunucusu ayarlamanız gerekir.
Sıkıştırılabilir küçük bir metin yükü alan LLM modellerinin aksine, tıbbi görüntüler genellikle büyüktür. API yükünde büyük görüntüler göndermek yerine, görüntü URL’sini FTP sunucusuna gönderirsiniz. VISTA-3D NIM mikro hizmeti daha sonra görüntüleri FTP sunucusundan indirir ve çıkarım sonucunu geri göndermeden önce çıkarım çalıştırır (Şekil 2).
Dosyaları GitHub’da paylaşın
Örnek verileri paylaşmanın en basit ve en hızlı yolu GitHub’ı kullanmaktır:
- GitHub hesabınıza giriş yapın.
- Yeni bir proje oluşturun ve bunun herkese açık olduğundan emin olun.
- Seçmek Dosya yüklemeve .nii veya .nii.gz uzantılı bazı NIfTI dosyaları yükleyin. Her birinin boyutunun <25 MB olduğundan emin olun.
- NIfTI dosyanızı seçin, sağ tıklayın Çiğve sonra seçin Bağlantı adresini kopyala.
Sonuçta ortaya çıkan URL aşağıdaki örneğe benzer olmalıdır:
https://github.com/<your_user_name>/Nifti_samples/raw/main/filename.nii.gz
Artık önceki kod örneğindeki URL’yi dosyanıza yönlendirecek şekilde değiştirebilirsiniz ve VISTA-3D onu indirir.
payload = {
"image": f"https://github.com/<your_user_name>/Nifti_samples/raw/main/filename.nii.gz",
"output": {"extension": ".nii.gz","dtype": "uint8"}}
Örnek verilerinizi bulutta paylaşın
Bulutta zaten biraz veriniz varsa, VISTA-3D’yi test etmek için az sayıda NIfTI görüntüsü açığa çıkarabilirsiniz. Bu durumda, yerel dosya sistemi dizininizden basit bir NGINX sunucusu veya basit bir Python HTTP sunucusu başlatın. Bu, NVIDIA tarafından barındırılan VISTA-3D mikro servisinin verileri indirebilmesi için herkese açık bir sunucu veya bağlantı noktası olmalıdır.
Öncelikle SSH kullanarak sunucuya bağlanın, bazı örnek verileri taşıyın ve ardından basit bir Python HTTP dosya sunucusu başlatın:
python -m http.server <port>
Dosyalara bir tarayıcı kullanarak erişebilmelisiniz htttp://serverIP:port/
.
Daha önce oluşturduğunuz FTP sunucusuna bağlanın ve satırları HTTP sunucunuzu gösterecek şekilde değiştirin.
filename="<file_on_http"
payload = {
"image": f"http://<your server ip:port /{filename}.nii.gz",
Görüntü dosyasını indirmek için NIM isteğine HTTP dosya sunucusunun yanıt verdiğini görmeniz ve ardından çıkarım sonucunu almanız gerekir.
NIM mikro servislerini yerel olarak çalıştırma
NIM mikro hizmetlerini yerel olarak çalıştırmaya başlamak için, NVIDIA NIM erişimi için başvuruda bulunun. Başvurunuzu yaptıktan sonra NVIDIA ekibi sizinle iletişime geçerek bir katılım toplantısı planlayacaktır. Bir NVAIE lisansına veya deneme lisansına ihtiyacınız olacak ancak lisans başvurusunda bulunmadan önce talimatları beklemeniz önemlidir.
Bu adımları tamamladıktan ve onay aldıktan sonra, VISTA-3D NIM mikro servisi Docker konteynerine erişim kazanacaksınız. Bu, mikro servisi yerel olarak veya bulutta tercih ettiğiniz donanımda çalıştırmanızı sağlar.
Aşağıdaki bölümlerde, hızlı bir şekilde çalışmaya başlamanıza yardımcı olmak için Docker Compose kullanan bir örnek kurulumu gösteriyoruz.
Ön koşullar
Docker, Docker Compose ve NVIDIA sürücülerinin yüklü olması gerekir. Kontrol etmek için, en son CUDA sürümünün küçük bir görüntüsünü çeken, Docker konteynerini başlatan ve ardından konteynerin içinden GPU’ya erişebildiğinizi kontrol eden aşağıdaki komutu çalıştırın.
docker run --rm --gpus all nvidia/cuda: 12.5.0-base-ubuntu20.04 nvidia-smi
Sisteminizde bulunan GPU’ları gösteren bir çıktı görmelisiniz.
Docker Compose dosyası
Docker Compose kod örneği iki kapsayıcıyı başlatır:
nim-vista
çıkarım yapmaknim-nginx
Resimlerinizi sunmak için
# docker-compose.yml
version: "3.9"
services:
nim:
container_name: nim-vista
image: nvcr.io/nvidia/nim/medical_imaging_vista3d:24.03
ports:
- 8008:8008
##############################
nginx:
container_name: nim-nginx
image: nginx:1.19-alpine-perl
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- <local/folder/containing/nifti/files>:/files
ports:
- 8009:8009
Dizini şu şekilde değiştirin: <local/folder/containing/nifti/files>
.
Nginx temel yapılandırması
Aynı klasörde şunu oluşturun: nginx.conf
dosya:
Çıkarım çağrısını çalıştırın
Kurulumunuzun doğru olduğunu onaylamak için aşağıdaki curl komutunu çalıştırın:
curl http://localhost:8008/health/ready
Bu komut, VISTA-3D NIM mikro servisinin çalışır durumda olduğunu belirten true değerini döndürmelidir.
Bunu doğrulamak için nginx
tarayıcınızda verilerinizin doğru bir şekilde sunulup sunulmadığını kontrol edin http://localhost:8009 Paylaştığınız klasörleri ve dosyaları görmek için.
Şimdi, küçük bir değişiklikle, çıkarım yapmak için daha önceki aynı kodu yeniden kullanabilirsiniz. nginx
Verilerinizi sunmak için NVIDIA örnek verilerine veya GitHub’daki örnek dosyalarınıza yönlendirmek yerine.
import requests
invoke_url = “http://localhost:8008/vista3d/inference”
headers = {}
filename="test_w_nginx"
payload = {
"image": f"https://localhost:8809/<file Path as you it shows in nginx webpage>.nii.gz",
"output": {"extension": ".nii.gz","dtype": "uint8"}}
session = requests.Session()
response = session.post(invoke_url, headers=headers, json=payload)
response.raise_for_status()
file_name=f"{filename}_seg.nii.gz"
with open(file_name, "wb") as file:
file.write(response.content)
print("File downloaded successfully!")
The invoke_url
değer artık ana makinenizi gösteriyor ve başlıklar boş çünkü NGC anahtarını kullanarak kimlik doğrulaması yapmanıza gerek yok.
Bu işlemlerin ardından organların segmentasyon dosyası tüm etiketlerle birlikte elinizde olmalı.
Güvenlik ipucu
Bunu çalıştırdığınızda, büyük ihtimalle NGINX portunun açık olmasını ve verilerinizi ana bilgisayara erişimi olan herhangi birine sunmasını istemezsiniz.
Bunun yerine, VISTA-3D NIM mikro servisine erişimi sınırlayın. docker-compose.yml
dosya ve port eşlemesini kaldırın nginx
satırları silerek ports: - 8009:8009
.
Sonra, infer çağrısını şu şekilde değiştirin: nim-nginx
yerine localhost
Artık erişilemeyen.
"image":fhttps://nim-nginx:8809/{filename}.nii.gz
Dahili isim nim-nginx
Docker compose tüm servisleri aynı ağda konumlandırdığından NIM tarafından erişilebilir.
Çözüm
Bu yazıda, bir BT görüntüsünde 100’den fazla organı ve birden fazla hastalığı segmentleyebilen yeni NVIDIA AI Foundation modeli VISTA-3D’yi tanıttık. Ayrıca NVIDIA NIM’in bu modeli nasıl basitleştirdiğini de gösterdik.
BT görüntü analizinizi geliştirmek ister misiniz? VISTA-3D NIM mikro servisine erişim için başvuruda bulununOnaylandıktan sonra, bu güçlü modeli kendi donanımınızda çalıştırabilir, segmentasyon doğruluğunuzu iyileştirebilir ve iş akışınızı kolaylaştırabilirsiniz.