apply Black 25.11.0 style in fbcode/deeplearning/projects (21/92)
Summary: Formats the covered files with pyfmt. paintitblack Reviewed By: itamaro Differential Revision: D90476315 fbshipit-source-id: ee94c471788b8e7d067813d8b3e0311214d17f3f
This commit is contained in:
committed by
meta-codesync[bot]
parent
7b89b8fc3f
commit
11dec2936d
@@ -296,9 +296,9 @@ def agent_inference(
|
||||
assert LATEST_SAM3_TEXT_PROMPT != ""
|
||||
|
||||
# Make sure that the last message is a image
|
||||
assert (
|
||||
messages[-1]["content"][1]["type"] == "image"
|
||||
), "Second content element should be an image"
|
||||
assert messages[-1]["content"][1]["type"] == "image", (
|
||||
"Second content element should be an image"
|
||||
)
|
||||
messages.pop() # Remove the last user message
|
||||
# Add simplified replacement message
|
||||
simplified_message = {
|
||||
@@ -318,7 +318,7 @@ def agent_inference(
|
||||
|
||||
# MLLM check the mask one by one
|
||||
for i in range(num_masks):
|
||||
print(f"🔍 Checking mask {i+1}/{num_masks}...")
|
||||
print(f"🔍 Checking mask {i + 1}/{num_masks}...")
|
||||
image_w_mask_i, image_w_zoomed_in_mask_i = visualize(current_outputs, i)
|
||||
|
||||
image_w_zoomed_in_mask_i_path = os.path.join(
|
||||
@@ -363,7 +363,7 @@ def agent_inference(
|
||||
raise ValueError(
|
||||
"Generated text is None, which is unexpected. Please check the Qwen server and the input parameters."
|
||||
)
|
||||
print(f"Generated text for mask {i+1}: {checking_generated_text}")
|
||||
print(f"Generated text for mask {i + 1}: {checking_generated_text}")
|
||||
verdict = (
|
||||
checking_generated_text.split("<verdict>")[-1]
|
||||
.split("</verdict>")[0]
|
||||
@@ -371,11 +371,11 @@ def agent_inference(
|
||||
)
|
||||
if "Accept" in verdict:
|
||||
assert not "Reject" in verdict
|
||||
print(f"Mask {i+1} accepted, keeping it in the outputs.")
|
||||
print(f"Mask {i + 1} accepted, keeping it in the outputs.")
|
||||
masks_to_keep.append(i)
|
||||
elif "Reject" in verdict:
|
||||
assert not "Accept" in verdict
|
||||
print(f"Mask {i+1} rejected, removing it from the outputs.")
|
||||
print(f"Mask {i + 1} rejected, removing it from the outputs.")
|
||||
else:
|
||||
raise ValueError(
|
||||
f"Unexpected verdict in generated text: {checking_generated_text}. Expected 'Accept' or 'Reject'."
|
||||
@@ -397,7 +397,7 @@ def agent_inference(
|
||||
sam_output_dir, rf"{LATEST_SAM3_TEXT_PROMPT}.png"
|
||||
).replace(
|
||||
".png",
|
||||
f"_selected_masks_{'-'.join(map(str, [i+1 for i in masks_to_keep]))}.png".replace(
|
||||
f"_selected_masks_{'-'.join(map(str, [i + 1 for i in masks_to_keep]))}.png".replace(
|
||||
"/", "_"
|
||||
),
|
||||
)
|
||||
|
||||
@@ -7,7 +7,6 @@ import os
|
||||
|
||||
import torch
|
||||
from PIL import Image
|
||||
|
||||
from sam3.model.box_ops import box_xyxy_to_xywh
|
||||
from sam3.train.masks_ops import rle_encode
|
||||
|
||||
|
||||
@@ -84,9 +84,9 @@ class BoxMode(IntEnum):
|
||||
], "Relative mode not yet supported!"
|
||||
|
||||
if from_mode == BoxMode.XYWHA_ABS and to_mode == BoxMode.XYXY_ABS:
|
||||
assert (
|
||||
arr.shape[-1] == 5
|
||||
), "The last dimension of input shape must be 5 for XYWHA format"
|
||||
assert arr.shape[-1] == 5, (
|
||||
"The last dimension of input shape must be 5 for XYWHA format"
|
||||
)
|
||||
original_dtype = arr.dtype
|
||||
arr = arr.double()
|
||||
|
||||
@@ -244,9 +244,9 @@ class Boxes:
|
||||
if isinstance(item, int):
|
||||
return Boxes(self.tensor[item].view(1, -1))
|
||||
b = self.tensor[item]
|
||||
assert (
|
||||
b.dim() == 2
|
||||
), "Indexing on Boxes with {} failed to return a matrix!".format(item)
|
||||
assert b.dim() == 2, (
|
||||
"Indexing on Boxes with {} failed to return a matrix!".format(item)
|
||||
)
|
||||
return Boxes(b)
|
||||
|
||||
def __len__(self) -> int:
|
||||
@@ -425,7 +425,7 @@ def matched_pairwise_iou(boxes1: Boxes, boxes2: Boxes) -> torch.Tensor:
|
||||
Tensor: iou, sized [N].
|
||||
"""
|
||||
assert len(boxes1) == len(boxes2), (
|
||||
"boxlists should have the same" "number of entries, got {}, {}".format(
|
||||
"boxlists should have the samenumber of entries, got {}, {}".format(
|
||||
len(boxes1), len(boxes2)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -13,7 +13,6 @@ from torch import device
|
||||
|
||||
from .boxes import Boxes
|
||||
from .memory import retry_if_cuda_oom
|
||||
|
||||
from .roi_align import ROIAlign
|
||||
|
||||
|
||||
@@ -142,10 +141,10 @@ class BitMasks:
|
||||
if isinstance(item, int):
|
||||
return BitMasks(self.tensor[item].unsqueeze(0))
|
||||
m = self.tensor[item]
|
||||
assert (
|
||||
m.dim() == 3
|
||||
), "Indexing on BitMasks with {} returns a tensor with shape {}!".format(
|
||||
item, m.shape
|
||||
assert m.dim() == 3, (
|
||||
"Indexing on BitMasks with {} returns a tensor with shape {}!".format(
|
||||
item, m.shape
|
||||
)
|
||||
)
|
||||
return BitMasks(m)
|
||||
|
||||
|
||||
@@ -363,9 +363,9 @@ class RotatedBoxes(Boxes):
|
||||
if isinstance(item, int):
|
||||
return RotatedBoxes(self.tensor[item].view(1, -1))
|
||||
b = self.tensor[item]
|
||||
assert (
|
||||
b.dim() == 2
|
||||
), "Indexing on RotatedBoxes with {} failed to return a matrix!".format(item)
|
||||
assert b.dim() == 2, (
|
||||
"Indexing on RotatedBoxes with {} failed to return a matrix!".format(item)
|
||||
)
|
||||
return RotatedBoxes(b)
|
||||
|
||||
def __len__(self) -> int:
|
||||
|
||||
@@ -20,7 +20,6 @@ from matplotlib.backends.backend_agg import FigureCanvasAgg
|
||||
from PIL import Image
|
||||
|
||||
from .boxes import Boxes, BoxMode
|
||||
|
||||
from .color_map import random_color
|
||||
from .keypoints import Keypoints
|
||||
from .masks import BitMasks, PolygonMasks
|
||||
@@ -222,9 +221,9 @@ class _PanopticPrediction:
|
||||
empty_ids.append(id)
|
||||
if len(empty_ids) == 0:
|
||||
return np.zeros(self._seg.shape, dtype=np.uint8)
|
||||
assert (
|
||||
len(empty_ids) == 1
|
||||
), ">1 ids corresponds to no labels. This is currently not supported"
|
||||
assert len(empty_ids) == 1, (
|
||||
">1 ids corresponds to no labels. This is currently not supported"
|
||||
)
|
||||
return (self._seg != empty_ids[0]).numpy().astype(np.bool)
|
||||
|
||||
def semantic_masks(self):
|
||||
|
||||
@@ -41,7 +41,7 @@ def run_single_image_inference(
|
||||
print(f"Output JSON {output_json_path} already exists. Skipping.")
|
||||
return
|
||||
|
||||
print(f"{'-'*30} Starting SAM 3 Agent Session... {'-'*30} ")
|
||||
print(f"{'-' * 30} Starting SAM 3 Agent Session... {'-' * 30} ")
|
||||
agent_history, final_output_dict, rendered_final_output = agent_inference(
|
||||
image_path,
|
||||
text_prompt,
|
||||
@@ -50,7 +50,7 @@ def run_single_image_inference(
|
||||
output_dir=output_dir,
|
||||
debug=debug,
|
||||
)
|
||||
print(f"{'-'*30} End of SAM 3 Agent Session... {'-'*30} ")
|
||||
print(f"{'-' * 30} End of SAM 3 Agent Session... {'-' * 30} ")
|
||||
|
||||
final_output_dict["text_prompt"] = text_prompt
|
||||
final_output_dict["image_path"] = image_path
|
||||
|
||||
@@ -73,7 +73,9 @@ def visualize(
|
||||
idx = int(zoom_in_index)
|
||||
num_masks = len(input_json.get("pred_masks", []))
|
||||
if idx < 0 or idx >= num_masks:
|
||||
raise ValueError(f"zoom_in_index {idx} is out of range (0..{num_masks-1}).")
|
||||
raise ValueError(
|
||||
f"zoom_in_index {idx} is out of range (0..{num_masks - 1})."
|
||||
)
|
||||
|
||||
# (1) Replicate zoom_in_and_visualize
|
||||
object_data = {
|
||||
|
||||
Reference in New Issue
Block a user