【前言】
什么是ModelScope
这个问题我找了不下十几个文章,简短来说还是官网的解释最全面
ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!
汇集行业领先的预训练模型,减少开发者的重复研发成本,提供更加绿色环保、开源开放的AI开发环境和模型服务,助力绿色“数字经济”事业的建设。 ModelScope平台将以开源的方式提供多类优质模型,开发者可在平台上免费体验与下载使用。
这里有一个概念,泛AI是什么
说白了就是泛人工智能,通过智能技术逐渐将基建设施不断智能化择优化,这里离不开人工智能算法、算力、数据三位一体的基础设施可面向全行业全领域提供通用的AI能力,目前主要搭建模式为智能底座作为基底,AI基建作为平台,智能+作为窗口,主要的落地项目涵盖“机器学习”“计算机视觉”“语音技术”“自然语言处理”“AI+医疗行业”“AI+城市管理”“自动驾驶商业化加速”“数字内容创新”等最常见的比如远程测温、口罩识别、云办公、云课堂,无接触配送服务各行各业
我们学这些有什么用
- 免费使用平台提供的预训练模型,支持免费下载运行
- 一行命令实现模型预测,简单快速验证模型效果
- 用自己的数据对模型进行调优,定制自己的个性化模型
- 学习系统性的知识,结合实训,有效提升模型研发能力
- 分享和贡献你的想法、评论与模型,让更多人认识你,在社区中成长
【注册】
目前注册机制相当简单,不用绑定任何信息即可无痕迹注册,点击网址https://modelscope.cn/?spm=a2c6h.27262988.J_4502519820.2.5f874368DHqcuw#/models
选择右上角立即登录
选择注册按钮
填写信息,注意保存密码输入错误三次冻结60分钟
登录后进入主界面
这里有几个介绍的地方,第一个“快速开始”这个是对新手非常友好的地方,配备了环境配置和安装配置,第二是“社区简介”,主讲什么是ModelScope对平台提供的服务和功能进行简介,第三个是“Python library”,对调用的library进行了细致的介绍,第四个模型库,在模型库下载模型并使用,是如果你对此一窍不通,可以跳过这些直接试用模组
【实际操作】
第一版模组共包含145个模组分别有不同的功能,测试过程也相当简单,我们先试用两个模组,做一下测试
达摩卡通化模型
输入一张人物图像,实现端到端全图卡通化转换,生成二次元虚拟形象,返回卡通化后的结果图像。
其生成效果如下所示:
模型描述
该任务采用一种全新的域校准图像翻译模型DCT-Net(Domain-Calibrated Translation),利用小样本的风格数据,即可得到高保真、强鲁棒、易拓展的人像风格转换模型,并通过端到端推理快速得到风格转换结果。
使用方式和范围
使用方式:
直接推理,在任意真实人物图像上进行直接推理;
使用范围:
包含人脸的人像照片,人脸分辨率大于100x100,总体图像分辨率小于3000×3000,低质人脸图像建议预先人脸增强处理。
目标场景:
艺术创作、社交娱乐、隐私保护场景,自动化生成卡通肖像。
如何使用
在ModelScope框架上,提供输入图片,即可以通过简单的Pipeline调用来使用人像卡通化模型。
代码范例
import cv2 from modelscope.outputs import OutputKeys from modelscope.pipelines import pipeline from modelscope.utils.constant import Tasks img_cartoon = pipeline(Tasks.image_portrait_stylization, model='damo/cv_unet_person-image-cartoon_compound-models') result = img_cartoon('input.png') cv2.imwrite('result.png', result[OutputKeys.OUTPUT_IMG]) print('finished!')
模型局限性以及可能的偏差
低质/低分辨率人脸图像由于本身内容信息丢失严重,无法得到理想转换效果,可预先采用人脸增强模型预处理图像解决;
小样本数据涵盖场景有限,人脸暗光、阴影干扰可能会影响生成效果。
训练数据介绍
训练数据从公开数据集(COCO等)、互联网搜索人像图像,并进行标注作为训练数据。
真实人脸数据FFHQ常用的人脸公开数据集,包含7w人脸图像;
卡通人脸数据,互联网搜集,100+张
模型推理流程
预处理
人脸关键点检测
人脸提取&对齐,得到256x256大小的对齐人脸
推理
为控制推理效率,人脸及背景resize到指定大小分别推理,再背景融合得到最终效果;
亦可将整图依据人脸尺度整体缩放到合适尺寸,直接单次推理
数据评估及结果
使用CelebA公开人脸数据集进行评测,在FID/ID/用户偏好等指标上均达SOTA结果:
Method | FID | ID | Pref.A | Pref.B |
CycleGAN | 57.08 | 0.55 | 7.1 | 1.4 |
U-GAT-IT | 68.40 | 0.58 | 5.0 | 1.5 |
Toonify | 55.27 | 0.62 | 3.7 | 4.2 |
pSp | 69.38 | 0.60 | 1.6 | 2.5 |
Ours | 35.92 | 0.71 | 82.6 | 90.5 |
引用
如果该模型对你有所帮助,请引用相关的论文:
@inproceedings{men2022domain, title={DCT-Net: Domain-Calibrated Translation for Portrait Stylization}, author={Men, Yifang and Yao, Yuan and Cui, Miaomiao and Lian, Zhouhui and Xie, Xuansong}, journal={ACM Transactions on Graphics (TOG)}, volume={41}, number={4}, pages={1--9}, year={2022} }
操作步骤
选择右上角在notebook中打开
启动实例一般用CPU环境,等待二到五分钟查看notebook打开代码网页
代码行非常简单
import cv2
from modelscope.outputs import OutputKeys
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
img_cartoon = pipeline(Tasks.image_portrait_stylization,
model='damo/cv_unet_person-image-cartoon_compound-models')
result = img_cartoon('input.png')
cv2.imwrite('result.png', result[OutputKeys.OUTPUT_IMG])
print('finished!')
插入名为input.png的图片,直接从桌面进行拖拽,注意这个是使人像卡通化的功能,一定要选择人像,否则会无法识别,点击代码上方小三角运行,无需任何代码改动
识别完毕后你会或者一张result.png的图片,我们来看一下结果
这个识别还是比较模糊的,但是已经能锁到人脸并且进行面部特征虚拟化,接下来我们再实验一款模组
文生图模型
这个说白了是对一段英文进行图片还原,相当于看爽文自动播放ppt,不过这个也是基于他现有的库进行检索,然后生成的图片
效果展示
快速玩起来
玩转OFA只需区区以下数行代码,就是如此轻松!如果你觉得还不够方便,请点击右上角Notebook
按钮,我们为你提供了配备了GPU的环境,你只需要在notebook里输入提供的代码,就可以把OFA玩起来了!
from modelscope.pipelines import pipeline from modelscope.utils.constant import Tasks from modelscope.preprocessors.multi_modal import OfaPreprocessor model = 'damo/ofa_text-to-image-synthesis_coco_large_en' preprocessor = OfaPreprocessor(model_dir=model) ofa_pipe = pipeline(task=Tasks.text_to_image_synthesis, model=model, preprocessor=preprocessor) result = ofa_pipe({"text":'a bear in the water.'}) print(result['output_img'])
OFA是什么?
OFA(One-For-All)是通用多模态预训练模型,使用简单的序列到序列的学习框架统一模态(跨模态、视觉、语言等模态)和任务(如图片生成、视觉定位、图片描述、图片分类、文本生成等),详见我们发表于ICML 2022的论文:OFA: Unifying Architectures, Tasks, and Modalities Through a Simple Sequence-to-Sequence Learning Framework以及我们的官方Github仓库https://github.com/OFA-Sys/OFA。
相关论文以及引用信息
如果你觉得OFA好用,喜欢我们的工作,欢迎引用:
@article{wang2022ofa, author = {Peng Wang and An Yang and Rui Men and Junyang Lin and Shuai Bai and Zhikang Li and Jianxin Ma and Chang Zhou and Jingren Zhou and Hongxia Yang}, title = {OFA: Unifying Architectures, Tasks, and Modalities Through a Simple Sequence-to-Sequence Learning Framework}, journal = {CoRR}, volume = {abs/2202.03052}, year = {2022} }
操作步骤
和第一个相同启动notebook,我这个是在网页进行演示,不再配置本地文件进行模拟,同时也只是为了给大家展示他的趣味性,防止一上来因为难以理解而放弃,这个要选择GPU环境,仅仅16小时的测试时间,CPU和GPU不同的区别在于,GPU是显示图形处理,更方便图片的生成
复制代码进行粘贴,我们让他生成一只熊在水旁,然后打印成图片看看他的效果,点击三角运行
这个下载的比较久而且出现了一个bug
Truncation was not explicitly activated but `max_length` is provided a specific value, please use `truncation=True` to explicitly truncate examples to max length. Defaulting to 'longest_first' truncation strategy. If you encode pairs of sequences (GLUE-style) with the tokenizer you can select this strategy more precisely by providing a specific strategy to `truncation`.
简单理解应该是没有对图片的大小尺寸进行设置,然后我们修改最后一行代码
print(result['output_img'].save('result.png'))
生成成功
【结束语】
目前泛AI技术虽然还不是非常成熟,但是已处于飞速发展阶段,学好新模型,才能更好的节约时间和加强效率,事半功倍,下面是开发者文档,大家有需要的可以做一些对接:https://modelscope.cn/?spm=a2c6h.27262988.J_4502519820.2.5f874368DHqcuw#/docs/%E5%BC%80%E5%8F%91%E8%80%85%E6%96%87%E6%A1%A3