Skip to content

运行【k3】代码,批量预测时更改图像文件路径,多张图片预测报错ValueError: uri should not be None when "backend" does not exist in backend_args #12

@ggfly12138

Description

@ggfly12138

PATH_IMAGE = 'new_pic'
os.chdir(PATH_IMAGE)
单张图像预测函数
opacity = 0.3 # 透明度,越大越接近原图
def process_single_img(img_path, save=False):

img_bgr = cv2.imread(img_path)


# 语义分割预测
result = inference_model(model, img_bgr)
pred_mask = result.pred_sem_seg.data[0].cpu().numpy()

# 将预测的整数ID,映射为对应类别的颜色
pred_mask_bgr = np.zeros((pred_mask.shape[0], pred_mask.shape[1], 3))
for idx in palette_dict.keys():
pred_mask_bgr[np.where(pred_mask==idx)] = palette_dict[idx]
pred_mask_bgr = pred_mask_bgr.astype('uint8')

# 将语义分割预测图和原图叠加显示
pred_viz = cv2.addWeighted(img_bgr, opacity, pred_mask_bgr, 1-opacity, 0)

# 保存图像至 outputs/testset-pred 目录
if save:
    save_path = os.path.join('../','../','../','outputs', 'testset-pred', 'pred-'+img_path.split('/')[-1])
    cv2.imwrite(save_path, pred_viz)

测试集批量预测
for each in tqdm(os.listdir()):
process_single_img(each, save=True)
0%| | 0/9 [00:00<?, ?it/s]

ValueError Traceback (most recent call last)
/tmp/ipykernel_19296/3402639611.py in
1 for each in tqdm(os.listdir()):
----> 2 process_single_img(each, save=True)

/tmp/ipykernel_19296/80219051.py in process_single_img(img_path, save)
4
5 # 语义分割预测
----> 6 result = inference_model(model, img_bgr)
7 pred_mask = result.pred_sem_seg.data[0].cpu().numpy()
8

~/work/mmsegmentation/mmseg/apis/inference.py in inference_model(model, img)
141 """
142 # prepare data
--> 143 data, is_batch = _preprare_data(img, model)
144
145 # forward the model

~/work/mmsegmentation/mmseg/apis/inference.py in preprare_data(imgs, model)
119 else:
120 data
= dict(img_path=img)
--> 121 data_ = pipeline(data_)
122 data['inputs'].append(data_['inputs'])
123 data['data_samples'].append(data_['data_samples'])

/environment/miniconda3/lib/python3.7/site-packages/mmengine/dataset/base_dataset.py in call(self, data)
58 """
59 for t in self.transforms:
---> 60 data = t(data)
61 # The transform will return None when it failed to load images or
62 # cannot find suitable augmentation parameters to augment the data.

/environment/miniconda3/lib/python3.7/site-packages/mmcv/transforms/base.py in call(self, results)
10 results: Dict) -> Optional[Union[Dict, Tuple[List, List]]]:
11
---> 12 return self.transform(results)
13
14 @AbstractMethod

/environment/miniconda3/lib/python3.7/site-packages/mmcv/transforms/loading.py in transform(self, results)
105 return None
106 else:
--> 107 raise e
108 if self.to_float32:
109 img = img.astype(np.float32)

/environment/miniconda3/lib/python3.7/site-packages/mmcv/transforms/loading.py in transform(self, results)
98 else:
99 img_bytes = fileio.get(
--> 100 filename, backend_args=self.backend_args)
101 img = mmcv.imfrombytes(
102 img_bytes, flag=self.color_type, backend=self.imdecode_backend)

/environment/miniconda3/lib/python3.7/site-packages/mmengine/fileio/io.py in get(filepath, backend_args)
178 """
179 backend = get_file_backend(
--> 180 filepath, backend_args=backend_args, enable_singleton=True)
181 return backend.get(filepath)
182

/environment/miniconda3/lib/python3.7/site-packages/mmengine/fileio/io.py in get_file_backend(uri, backend_args, enable_singleton)
136 if uri is None and 'backend' not in backend_args:
137 raise ValueError(
--> 138 'uri should not be None when "backend" does not exist in '
139 'backend_args')
140

ValueError: uri should not be None when "backend" does not exist in backend_args

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions