shuying.shu yingda.chen 3 years ago
parent
commit
085acc64c8
3 changed files with 20 additions and 18 deletions
  1. +13
    -9
      modelscope/pipelines/cv/referring_video_object_segmentation_pipeline.py
  2. +2
    -2
      tests/pipelines/test_referring_video_object_segmentation.py
  3. +5
    -7
      tests/trainers/test_referring_video_object_segmentation_trainer.py

+ 13
- 9
modelscope/pipelines/cv/referring_video_object_segmentation_pipeline.py View File

@@ -138,6 +138,19 @@ class ReferringVideoObjectSegmentationPipeline(Pipeline):
video_np = rearrange(self.video,
't c h w -> t h w c').numpy() / 255.0

# set font for text query in output video
if self.model.cfg.pipeline.output_font:
try:
font = ImageFont.truetype(
font=self.model.cfg.pipeline.output_font,
size=self.model.cfg.pipeline.output_font_size)
except OSError:
logger.error('can\'t open resource %s, load default font'
% self.model.cfg.pipeline.output_font)
font = ImageFont.load_default()
else:
font = ImageFont.load_default()

# del video
pred_masks_per_frame = rearrange(
torch.stack(inputs), 'q t 1 h w -> t q h w').numpy()
@@ -158,12 +171,6 @@ class ReferringVideoObjectSegmentationPipeline(Pipeline):
W, H = vid_frame.size
draw = ImageDraw.Draw(vid_frame)

if self.model.cfg.pipeline.output_font:
font = ImageFont.truetype(
font=self.model.cfg.pipeline.output_font,
size=self.model.cfg.pipeline.output_font_size)
else:
font = ImageFont.load_default()
for i, (text_query, color) in enumerate(
zip(self.text_queries, colors), start=1):
w, h = draw.textsize(text_query, font=font)
@@ -173,9 +180,6 @@ class ReferringVideoObjectSegmentationPipeline(Pipeline):
fill=tuple(color) + (255, ),
font=font)
masked_video.append(np.array(vid_frame))
print(type(vid_frame))
print(type(masked_video[0]))
print(masked_video[0].shape)
# generate and save the output clip:

assert self.model.cfg.pipeline.output_path


+ 2
- 2
tests/pipelines/test_referring_video_object_segmentation.py View File

@@ -14,7 +14,7 @@ class ReferringVideoObjectSegmentationTest(unittest.TestCase,
self.task = Tasks.referring_video_object_segmentation
self.model_id = 'damo/cv_swin-t_referring_video-object-segmentation'

@unittest.skip('skip since the model is set to private for now')
@unittest.skipUnless(test_level() >= 0, 'skip test in current test level')
def test_referring_video_object_segmentation(self):
input_location = 'data/test/videos/referring_video_object_segmentation_test_video.mp4'
text_queries = [
@@ -31,7 +31,7 @@ class ReferringVideoObjectSegmentationTest(unittest.TestCase,
else:
raise ValueError('process error')

@unittest.skip('skip since the model is set to private for now')
@unittest.skipUnless(test_level() >= 2, 'skip test in current test level')
def test_referring_video_object_segmentation_with_default_task(self):
input_location = 'data/test/videos/referring_video_object_segmentation_test_video.mp4'
text_queries = [


+ 5
- 7
tests/trainers/test_referring_video_object_segmentation_trainer.py View File

@@ -7,8 +7,8 @@ import zipfile

from modelscope.hub.snapshot_download import snapshot_download
from modelscope.metainfo import Trainers
from modelscope.models.cv.movie_scene_segmentation import \
MovieSceneSegmentationModel
from modelscope.models.cv.referring_video_object_segmentation import \
ReferringVideoObjectSegmentation
from modelscope.msdatasets import MsDataset
from modelscope.trainers import build_trainer
from modelscope.utils.config import Config, ConfigDict
@@ -46,7 +46,6 @@ class TestImageInstanceSegmentationTrainer(unittest.TestCase):
dataset_name=train_data_cfg.name,
split=train_data_cfg.split,
cfg=train_data_cfg.cfg,
namespace='damo',
test_mode=train_data_cfg.test_mode)
assert next(
iter(self.train_dataset.config_kwargs['split_config'].values()))
@@ -55,14 +54,13 @@ class TestImageInstanceSegmentationTrainer(unittest.TestCase):
dataset_name=test_data_cfg.name,
split=test_data_cfg.split,
cfg=test_data_cfg.cfg,
namespace='damo',
test_mode=test_data_cfg.test_mode)
assert next(
iter(self.test_dataset.config_kwargs['split_config'].values()))

self.max_epochs = max_epochs

@unittest.skip('skip since the model is set to private for now')
@unittest.skipUnless(test_level() >= 0, 'skip test in current test level')
def test_trainer(self):
kwargs = dict(
model=self.model_id,
@@ -77,11 +75,11 @@ class TestImageInstanceSegmentationTrainer(unittest.TestCase):
results_files = os.listdir(trainer.work_dir)
self.assertIn(f'{trainer.timestamp}.log.json', results_files)

@unittest.skip('skip since the model is set to private for now')
@unittest.skipUnless(test_level() >= 2, 'skip test in current test level')
def test_trainer_with_model_and_args(self):

cache_path = snapshot_download(self.model_id)
model = MovieSceneSegmentationModel.from_pretrained(cache_path)
model = ReferringVideoObjectSegmentation.from_pretrained(cache_path)
kwargs = dict(
cfg_file=os.path.join(cache_path, ModelFile.CONFIGURATION),
model=model,


Loading…
Cancel
Save