Het AI-model voor gezondheidszorg van MedImageInsight gebruiken voor het insluiten van medische afbeeldingen
Belangrijk
Items die in dit artikel zijn gemarkeerd (preview) zijn momenteel beschikbaar als openbare preview. Deze preview wordt aangeboden zonder een service level agreement en we raden deze niet aan voor productieworkloads. Misschien worden bepaalde functies niet ondersteund of zijn de mogelijkheden ervan beperkt. Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure-previews voor meer informatie.
Belangrijk
De AI-modellen voor gezondheidszorg zijn bedoeld voor onderzoek en modelontwikkeling. De modellen zijn niet ontworpen of bedoeld om te worden geïmplementeerd in klinische instellingen, noch voor gebruik bij de diagnose of behandeling van een gezondheids- of medische aandoening, en de prestaties van de individuele modellen voor dergelijke doeleinden zijn niet vastgesteld. U bent alleen verantwoordelijk en aansprakelijk voor elk gebruik van de AI-modellen voor gezondheidszorg, met inbegrip van de verificatie van uitvoer en integratie in een product of dienst die is bedoeld voor een medisch doel of om klinische besluitvorming, naleving van toepasselijke gezondheidszorgwetten en -voorschriften te informeren en eventuele benodigde goedkeuringen of goedkeuringen te verkrijgen.
In dit artikel leert u hoe u MedImageInsight implementeert vanuit de modelcatalogus als een online-eindpunt voor realtime deductie. U leert ook hoe u een eenvoudige aanroep naar de API kunt uitvoeren. De stappen die u uitvoert, zijn:
- Implementeer het model op een zelf-hostende beheerde berekening.
- Verken machtigingen aan het eindpunt.
- Testgegevens verzenden naar het model, het ontvangen en interpreteren van resultaten
MedImageInsight - het model voor het insluiten van medische afbeeldingen
MedImageInsight-basismodel voor gezondheid is een krachtig model dat een groot aantal medische afbeeldingen kan verwerken. Deze beelden omvatten röntgenfoto's, CT, MRI, klinische fotografie, dermoscopy, histopathologie, echografie en mammografieafbeeldingen. Strenge evaluaties demonstreren het vermogen van MedImageInsight om geavanceerde prestaties (SOTA) of prestaties op menselijk expertniveau te realiseren voor classificatie, zoeken naar afbeeldingen en het verfijnen van taken. Met name op openbare gegevenssets bereikt of overschrijdt MedImageInsight SOTA-prestaties in classificatie en zoekopdrachten van X-ray-ziektes op de borst, indeling en zoekopdrachten, optische coherentie tomografie (OCT) classificatie en zoekopdracht, en ophalen van 3D medische afbeeldingen. Het model bereikt ook bijna SOTA-prestaties voor histopathologieclassificatie en -zoekopdrachten.
Een insluitmodel kan fungeren als basis voor veel verschillende oplossingen, van classificatie tot complexere scenario's zoals groepskoppeling of uitbijterdetectie. In de volgende animatie ziet u een insluitmodel dat wordt gebruikt voor het zoeken naar overeenkomsten met afbeeldingen en om afbeeldingen te detecteren die uitbijters zijn.
Vereisten
Als u het MedImageInsight-model wilt gebruiken, hebt u de volgende vereisten nodig:
Een modelimplementatie
Implementatie naar een zelf-hostende beheerde compute
Het MedImageInsight-model kan worden geïmplementeerd in onze zelf-hostende beheerde deductieoplossing, waarmee u alle details over hoe het model wordt geleverd, kunt aanpassen en beheren. U kunt het model implementeren via de catalogusgebruikersinterface (in Azure AI Foundry of Azure Machine Learning-studio) of programmatisch implementeren.
Het model implementeren via de gebruikersinterface:
Ga naar de catalogus.
Zoek naar MedImageInsight en selecteer de modelkaart.
Selecteer Implementeren op de overzichtspagina van het model.
Als u de optie krijgt om te kiezen tussen serverloze API-implementatie en implementatie met behulp van een beheerde berekening, selecteert u Managed Compute.
Vul de details in het implementatievenster in.
Notitie
Voor implementatie naar een zelf-hostende beheerde rekenkracht moet u voldoende quotum in uw abonnement hebben. Als u onvoldoende quotum beschikbaar hebt, kunt u onze tijdelijke quotumtoegang gebruiken door de optie te selecteren die ik wil gebruiken gedeeld quotum en ik bevestig dat dit eindpunt over 168 uur wordt verwijderd.
Selecteer Implementeren.
Als u het model programmatisch wilt implementeren, raadpleegt u Hoe u een beheerde rekenprocesimplementatie implementeert en deductie met code.
Werken met een insluitmodel
In deze sectie gebruikt u het model en voert u eenvoudige aanroepen naar het model uit.
REST API gebruiken om het model te gebruiken
Gebruik het medImageInsight-insluitingsmodel als een REST API, met behulp van eenvoudige GET-aanvragen of door een client als volgt te maken:
from azure.ai.ml import MLClient
from azure.identity import DeviceCodeCredential
credential = DefaultAzureCredential()
ml_client_workspace = MLClient.from_config(credential)
In de implementatieconfiguratie kunt u de verificatiemethode kiezen. In dit voorbeeld wordt verificatie op basis van azure Machine Learning-tokens gebruikt. Zie de bijbehorende documentatiepagina voor meer verificatieopties. Houd er ook rekening mee dat de client wordt gemaakt op basis van een configuratiebestand dat automatisch wordt gemaakt voor virtuele Azure Machine Learning-machines (VM's). Meer informatie vindt u op de bijbehorende API-documentatiepagina.
Basisoproepen naar het model maken
Zodra het model is geïmplementeerd, gebruikt u de volgende code om gegevens te verzenden en insluitingen op te halen.
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,
)
MedImageInsight REST API gebruiken
Het MedImageInsight-model gaat uit van een eenvoudige interactie met één beurt waarbij één aanvraag één antwoord produceert.
Aanvraagschema
De nettolading van de aanvraag is een tekenreeks met JSON-indeling met de volgende parameters:
Sleutel | Type | Vereist/standaard | Toegestane waarden | Beschrijving |
---|---|---|---|---|
input_data |
[object] |
J | Een object met de nettolading van invoergegevens | |
params |
[object] |
Nnull |
Een object met parameters die zijn doorgegeven aan het model |
Het input_data
object bevat de volgende velden:
Sleutel | Type | Vereist/standaard | Toegestane waarden | Beschrijving |
---|---|---|---|---|
columns |
list[string] |
J | "text" , "image" |
Een object met de tekenreeksen die gegevens toewijzen aan invoer die aan het model is doorgegeven. |
index |
integer |
J | 0 - 1024 | Het aantal invoer dat is doorgegeven aan het model. U bent beperkt door hoeveel gegevens kunnen worden doorgegeven in één POST-aanvraag, wat afhankelijk is van de grootte van uw afbeeldingen. Daarom moet u dit getal in de tientallen bewaren |
data |
list[list[string]] |
J | "" | De lijst bevat de items die worden doorgegeven aan het model dat wordt gedefinieerd door de indexparameter. Elk item is een lijst met twee tekenreeksen. De volgorde wordt gedefinieerd door de columns parameter. De text tekenreeks bevat tekst die moet worden ingesloten. De image tekenreeksen zijn de afbeeldingsbytes gecodeerd met base64 en gedecodeerd als utf-8-tekenreeks |
Het params
object bevat de volgende velden:
Sleutel | Type | Vereist/standaard | Toegestane waarden | Beschrijving |
---|---|---|---|---|
get_scaling_factor |
boolean |
NTrue |
"True" OF "False" |
Of het model de schaalfactor 'temperatuur' moet retourneren. Deze factor is handig wanneer u van plan bent om meerdere cosinus-overeenkomsten in een toepassing te vergelijken, zoals classificatie. Het is essentieel voor de juiste implementatie van het type 'zero-shot'-scenario's. Raadpleeg voor gebruik het voorbeeld van classificatie nul dat is gekoppeld in de sectie Classificatietechnieken . |
Aanvraagvoorbeeld
Een eenvoudige deductie die het insluiten van één tekenreeks aanvraagt
{
"input_data": {
"columns": [
"image",
"text"
],
"index":[0],
"data": [
["", "a quick brown fox jumps over the lazy dog"]
]
},
"params": {}
}
Aanvraag voor het insluiten van een afbeelding en een tekenreeks, waarbij wordt aangevraagd om de schaalfactor te retourneren
{
"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"
}
}
Antwoordschema
Nettolading van het antwoord is een tekenreeks met JSON-indeling die de volgende velden bevat:
Sleutel | Type | Description |
---|---|---|
image_features |
list[list[float]] |
Indien aangevraagd, een lijst met vectoren, één per verzonden afbeelding. |
text_features |
list[list[float]] |
Indien aangevraagd, een lijst met vectoren, één per verzonden tekenreeks. |
scaling_factor |
float |
Indien aangevraagd, is de schaalfactor |
Responsvoorbeeld
Een eenvoudige deductie die het insluiten van één tekenreeks aanvraagt
{
"image_features": [[0.029661938548088074, -0.027228673920035362, ... , -0.0328846238553524]],
"text_features": [[0.0028937323950231075, 0.004354152828454971, -0.0227945726364851, ..., 0.002080598147585988]],
"scaling_factor": 4.516357
}
Andere overwegingen bij de implementatie
Het maximum aantal tokens dat in de invoertekenreeks wordt verwerkt, is 77. Alles na 77 tokens wordt afgekapt voordat het aan het model wordt doorgegeven. Het model maakt gebruik van een Clip-tokenizer (Contrastive Language-Image Pre-Training), waarbij ongeveer drie Latijnse tekens per token worden gebruikt.
De verzonden tekst wordt ingesloten in dezelfde latente ruimte als de afbeelding. Als gevolg hiervan worden tekenreeksen met een beschrijving van medische afbeeldingen van bepaalde lichaamsdelen die zijn verkregen met bepaalde beeldvormende modaliteiten ingesloten in de buurt van dergelijke afbeeldingen. Wanneer u systemen bouwt boven op een MedImageInsight-model, moet u er ook voor zorgen dat al uw ingesloten tekenreeksen consistent zijn met elkaar (woordvolgorde en interpunctie). Voor de beste resultaten met het basismodel moeten tekenreeksen het patroon <image modality> <anatomy> <exam parameters> <condition/pathology>.
volgen, bijvoorbeeld: x-ray chest anteroposterior Atelectasis.
Als u het model aanpast, kunt u deze parameters aanpassen aan uw toepassingsbehoeften.
Ondersteunde afbeeldingsindelingen
De geïmplementeerde model-API ondersteunt afbeeldingen die zijn gecodeerd in PNG-indeling.
Wanneer het model de afbeeldingen ontvangt, wordt voorverwerking uitgevoerd waarbij de afbeeldingen worden gecomprimeerd en aangepast aan 512x512
pixels.
De voorkeurscompressieindeling is lossless PNG, met een 8-bits monochromatische of RGB-afbeelding. Voor optimalisatiedoeleinden kunt u het formaat aan de clientzijde aanpassen om het netwerkverkeer te verminderen.
Meer informatie uit voorbeelden
MedImageInsight is een veelzijdig model dat kan worden toegepast op een breed scala aan taken en imaging-modaliteiten. Zie de volgende interactieve Python-notebooks voor meer specifieke voorbeelden van het oplossen van verschillende taken met MedImageInsight.
Aan de slag
- MedImageInsight implementeren en gebruiken: informatie over het programmatisch implementeren van het MedImageInsight-model en het uitgeven van een API-aanroep.
Classificatietechnieken
Een Zero-Shot Classifier bouwen: Ontdek hoe u MedImageInsight kunt gebruiken om een classificatie te maken zonder dat er training of grote hoeveelheden gelabelde grondwaargegevens nodig zijn.
Classificatie verbeteren met adapternetwerken: verbeter de classificatieprestaties door een klein adapternetwerk op MedImageInsight te bouwen.
Geavanceerde toepassingen
Uitstellen van MRI-overnameparameters van PixelGegevens: Begrijpen hoe u parameters voor HET OPHALEN van HET MRI-examen rechtstreeks uit beeldgegevens kunt extraheren.
Schaalbaar MedImageInsight-eindpuntgebruik: informatie over het genereren van insluitingen van medische afbeeldingen op schaal met behulp van de MedImageInsight-API terwijl potentiële netwerkproblemen probleemloos worden verwerkt.