Transformers documentation
SegGPT
Ce modèle a été publié dans HF papers le 2023-04-06 et ajouté à Hugging Face Transformers le 2024-02-26.
SegGPT
Aperçu
Le modèle SegGPT a été proposé dans SegGPT: Segmenting Everything In Context par Xinlong Wang, Xiaosong Zhang, Yue Cao, Wen Wang, Chunhua Shen et Tiejun Huang. SegGPT utilise un Transformer de type « decoder-only » capable de générer un masque de segmentation à partir d'une image d'entrée, d'une image de prompt et de son masque de prompt correspondant. Le modèle obtient des résultats remarquables en un seul exemple, avec 56,1 mIoU sur COCO-20 et 85,6 mIoU sur FSS-1000.
L'abstract de l'article est le suivant :
Nous présentons SegGPT, un modèle généraliste pour segmenter tout élément dans un contexte donné. Nous unissons diverses tâches de segmentation au sein d'un cadre d'apprentissage en contexte généraliste, qui prend en charge différents types de données de segmentation en les transformant dans le même format d'images. L'entraînement de SegGPT est formulé comme un problème de coloration en contexte, avec un mappage de couleurs aléatoire pour chaque échantillon de données. L'objectif est d'accomplir des tâches variées en fonction du contexte, plutôt que de s'appuyer sur des couleurs spécifiques. Après l'entraînement, SegGPT peut effectuer des tâches de segmentation arbitraires sur des images ou des vidéos par inférence en contexte, telles que la segmentation d'instances d'objets, de « stuff », de parties, de contours et de texte. SegGPT est évalué sur un large éventail de tâches, notamment la segmentation sémantique few-shot, la segmentation d'objets vidéo, la segmentation sémantique et la segmentation panoptique. Nos résultats montrent de fortes capacités de segmentation sur des données du domaine et hors du
Astuces :
- On peut utiliser SegGptImageProcessor pour préparer l’entrée d’image, le prompt et le masque destinés au modèle.
- On peut utiliser des cartes de segmentation ou des images RGB comme masques de prompt. Dans le second cas, veillez à définir
do_convert_rgb=Falsedans la méthodepreprocess. - Il est vivement recommandé de passer
num_labelslors de l'utilisation desegmentation_maps(sans prendre en compte l'arrière-plan) lors du prétraitement et du post-traitement avec SegGptImageProcessor pour votre cas d'usage. - Lors de l'inférence avec SegGptForImageSegmentation, si votre
batch_sizeest supérieur à 1, vous pouvez utiliser l'ensemble de caractéristiques sur vos images en passantfeature_ensemble=Truedans la méthode forward.
Voici comment utiliser le modèle pour la segmentation sémantique en un seul tir :
import torch
from datasets import load_dataset
from transformers import SegGptForImageSegmentation, SegGptImageProcessor
checkpoint = "BAAI/seggpt-vit-large"
image_processor = SegGptImageProcessor.from_pretrained(checkpoint)
model = SegGptForImageSegmentation.from_pretrained(checkpoint, device_map="auto")
dataset_id = "EduardoPacheco/FoodSeg103"
ds = load_dataset(dataset_id, split="train")
# Number of labels in FoodSeg103 (not including background)
num_labels = 103
image_input = ds[4]["image"]
ground_truth = ds[4]["label"]
image_prompt = ds[29]["image"]
mask_prompt = ds[29]["label"]
inputs = image_processor(
images=image_input,
prompt_images=image_prompt,
segmentation_maps=mask_prompt,
num_labels=num_labels,
return_tensors="pt"
)
with torch.no_grad():
outputs = model(**inputs)
target_sizes = [image_input.size[::-1]]
mask = image_processor.post_process_semantic_segmentation(outputs, target_sizes, num_labels=num_labels)[0]Ce modèle a été contribué par EduardoPacheco. Le code d'origine peut être trouvé ici.
SegGptConfig
classe transformers.SegGptConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonehidden_size: int = 1024num_hidden_layers: int = 24num_attention_heads: int = 16hidden_act: str = 'gelu'hidden_dropout_prob: float | int = 0.0initializer_range: float = 0.02layer_norm_eps: float = 1e-06image_size: int | list[int] | tuple[int, ...] = (896, 448)patch_size: int | list[int] | tuple[int, int] = 16num_channels: int = 3qkv_bias: bool = Truemlp_dim: int | None = Nonedrop_path_rate: float | int = 0.1pretrain_image_size: int | list[int] | tuple[int, int] = 224decoder_hidden_size: int = 64use_relative_position_embeddings: bool = Truemerge_index: int = 2intermediate_hidden_state_indices: list[int] | tuple[int, ...] = (5, 11, 17, 23)beta: float = 0.01 )
Paramètres
- hidden_size (
int, facultatif, par défaut1024) — Dimension des représentations cachées. - num_hidden_layers (
int, facultatif, par défaut24) — Nombre de couches cachées dans le décodeur Transformer. - num_attention_heads (
int, facultatif, valeur par défaut16) — Nombre de têtes d'attention pour chaque couche d'attention du décodeur Transformer. - hidden_act (
str, facultatif, par défautgelu) — La fonction d'activation non linéaire (fonction ou chaîne de caractères) du décodeur. Par exemple,"gelu","relu","silu", etc. - hidden_dropout_prob (
Union[float, int], facultatif, par défaut0.0) — La probabilité de dropout pour toutes les couches entièrement connectées des embeddings, de l'encodeur et du pooler. - initializer_range (
float, facultatif, par défaut0.02) — L'écart-type de la truncated_normal_initializer utilisé pour initialiser toutes les matrices de poids. - layer_norm_eps (
float, facultatif, valeur par défaut1e-06) — L'épsilon utilisé par les couches de normalisation de couche. - image_size (
Union[int, list[int], tuple[int, ...]], facultatif, par défaut(896, 448)) — La taille (résolution) de chaque image. - patch_size (
Union[int, list[int], tuple[int, int]], facultatif, par défaut16) — La taille (résolution) de chaque patch. - num_channels (
int, facultatif, par défaut3) — Le nombre de canaux d'entrée. - qkv_bias (
bool, facultatif, par défautTrue) — Indique s'il faut ajouter un biais aux requêtes, clés et valeurs. - mlp_dim (
int, facultatif) — La dimension de la couche MLP dans l'encodeur Transformer. Si non définie, la valeur par défaut esthidden_size* 4. - drop_path_rate (
Union[float, int], facultatif, par défaut0.1) — Taux de drop path pour la fusion des patches. - pretrain_image_size (
int, facultatif, valeur par défaut 224) — La taille pré-entraînée des embeddings de position absolue. - decoder_hidden_size (
int, facultatif, valeur par défaut64) — Dimension des représentations cachées. - use_relative_position_embeddings (
bool, facultatif, valeur par défautTrue) — Indique s'il faut utiliser des embeddings de position relative dans les couches d'attention. - merge_index (
int, facultatif, valeur par défaut : 2) — L'indice de la couche d'encodeur à fusionner avec les embeddings. - intermediate_hidden_state_indices (
list[int], facultatif, valeur par défaut[5, 11, 17, 23]) — Les indices des couches de l'encodeur que nous conservons en tant que caractéristiques pour le décodeur. - beta (
float, facultatif, valeur par défaut 0.01) — Facteur de régularisation pour SegGptLoss (perte smooth-l1).
Il s'agit de la classe de configuration permettant de stocker la configuration d'un SegGptModel. Elle est utilisée pour instancier un modèle Seggpt en fonction des arguments spécifiés, en définissant l'architecture du modèle. L'instanciation d'une configuration avec les valeurs par défaut produira une configuration similaire à celle de BAAI/seggpt-vit-large
Les objets de configuration héritent de PreTrainedConfig et peuvent être utilisés pour contrôler les sorties du modèle. Consultez la documentation de PreTrainedConfig pour plus d’informations.
Exemple :
>>> from transformers import SegGptConfig, SegGptModel
>>> # Initializing a SegGPT seggpt-vit-large style configuration
>>> configuration = SegGptConfig()
>>> # Initializing a model (with random weights) from the seggpt-vit-large style configuration
>>> model = SegGptModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configSegGptImageProcessor
classe transformers.SegGptImageProcessor
< source >( **kwargs: *<class 'transformers.models.seggpt.image_processing_seggpt.SegGptImageProcessorKwargs'> )
Paramètres
- do_convert_rgb (
bool, kwargs, facultatif, par défautTrue) — Indique s'il faut convertir l'image en RGB. - do_resize (
bool, kwargs, facultatif, valeur par défautTrue) — Indique s'il faut redimensionner l'image. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, par défaut{'height' -- 448, 'width': 448}) : Définit les dimensions maximales de l'entrée du modèle. - default_to_square (
bool, kwargs, facultatif, valeur par défautTrue) — Indique s'il faut utiliser une image carrée par défaut lors du redimensionnement, si la taille est un entier. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Taille de l'image de sortie après application decenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, par défaut3) — Filtre de rééchantillonnage à utiliser lors du redimensionnement de l’image. Il peut s’agir de l’une des valeurs de l’enumPILImageResampling. N’a un effet que sido_resizeest défini surTrue. - do_rescale (
bool, kwargs, facultatif, par défautTrue) — Indique s'il faut rééchelonner l'image. - rescale_factor (
float, kwargs, facultatif, valeur par défaut0.00392156862745098) — Facteur de remise à l'échelle appliqué à l'image sido_rescaleest défini surTrue. - do_normalize (
bool, kwargs, facultatif, valeur par défautTrue) — Indique s'il faut normaliser l'image. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, facultatif, valeur par défaut[0.485, 0.456, 0.406]) — Moyenne de l'image à utiliser pour la normalisation. N'a un effet que sido_normalizeest défini surTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, facultatif, valeur par défaut[0.229, 0.224, 0.225]) — Écart-type de l'image à utiliser pour la normalisation. N'a un effet que sido_normalizeest défini surTrue. - do_pad (
bool, kwargs, facultatif) — Indique s'il faut effectuer un bourrage (padding) de l'image. Le bourrage est effectué soit jusqu'à la plus grande taille du lot, soit jusqu'à une taille carrée fixe par image. La stratégie de bourrage exacte dépend du modèle. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — La taille au format{"height": int, "width" int}à laquelle les images doivent être remplies. Elle doit être supérieure à la taille de n'importe quelle image fournie pour la prétraitement. Sipad_sizen'est pas fourni, les images seront remplies jusqu'à la hauteur et la largeur maximales du lot. Appliqué uniquement lorsquedo_pad=True. - do_center_crop (
bool, kwargs, facultatif) — Indique s'il faut effectuer un recadrage centré de l'image. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, facultatif) — SeulChannelDimension.FIRSTest pris en charge. Ajouté pour la compatibilité avec les processeurs lents. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, facultatif) — Le format de la dimension des canaux pour l'image d'entrée. Si non défini, le format de la dimension des canaux est déduit de l'image d'entrée. Peut être l'un des éléments suivants :"channels_first"ouChannelDimension.FIRST: image au format (num_channels, height, width)."channels_last"ouChannelDimension.LAST: image au format (hauteur, largeur, nombre de canaux)."none"ouChannelDimension.NONE: image au format (hauteur, largeur).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — L’appareil sur lequel traiter les vidéos. Si non défini, l’appareil est déduit des vidéos d’entrée. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Retourne des tenseurs empilés si défini sur'pt', sinon retourne une liste de tenseurs. - disable_grouping (
bool, kwargs, facultatif) — Indique s'il faut désactiver le regroupement des images par taille afin de les traiter individuellement plutôt que par lots. Si la valeur est None, elle est définie sur True si les images sont sur CPU, et sur False dans le cas contraire. Ce choix repose sur des observations empiriques, comme détaillé ici : https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, facultatif) — Le nombre de jetons d’image à utiliser pour chaque image de l’entrée. Ajouté pour la compatibilité ascendante, mais cela devrait être défini comme un attribut du processeur dans les futurs modèles. - num_labels (
int, kwargs, facultatif) — Nombre de classes dans la tâche de segmentation (hors arrière-plan). Si cette valeur est spécifiée, une palette est construite, en supposant que class_idx 0 correspond à l’arrière-plan, afin de convertir le masque de prompt depuis une carte de segmentation brute vers une image RGB à 3 canaux. Si elle n’est pas spécifiée, le masque de prompt est dupliqué sur la dimension des canaux lorsquedo_convert_rgbvautTrue.
Construit un processeur d’image SegGptImageProcessor.
prétraiter
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = Noneprompt_images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = Noneprompt_masks: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = None**kwargs: *<class 'transformers.models.seggpt.image_processing_seggpt.SegGptImageProcessorKwargs'> ) → ~image_processing_base.BatchFeature
Paramètres
- images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], facultatif) — Image à prétraiter. S'attend à une image unique ou à un lot d'images dont les valeurs de pixels vont de 0 à 255. Si vous passez des images dont les valeurs de pixels sont comprises entre 0 et 1, définissezdo_rescale=False. - prompt_images (
ImageInput, facultatif) — Images de prompt à prétraiter. Attend une image unique ou un lot d'images dont les valeurs de pixels sont comprises entre 0 et 255. - prompt_masks (
ImageInput, facultatif) — Masques de prompt à prétraiter. Ils peuvent être au format de cartes de segmentation (sans canaux) ou d'images RGB. S'ils sont au format d'images RGB,do_convert_rgbdoit être défini surFalse. S'ils sont au format de cartes de segmentation, il est recommandé de spécifiernum_labelsafin de construire une palette permettant de mapper le masque de prompt d'un canal unique vers un RGB à 3 canaux. Sinum_labelsn'est pas spécifié, le masque de prompt sera dupliqué sur la dimension des canaux. - do_convert_rgb (
bool, kwargs, facultatif) — Indique s'il faut convertir l'image en RGB. - do_resize (
bool, kwargs, facultatif) — Indique s'il faut redimensionner l'image. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Définit les dimensions maximales des entrées du modèle. - default_to_square (
bool, kwargs, facultatif) — Indique s'il faut par défaut redimensionner l'image en carré si la taille est un entier. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Taille de l'image de sortie après application decenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — Filtre de rééchantillonnage à utiliser lors du redimensionnement de l’image. Il peut s’agir de l’une des valeurs de l’enumPILImageResampling. N’a un effet que sido_resizeest défini surTrue. - do_rescale (
bool, kwargs, facultatif) — Indique s'il faut rééchelonner l'image. - rescale_factor (
float, kwargs, facultatif) — Facteur de remise à l'échelle à appliquer à l'image sido_rescaleest défini surTrue. - do_normalize (
bool, kwargs, facultatif) — Indique s'il faut normaliser l'image. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, facultatif) — Moyenne de l'image à utiliser pour la normalisation. N'a un effet que sido_normalizeest défini surTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, facultatif) — Écart-type de l'image à utiliser pour la normalisation. N'a un effet que sido_normalizeest défini surTrue. - do_pad (
bool, kwargs, facultatif) — Indique s'il faut effectuer un bourrage (padding) de l'image. Le bourrage est effectué soit jusqu'à la plus grande taille du lot, soit jusqu'à une taille carrée fixe par image. La stratégie de bourrage exacte dépend du modèle. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — La taille au format{"height": int, "width" int}à laquelle les images doivent être remplies. Elle doit être supérieure à la taille de n'importe quelle image fournie pour la prétraitement. Sipad_sizen'est pas fourni, les images seront remplies jusqu'à la hauteur et la largeur maximales du lot. Appliqué uniquement lorsquedo_pad=True. - do_center_crop (
bool, kwargs, facultatif) — Indique s'il faut effectuer un recadrage centré de l'image. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, facultatif) — SeulChannelDimension.FIRSTest pris en charge. Ajouté pour la compatibilité avec les processeurs lents. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, facultatif) — Le format de la dimension des canaux pour l'image d'entrée. Si non défini, le format de la dimension des canaux est déduit de l'image d'entrée. Peut être l'un des éléments suivants :"channels_first"ouChannelDimension.FIRST: image au format (num_channels, height, width)."channels_last"ouChannelDimension.LAST: image au format (hauteur, largeur, nombre de canaux)."none"ouChannelDimension.NONE: image au format (hauteur, largeur).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — L’appareil sur lequel traiter les vidéos. Si non défini, l’appareil est déduit des vidéos d’entrée. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Retourne des tenseurs empilés si défini sur'pt', sinon retourne une liste de tenseurs. - disable_grouping (
bool, kwargs, facultatif) — Indique s'il faut désactiver le regroupement des images par taille afin de les traiter individuellement plutôt que par lots. Si la valeur est None, elle est définie sur True si les images sont sur CPU, et sur False dans le cas contraire. Ce choix repose sur des observations empiriques, comme détaillé ici : https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, facultatif) — Le nombre de jetons d’image à utiliser pour chaque image de l’entrée. Ajouté pour la compatibilité ascendante, mais cela devrait être défini comme un attribut du processeur dans les futurs modèles. - num_labels (
int, kwargs, facultatif) — Nombre de classes dans la tâche de segmentation (hors arrière-plan). Si cette valeur est spécifiée, une palette est construite, en supposant que class_idx 0 correspond à l’arrière-plan, afin de convertir le masque de prompt depuis une carte de segmentation brute vers une image RGB à 3 canaux. Si elle n’est pas spécifiée, le masque de prompt est dupliqué sur la dimension des canaux lorsquedo_convert_rgbvautTrue.
Retourne
~image_processing_base.BatchFeature
- data (
dict) — Dictionnaire de listes/tableaux/tenseurs renvoyé par la méthode call (« pixel_values », etc.). - tensor_type (
Union[None, str, TensorType], facultatif) — Vous pouvez spécifier un tensor_type ici pour convertir les listes d'entiers en tenseurs PyTorch/Numpy lors de l'initialisation.
post_process_semantic_segmentation
< source >( outputstarget_sizes: list[tuple[int, int]] | None = Nonenum_labels: int | None = Nonereturn_segmentation_scores: bool = False ) → list[torch.Tensor] or list[SemanticSegmentationPostProcessorOutput]
Paramètres
- outputs (
SegGptImageSegmentationOutput) — Sorties brutes du modèle. - target_sizes (
list[tuple[int, int]], facultatif) — Liste de longueurbatch_size, où chaque élément correspond à la taille finale demandée(height, width)de chaque prédiction. Si laissée àNone, les prédictions ne seront pas redimensionnées. - num_labels (
int, facultatif) — Nombre de classes de la tâche de segmentation (hors arrière-plan). Si cette valeur est spécifiée, une palette est construite pour remapper les masques de prédiction depuis les valeurs RGB vers les indices de classes. Elle doit correspondre à la valeur utilisée lors du prétraitement. - return_segmentation_scores (
bool, facultatif, valeur par défautFalse) — Indique s'il faut retourner les scores de segmentation en plus de la carte de segmentation. SiTrue, chaque élément de la liste retournée est unSemanticSegmentationPostProcessorOutputavec les champssegmentation(identifiants de classes, forme(height, width)) etsegmentation_scores(forme(num_labels+1, height, width)des distances L2 au carré négatives par rapport à chaque couleur de la palette, ouNonesinum_labelsn'est pas fourni).
Retourne
list[torch.Tensor] ou list[SemanticSegmentationPostProcessorOutput]
Lorsque
return_segmentation_scores=False (par défaut), une liste de longueur batch_size dont chaque élément est une
carte de segmentation de forme (height, width) avec des identifiants de classes. Lorsque return_segmentation_scores=True,
une liste de SemanticSegmentationPostProcessorOutput avec les champs segmentation (identifiants de classes, forme
(height, width)) et segmentation_scores (forme (num_labels+1, height, width)). Dans les deux cas,
(height, width) correspond à la taille cible (si target_sizes est spécifiée).
Convertit la sortie de SegGptImageSegmentationOutput en cartes de segmentation. Prend uniquement en charge PyTorch.
SegGptImageProcessorPil
classe transformers.SegGptImageProcessorPil
< source >( **kwargs: *<class 'transformers.models.seggpt.image_processing_pil_seggpt.SegGptImageProcessorKwargs'> )
Paramètres
- do_convert_rgb (
bool, kwargs, facultatif, par défautTrue) — Indique s'il faut convertir l'image en RGB. - do_resize (
bool, kwargs, facultatif, valeur par défautTrue) — Indique s'il faut redimensionner l'image. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, par défaut{'height' -- 448, 'width': 448}) : Définit les dimensions maximales de l'entrée du modèle. - default_to_square (
bool, kwargs, facultatif, valeur par défautTrue) — Indique s'il faut utiliser une image carrée par défaut lors du redimensionnement, si la taille est un entier. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Taille de l'image de sortie après application decenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, par défaut3) — Filtre de rééchantillonnage à utiliser lors du redimensionnement de l’image. Il peut s’agir de l’une des valeurs de l’enumPILImageResampling. N’a un effet que sido_resizeest défini surTrue. - do_rescale (
bool, kwargs, facultatif, par défautTrue) — Indique s'il faut rééchelonner l'image. - rescale_factor (
float, kwargs, facultatif, valeur par défaut0.00392156862745098) — Facteur de remise à l'échelle appliqué à l'image sido_rescaleest défini surTrue. - do_normalize (
bool, kwargs, facultatif, valeur par défautTrue) — Indique s'il faut normaliser l'image. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, facultatif, valeur par défaut[0.485, 0.456, 0.406]) — Moyenne de l'image à utiliser pour la normalisation. N'a un effet que sido_normalizeest défini surTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, facultatif, valeur par défaut[0.229, 0.224, 0.225]) — Écart-type de l'image à utiliser pour la normalisation. N'a un effet que sido_normalizeest défini surTrue. - do_pad (
bool, kwargs, facultatif) — Indique s'il faut effectuer un bourrage (padding) de l'image. Le bourrage est effectué soit jusqu'à la plus grande taille du lot, soit jusqu'à une taille carrée fixe par image. La stratégie de bourrage exacte dépend du modèle. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — La taille au format{"height": int, "width" int}à laquelle les images doivent être remplies. Elle doit être supérieure à la taille de n'importe quelle image fournie pour la prétraitement. Sipad_sizen'est pas fourni, les images seront remplies jusqu'à la hauteur et la largeur maximales du lot. Appliqué uniquement lorsquedo_pad=True. - do_center_crop (
bool, kwargs, facultatif) — Indique s'il faut effectuer un recadrage centré de l'image. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, facultatif) — SeulChannelDimension.FIRSTest pris en charge. Ajouté pour la compatibilité avec les processeurs lents. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, facultatif) — Le format de la dimension des canaux pour l'image d'entrée. Si non défini, le format de la dimension des canaux est déduit de l'image d'entrée. Peut être l'un des éléments suivants :"channels_first"ouChannelDimension.FIRST: image au format (num_channels, height, width)."channels_last"ouChannelDimension.LAST: image au format (hauteur, largeur, nombre de canaux)."none"ouChannelDimension.NONE: image au format (hauteur, largeur).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — L’appareil sur lequel traiter les vidéos. Si non défini, l’appareil est déduit des vidéos d’entrée. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Retourne des tenseurs empilés si défini sur'pt', sinon retourne une liste de tenseurs. - disable_grouping (
bool, kwargs, facultatif) — Indique s'il faut désactiver le regroupement des images par taille afin de les traiter individuellement plutôt que par lots. Si la valeur est None, elle est définie sur True si les images sont sur CPU, et sur False dans le cas contraire. Ce choix repose sur des observations empiriques, comme détaillé ici : https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, facultatif) — Le nombre de jetons d’image à utiliser pour chaque image de l’entrée. Ajouté pour la compatibilité ascendante, mais cela devrait être défini comme un attribut du processeur dans les futurs modèles. - num_labels (
int, kwargs, facultatif) — Nombre de classes dans la tâche de segmentation (hors arrière-plan). Si cette valeur est spécifiée, une palette est construite, en supposant que class_idx 0 correspond à l’arrière-plan, afin de convertir le masque de prompt depuis une carte de segmentation brute vers une image RGB à 3 canaux. Si elle n’est pas spécifiée, le masque de prompt est dupliqué sur la dimension des canaux lorsquedo_convert_rgbvautTrue.
Construit un processeur d’image SegGptImageProcessor.
prétraiter
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = Noneprompt_images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = Noneprompt_masks: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = None**kwargs: *<class 'transformers.models.seggpt.image_processing_pil_seggpt.SegGptImageProcessorKwargs'> ) → ~image_processing_base.BatchFeature
Paramètres
- images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], facultatif) — Image à prétraiter. S'attend à une image unique ou à un lot d'images dont les valeurs de pixels vont de 0 à 255. Si vous passez des images dont les valeurs de pixels sont comprises entre 0 et 1, définissezdo_rescale=False. - prompt_images (
ImageInput, facultatif) — Images de prompt à prétraiter. Attend une image unique ou un lot d'images dont les valeurs de pixels sont comprises entre 0 et 255. - prompt_masks (
ImageInput, facultatif) — Masques de prompt à prétraiter. Ils peuvent être au format de cartes de segmentation (sans canaux) ou d'images RGB. S'ils sont au format d'images RGB,do_convert_rgbdoit être défini surFalse. S'ils sont au format de cartes de segmentation, il est recommandé de spécifiernum_labelsafin de construire une palette permettant de mapper le masque de prompt d'un canal unique vers un RGB à 3 canaux. Sinum_labelsn'est pas spécifié, le masque de prompt sera dupliqué sur la dimension des canaux. - do_convert_rgb (
bool, kwargs, facultatif) — Indique s'il faut convertir l'image en RGB. - do_resize (
bool, kwargs, facultatif) — Indique s'il faut redimensionner l'image. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Définit les dimensions maximales des entrées du modèle. - default_to_square (
bool, kwargs, facultatif) — Indique s'il faut par défaut redimensionner l'image en carré si la taille est un entier. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Taille de l'image de sortie après application decenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — Filtre de rééchantillonnage à utiliser lors du redimensionnement de l’image. Il peut s’agir de l’une des valeurs de l’enumPILImageResampling. N’a un effet que sido_resizeest défini surTrue. - do_rescale (
bool, kwargs, facultatif) — Indique s'il faut rééchelonner l'image. - rescale_factor (
float, kwargs, facultatif) — Facteur de remise à l'échelle à appliquer à l'image sido_rescaleest défini surTrue. - do_normalize (
bool, kwargs, facultatif) — Indique s'il faut normaliser l'image. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, facultatif) — Moyenne de l'image à utiliser pour la normalisation. N'a un effet que sido_normalizeest défini surTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, facultatif) — Écart-type de l'image à utiliser pour la normalisation. N'a un effet que sido_normalizeest défini surTrue. - do_pad (
bool, kwargs, facultatif) — Indique s'il faut effectuer un bourrage (padding) de l'image. Le bourrage est effectué soit jusqu'à la plus grande taille du lot, soit jusqu'à une taille carrée fixe par image. La stratégie de bourrage exacte dépend du modèle. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — La taille au format{"height": int, "width" int}à laquelle les images doivent être remplies. Elle doit être supérieure à la taille de n'importe quelle image fournie pour la prétraitement. Sipad_sizen'est pas fourni, les images seront remplies jusqu'à la hauteur et la largeur maximales du lot. Appliqué uniquement lorsquedo_pad=True. - do_center_crop (
bool, kwargs, facultatif) — Indique s'il faut effectuer un recadrage centré de l'image. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, facultatif) — SeulChannelDimension.FIRSTest pris en charge. Ajouté pour la compatibilité avec les processeurs lents. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, facultatif) — Le format de la dimension des canaux pour l'image d'entrée. Si non défini, le format de la dimension des canaux est déduit de l'image d'entrée. Peut être l'un des éléments suivants :"channels_first"ouChannelDimension.FIRST: image au format (num_channels, height, width)."channels_last"ouChannelDimension.LAST: image au format (hauteur, largeur, nombre de canaux)."none"ouChannelDimension.NONE: image au format (hauteur, largeur).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — L’appareil sur lequel traiter les vidéos. Si non défini, l’appareil est déduit des vidéos d’entrée. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Retourne des tenseurs empilés si défini sur'pt', sinon retourne une liste de tenseurs. - disable_grouping (
bool, kwargs, facultatif) — Indique s'il faut désactiver le regroupement des images par taille afin de les traiter individuellement plutôt que par lots. Si la valeur est None, elle est définie sur True si les images sont sur CPU, et sur False dans le cas contraire. Ce choix repose sur des observations empiriques, comme détaillé ici : https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, facultatif) — Le nombre de jetons d’image à utiliser pour chaque image de l’entrée. Ajouté pour la compatibilité ascendante, mais cela devrait être défini comme un attribut du processeur dans les futurs modèles. - num_labels (
int, kwargs, facultatif) — Nombre de classes dans la tâche de segmentation (hors arrière-plan). Si cette valeur est spécifiée, une palette est construite, en supposant que class_idx 0 correspond à l’arrière-plan, afin de convertir le masque de prompt depuis une carte de segmentation brute vers une image RGB à 3 canaux. Si elle n’est pas spécifiée, le masque de prompt est dupliqué sur la dimension des canaux lorsquedo_convert_rgbvautTrue.
Retourne
~image_processing_base.BatchFeature
- data (
dict) — Dictionnaire de listes/tableaux/tenseurs renvoyé par la méthode call (« pixel_values », etc.). - tensor_type (
Union[None, str, TensorType], facultatif) — Vous pouvez spécifier un tensor_type ici pour convertir les listes d'entiers en tenseurs PyTorch/Numpy lors de l'initialisation.
post_process_semantic_segmentation
< source >( outputstarget_sizes: list[tuple[int, int]] | None = Nonenum_labels: int | None = Nonereturn_segmentation_scores: bool = False ) → list[torch.Tensor] or list[SemanticSegmentationPostProcessorOutput]
Paramètres
- outputs (
SegGptImageSegmentationOutput) — Sorties brutes du modèle. - target_sizes (
list[tuple[int, int]], facultatif) — Liste de longueurbatch_size, où chaque élément correspond à la taille finale demandée(height, width)de chaque prédiction. Si laissée àNone, les prédictions ne seront pas redimensionnées. - num_labels (
int, facultatif) — Nombre de classes de la tâche de segmentation (hors arrière-plan). Si cette valeur est spécifiée, une palette est construite pour remapper les masques de prédiction depuis les valeurs RGB vers les indices de classes. Elle doit correspondre à la valeur utilisée lors du prétraitement. - return_segmentation_scores (
bool, facultatif, valeur par défautFalse) — Indique s'il faut retourner les scores de segmentation en plus de la carte de segmentation. SiTrue, chaque élément de la liste retournée est unSemanticSegmentationPostProcessorOutputavec les champssegmentation(identifiants de classes, forme(height, width)) etsegmentation_scores(forme(num_labels+1, height, width)des distances L2 au carré négatives par rapport à chaque couleur de la palette, ouNonesinum_labelsn'est pas fourni).
Retourne
list[torch.Tensor] ou list[SemanticSegmentationPostProcessorOutput]
Lorsque
return_segmentation_scores=False (par défaut), une liste de longueur batch_size dont chaque élément est une
carte de segmentation de forme (height, width) avec des identifiants de classes. Lorsque return_segmentation_scores=True,
une liste de SemanticSegmentationPostProcessorOutput avec les champs segmentation (identifiants de classes, forme
(height, width)) et segmentation_scores (forme (num_labels+1, height, width)). Dans les deux cas,
(height, width) correspond à la taille cible (si target_sizes est spécifiée).
Convertit la sortie de SegGptImageSegmentationOutput en cartes de segmentation. Prend uniquement en charge PyTorch.
SegGptModel
classe transformers.SegGptModel
< source >( config: SegGptConfig )
Paramètres
- config (SegGptConfig) — Classe de configuration du modèle contenant tous les paramètres du modèle. L'initialisation à partir d'un fichier de configuration ne charge pas les poids associés au modèle, uniquement la configuration. Consultez la méthode from_pretrained() pour charger les poids du modèle.
Le modèle Seggpt brut, qui produit des états cachés bruts sans aucune tête spécifique au sommet.
Ce modèle hérite de PreTrainedModel. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous ses modèles (tels que le téléchargement ou l'enregistrement, le redimensionnement des embeddings d'entrée, la taille des têtes, etc.)
Ce modèle est également une sous-classe de torch.nn.Module de PyTorch. Utilisez-le comme un module PyTorch standard et consultez la documentation de PyTorch pour tout ce qui concerne l'utilisation et le comportement généraux.
forward
< source >( pixel_values: Tensorprompt_pixel_values: Tensorprompt_masks: Tensorbool_masked_pos: typing.Optional[torch.BoolTensor] = Nonefeature_ensemble: bool | None = Noneembedding_type: str | None = Nonelabels: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → SegGptEncoderOutput or tuple(torch.Tensor)
Paramètres
- pixel_values (
torch.Tensorde forme(batch_size, num_channels, image_size, image_size)) — Les tenseurs correspondant aux images d’entrée. Les valeurs de pixels peuvent être obtenues à l’aide de SegGptImageProcessor. Voir SegGptImageProcessor.call() pour plus de détails (processor_classutilise SegGptImageProcessor pour le traitement des images). - prompt_pixel_values (
torch.Tensorde forme(batch_size, num_channels, height, width)) — Valeurs de pixels du prompt. Les valeurs de pixels du prompt peuvent être obtenues à l'aide de AutoImageProcessor. Voir SegGptImageProcessor.call() pour plus de détails. - prompt_masks (
torch.Tensorde forme(batch_size, num_channels, height, width)) — Masque de prompt. Le masque de prompt peut être obtenu à l’aide de AutoImageProcessor. Voir SegGptImageProcessor.call() pour plus de détails. - bool_masked_pos (
torch.BoolTensorde forme(batch_size, num_patches), facultatif) — Positions masquées booléennes. Indique quels patches sont masqués (1) et lesquels ne le sont pas (0). - feature_ensemble (
bool, facultatif) — Booléen indiquant s'il faut utiliser l'ensemble de caractéristiques ou non. SiTrue, le modèle utilisera l'ensemble de caractéristiques si nous disposons d'au moins deux prompts. SiFalse, le modèle n'utilisera pas l'ensemble de caractéristiques. Cet argument doit être pris en compte lors de l'inférence few-shot sur une image d'entrée, c'est-à-dire avec plus d'un prompt pour la même image. - embedding_type (
str, facultatif) — Type d’embedding. Indique si le prompt est un embedding sémantique ou un embedding d’instance. Peut être soit instance, soit semantic. - labels (
torch.Tensorof shape(batch_size, num_channels, height, width),optional) — Ground truth mask for input images. - output_attentions (
bool, facultatif) — Indique s'il faut ou non retourner les tenseurs d'attention de toutes les couches d'attention. Consultezattentionssous les tenseurs retournés pour plus de détails. - output_hidden_states (
bool, facultatif) — Indique s'il faut retourner les états cachés de toutes les couches. Voirhidden_statessous les tenseurs retournés pour plus de détails. - return_dict (
bool, facultatif) — Indique s'il faut retourner un ModelOutput plutôt qu'un simple tuple.
Retourne
SegGptEncoderOutput ou tuple(torch.Tensor)
Un SegGptEncoderOutput ou un tuple de
torch.Tensor (si return_dict=False est passé ou lorsque config.return_dict=False) comprenant divers
éléments en fonction de la configuration (SegGptConfig) et des entrées.
La méthode forward de SegGptModel redéfinit la méthode spéciale __call__.
Bien que la recette de la passe avant doive être définie dans cette fonction, il faut ensuite appeler l'instance
Moduleplutôt que celle-ci, car la première gère l'exécution des étapes de prétraitement et de post-traitement, tandis que la seconde les ignore silencieusement.
- last_hidden_state (
torch.Tensorde forme(batch_size, patch_height, patch_width, hidden_size)) — Séquence d'états cachés à la sortie de la dernière couche du modèle. - hidden_states (
tuple[torch.Tensor],optional, renvoyé lorsqueconfig.output_hidden_states=True) — Tuple detorch.Tensor(un pour la sortie des embeddings + un pour la sortie de chaque couche) de forme(batch_size, patch_height, patch_width, hidden_size). - attentions (
tuple[torch.Tensor],optional, renvoyé lorsqueconfig.output_attentions=True) — Tuple de torch.Tensor (un par couche) de forme(batch_size, num_heads, seq_len, seq_len). - intermediate_hidden_states (
tuple[torch.Tensor], facultatif, renvoyé lorsqueconfig.intermediate_hidden_state_indicesest défini) — Tuple detorch.Tensorde forme(batch_size, patch_height, patch_width, hidden_size). Chaque élément du Tuple correspond à la sortie de la couche spécifiée dansconfig.intermediate_hidden_state_indices. De plus, chaque caractéristique passe par une LayerNorm.
Exemples :
>>> from transformers import SegGptImageProcessor, SegGptModel
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> image_input_url = "https://raw.githubusercontent.com/baaivision/Painter/main/SegGPT/SegGPT_inference/examples/hmbb_2.jpg"
>>> image_prompt_url = "https://raw.githubusercontent.com/baaivision/Painter/main/SegGPT/SegGPT_inference/examples/hmbb_1.jpg"
>>> mask_prompt_url = "https://raw.githubusercontent.com/baaivision/Painter/main/SegGPT/SegGPT_inference/examples/hmbb_1_target.png"
>>> with httpx.stream("GET", image_input_url) as response:
... image_input = Image.open(BytesIO(response.read()))
>>> with httpx.stream("GET", image_prompt_url) as response:
... image_prompt = Image.open(BytesIO(response.read()))
>>> with httpx.stream("GET", mask_prompt_url) as response:
... mask_prompt = Image.open(BytesIO(response.read())).convert("L")
>>> checkpoint = "BAAI/seggpt-vit-large"
>>> model = SegGptModel.from_pretrained(checkpoint)
>>> image_processor = SegGptImageProcessor.from_pretrained(checkpoint)
>>> inputs = image_processor(images=image_input, prompt_images=image_prompt, prompt_masks=mask_prompt, return_tensors="pt")
>>> outputs = model(**inputs)
>>> list(outputs.last_hidden_state.shape)
[1, 56, 28, 1024]SegGptForImageSegmentation
classe transformers.SegGptForImageSegmentation
< source >( config: SegGptConfig )
Paramètres
- config (SegGptConfig) — Classe de configuration du modèle contenant tous les paramètres du modèle. L'initialisation à partir d'un fichier de configuration ne charge pas les poids associés au modèle, uniquement la configuration. Consultez la méthode from_pretrained() pour charger les poids du modèle.
Modèle SegGpt avec un décodeur en tête pour la segmentation d'image en un seul exemple.
Ce modèle hérite de PreTrainedModel. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous ses modèles (tels que le téléchargement ou l'enregistrement, le redimensionnement des embeddings d'entrée, la taille des têtes, etc.)
Ce modèle est également une sous-classe de torch.nn.Module de PyTorch. Utilisez-le comme un module PyTorch standard et consultez la documentation de PyTorch pour tout ce qui concerne l'utilisation et le comportement généraux.
forward
< source >( pixel_values: Tensorprompt_pixel_values: Tensorprompt_masks: Tensorbool_masked_pos: typing.Optional[torch.BoolTensor] = Nonefeature_ensemble: bool | None = Noneembedding_type: str | None = Nonelabels: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → SegGptImageSegmentationOutput or tuple(torch.Tensor)
Paramètres
- pixel_values (
torch.Tensorde forme(batch_size, num_channels, image_size, image_size)) — Les tenseurs correspondant aux images d’entrée. Les valeurs de pixels peuvent être obtenues à l’aide de SegGptImageProcessor. Voir SegGptImageProcessor.call() pour plus de détails (processor_classutilise SegGptImageProcessor pour le traitement des images). - prompt_pixel_values (
torch.Tensorde forme(batch_size, num_channels, height, width)) — Valeurs de pixels du prompt. Les valeurs de pixels du prompt peuvent être obtenues à l'aide de AutoImageProcessor. Voir SegGptImageProcessor.call() pour plus de détails. - prompt_masks (
torch.Tensorde forme(batch_size, num_channels, height, width)) — Masque de prompt. Le masque de prompt peut être obtenu à l’aide de AutoImageProcessor. Voir SegGptImageProcessor.call() pour plus de détails. - bool_masked_pos (
torch.BoolTensorde forme(batch_size, num_patches), facultatif) — Positions masquées booléennes. Indique quels patches sont masqués (1) et lesquels ne le sont pas (0). - feature_ensemble (
bool, facultatif) — Booléen indiquant s'il faut utiliser l'ensemble de caractéristiques ou non. SiTrue, le modèle utilisera l'ensemble de caractéristiques si nous disposons d'au moins deux prompts. SiFalse, le modèle n'utilisera pas l'ensemble de caractéristiques. Cet argument doit être pris en compte lors de l'inférence few-shot sur une image d'entrée, c'est-à-dire avec plus d'un prompt pour la même image. - embedding_type (
str, facultatif) — Type d’embedding. Indique si le prompt est un embedding sémantique ou un embedding d’instance. Peut être soit instance, soit semantic. - labels (
torch.Tensorof shape(batch_size, num_channels, height, width),optional) — Ground truth mask for input images. - output_attentions (
bool, facultatif) — Indique s'il faut ou non retourner les tenseurs d'attention de toutes les couches d'attention. Consultezattentionssous les tenseurs retournés pour plus de détails. - output_hidden_states (
bool, facultatif) — Indique s'il faut retourner les états cachés de toutes les couches. Voirhidden_statessous les tenseurs retournés pour plus de détails. - return_dict (
bool, facultatif) — Indique s'il faut retourner un ModelOutput plutôt qu'un simple tuple.
Retourne
SegGptImageSegmentationOutput ou tuple(torch.Tensor)
Un SegGptImageSegmentationOutput ou un tuple de
torch.Tensor (si return_dict=False est passé ou lorsque config.return_dict=False) comprenant divers
éléments en fonction de la configuration (SegGptConfig) et des entrées.
La méthode forward de SegGptForImageSegmentation redéfinit la méthode spéciale __call__.
Bien que la recette de la passe avant doive être définie dans cette fonction, il faut ensuite appeler l'instance
Moduleplutôt que celle-ci, car la première gère l'exécution des étapes de prétraitement et de post-traitement, tandis que la seconde les ignore silencieusement.
- loss (
torch.Tensor, facultatif, renvoyé lorsquelabelsest fourni) — La valeur de la perte. - pred_masks (
torch.Tensorde forme(batch_size, num_channels, height, width)) — Les masques prédits. - hidden_states (
tuple[torch.Tensor],optional, renvoyé lorsqueconfig.output_hidden_states=True) — Tuple detorch.Tensor(un pour la sortie des embeddings + un pour la sortie de chaque couche) de forme(batch_size, patch_height, patch_width, hidden_size). - attentions (
tuple[torch.Tensor],optional, renvoyé lorsqueconfig.output_attentions=True) — Tuple detorch.Tensor(un par couche) de forme(batch_size, num_heads, seq_len, seq_len).
Exemples :
>>> from transformers import SegGptImageProcessor, SegGptForImageSegmentation
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> image_input_url = "https://raw.githubusercontent.com/baaivision/Painter/main/SegGPT/SegGPT_inference/examples/hmbb_2.jpg"
>>> image_prompt_url = "https://raw.githubusercontent.com/baaivision/Painter/main/SegGPT/SegGPT_inference/examples/hmbb_1.jpg"
>>> mask_prompt_url = "https://raw.githubusercontent.com/baaivision/Painter/main/SegGPT/SegGPT_inference/examples/hmbb_1_target.png"
>>> with httpx.stream("GET", image_input_url) as response:
... image_input = Image.open(BytesIO(response.read()))
>>> with httpx.stream("GET", image_prompt_url) as response:
... image_prompt = Image.open(BytesIO(response.read()))
>>> with httpx.stream("GET", mask_prompt_url) as response:
... mask_prompt = Image.open(BytesIO(response.read())).convert("L")
>>> checkpoint = "BAAI/seggpt-vit-large"
>>> model = SegGptForImageSegmentation.from_pretrained(checkpoint)
>>> image_processor = SegGptImageProcessor.from_pretrained(checkpoint)
>>> inputs = image_processor(images=image_input, prompt_images=image_prompt, prompt_masks=mask_prompt, return_tensors="pt")
>>> outputs = model(**inputs)
>>> result = image_processor.post_process_semantic_segmentation(outputs, target_sizes=[(image_input.height, image_input.width)])[0]
>>> print(list(result.shape))
[170, 297]