Verwenden des KI-Modells CXRReportGen Healthcare, um fundierte Ergebnisse zu generieren
Wichtig
Die in diesem Artikel markierten Elemente (Vorschau) sind aktuell als öffentliche Vorschau verfügbar. Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und sollte nicht für Produktionsworkloads verwendet werden. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.
Wichtig
Die KI-Modelle für das Gesundheitswesen sind für die Forschung und die Modellentwicklung vorgesehen. Die Modelle sind nicht so konzipiert oder vorgesehen, dass sie in klinischen Umgebungen wie besehen eingesetzt werden, und auch nicht für die Diagnose oder Behandlung eines Gesundheits- oder Krankheitszustands, und die Leistungen der einzelnen Modelle für solche Zwecke wurden nicht ermittelt. Sie tragen alleinige Verantwortung und Haftung für jegliche Verwendung der KI-Modelle für das Gesundheitswesens, einschließlich der Überprüfung der Ergebnisse und der Einbindung in alle Produkte oder Dienstleistungen, die für einen medizinischen Zweck oder zur Unterstützung der klinischen Entscheidungsfindung bestimmt sind, sowie für die Einhaltung der geltenden Gesetze und Vorschriften für das Gesundheitswesen und die Einholung aller erforderlichen Genehmigungen oder Zulassungen.
In diesem Artikel erfahren Sie, wie Sie CXRReportGen als Onlineendpunkt für Echtzeitrückschlüsse bereitstellen und einen einfachen Aufruf an die API senden. Auszuführende Schritte:
- Stellen Sie das Modell auf einer selbst gehosteten verwalteten Computeressource bereit.
- Weisen Sie Berechtigungen für den Endpunkt zu.
- Senden von Testdaten an das Modell, Empfangen und Interpretieren von Ergebnissen
CXRReportGen - Modell zur Erstellung fundierter Berichte für Röntgenaufnahmen des Brustkorbs
Die Erstellung von radiologischen Berichten erfordert ein detailliertes Verständnis der Bilder, die Integration mehrerer Informationen (einschließlich Vergleichen mit früheren Bildgebungsverfahren) und eine präzise Language Generation, was sie zu einem idealen Kandidaten für generative multimodale Modelle macht. CXRReportGen generiert eine Liste von Befunden aus einer Röntgenuntersuchung des Brustkorbs und führt außerdem eine fundierte Berichterstellung oder eine Grounding-Aufgabe durch. Das heißt, das Modell CXRReportGen umfasst auch die Lokalisierung einzelner Befunde im Bild. Grounding erhöht die Präzision bei der Interpretation medizinischer Bilder und die Transparenz des KI-generierten Textes, was letztlich den Nutzen der automatisierten Berichterstellung erhöht.
Die folgende Animation veranschaulicht die konzeptionelle Architektur des CXRReportGen-Modells, das aus einem eingebetteten Modell in Kombination mit einem allgemeinen Reasoner-Large-Language-Modell (LLM) besteht.
Das CXRReportGen-Modell kombiniert einen radiologiespezifischen Image Encoder mit einem großen Sprachmodell und verwendet im Vergleich zu vielen herkömmlichen Ansätzen als Eingabe einen umfassenderen Datensatz. Zu den Eingabedaten gehören das aktuelle Frontalbild, das aktuelle Lateralbild, das vorherige Frontalbild, der vorherige Bericht sowie die Abschnitte Indikation, Technik und Vergleich des aktuellen Berichts. Diese Ergänzungen verbessern die Qualität der Berichte erheblich und reduzieren fehlerhafte Informationen, was letztlich die Umsetzbarkeit einer fundierten Berichterstattung als neue und umfassendere Aufgabe in der automatisierten Radiologie unterstreicht.
Voraussetzungen
Um das CXRReportGen-Modell zu verwenden, müssen die folgenden Voraussetzungen erfüllt sein:
Modellimplementierung
Bereitstellung auf selbst gehostetem verwaltetem Compute
Das CXRReportGen-Modell kann in der selbstgehosteten verwalteten Rückschlusslösung bereitgestellt werden, mit der Sie alle Details zur Verarbeitung des Modells anpassen und steuern können. Sie können das Modell über die Benutzeroberfläche des Katalogs (in KI Studio oder Azure Machine Learning Studio) oder programmgesteuert bereitstellen.
So stellen Sie das Modell über die Benutzeroberfläche bereit:
Navigieren Sie zum Katalog.
Suchen Sie nach CxrReportGen und wählen Sie die Modellkarte aus.
Wählen Sie in der Übersicht des Modells Bereitstellen aus.
Wenn Sie die Wahl zwischen einer serverlosen API-Bereitstellung und einer Bereitstellung mit einer verwalteten Computeressource haben, wählen Sie die Option Verwaltete Computeressource aus.
Füllen Sie die Details im Fenster für die Bereitstellung aus.
Hinweis
Für die Bereitstellung auf selbst gehostetem verwaltetem Compute müssen Sie über ein ausreichendes Kontingent in Ihrem Abonnement verfügen. Wenn kein ausreichendes Kontingent verfügbar ist, können Sie unseren temporären Kontingentzugriff nutzen, indem Sie die Option Ich möchte das freigegebene Kontingent verwenden und bestätige, dass dieser Endpunkt in 168 Stunden gelöscht wird auswählen.
Klicken Sie auf Bereitstellen.
Informationen zur programmgesteuerten Bereitstellung des Modells finden Sie unter Bereitstellen und Rückschließen einer verwalteten Computebereitstellung mit Code.
Verwenden eines Modell zur Erstellung fundierter Berichte zur Analyse von Röntgenaufnahmen des Brustkorbs
In diesem Abschnitt verwenden Sie das Modell und führen grundlegende Aufrufe aus.
Verwenden der REST-API zum Verwenden des Modells
Nutzen Sie das Modell CXRReportGen zur Erstellung von Berichten als REST-API, indem Sie einfache GET-Anforderungen verwenden oder einen Client wie folgt erstellen:
from azure.ai.ml import MLClient
from azure.identity import DeviceCodeCredential
credential = DefaultAzureCredential()
ml_client_workspace = MLClient.from_config(credential)
In der Bereitstellungskonfiguration können Sie die Authentifizierungsmethode auswählen. Dieses Beispiel verwendet die tokenbasierte Authentifizierung von Azure Machine Learning. Weitere Authentifizierungsoptionen finden Sie auf der entsprechenden Seite der Dokumentation. Beachten Sie außerdem, dass der Client anhand einer Konfigurationsdatei erstellt wird, die automatisch für Virtual Machines (VMs) von Azure Machine Learning erstellt wird. Weitere Informationen finden Sie auf der entsprechenden Seite der API-Dokumentation.
Senden grundlegender Aufrufe an das Modell
Sobald das Modell bereitgestellt wurde, verwenden Sie den folgenden Code, um Daten zu senden und eine Liste mit Ergebnissen und die entsprechenden umgebenden Felder abzurufen.
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,
)
Verwenden der CXRReportGen-REST-API
Das CXRReportGen-Modell geht von einer einfachen Single-Turn-Interaktion aus, bei der eine Anforderung eine Antwort erzeugt.
Anforderungsschema
Die Anforderungsnutzlast ist eine JSON-formatierte Zeichenfolge mit den folgenden Parametern:
Schlüssel | type | Erforderlich/Standard | Beschreibung |
---|---|---|---|
input_data |
[object] |
J | Ein Objekt, das die Eingabedatennutzlast enthält |
Das Objekt input_data
enthält die folgenden Felder:
Schlüssel | type | Erforderlich/Standard | Zulässige Werte | Beschreibung |
---|---|---|---|---|
columns |
list[string] |
J | "frontal_image" , "lateral_image" , "prior_image" ,"indication" , "technique" , "comparison" , "prior_report" |
Ein Objekt, das die Zeichenketten enthält, die Daten den an das Modell übergebenen Eingaben zuordnen. |
index |
integer |
Y | 0–10 | Anzahl der an das Modell übergebenen Eingaben. Sie sind durch die Menge an GPU-RAM auf der VM, auf der CxrReportGen gehostet wird, und durch die Anzahl an Daten, die in einer einzelnen POST-Anforderung übertragen werden können, begrenzt – was von der Größe Ihrer Bilder abhängt. Daher ist es sinnvoll, diese Zahl unter 10 zu halten. Überprüfen Sie die Modellprotokolle, wenn bei der Übergabe mehrerer Eingaben Fehler auftreten. |
data |
list[list[string]] |
Y | "" | Die Liste enthält die Liste der Elemente, die an das Modell übergeben werden. Die Länge der Liste wird durch den Indexparameter definiert. Jedes Element umfasst eine Liste mit mehreren Zeichenfolgen. Die Reihenfolge und Bedeutung werden durch den columns -Parameter definiert. Die Textzeichenfolgen enthalten Text. Die Bildzeichenfolgen sind die Bildbytes, die mit Base64 codiert und als UTF-8-Zeichenfolge decodiert werden |
Anforderungsbeispiel
Ein einfacher Rückschluss, der eine Liste der Befunde für ein einzelnes Frontalbild ohne Angabe anfordert
{
"input_data": {
"columns": [
"frontal_image"
],
"index":[0],
"data": [
["iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAAXNSR0IArs4c6QAAAARnQU1BAACx\njwv8YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAbSURBVBhXY/gUoPS/fhfDfwaGJe///9/J8B8A\nVGwJ5VDvPeYAAAAASUVORK5CYII=\n"]
]
}
}
Komplexere Anforderung, die Frontal- und Lateralbilder sowie die Indikation und Technik übergibt
{
"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"]
]
}
}
Antwortschema
Die Antwortnutzlast ist eine JSON-formatierte Zeichenfolge mit den folgenden Feldern:
Schlüssel | type | Beschreibung |
---|---|---|
output |
list[list[string, list[list[float]]]] |
Die Liste der Ergebnisse. Jeder Befund ist ein Element in einer Liste, die durch eine Liste dargestellt wird, die eine Zeichenfolge mit dem Text des Befunds enthält, und eine Liste, die umgebende Felder enthält. Jedes umgebende Feld wird durch eine Liste von vier Koordinaten des umgebenden Felds dargestellt, die mit dem Befund in der folgenden Reihenfolge zusammenhängen: x_min , y_min , x_max , y_max . Jeder Koordinatenwert liegt zwischen 0 und 1. Um Koordinaten im Bildraum für das Rendering oder die Verarbeitung zu erhalten, müssen diese Werte entsprechend mit der Bildbreite oder -höhe multipliziert werden. |
Beispielantwort
Ein einfacher Rückschluss, der das Einbetten einer einzelnen Zeichenfolge anfordert
{
"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]]]
]
}
Unterstützte Bildformate
Die bereitgestellte Modell-API unterstützt Bilder, die im PNG- oder JPEG-Format codiert sind. Für optimale Ergebnisse empfehlen wir, unkomprimierte/verlustfreie PNG-Dateien mit 8-Bit-Monochrom-Bildern zu verwenden.
Weitere Informationen aus Beispielen
CXRReportGen ist ein vielseitiges Modell, das auf eine Vielzahl von Aufgaben und Modalitäten der Bildverarbeitung angewendet werden kann. Weitere Beispiele finden Sie im folgenden interaktiven Python-Notizbuch:
- Bereitstellen und Verwenden von CXRReportGen: Erfahren Sie, wie Sie das CXRReportGen-Modell bereitstellen und in Ihren Workflow integrieren. Dieses Notizbuch befasst sich auch mit den Techniken zur Analyse und Visualisierung von umgebenden Feldern.