Så här använder du CXRReportGen Healthcare AI-modellen för att generera grundresultat
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 CXRReportGen som en onlineslutpunkt för realtidsinferens och utfärdar 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
CXRReportGen – jordad rapportgenereringsmodell för bröströntgen
Radiologirapportering kräver detaljerad bildtolkning, integrering av flera indata (inklusive jämförelser med tidigare avbildning) och exakt språkgenerering, vilket gör den till en idealisk kandidat för generativa multimodala modeller. CXRReportGen genererar en lista över resultat från en bröströntgenstudie och utför också en jordad rapportgenerering eller grunduppgift . D.v.s. CXRReportGen-modellen innehåller även lokalisering av enskilda resultat på bilden. Grunderna förbättrar tydligheten i bildtolkningen och transparensen i AI-genererad text, vilket i slutändan förbättrar nyttan av automatiserad rapportutkastning.
Följande animering visar den konceptuella arkitekturen för CXRReportGen-modellen, som består av en inbäddningsmodell i kombination med en allmän reasoner large language model (LLM).
CXRReportGen-modellen kombinerar en radiologispecifik bildkodare med en stor språkmodell och tar som indata en mer omfattande uppsättning data än många traditionella metoder. Indata innehåller den aktuella frontalbilden, den aktuella laterala bilden, den tidigare frontalbilden, den tidigare rapporten och indikerings-, teknik- och jämförelseavsnitten i den aktuella rapporten. Dessa tillägg förbättrar rapportens kvalitet avsevärt och minskar felaktig information, vilket i slutändan visar genomförbarheten av grundad rapportering som en ny och rikare uppgift inom automatiserad radiologi.
Förutsättningar
Om du vill använda CXRReportGen-modellen behöver du följande förutsättningar:
En modelldistribution
Distribution till en lokalt installerad hanterad beräkning
CXRReportGen-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 CxrReportGen 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 jordad rapportgenereringsmodell för bröströntgenanalys
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 CXRReportGen-rapportgenereringsmodellen som ett REST-API, med hjälp av 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 en lista med resultat och motsvarande avgränsningsrutor.
input_data = {
"frontal_image": base64.encodebytes(read_image(frontal_path)).decode("utf-8"),
"lateral_image": base64.encodebytes(read_image(lateral_path)).decode("utf-8"),
"indication": indication,
"technique": technique,
"comparison": comparison,
}
data = {
"input_data": {
"columns": list(input_data.keys()),
# IMPORANT: Modify the index as needed
"index": [0], # 1, 2],
"data": [
list(input_data.values()),
],
}
}
# 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 för CXRReportGen
CXRReportGen-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 | beskrivning |
---|---|---|---|
input_data |
[object] |
Y | Ett objekt som innehåller nyttolasten för indata |
Objektet input_data
innehåller följande fält:
Nyckel | Typ | Obligatoriskt/standard | Tillåtna värden | beskrivning |
---|---|---|---|---|
columns |
list[string] |
Y |
"frontal_image" , "lateral_image" , "prior_image" ,"indication" , "technique" , , "comparison" , "prior_report" |
Ett objekt som innehåller strängarna som mappar data till indata som skickas till modellen. |
index |
integer |
Y | 0 - 10 | Antal indata som skickats till modellen. Du begränsas av hur mycket GPU RAM-minne du har på den virtuella dator där CxrReportGen finns och hur mycket data som kan skickas i en enda POST-begäran, vilket beror på storleken på dina bilder. Därför är det rimligt att hålla det här antalet under 10. Kontrollera modellloggarna om du får fel när du skickar flera indata. |
data |
list[list[string]] |
Y | "" | Listan innehåller listan över objekt som skickas till modellen. Listans längd definieras av indexparametern. Varje objekt är en lista med flera strängar. Ordningen och innebörden definieras av parametern columns . Textsträngarna innehåller text. Bildsträngarna är de bildbyte som kodas med base64 och avkodas som utf-8-sträng |
Exempel på begäran
En enkel slutsatsdragning som begär en lista över resultat för en enskild frontalbild utan angiven indikation
{
"input_data": {
"columns": [
"frontal_image"
],
"index":[0],
"data": [
["iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAAXNSR0IArs4c6QAAAARnQU1BAACx\njwv8YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAbSURBVBhXY/gUoPS/fhfDfwaGJe///9/J8B8A\nVGwJ5VDvPeYAAAAASUVORK5CYII=\n"]
]
}
}
Mer komplex begäran skicka frontal, lateral, indikering och teknik
{
"input_data": {
"columns": [
"frontal_image",
"lateral_image",
"indication",
"technique"
],
"index":[0],
"data": [
["iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAAXNSR0IArs4c6QAAAARnQU1BAACx\njwv8YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAbSURBVBhXY/gUoPS/fhfDfwaGJe///9/J8B8A\nVGwJ5VDvPeYAAAAASUVORK5CYII=\n",
"iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAAXNSR0IArs4c6QAAAARnQU1BAACx\njwv8YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAbSURBVBhXY/gUoPS/fhfDfwaGJe///9/J8B8A\nVGwJ5VDvPeYAAAAASUVORK5CYII=\n",
"Cough and wheezing for 5 months",
"PA and lateral views of the chest were obtained"]
]
}
}
Svarsschema
Svarsnyttolasten är en JSON-formaterad sträng som innehåller följande fält:
Nyckel | Typ | Beskrivning |
---|---|---|
output |
list[list[string, list[list[float]]]] |
Listan över resultat. Varje sökning är ett objekt i en lista som representeras av en lista som innehåller en sträng med söktexten och en lista som innehåller avgränsningsrutor. Varje avgränsningsruta representeras av en lista med fyra koordinater för avgränsningsrutan som är relaterad till sökningen i följande ordning: x_min , y_min , x_max , y_max . Varje koordinatvärde är mellan 0 och 1, så för att få koordinater i bildens utrymme för återgivning eller bearbetning måste dessa värden multipliceras med bildens bredd eller höjd i enlighet med detta |
Svarsexempel
En enkel slutsatsdragning som begär inbäddning av en enskild sträng
{
"output": [
["The heart size is normal.", null],
["Lungs demonstrate blunting of both costophrenic angles.", [[0.005, 0.555, 0.965, 0.865]]],
["There is an area of increased radiodensity overlying the left lower lung.", [[0.555, 0.405, 0.885, 0.745]]],
["Healed fractures of the left fourth, fifth, sixth, seventh, and eighth posterior ribs are noted.", [[0.585, 0.135, 0.925, 0.725]]]
]
}
Bildformat som stöds
Det distribuerade modell-API:et stöder bilder som kodats i PNG- eller JPEG-format. För optimala resultat rekommenderar vi att du använder okomprimerade/förlustfria PNG:er med 8-bitars monokromatiska bilder.
Läs mer från exempel
CXRReportGen är en mångsidig modell som kan tillämpas på en mängd olika uppgifter och metoder för avbildning. Fler exempel finns i följande interaktiva Python-notebook-fil:
- Distribuera och använda CXRReportGen: Lär dig hur du distribuerar CXRReportGen-modellen och integrerar den i ditt arbetsflöde. Den här notebook-filen omfattar även avgränsnings- och visualiseringstekniker.