kadirnar / segment-anything-video

MetaSeg: Packaged version of the Segment Anything repository
Apache License 2.0
946 stars 67 forks source link

AttributeError: 'list' object has no attribute 'astype' #63

Open royzhou007 opened 1 year ago

royzhou007 commented 1 year ago

results = SegManualMaskPredictor().image_predict( source="C:\software\sam_checkpoint\3515.jpg", model_type="vit_h", # vit_l, vit_h, vit_b input_point=[[548, 1031], [1121, 769]], input_label=[0, 1], input_box=[229, 684, 800, 800], # or [[100, 100, 200, 200], [100, 100, 200, 200]] multimask_output=False, random_color=False,

output_path="C:\software\sam_checkpoint\output2.jpg",

show=False,
save=True,

)

====================== AttributeError Traceback (most recent call last) Cell In[43], line 1 ----> 1 results = SegManualMaskPredictor().image_predict( 2 source="C:\software\sam_checkpoint\3515.jpg", 3 model_type="vit_h", # vit_l, vit_h, vit_b 4 input_point=[[548, 1031], [1121, 769]], 5 input_label=[0, 1], 6 input_box=[229, 684, 800, 800], # or [[100, 100, 200, 200], [100, 100, 200, 200]] 7 multimask_output=False, 8 random_color=False, 9 #output_path="C:\software\sam_checkpoint\output2.jpg", 10 show=False, 11 save=True, 12 )

File ~\anaconda3\lib\site-packages\metaseg\mask_predictor.py:175, in SegManualMaskPredictor.image_predict(self, source, model_type, input_box, input_point, input_label, multimask_output, output_path, random_color, show, save) 172 elif type(input_box[0]) == int: 173 input_boxes = np.array(inputbox)[None, :] --> 175 masks, , _ = predictor.predict( 176 point_coords=input_point, 177 point_labels=input_label, 178 box=input_boxes, 179 multimask_output=multimask_output, 180 ) 181 mask_image = load_mask(masks, random_color) 182 image = load_box(input_box, image)

File ~\anaconda3\lib\site-packages\metaseg\generator\predictor.py:139, in SamPredictor.predict(self, point_coords, point_labels, box, mask_input, multimask_output, return_logits) 137 if point_coords is not None: 138 assert point_labels is not None, "point_labels must be supplied if point_coords is supplied." --> 139 point_coords = self.transform.apply_coords(point_coords, self.original_size) 140 coords_torch = torch.as_tensor(point_coords, dtype=torch.float, device=self.device) 141 labels_torch = torch.as_tensor(point_labels, dtype=torch.int, device=self.device)

File ~\anaconda3\lib\site-packages\metaseg\utils\transforms.py:40, in ResizeLongestSide.apply_coords(self, coords, original_size) 38 old_h, old_w = original_size 39 new_h, new_w = self.get_preprocess_shape(original_size[0], original_size[1], self.target_length) ---> 40 coords = deepcopy(coords).astype(float) 41 coords[..., 0] = coords[..., 0] (new_w / old_w) 42 coords[..., 1] = coords[..., 1] (new_h / old_h)

AttributeError: 'list' object has no attribute 'astype'

kadirnar commented 1 year ago

Can you share the picture?

royzhou007 commented 1 year ago

3515

RugnirViking commented 1 year ago

Hi there, I am also getting this issue. I also tried not defining the input_box, and it instead gives 'NoneType' object is not subscriptable (the default value is "none" but there is no check for this).

Similarly, when using the manualmaskpredictor for video with the example provided in the readme, it errors because input_box is None

Bardhitoo commented 1 year ago

@royzhou007

Change this line to: coords = np.array(deepcopy(coords), dtype=np.float32)

That resolved my issue :)