- 应工程同学要求,修改原使用的一级task(image-generation)至新二级task(image-cartoon)
- 修复无人脸时无图像结果返回,更新为 返回背景卡通化后的图像(无人脸卡通化处理)
Link: https://code.alibaba-inc.com/Ali-MaaS/MaaS-lib/codereview/9594912
master
| @@ -60,7 +60,7 @@ DEFAULT_MODEL_FOR_PIPELINE = { | |||||
| 'damo/nlp_bart_text-error-correction_chinese'), | 'damo/nlp_bart_text-error-correction_chinese'), | ||||
| Tasks.image_captioning: (Pipelines.image_captioning, | Tasks.image_captioning: (Pipelines.image_captioning, | ||||
| 'damo/ofa_image-caption_coco_large_en'), | 'damo/ofa_image-caption_coco_large_en'), | ||||
| Tasks.image_generation: | |||||
| Tasks.image_portrait_stylization: | |||||
| (Pipelines.person_image_cartoon, | (Pipelines.person_image_cartoon, | ||||
| 'damo/cv_unet_person-image-cartoon_compound-models'), | 'damo/cv_unet_person-image-cartoon_compound-models'), | ||||
| Tasks.ocr_detection: (Pipelines.ocr_detection, | Tasks.ocr_detection: (Pipelines.ocr_detection, | ||||
| @@ -25,7 +25,8 @@ logger = get_logger() | |||||
| @PIPELINES.register_module( | @PIPELINES.register_module( | ||||
| Tasks.image_generation, module_name=Pipelines.person_image_cartoon) | |||||
| Tasks.image_portrait_stylization, | |||||
| module_name=Pipelines.person_image_cartoon) | |||||
| class ImageCartoonPipeline(Pipeline): | class ImageCartoonPipeline(Pipeline): | ||||
| def __init__(self, model: str, **kwargs): | def __init__(self, model: str, **kwargs): | ||||
| @@ -85,11 +86,6 @@ class ImageCartoonPipeline(Pipeline): | |||||
| img_brg = img[:, :, ::-1] | img_brg = img[:, :, ::-1] | ||||
| landmarks = self.detect_face(img) | |||||
| if landmarks is None: | |||||
| print('No face detected!') | |||||
| return {OutputKeys.OUTPUT_IMG: None} | |||||
| # background process | # background process | ||||
| pad_bg, pad_h, pad_w = padTo16x(img_brg) | pad_bg, pad_h, pad_w = padTo16x(img_brg) | ||||
| @@ -99,6 +95,11 @@ class ImageCartoonPipeline(Pipeline): | |||||
| feed_dict={'model_anime_bg/input_image:0': pad_bg}) | feed_dict={'model_anime_bg/input_image:0': pad_bg}) | ||||
| res = bg_res[:pad_h, :pad_w, :] | res = bg_res[:pad_h, :pad_w, :] | ||||
| landmarks = self.detect_face(img) | |||||
| if landmarks is None: | |||||
| print('No face detected!') | |||||
| return {OutputKeys.OUTPUT_IMG: res} | |||||
| for landmark in landmarks: | for landmark in landmarks: | ||||
| # get facial 5 points | # get facial 5 points | ||||
| f5p = get_f5p(landmark, img_brg) | f5p = get_f5p(landmark, img_brg) | ||||
| @@ -43,6 +43,7 @@ class CVTasks(object): | |||||
| video_category = 'video-category' | video_category = 'video-category' | ||||
| image_classification_imagenet = 'image-classification-imagenet' | image_classification_imagenet = 'image-classification-imagenet' | ||||
| image_classification_dailylife = 'image-classification-dailylife' | image_classification_dailylife = 'image-classification-dailylife' | ||||
| image_portrait_stylization = 'image-portrait-stylization' | |||||
| image_to_image_generation = 'image-to-image-generation' | image_to_image_generation = 'image-to-image-generation' | ||||
| @@ -33,17 +33,19 @@ class ImageCartoonTest(unittest.TestCase): | |||||
| ) | ) | ||||
| os.system('unzip assets.zip') | os.system('unzip assets.zip') | ||||
| img_cartoon = pipeline(Tasks.image_generation, model=model_dir) | |||||
| img_cartoon = pipeline( | |||||
| Tasks.image_portrait_stylization, model=model_dir) | |||||
| self.pipeline_inference(img_cartoon, self.test_image) | self.pipeline_inference(img_cartoon, self.test_image) | ||||
| @unittest.skipUnless(test_level() >= 1, 'skip test in current test level') | @unittest.skipUnless(test_level() >= 1, 'skip test in current test level') | ||||
| def test_run_modelhub(self): | def test_run_modelhub(self): | ||||
| img_cartoon = pipeline(Tasks.image_generation, model=self.model_id) | |||||
| img_cartoon = pipeline( | |||||
| Tasks.image_portrait_stylization, model=self.model_id) | |||||
| self.pipeline_inference(img_cartoon, self.test_image) | self.pipeline_inference(img_cartoon, self.test_image) | ||||
| @unittest.skipUnless(test_level() >= 2, 'skip test in current test level') | @unittest.skipUnless(test_level() >= 2, 'skip test in current test level') | ||||
| def test_run_modelhub_default_model(self): | def test_run_modelhub_default_model(self): | ||||
| img_cartoon = pipeline(Tasks.image_generation) | |||||
| img_cartoon = pipeline(Tasks.image_portrait_stylization) | |||||
| self.pipeline_inference(img_cartoon, self.test_image) | self.pipeline_inference(img_cartoon, self.test_image) | ||||