ModelScope图像实例分割,加载本地文件,您这边有进度吗?
是的,ModelScope 支持加载本地文件进行图像实例分割。在 ModelScope 中,您可以使用 image-instance-segmentation-preprocessor 对本地文件进行预处理。以下是一个使用本地文件进行图像实例分割的示例:
pip install modelscope
CopyCopy
preprocessor:
type: image-instance-segmentation-preprocessor
train:
resize: [256, 256]
random_crop: [224, 224]
random_flip: true
random_rotation: [0, 180]
normalize:
mean: [0.485, 0.456, 0.406]
std: [0.229, 0.224, 0.225]
val:
resize: [256, 256]
center_crop: [224, 224]
normalize:
mean: [0.485, 0.456, 0.406]
std: [0.229, 0.224, 0.225]
CopyCopy
import os
import torch
from torch.utils.data import Dataset
from modelscope.datasets import ImageFolder
from modelscope.train import SWALR
from modelscope.optimizers import SWALR
from modelscope.preprocessor import ImageInstanceSegmentationPreprocessor
from modelscope.trainer import Trainer
class CustomDataset(Dataset):
def init(self, root, transform=None):
self.root = root
self.transform = transform
self.image_files = os.listdir(root)
def len(self):
return len(self.image_files)
def getitem(self, index):
image_path = os.path.join(self.root, self.image_files[index])
image = torch.load(image_path)
if self.transform:
image = self.transform(image)
return image
preprocessor = ImageInstanceSegmentationPreprocessor.from_config(config_path="config.yaml")
trainer = Trainer.from_config(
model=None,
optimizer=SWALR.from_config(
type="swalr",
model=None,
lr=0.001,
anneal_strategy="cos",
save_optim_stats=False,
),
train_dataset=CustomDataset("path/to/train/data", transform=preprocessor.train()),
val_dataset=CustomDataset("path/to/val/data", transform=preprocessor.val()),
num_epochs=10,
batch_size=32,
save_interval=1,
log_interval=1,
save_path="./results",
)
trainer.train()
CopyCopy
python your_script_name.py
CopyCopy
以上示例展示了如何使用 ModelScope 的 image-instance-segmentation-preprocessor 对本地文件进行预处理,并加载本地文件进行图像实例分割。
MsDataset加载不上,估计要写一下加载的代码,处理成预处理器需要的格式。训练脚本中加入代码:from modelscope.msdatasets.dataset_cls import ExternalDatasettrain_config_kwargs={ 'ann_file': 'annotations/instances_train.json', 'img_prefix': 'images/train', 'folder_name': 'Pets', 'classes': ['Cat', 'Dog'], 'split_config':'./seg_local_data' }val_config_kwargs={ 'ann_file': 'annotations/instances_val.json', 'img_prefix': 'images/val', 'folder_name': 'Pets', 'classes': ['Cat', 'Dog'], 'test_mode':True, 'split_config':'./seg_local_data' }train_split_path_dict={'train':'./seg_local_data'}val_split_path_dict={'validation':'./seg_local_data'}train_dataset=ExternalDataset(split_path_dict=train_split_path_dict, config_kwargs=train_config_kwargs)train_dataset=MsDataset.to_ms_dataset(train_dataset)val_dataset=ExternalDataset(split_path_dict=val_split_path_dict, config_kwargs=val_config_kwargs)val_dataset=MsDataset.to_ms_dataset(val_dataset)数据集目录结构如下:(目前seg_local_data下只有一个Pets文件夹)
如果是您自己的数据集,还得改一下preprocessor中class。,此回答整理自钉群“魔搭ModelScope开发者联盟群 ①”