
在过去,人工智能(AI)技术似乎离自己很遥远,如图像识别、语音合成或文本生成,集成到自己的应用中,对大多数开发者和企业来说都是一项艰巨的挑战。这背后是高昂的GPU成本、复杂的模型部署环境、晦涩难懂的论文代码以及巨大的技术门槛。好比处于一个需要从零开始烧制砖块、搅拌水泥才能盖房子的时代。而现在,出现了像 ModelScope 这样的平台,它为我们提供了预先提供了很多图纸、结构、甚至是成品,让AI应用的构建变得像搭积木一样简单高效。
ModelScope(中文名:魔搭社区)是由阿里巴巴达摩院在2022年发起并开源的一站式模型托管与服务平台。它的核心目标是为AI模型开发者、应用开发者以及学术研究人员提供一个开放、协作、共享的生态系统。
你可以把它理解为 “AI模型的Github” 或 “中国版的Hugging Face” 。它汇聚了来自达摩院、清华、北大、浙大等顶尖学术机构以及澜舟、元乘象等AI科技公司的高质量预训练模型,覆盖了自然语言处理(NLP)、计算机视觉(CV)、语音、多模态等几乎所有主流AI方向。

ModelScope的核心资产是其不断增长的模型库。截至目前,它已托管了数千个模型,涵盖了:
每个模型都有详细的介绍、许可证、测试数据以及在线体验功能,方便用户快速了解和选择。
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这种设计将复杂的模型加载、数据预处理、推理和后处理全部封装起来,用户只需关心输入和输出。
对于希望定制专属模型的用户,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()这大大简化了微调流程,让开发者可以专注于数据和质量迭代。
ModelScope不仅仅是一个代码仓库,更是一个社区。它提供了:
大家都或多或少的在拥抱大模型,很多人可能会混淆 ModelScope 和通义千问,因为它们都来自阿里巴巴并且都与AI相关,它们到底有什么区别。
特性 | ModelScope (魔搭) | 通义千问 (Qwen) |
|---|---|---|
本质 | 一个平台,一个社区,一个生态系统。 | 一个产品,一个具体的AI模型。 |
类比 | 安卓应用商店 / GitHub | 微信 / ChatGPT |
核心内容 | 提供成千上万个不同的AI模型,覆盖视觉、语音、自然语言处理等多领域。 | 本身就是一个大型语言模型(LLM),专注于理解和生成人类语言。 |
关系 | 容器和内容的关系。ModelScope是容器,通义千问是容器里的一个重要内容。 | 是ModelScope平台上托管的其中一个模型。 |
原图:

漫画图:

代码详解
# 导入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,低质人脸图像建议预先人脸增强处理。
【目标场景】
艺术创作、社交娱乐、隐私保护场景,自动化生成卡通肖像。
原图:

去背景后:

代码详解
# 导入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图像上可取得期望效果。
【目标场景】
需要图像抠图的场景,如换背景等。
原图:


替换天空后:

# 导入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编程是革命,同时我们也要革新自己,看到这些优秀的工具如雨后春笋般出现,我们也要实实在在的发展自己的创造力,感叹大模型的无所不能,感谢自己的无所畏惧!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。