673 lines
4.4 MiB
Plaintext
673 lines
4.4 MiB
Plaintext
|
|
{
|
||
|
|
"cells": [
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 1,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"# Copyright (c) Meta Platforms, Inc. and affiliates."
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"metadata": {},
|
||
|
|
"source": [
|
||
|
|
"# <a target=\"_blank\" href=\"https://colab.research.google.com/github/facebookresearch/sam3/blob/main/notebooks/sam3_image_batched_inference.ipynb\">\n",
|
||
|
|
"# <img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/>\n",
|
||
|
|
"# </a>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 2,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"using_colab = False"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 3,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"if using_colab:\n",
|
||
|
|
" import torch\n",
|
||
|
|
" import torchvision\n",
|
||
|
|
" print(\"PyTorch version:\", torch.__version__)\n",
|
||
|
|
" print(\"Torchvision version:\", torchvision.__version__)\n",
|
||
|
|
" print(\"CUDA is available:\", torch.cuda.is_available())\n",
|
||
|
|
" import sys\n",
|
||
|
|
" !{sys.executable} -m pip install opencv-python matplotlib scikit-learn\n",
|
||
|
|
" !{sys.executable} -m pip install 'git+https://github.com/facebookresearch/sam3.git'"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 7,
|
||
|
|
"metadata": {
|
||
|
|
"output": {
|
||
|
|
"id": 1373952277654085,
|
||
|
|
"loadingStatus": "loaded"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"from PIL import Image\n",
|
||
|
|
"import requests\n",
|
||
|
|
"from io import BytesIO\n",
|
||
|
|
"import sam3\n",
|
||
|
|
"from sam3.train.data.collator import collate_fn_api as collate\n",
|
||
|
|
"from sam3.model.utils.misc import copy_data_to_device\n",
|
||
|
|
"import os\n",
|
||
|
|
"sam3_root = os.path.join(os.path.dirname(sam3.__file__), \"..\")"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 8,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"import torch\n",
|
||
|
|
"# turn on tfloat32 for Ampere GPUs\n",
|
||
|
|
"# https://pytorch.org/docs/stable/notes/cuda.html#tensorfloat-32-tf32-on-ampere-devices\n",
|
||
|
|
"torch.backends.cuda.matmul.allow_tf32 = True\n",
|
||
|
|
"torch.backends.cudnn.allow_tf32 = True\n",
|
||
|
|
"\n",
|
||
|
|
"# use bfloat16 for the entire notebook. If your card doesn't support it, try float16 instead\n",
|
||
|
|
"torch.autocast(\"cuda\", dtype=torch.bfloat16).__enter__()\n",
|
||
|
|
"\n",
|
||
|
|
"# inference mode for the whole notebook. Disable if you need gradients\n",
|
||
|
|
"torch.inference_mode().__enter__()\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"metadata": {},
|
||
|
|
"source": [
|
||
|
|
"# Utilities"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"metadata": {},
|
||
|
|
"source": [
|
||
|
|
"## Plotting"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"metadata": {},
|
||
|
|
"source": [
|
||
|
|
"This section contains simple utilities to plot masks and bounding masks on top of an image"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 9,
|
||
|
|
"metadata": {
|
||
|
|
"output": {
|
||
|
|
"id": 819341201047004,
|
||
|
|
"loadingStatus": "loaded"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"import sys\n",
|
||
|
|
"\n",
|
||
|
|
"sys.path.append(f\"{sam3_root}/examples\")\n",
|
||
|
|
"\n",
|
||
|
|
"from sam3.visualization_utils import plot_results"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"metadata": {},
|
||
|
|
"source": [
|
||
|
|
"## Batching"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"metadata": {},
|
||
|
|
"source": [
|
||
|
|
"This section contains some utility functions to create datapoints. They are optional, but give some good indication on how they should be created"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 10,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"from sam3.train.data.sam3_image_dataset import InferenceMetadata, FindQueryLoaded, Image as SAMImage, Datapoint\n",
|
||
|
|
"from typing import List\n",
|
||
|
|
"\n",
|
||
|
|
"GLOBAL_COUNTER = 1\n",
|
||
|
|
"def create_empty_datapoint():\n",
|
||
|
|
" \"\"\" A datapoint is a single image on which we can apply several queries at once. \"\"\"\n",
|
||
|
|
" return Datapoint(find_queries=[], images=[])\n",
|
||
|
|
"\n",
|
||
|
|
"def set_image(datapoint, pil_image):\n",
|
||
|
|
" \"\"\" Add the image to be processed to the datapoint \"\"\"\n",
|
||
|
|
" w,h = pil_image.size\n",
|
||
|
|
" datapoint.images = [SAMImage(data=pil_image, objects=[], size=[h,w])]\n",
|
||
|
|
"\n",
|
||
|
|
"def add_text_prompt(datapoint, text_query):\n",
|
||
|
|
" \"\"\" Add a text query to the datapoint \"\"\"\n",
|
||
|
|
"\n",
|
||
|
|
" global GLOBAL_COUNTER\n",
|
||
|
|
" # in this function, we require that the image is already set.\n",
|
||
|
|
" # that's because we'll get its size to figure out what dimension to resize masks and boxes\n",
|
||
|
|
" # In practice you're free to set any size you want, just edit the rest of the function\n",
|
||
|
|
" assert len(datapoint.images) == 1, \"please set the image first\"\n",
|
||
|
|
"\n",
|
||
|
|
" w, h = datapoint.images[0].size\n",
|
||
|
|
" datapoint.find_queries.append(\n",
|
||
|
|
" FindQueryLoaded(\n",
|
||
|
|
" query_text=text_query,\n",
|
||
|
|
" image_id=0,\n",
|
||
|
|
" object_ids_output=[], # unused for inference\n",
|
||
|
|
" is_exhaustive=True, # unused for inference\n",
|
||
|
|
" query_processing_order=0,\n",
|
||
|
|
" inference_metadata=InferenceMetadata(\n",
|
||
|
|
" coco_image_id=GLOBAL_COUNTER,\n",
|
||
|
|
" original_image_id=GLOBAL_COUNTER,\n",
|
||
|
|
" original_category_id=1,\n",
|
||
|
|
" original_size=[w, h],\n",
|
||
|
|
" object_id=0,\n",
|
||
|
|
" frame_index=0,\n",
|
||
|
|
" )\n",
|
||
|
|
" )\n",
|
||
|
|
" )\n",
|
||
|
|
" GLOBAL_COUNTER += 1\n",
|
||
|
|
" return GLOBAL_COUNTER - 1\n",
|
||
|
|
"\n",
|
||
|
|
"def add_visual_prompt(datapoint, boxes:List[List[float]], labels:List[bool], text_prompt=\"visual\"):\n",
|
||
|
|
" \"\"\" Add a visual query to the datapoint.\n",
|
||
|
|
" The bboxes are expected in XYXY format (top left and bottom right corners)\n",
|
||
|
|
" For each bbox, we expect a label (true or false). The model tries to find boxes that ressemble the positive ones while avoiding the negative ones\n",
|
||
|
|
" We can also give a text_prompt as an additional hint. It's not mandatory, leave it to \"visual\" if you want the model to solely rely on the boxes.\n",
|
||
|
|
"\n",
|
||
|
|
" Note that the model expects the prompt to be consistent. If the text reads \"elephant\" but the provided boxe points to a dog, the results will be undefined.\n",
|
||
|
|
" \"\"\"\n",
|
||
|
|
"\n",
|
||
|
|
" global GLOBAL_COUNTER\n",
|
||
|
|
" # in this function, we require that the image is already set.\n",
|
||
|
|
" # that's because we'll get its size to figure out what dimension to resize masks and boxes\n",
|
||
|
|
" # In practice you're free to set any size you want, just edit the rest of the function\n",
|
||
|
|
" assert len(datapoint.images) == 1, \"please set the image first\"\n",
|
||
|
|
" assert len(boxes) > 0, \"please provide at least one box\"\n",
|
||
|
|
" assert len(boxes) == len(labels), f\"Expecting one label per box. Found {len(boxes)} boxes but {len(labels)} labels\"\n",
|
||
|
|
" for b in boxes:\n",
|
||
|
|
" assert len(b) == 4, f\"Boxes must have 4 coordinates, found {len(b)}\"\n",
|
||
|
|
"\n",
|
||
|
|
" labels = torch.tensor(labels, dtype=torch.bool).view(-1)\n",
|
||
|
|
" if not labels.any().item() and text_prompt==\"visual\":\n",
|
||
|
|
" print(\"Warning: you provided no positive box, nor any text prompt. The prompt is ambiguous and the results will be undefined\")\n",
|
||
|
|
" w, h = datapoint.images[0].size\n",
|
||
|
|
" datapoint.find_queries.append(\n",
|
||
|
|
" FindQueryLoaded(\n",
|
||
|
|
" query_text=text_prompt,\n",
|
||
|
|
" image_id=0,\n",
|
||
|
|
" object_ids_output=[], # unused for inference\n",
|
||
|
|
" is_exhaustive=True, # unused for inference\n",
|
||
|
|
" query_processing_order=0,\n",
|
||
|
|
" input_bbox=torch.tensor(boxes, dtype=torch.float).view(-1,4),\n",
|
||
|
|
" input_bbox_label=labels,\n",
|
||
|
|
" inference_metadata=InferenceMetadata(\n",
|
||
|
|
" coco_image_id=GLOBAL_COUNTER,\n",
|
||
|
|
" original_image_id=GLOBAL_COUNTER,\n",
|
||
|
|
" original_category_id=1,\n",
|
||
|
|
" original_size=[w, h],\n",
|
||
|
|
" object_id=0,\n",
|
||
|
|
" frame_index=0,\n",
|
||
|
|
" )\n",
|
||
|
|
" )\n",
|
||
|
|
" )\n",
|
||
|
|
" GLOBAL_COUNTER += 1\n",
|
||
|
|
" return GLOBAL_COUNTER - 1"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"metadata": {},
|
||
|
|
"source": [
|
||
|
|
"# Loading"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"metadata": {},
|
||
|
|
"source": [
|
||
|
|
"First we load our model"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 11,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"from sam3 import build_sam3_image_model\n",
|
||
|
|
"\n",
|
||
|
|
"bpe_path = f\"{sam3_root}/assets/bpe_simple_vocab_16e6.txt.gz\"\n",
|
||
|
|
"model = build_sam3_image_model(bpe_path=bpe_path)"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"metadata": {},
|
||
|
|
"source": [
|
||
|
|
"Then our validation transforms"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 12,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"from sam3.train.transforms.basic_for_api import ComposeAPI, RandomResizeAPI, ToTensorAPI, NormalizeAPI\n",
|
||
|
|
"\n",
|
||
|
|
"from sam3.model.position_encoding import PositionEmbeddingSine\n",
|
||
|
|
"transform = ComposeAPI(\n",
|
||
|
|
" transforms=[\n",
|
||
|
|
" RandomResizeAPI(sizes=1008, max_size=1008, square=True, consistent_transform=False),\n",
|
||
|
|
" ToTensorAPI(),\n",
|
||
|
|
" NormalizeAPI(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]),\n",
|
||
|
|
" ]\n",
|
||
|
|
")\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"metadata": {},
|
||
|
|
"source": [
|
||
|
|
"And finally our postprocessor"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 13,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"from sam3.eval.postprocessors import PostProcessImage\n",
|
||
|
|
"postprocessor = PostProcessImage(\n",
|
||
|
|
" max_dets_per_img=-1, # if this number is positive, the processor will return topk. For this demo we instead limit by confidence, see below\n",
|
||
|
|
" iou_type=\"segm\", # we want masks\n",
|
||
|
|
" use_original_sizes_box=True, # our boxes should be resized to the image size\n",
|
||
|
|
" use_original_sizes_mask=True, # our masks should be resized to the image size\n",
|
||
|
|
" convert_mask_to_rle=False, # the postprocessor supports efficient conversion to RLE format. In this demo we prefer the binary format for easy plotting\n",
|
||
|
|
" detection_threshold=0.5, # Only return confident detections\n",
|
||
|
|
" to_cpu=False,\n",
|
||
|
|
")"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"metadata": {},
|
||
|
|
"source": [
|
||
|
|
"# Inference"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"metadata": {},
|
||
|
|
"source": [
|
||
|
|
"For inference, we proceed as follows:\n",
|
||
|
|
"- Create each datapoint one by one, using the functions above. Each query that we make will give us a unique id, which is then used after post-processing to retrieve the results\n",
|
||
|
|
"- Each datapoint must be transformed according to are pre-processing transforms (basically resize to 1008x1008, normalize)\n",
|
||
|
|
"- We then collate all datapoints into a batch and forward it to the model"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 14,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"# Image 1, we'll use two text prompts\n",
|
||
|
|
"\n",
|
||
|
|
"img1 = Image.open(BytesIO(requests.get(\"http://images.cocodataset.org/val2017/000000077595.jpg\").content))\n",
|
||
|
|
"datapoint1 = create_empty_datapoint()\n",
|
||
|
|
"set_image(datapoint1, img1)\n",
|
||
|
|
"id1 = add_text_prompt(datapoint1, \"cat\")\n",
|
||
|
|
"id2 = add_text_prompt(datapoint1, \"laptop\")\n",
|
||
|
|
"\n",
|
||
|
|
"datapoint1 = transform(datapoint1)"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 15,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"# Image 2, one text prompt, some visual prompt\n",
|
||
|
|
"img2 = Image.open(BytesIO(requests.get(\"http://images.cocodataset.org/val2017/000000136466.jpg\").content))\n",
|
||
|
|
"\n",
|
||
|
|
"# img2 = Image.open(f\"{sam3_root}/assets/images/test_image.jpg\")\n",
|
||
|
|
"datapoint2 = create_empty_datapoint()\n",
|
||
|
|
"set_image(datapoint2, img2)\n",
|
||
|
|
"id3 = add_text_prompt(datapoint2, \"pot\")\n",
|
||
|
|
"# we trying to find the dials on the oven. Let's give a positive box\n",
|
||
|
|
"id4 = add_visual_prompt(datapoint2, boxes=[[ 59, 144, 76, 163]], labels=[True])\n",
|
||
|
|
"# Let's also get the oven start/stop button\n",
|
||
|
|
"id5 = add_visual_prompt(datapoint2, boxes=[[ 59, 144, 76, 163],[ 87, 148, 104, 159]], labels=[True, True])\n",
|
||
|
|
"# Next, let's try to find the pot handles. With the text prompt \"handle\" (vague on purpose), the model also finds the oven's handles\n",
|
||
|
|
"# We could make the text query more precise (try it!) but for this example, we instead want to leverage a negative prompt\n",
|
||
|
|
"# First, let's see what happens with just the text prompt\n",
|
||
|
|
"id6 = add_text_prompt(datapoint2, \"handle\")\n",
|
||
|
|
"# now the same but adding the negative prompt\n",
|
||
|
|
"id7 = add_visual_prompt(datapoint2, boxes=[[ 40, 183, 318, 204]], labels=[False], text_prompt=\"handle\")\n",
|
||
|
|
"\n",
|
||
|
|
"datapoint2 = transform(datapoint2)"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 16,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"# Collate then move to cuda\n",
|
||
|
|
"batch = collate([datapoint1, datapoint2], dict_key=\"dummy\")[\"dummy\"]\n",
|
||
|
|
"batch = copy_data_to_device(batch, torch.device(\"cuda\"), non_blocking=True)"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 17,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"name": "stderr",
|
||
|
|
"output_type": "stream",
|
||
|
|
"text": [
|
||
|
|
"/home/haithamkhedr/.conda/envs/sam3/lib/python3.12/site-packages/torch/_inductor/lowering.py:1917: UserWarning: Torchinductor does not support code generation for complex operators. Performance may be worse than eager.\n",
|
||
|
|
" warnings.warn(\n"
|
||
|
|
]
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"# Forward. Note that the first forward will be very slow due to compilation\n",
|
||
|
|
"output = model(batch)"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 18,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"processed_results = postprocessor.process_results(output, batch.find_metadatas)"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"metadata": {},
|
||
|
|
"source": [
|
||
|
|
"# Plotting"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 19,
|
||
|
|
"metadata": {
|
||
|
|
"output": {
|
||
|
|
"id": 3372746802877191,
|
||
|
|
"loadingStatus": "loaded"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"name": "stdout",
|
||
|
|
"output_type": "stream",
|
||
|
|
"text": [
|
||
|
|
"found 1 object(s)\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"image/png": "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
|
||
|
|
"text/plain": [
|
||
|
|
"<Figure size 1200x800 with 1 Axes>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"metadata": {},
|
||
|
|
"output_type": "display_data"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"plot_results(img1, processed_results[id1])"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 20,
|
||
|
|
"metadata": {
|
||
|
|
"output": {
|
||
|
|
"id": 1534672901285632,
|
||
|
|
"loadingStatus": "loaded"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"name": "stdout",
|
||
|
|
"output_type": "stream",
|
||
|
|
"text": [
|
||
|
|
"found 1 object(s)\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"image/png": "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
|
||
|
|
"text/plain": [
|
||
|
|
"<Figure size 1200x800 with 1 Axes>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"metadata": {},
|
||
|
|
"output_type": "display_data"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"plot_results(img1, processed_results[id2])"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 21,
|
||
|
|
"metadata": {
|
||
|
|
"output": {
|
||
|
|
"id": 4200415163576837,
|
||
|
|
"loadingStatus": "loaded"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"name": "stdout",
|
||
|
|
"output_type": "stream",
|
||
|
|
"text": [
|
||
|
|
"found 2 object(s)\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"image/png": "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
|
||
|
|
"text/plain": [
|
||
|
|
"<Figure size 1200x800 with 1 Axes>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"metadata": {},
|
||
|
|
"output_type": "display_data"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"# this is the prompt \"pot\"\n",
|
||
|
|
"plot_results(img2, processed_results[id3])"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 22,
|
||
|
|
"metadata": {
|
||
|
|
"output": {
|
||
|
|
"id": 1134247454956879,
|
||
|
|
"loadingStatus": "loaded"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"name": "stdout",
|
||
|
|
"output_type": "stream",
|
||
|
|
"text": [
|
||
|
|
"found 6 object(s)\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"image/png": "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
|
||
|
|
"text/plain": [
|
||
|
|
"<Figure size 1200x800 with 1 Axes>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"metadata": {},
|
||
|
|
"output_type": "display_data"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"# This is the result of the visual prompt. We prompted for the left-most dial, the model correctly found all of them.\n",
|
||
|
|
"plot_results(img2, processed_results[id4])"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 23,
|
||
|
|
"metadata": {
|
||
|
|
"output": {
|
||
|
|
"id": 1447567612993533,
|
||
|
|
"loadingStatus": "loaded"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"name": "stdout",
|
||
|
|
"output_type": "stream",
|
||
|
|
"text": [
|
||
|
|
"found 7 object(s)\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"image/png": "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
|
||
|
|
"text/plain": [
|
||
|
|
"<Figure size 1200x800 with 1 Axes>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"metadata": {},
|
||
|
|
"output_type": "display_data"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"# This is the same as above, but we also added a prompt for the on/off switch\n",
|
||
|
|
"plot_results(img2, processed_results[id5])"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 24,
|
||
|
|
"metadata": {
|
||
|
|
"output": {
|
||
|
|
"id": 730073820047625,
|
||
|
|
"loadingStatus": "loaded"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"name": "stdout",
|
||
|
|
"output_type": "stream",
|
||
|
|
"text": [
|
||
|
|
"found 5 object(s)\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"image/png": "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
|
||
|
|
"text/plain": [
|
||
|
|
"<Figure size 1200x800 with 1 Axes>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"metadata": {},
|
||
|
|
"output_type": "display_data"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"# this is the prompt \"handle\". Notice the oven handles that we want to remove\n",
|
||
|
|
"plot_results(img2, processed_results[id6])"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 25,
|
||
|
|
"metadata": {
|
||
|
|
"output": {
|
||
|
|
"id": 1456993692192335,
|
||
|
|
"loadingStatus": "loaded"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"name": "stdout",
|
||
|
|
"output_type": "stream",
|
||
|
|
"text": [
|
||
|
|
"found 3 object(s)\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"image/png": "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
|
||
|
|
"text/plain": [
|
||
|
|
"<Figure size 1200x800 with 1 Axes>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"metadata": {},
|
||
|
|
"output_type": "display_data"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"# This time we added the negative prompt for the oven handle and the unwanted boxes are gone\n",
|
||
|
|
"plot_results(img2, processed_results[id7])"
|
||
|
|
]
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"metadata": {
|
||
|
|
"fileHeader": "",
|
||
|
|
"fileUid": "76928cb6-3532-4024-bafd-4d3a609dfe2a",
|
||
|
|
"isAdHoc": false,
|
||
|
|
"kernelspec": {
|
||
|
|
"display_name": "Python 3 (ipykernel)",
|
||
|
|
"language": "python",
|
||
|
|
"name": "python3"
|
||
|
|
},
|
||
|
|
"language_info": {
|
||
|
|
"codemirror_mode": {
|
||
|
|
"name": "ipython",
|
||
|
|
"version": 3
|
||
|
|
},
|
||
|
|
"file_extension": ".py",
|
||
|
|
"mimetype": "text/x-python",
|
||
|
|
"name": "python",
|
||
|
|
"nbconvert_exporter": "python",
|
||
|
|
"pygments_lexer": "ipython3",
|
||
|
|
"version": "3.12.11"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"nbformat": 4,
|
||
|
|
"nbformat_minor": 4
|
||
|
|
}
|