在过去,人工智能(AI)技术似乎离自己很遥远,如图像识别、语音合成或文本生成,集成到自己的应用中,对大多数开发者和企业来说都是一项艰巨的挑战。这背后是高昂的GPU成本、复杂的模型部署环境、晦涩难懂的论文代码以及巨大的技术门槛。好比处于一个需要从零开始烧制砖块、搅拌水泥才能盖房子的时代。而现在,出现了像 ModelScope 这样的平台,它为我们提供了预先提供了很多图纸、结构、甚至是成品,让AI应用的构建变得像搭积木一样简单高效。
一、什么是ModelScope
ModelScope(中文名:魔搭社区)是由阿里巴巴达摩院在2022年发起并开源的一站式模型托管与服务平台。它的核心目标是为AI模型开发者、应用开发者以及学术研究人员提供一个开放、协作、共享的生态系统。
你可以把它理解为 “AI模型的Github” 或 “中国版的Hugging Face” 。它汇聚了来自达摩院、清华、北大、浙大等顶尖学术机构以及澜舟、元乘象等AI科技公司的高质量预训练模型,覆盖了自然语言处理(NLP)、计算机视觉(CV)、语音、多模态等几乎所有主流AI方向。
二、核心价值与用途
- 极大降低使用门槛:无需深厚的机器学习背景,普通开发者通过几行代码就能调用最前沿的AI模型,快速实现产品功能原型(PoC)。
- 避免重复造轮子:无需从零开始训练模型,节省了大量的计算资源、时间和人力成本。你可以直接基于社区已有的优秀模型进行微调(Fine-tune),以适应自己的特定场景。
- 促进模型复现与公平比较:为学术界提供了统一的模型评估基准和复现环境,确保了研究结果的可靠性和可比性。
- 构建活跃的开发者生态:开发者可以在这里学习最新的AI技术、分享自己的模型成果、与他人交流碰撞,共同推动AI技术的进步和应用落地。
三、核心功能与特色
1. 庞大的模型库(Model Zoo)
ModelScope的核心资产是其不断增长的模型库。截至目前,它已托管了数千个模型,涵盖了:
- NLP:文本分类、情感分析、机器翻译、文本生成、对话系统、信息抽取等。
- CV:图像分类、目标检测、图像分割、人脸识别、超分辨率、图像生成(如Stable Diffusion)。
- 语音:语音识别、语音合成(TTS)、声音克隆、声纹识别。
- 多模态:图文理解、图文生成、视觉问答。
每个模型都有详细的介绍、许可证、测试数据以及在线体验功能,方便用户快速了解和选择。
2. 极简的模型使用(Pipeline API)
ModelScope 提供了极其友好的 pipeline API,让模型推理变得前所未有的简单。通常只需要三行代码:
from modelscope.pipelines import pipeline # 创建一个任务管道(例如,图像描述生成) image_captioning = pipeline('image-portrait-stylization', model='damo/cv_unet_person-image-cartoon_compound-models') # 输入图片,得到结果 result = image_captioning('image.jpg') print(result['text']) # 输出:a cat sitting on a sofa
这种设计将复杂的模型加载、数据预处理、推理和后处理全部封装起来,用户只需关心输入和输出。
3. 高效的模型微调(Training API)
对于希望定制专属模型的用户,ModelScope 提供了便捷的微调工具。它支持使用自己的数据集,通过简单的配置对预训练模型进行微调。
from modelscope.msdatasets import MsDataset from modelscope.trainers import build_trainer # 1. 加载数据集 dataset = MsDataset.load('my_fine_tune_dataset') # 2. 配置训练参数 cfg_file = 'config.json' # 3. 创建训练器并开始微调 trainer = build_trainer(cfg_file) trainer.train()
这大大简化了微调流程,让开发者可以专注于数据和质量迭代。
4. 开放的社区生态
ModelScope不仅仅是一个代码仓库,更是一个社区。它提供了:
- 模型体验中心:在线直接上传图片、文本或音频,即时体验模型效果。
- Notebook教程:提供了大量基于阿里云PAI的Notebook教程,手把手教你如何运行和微调模型。
- 讨论区:开发者可以提问、分享经验和发布项目。
- 模型贡献:鼓励所有用户上传和分享自己的模型,共同丰富生态。
四、和大模型的区别
大家都或多或少的在拥抱大模型,很多人可能会混淆 ModelScope 和通义千问,因为它们都来自阿里巴巴并且都与AI相关,它们到底有什么区别。
- ModelScope 就像是「AI模型的安卓应用商店」。
- 这个商店里琳琅满目,有成千上万个不同的App(AI模型):有修图的美图秀秀(CV模型),有翻译的谷歌翻译(NLP模型),有听歌识曲的Shazam(语音模型)。你可以自由选择、下载、甚至修改这些App来满足自己的手机(业务)需求。
- 通义千问 就像是这个商店里一个非常火爆的、功能强大的超级App,比如「微信」。
- 它是一个具体的、已经开发完成的应用。它的主要功能是聊天、对话、写作、编程等(大语言模型服务)。你直接使用它就好了,但很难对它底层是如何实现聊天功能进行大刀阔斧的修改。
| 特性 | ModelScope (魔搭) | 通义千问 (Qwen) |
| 本质 | 一个平台,一个社区,一个生态系统。 | 一个产品,一个具体的AI模型。 |
| 类比 | 安卓应用商店 / GitHub | 微信 / ChatGPT |
| 核心内容 | 提供成千上万个不同的AI模型,覆盖视觉、语音、自然语言处理等多领域。 | 本身就是一个大型语言模型(LLM),专注于理解和生成人类语言。 |
| 关系 | 容器和内容的关系。ModelScope是容器,通义千问是容器里的一个重要内容。 | 是ModelScope平台上托管的其中一个模型。 |
五、精彩案例
1.生成卡通图片
原图:
漫画图:
代码详解
# 导入OpenCV计算机视觉库,用于图像读取、处理和保存 import cv2 # 从modelscope库导入模型下载和管道功能 from modelscope.hub.snapshot_download import snapshot_download from modelscope.pipelines import pipeline # 下载人像卡通化模型到指定缓存目录 # 'damo/cv_unet_person-image-cartoon_compound-models' 是ModelScope平台上的模型ID # cache_dir参数指定模型下载的本地存储路径 model_dir = snapshot_download('damo/cv_unet_person-image-cartoon_compound-models', cache_dir='D:/modelscope/hub/models') # 创建图像人像风格化处理管道 # 'image-portrait-stylization' 指定任务类型为人像风格化 # model参数指定使用的模型路径(刚刚下载的模型) img_cartoon = pipeline('image-portrait-stylization', model=model_dir) # 对输入图像应用卡通化处理 # 'image.png' 是输入图像的文件路径 # 处理结果存储在result变量中 result = img_cartoon('image.png') # 保存处理后的图像到文件 # result['output_img'] 包含处理后的图像数据 # 'result.png' 是输出图像的文件名 cv2.imwrite('result.png', result['output_img'])
本实例采用魔塔社区的“DCT-Net人像卡通化模型”,输入一张人物图像,实现端到端全图卡通化转换,生成二次元虚拟形象,返回卡通化后的结果图像。
- 模型介绍
【英文名称】
iic/cv_unet_person-image-cartoon_compound-models
【详细说明】
该模型采用一种全新的域校准图像翻译模型DCT-Net(Domain-Calibrated Translation),利用小样本的风格数据,即可得到高保真、强鲁棒、易拓展的人像风格转换模型,并通过端到端推理快速得到风格转换结果。
【使用方式】
支持GPU/CPU推理,在任意真实人物图像上进行直接推理;
【使用范围】
包含人脸的人像照片(3通道RGB图像,支持PNG、JPG、JPEG格式),人脸分辨率大于100x100,总体图像分辨率小于3000×3000,低质人脸图像建议预先人脸增强处理。
【目标场景】
艺术创作、社交娱乐、隐私保护场景,自动化生成卡通肖像。
2.人像抠图
原图:
去背景后:
代码详解
# 导入OpenCV计算机视觉库 import cv2 # 从modelscope库导入模型下载功能 from modelscope.hub.snapshot_download import snapshot_download # 从modelscope库导入管道功能 # pipeline函数用于创建特定任务的预处理、推理和后处理流程 from modelscope.pipelines import pipeline # 从modelscope库导入任务常量 # Tasks包含了ModelScope支持的所有任务类型的常量定义 from modelscope.utils.constant import Tasks # 从modelscope库导入输出键常量 # OutputKeys包含了模型输出结果字典中可能包含的标准键名 from modelscope.outputs import OutputKeys # 下载预训练的人像抠图(图像分割)模型到本地指定目录 model_dir = snapshot_download('iic/cv_unet_image-matting', cache_dir='D:/modelscope/hub/models') # 创建人像抠图处理管道 portrait_matting = pipeline(Tasks.portrait_matting, model=model_dir) # 使用创建的管道对输入图像进行人像抠图处理 result = portrait_matting('image.jpeg') # 将处理后的图像保存到文件 cv2.imwrite('result1.png', result[OutputKeys.OUTPUT_IMG])
本实例采用魔塔社区的“BSHM人像抠图”模型,对输入含有人像的图像进行处理,无需任何额外输入,实现端到端人像抠图,输出四通道人像抠图结果
- 模型介绍
【英文名称】
iic/cv_unet_image-matting
【详细说明】
模型分为粗分割和精细抠图两个子网络,将人像抠图复杂问题拆解,先粗分割再精细化分割,两部分网络均为unet结构。粗分割网络从输入图片预测人像语义分割mask,精细分割网络基于原图和粗语义分割mask预测精细的抠图结果。
【使用方式】
直接推理,输入图像直接进行推理;
【使用范围】
适合含有人像的图像分割,期望图像中人像占比不要过小;在分辨率小于2000×2000图像上可取得期望效果。
【目标场景】
需要图像抠图的场景,如换背景等。
3.图像替换天空
原图:
替换天空后:
- 代码详解
# 导入OpenCV计算机视觉库 import cv2 # 导入os.path模块,用于处理文件路径操作 import os.path as osp # 导入modelscope库(虽然导入但未直接使用,可能用于版本检查或其他配置) import modelscope # 从modelscope库导入模型下载功能 from modelscope.hub.snapshot_download import snapshot_download # 从modelscope库导入输出键常量 # OutputKeys包含了模型输出结果字典中可能包含的标准键名 from modelscope.outputs import OutputKeys # 从modelscope库导入管道功能 from modelscope.pipelines import pipeline # 从modelscope库导入Pipeline基类(虽然导入但未直接使用) # 可用于类型提示或自定义管道开发 from modelscope.pipelines.base import Pipeline # 从modelscope库导入任务常量 # Tasks包含了ModelScope支持的所有任务类型的常量定义 from modelscope.utils.constant import Tasks # 下载预训练的天空替换模型到本地指定目录 model_dir = snapshot_download('iic/cv_hrnetocr_skychange', cache_dir='D:/modelscope/hub/models') # 创建天空替换处理管道 image_skychange = pipeline(Tasks.image_skychange, model=model_dir) # 使用创建的管道对输入图像进行天空替换处理 result = image_skychange({ 'sky_image': 'sky_image.jpg', 'scene_image': 'scene_image.jpg' }) # 将处理后的图像保存到文件 cv2.imwrite('result2.png', result[OutputKeys.OUTPUT_IMG]) # 打印输出文件的绝对路径 # osp.abspath("result2.png") - 获取result2.png文件的绝对路径 print(f'Output written to {osp.abspath("result2.png")}')
本实例采用魔塔社区的“图像天空替换模型”,换天算法是计算机视觉的经典任务之一,也是image sky matting的应用之一。输入一张原图A以及一张参考图B,换天算法会得到两张图片对应的天空区域的alpha图(alpha属于软分割,与硬分割mask不同,mask将视频分为前景与背景,取值为0或1,而alpha的取值范围是0到1之间,数值代表透明度,因此alpha比mask更为精细) 换天算法利用A和B图对应的天空区域alpha图,配合融合算法,将参考图B的天空样式替换到原图A中,从而改变原图A的天空样式,实现换天功能。
- 模型介绍
【英文名称】
iic/cv_hrnetocr_skychange
【详细说明】
该模型由三大部分构成:低分辨率处理模块,高分辨率处理模块和换天模块;
其中低分辨率处理模块的backbone是基于hrnet-ocr框架实现的,采用了w18v2的版本,为了实现更好的效果,我们对原网络模块进行了一定修改,主要添加了自设计的super模块以及ASPP模块,扩大了感受野,重新进行分割训练,这部分的结果作为高分辨率处理模块的输入; 高分辨率处理模块基于UNET,实现对低分辨率后超分至原有分辨率,该层具有可学习参数,效果远优于直接上采样效果; 换天模块基于Multiband blender 图像拼缝技术实现;
【使用方式】
支持GPU/CPU推理,在任意两张包含天空的图片上进行直接推理和换天操作。
【使用范围】
包含天空区域的图片(3通道RGB图像,支持PNG、JPG、JPEG格式),图像分辨率建议小于5000×5000,低质图像建议预先增强处理。
【目标场景】
艺术创作、社交娱乐。
六、总结
ModelScope的出现,开启新的大模型格局,打开了开发者的思路,AI编程是革命,同时我们也要革新自己,看到这些优秀的工具如雨后春笋般出现,我们也要实实在在的发展自己的创造力,感叹大模型的无所不能,感谢自己的无所畏惧!