Så här använder du Ai-modellen för MedImageInsight-sjukvård för inbäddningsgenerering av medicinska bilder
Viktigt!
Objekt markerade (förhandsversion) i den här artikeln är för närvarande i offentlig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och vi rekommenderar det inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.
Viktigt!
AI-modellerna för hälso- och sjukvård är avsedda för forsknings- och modellutvecklingsutforskning. Modellerna är inte utformade eller avsedda att distribueras i kliniska miljöer som de är eller för användning vid diagnos eller behandling av något hälsotillstånd eller medicinskt tillstånd, och de enskilda modellernas prestationer för sådana ändamål har inte fastställts. Du bär ensamt ansvar för all användning av AI-modeller för hälso- och sjukvård, inklusive verifiering av utdata och införlivande i alla produkter eller tjänster som är avsedda för ett medicinskt ändamål eller för att informera om kliniskt beslutsfattande, efterlevnad av tillämpliga hälso- och sjukvårdslagar och föreskrifter och erhålla nödvändiga godkännanden eller godkännanden.
I den här artikeln får du lära dig hur du distribuerar MedImageInsight från modellkatalogen som en onlineslutpunkt för realtidsinferens. Du lär dig också att utfärda ett grundläggande anrop till API:et. De steg du utför är:
- Distribuera modellen till en lokalt installerad hanterad beräkning.
- Bevilja behörigheter till slutpunkten.
- Skicka testdata till modellen, ta emot och tolka resultat
MedImageInsight – inbäddningsmodellen för medicinsk avbildning
MedImageInsights grundmodell för hälsa är en kraftfull modell som kan bearbeta en mängd olika medicinska bilder. Dessa bilder inkluderar röntgen, CT, MRI, klinisk fotografering, dermoscopy, histopatologi, ultraljud och mammografi bilder. Rigorösa utvärderingar visar MedImageInsights förmåga att uppnå toppmoderna (SOTA) eller prestanda på mänsklig expertnivå för klassificering, bild-till-bild-sökning och finjusteringsuppgifter. Mer specifikt uppnår eller överskrider MedImageInsight sota-prestanda i klassificering och sökning av lungröntgensjukdomar, dermatologiklassificering och sökning, klassificering och sökning med optisk koherenstomografi (OCT) och 3D-medicinsk bildhämtning. Modellen uppnår också nära SOTA-prestanda för histopatologiklassificering och sökning.
En inbäddningsmodell kan fungera som grund för många olika lösningar – från klassificering till mer komplexa scenarier som gruppmatchning eller avvikande identifiering. Följande animering visar en inbäddningsmodell som används för bildlikhetssökning och för att identifiera bilder som är avvikande värden.
Förutsättningar
Om du vill använda MedImageInsight-modellen behöver du följande förutsättningar:
En modelldistribution
Distribution till en lokalt installerad hanterad beräkning
MedImageInsight-modellen kan distribueras till vår egenhanterade lösning för hanterad slutsatsdragning, som gör att du kan anpassa och kontrollera all information om hur modellen hanteras. Du kan distribuera modellen via kataloggränssnittet (i Azure AI Foundry eller Azure Machine Learning-studio) eller distribuera programmatiskt.
Så här distribuerar du modellen via användargränssnittet:
Gå till katalogen.
Sök efter MedImageInsight och välj modellkortet.
På modellens översiktssida väljer du Distribuera.
Om du får möjlighet att välja mellan serverlös API-distribution och distribution med hjälp av en hanterad beräkning väljer du Hanterad beräkning.
Fyll i informationen i distributionsfönstret.
Kommentar
För distribution till en lokalt installerad hanterad beräkning måste du ha tillräckligt med kvot i din prenumeration. Om du inte har tillräckligt med tillgänglig kvot kan du använda vår tillfälliga kvotåtkomst genom att välja alternativet Jag vill använda delad kvot och jag bekräftar att slutpunkten tas bort om 168 timmar.
Välj distribuera.
Information om hur du distribuerar modellen programmatiskt finns i Så här distribuerar och härleder du en hanterad beräkningsdistribution med kod.
Arbeta med en inbäddningsmodell
I det här avsnittet använder du modellen och gör grundläggande anrop till den.
Använda REST API för att använda modellen
Använd MedImageInsight-inbäddningsmodellen som ett REST-API, med enkla GET-begäranden eller genom att skapa en klient på följande sätt:
from azure.ai.ml import MLClient
from azure.identity import DeviceCodeCredential
credential = DefaultAzureCredential()
ml_client_workspace = MLClient.from_config(credential)
I distributionskonfigurationen får du välja autentiseringsmetod. I det här exemplet används tokenbaserad autentisering i Azure Machine Learning. Fler autentiseringsalternativ finns på motsvarande dokumentationssida. Observera också att klienten skapas från en konfigurationsfil som skapas automatiskt för virtuella Azure Machine Learning-datorer (VM). Läs mer på motsvarande API-dokumentationssida.
Gör grundläggande anrop till modellen
När modellen har distribuerats använder du följande kod för att skicka data och hämta inbäddningar.
import base64
import json
import os
endpoint_name = "medimageinsight"
deployment_name = "medimageinsight-v1"
sample_image_xray = os.path.join(image_path)
def read_image(image_path):
with open(image_path, "rb") as f:
return f.read()
data = {
"input_data": {
"columns": ["image", "text"],
# IMPORTANT: Modify the index as needed
"index": [0],
"data": [
[
base64.encodebytes(read_image(sample_image_xray)).decode("utf-8"),
"x-ray chest anteroposterior Pneumonia",
]
],
},
"params": {"get_scaling_factor": True},
}
# Create request json
request_file_name = "sample_request_data.json"
with open(request_file_name, "w") as request_file:
json.dump(data, request_file)
response = ml_client_workspace.online_endpoints.invoke(
endpoint_name=endpoint_name,
deployment_name=deployment_name,
request_file=request_file_name,
)
Använda Rest-API:et för MedImageInsight
MedImageInsight-modellen förutsätter en enkel interaktion med en enda tur där en begäran genererar ett svar.
Schema för begäran
Nyttolasten för begäran är en JSON-formaterad sträng som innehåller följande parametrar:
Nyckel | Typ | Obligatoriskt/standard | Tillåtna värden | beskrivning |
---|---|---|---|---|
input_data |
[object] |
Y | Ett objekt som innehåller nyttolasten för indata | |
params |
[object] |
Nnull |
Ett objekt som innehåller parametrar som skickas till modellen |
Objektet input_data
innehåller följande fält:
Nyckel | Typ | Obligatoriskt/standard | Tillåtna värden | beskrivning |
---|---|---|---|---|
columns |
list[string] |
Y |
"text" , "image" |
Ett objekt som innehåller strängarna som mappar data till indata som skickas till modellen. |
index |
integer |
Y | 0 - 1024 | Antal indata som skickats till modellen. Du begränsas av hur mycket data som kan skickas i en enda POST-begäran, vilket beror på storleken på dina bilder. Därför bör du behålla det här talet i dussintals |
data |
list[list[string]] |
Y | "" | Listan innehåller de objekt som skickas till modellen som definieras av indexparametern. Varje objekt är en lista med två strängar. Ordningen definieras av parametern columns . Strängen text innehåller text som ska bäddas in. Strängarna image är de bildbyte som kodas med base64 och avkodas som utf-8-sträng |
Objektet params
innehåller följande fält:
Nyckel | Typ | Obligatoriskt/standard | Tillåtna värden | beskrivning |
---|---|---|---|---|
get_scaling_factor |
boolean |
NTrue |
"True" OR "False" |
Om modellen ska returnera skalningsfaktorn "temperatur". Den här faktorn är användbar när du planerar att jämföra flera cosinélikhetsvärden i ett program som klassificering. Det är viktigt för korrekt implementering av "zero-shot"-typ av scenarier. Information om användning finns i det nollskottsklassificeringsexempel som är länkat i avsnittet Klassificeringstekniker . |
Exempel på begäran
En enkel slutsatsdragning som begär inbäddning av en enskild sträng
{
"input_data": {
"columns": [
"image",
"text"
],
"index":[0],
"data": [
["", "a quick brown fox jumps over the lazy dog"]
]
},
"params": {}
}
Begäran om inbäddning av en bild och en sträng som begär att skalningsfaktorn ska returneras
{
"input_data": {
"columns": ["image", "text"],
"index": [0],
"data": [
[
"iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAAXNSR0IArs4c6QAAAARnQU1BAACx\njwv8YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAbSURBVBhXY/gUoPS/fhfDfwaGJe///9/J8B8A\nVGwJ5VDvPeYAAAAASUVORK5CYII=\n",
"x-ray chest anteroposterior Pleural Effusion"
]
]
},
"params": {
"get_scaling_factor": "true"
}
}
Svarsschema
Svarsnyttolasten är en JSON-formaterad sträng som innehåller följande fält:
Nyckel | Typ | Beskrivning |
---|---|---|
image_features |
list[list[float]] |
Om det begärs, lista över vektorer, en per skickad bild. |
text_features |
list[list[float]] |
Om det begärs, lista över vektorer, en per varje skickad textsträng. |
scaling_factor |
float |
Om det begärs kan skalningsfaktorn |
Svarsexempel
En enkel slutsatsdragning som begär inbäddning av en enskild sträng
{
"image_features": [[0.029661938548088074, -0.027228673920035362, ... , -0.0328846238553524]],
"text_features": [[0.0028937323950231075, 0.004354152828454971, -0.0227945726364851, ..., 0.002080598147585988]],
"scaling_factor": 4.516357
}
Andra implementeringsöverväganden
Det maximala antalet token som bearbetas i indatasträngen är 77. Allt som passerat 77 token skulle avbrytas innan de skickas till modellen. Modellen använder en clip-tokenizer (Contrastive Language-Image Pre-Training) som använder ungefär tre latinska tecken per token.
Den skickade texten bäddas in i samma latenta utrymme som bilden. Därför är strängar som beskriver medicinska bilder av vissa kroppsdelar som erhålls med vissa bildmodaliteter inbäddade nära sådana bilder. När du skapar system ovanpå en MedImageInsight-modell bör du också se till att alla inbäddningssträngar är konsekventa med varandra (ordordning och skiljetecken). För bästa resultat med basmodellen bör strängar följa mönstret <image modality> <anatomy> <exam parameters> <condition/pathology>.
, till exempel: x-ray chest anteroposterior Atelectasis.
.
Om du finjusterar modellen kan du ändra dessa parametrar så att de passar dina programbehov bättre.
Bildformat som stöds
Det distribuerade modell-API:et stöder bilder som kodats i PNG-format.
När modellen tar emot bilderna utför den förbearbetning som innebär att bilderna komprimeras och ändras till 512x512
bildpunkter.
Det föredragna komprimeringsformatet är förlustfri PNG, som innehåller antingen en 8-bitars monokromatisk bild eller RGB-bild. I optimeringssyfte kan du utföra storleksändring på klientsidan för att minska nätverkstrafiken.
Läs mer från exempel
MedImageInsight är en mångsidig modell som kan användas för en mängd olika uppgifter och metoder för avbildning. Mer specifika exempel på hur du löser olika uppgifter med MedImageInsight finns i följande interaktiva Python-notebook-filer.
Komma igång
- Distribuera och använda MedImageInsight: Lär dig hur du distribuerar MedImageInsight-modellen programmatiskt och utfärdar ett API-anrop till den.
Klassificeringstekniker
Skapa en Zero-Shot-klassificerare: Upptäck hur du använder MedImageInsight för att skapa en klassificerare utan att behöva träna eller stora mängder märkta sanningsdata på marken.
Förbättra klassificeringen med nätverkskortnätverk: Förbättra klassificeringsprestanda genom att skapa ett litet nätverksnätverk ovanpå MedImageInsight.
Avancerade program
Slutsatsdragning av MRI-förvärvsparametrar från pixeldata: Förstå hur du extraherar parametrar för MRI-undersökningsförvärv direkt från bilddata.
Skalbar MedImageInsight-slutpunktsanvändning: Lär dig hur du genererar inbäddningar av medicinska bilder i stor skala med hjälp av MedImageInsight-API:et samtidigt som du hanterar potentiella nätverksproblem på ett smidigt sätt.