ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!(来自官方文档)
ModelScope提供了模型库,数据集与文档,在拥有ModelScope Library环境的情况下,我们可以使用开放的模型,将模型应用到实际中;也可以对预训练模型进行调优测试;同样也能借助文档了解学习模型的实现方式。
当然,我肯定是不会人工智能开发的,纯纯新手,但是也要借着写测评文章的机会好好玩一下ModelScope模型库
前言:
在这个信息量爆炸的互联网时代,各类视频平台成了我们娱乐消遣的方式之一,当然,我本人每天也喜欢拿着手机刷视频。同样,偶尔也会创作一些视频作品传到平台上。在平台的创作中心里,当我们将自己的视频上传到平台时,往往会对视频进行一个分类分区,这个视频分类在不同的平台有不同的方式。有些平台是需要自己手动去选择视频所属的分类,而有些平台会自动帮我们选择好分类,但是自动分类的结果往往不如我们心意。
在国内某个头部弹幕视频网站中,上传视频时选择的分区是平台自动选择的,很多视频的基本系统平台会帮我一键填写,这里我们上传测试的视频是动漫的番剧,平台自动选择了动画的分区,没有毛病
可是当我们把相同的视频文件,重命名为其他名字,如图中的test,再进行上传时
平台自动分区就不再准确了,而是变为了科技区的计算机技术
虽然咱也不是搞开发的,确实不明白它对上传视频的自动分区是利用哪种技术进行实现的,可能与文件名解析有关。不过可以肯定的是,视频上传时的自动分区,存在很大的误差
回到我们模型测评的话题,在modelscope模型库中提供了这样一个模型:达摩视频分类模型-cv_resnet50_video-category
模型描述:模型采用resnet50网络结构提取视觉特征,采用NextVLAD网络对连续视频帧进行特征聚合。
使用方式:直接推理,对输入的视频片段,输入视频url直接进行推理。
使用场景: 适合主题明确的短视频,视频不超过30秒。
如何使用:提供输入视频,即可以通过简单的Pipeline调用来识别结果。
(模型链接:https://modelscope.cn/models/damo/cv_resnet50_video-category/summary)
使用模型时,我们需要ModelScope环境,平台为我们提供了安装好的在线环境供我们测试,当然我们也可以自己在本地搭建ModelScope library。官方提供了详细的使用文档,不过我这里再简单整理一下在线环境与本地环境的使用。
一、在线测试使用视频分类模型
1.1 在线Notebook实验环境
进入到我们所需要实验的模块页面,在页面的右上角点击【在Notebook中打开】
选择启动实例,可以是CPU或GPU,CPU环境完全免费一次启动可以使用4个小时,自然得白嫖免费的
选择【方式一】,点击【启动】,等待几分钟后即可【查看notebook】,跳转到在线测试平台
不过这里免费的环境有8核32G,比我自己的ECS配置高多了,真是舒舒服服的测试哇
在启动页面,点击【Python3】进入代码调试环境,点击【Terminal】进入linux终端,可以使用pip安装一些其他所需要的库,当然notebook在线环境预装了ModelScope Library,测试使用完全没有问题
1.2 在线环境测试模型
我们在调试框中输入代码范例来进行测试,点击运行即可
from modelscope.pipelines import pipeline from modelscope.utils.constant import Tasks category_pipeline = pipeline( Tasks.video_category, model='damo/cv_resnet50_video-category') result = category_pipeline('1.mp4') print(result)
当然我们需要上传测试视频分类的样本,我这里传了一段国产动漫的视频,直接拖到notebook就行
模型精准的推理出我所传视频的分类,返回了测试结果,分类到【游戏>>短片动画】
{ 'scores': [0.38548532128334045], 'labels': ['游戏>>短片动画']}
二、搭建简易本地短视频分类应用
2.1 本地Notebook实验环境
参考了官方提供的环境配置文档(https://www.modelscope.cn/docs/%E7%8E%AF%E5%A2%83%E5%AE%89%E8%A3%85)
在本地龙蜥系统(推荐使用Anolis接替CentOS)下利用anaconda环境创建python37环境
//Anaconda创建python37环境,名为modelscope
[root@k8s ~]# conda create -n modelscope python=3.7
//进入创建好的modelscope,安装深度学习框架,安装ModelScope library所有领域功能(也可以单独安装)
[root@k8s bin]# source activate modelscope (modelscope) [root@k8s bin]# pip install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple (modelscope) [root@k8s bin]# pip install --upgrade tensorflow -i https://pypi.tuna.tsinghua.edu.cn/simple (modelscope) [root@k8s bin]# pip install "modelscope[audio,cv,nlp,multi-modal]" -fhttps://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html
//漫长的下载安装编译后,进入python交互,输入命令测试环境是否正常
>>> from modelscope.pipelines import pipeline >>> p = pipeline('video-category', model='damo/cv_resnet50_video-category')
//本地测试模型,同样样本执行成功,返回正确分类的结果
>>> result = category_pipeline('/root/1.mp4') >>> print(result)
2.2 安装报错解决
我本地搭建时还是遇到不少缺包少包的报错,我这里再多嘴分享一下叭!
- pip安装modelscope时报没gcc
//安装系统开发环境软件,这个少GCC是我自己没注意的问题
(modelscope) [root@k8s bin]# yum -y install gcc (modelscope) [root@k8s bin]# yum -y groupinstall "Development Tools"
- 导入库 from modelscope.pipelines import pipeline时numpy报错初始化失败
//安装numpy,这里我numpy版本用的是1.21
(modelscope) [root@k8s bin]# pip install numpy==1.21 -i https://pypi.tuna.tsinghua.edu.cn/simple
- 导入damo时报少decord
//少了pip装上就行哈
(modelscope) [root@k8s bin]# pip install decord -i https://pypi.tuna.tsinghua.edu.cn/simple
2.3 ***搭建简易视频上传页面***
我这里利用flask框架,简单写了一张文件上传的页面
(modelscope) [root@k8s app]# cat index.py # coding=utf-8 from flask import Flask,request from werkzeug.utils import secure_filename from modelscope.pipelines import pipeline from modelscope.utils.constant import Tasks app = Flask(__name__) app.config['JSON_AS_ASCII'] = False @app.route('/') #首页 def index(): return '''<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>短视频上传-视频分类测试</title> <link href="https://example-static.oss-cn-beijing.aliyuncs.com/web-framework/style.css" rel="stylesheet" type="text/css"/> </head> <br> <div class="website"> <div class="ri-t"> <h2>短视频上传-视频分类测试</h2> </div> <form action = "http://model-test.tao.com/uploadtest" method = "POST" enctype = "multipart/form-data"> <input type = "file" name = "file" /> <input type = "submit" value="上传"/> </form> </div> </body> </html> ''' @app.route('/uploadtest', methods=['GET', 'POST']) #上传 def upload_file(): if request.method == 'POST': f = request.files['file'] f.save(secure_filename(f.filename)) category_pipeline = pipeline(Tasks.video_category, model='damo/cv_resnet50_video-category') result = category_pipeline(f.filename) checkres = '/'.join(result.get('labels','暂无法自动找到分类~')) fname ='【' + f.filename + '】视频上传成功,视频所对应分类为:' + checkres return fname else: return '文件上传失败' if __name__ == "__main__": app.run(host="0.0.0.0", port=80)
2.4 体验短视频上传后自动分类的效果
运行我们的python代码,页面访问测试都ok
这里我从网络上找了六个测试文件,分别是不同类别不同分区的视频片段,视频大小也有不同,横板竖版都有
本人比较喜欢云撸猫,一天不看个几十只猫猫浑身难受。先测试宠物类视频
上传视频后,自动分类结果显示【生活>>萌宠】,准的!
刷到的彩妆试装推广视频,小姐姐试口红
上传测试
上传视频后,自动分类结果显示【生活>>好物推荐】,牛逼,我以为会是美妆类视频,没想到模型它直接看穿了这是个赤裸裸的带货广告
周董前段日子的新专辑MV视频
上传最伟大的作品
上传视频后,自动分类结果显示【音乐>>MV】,准啊
前几天五菱宏光MINIev发布了敞篷款,不少UP出了测评
上传测试一下
上传视频后,自动分类结果显示【交通>>玩车】,准的可以啊
当然少不了科技区的
上传一个手机测评的视频
上传视频后,自动分类结果显示【数码科技>>手机平板】,精准!
测试电影片段,拿了头文字D的一截
排水渠过弯,上传!
上传视频后,自动分类结果显示【影视>>短片】,可以的,还是很牛逼的
这样的应用方式比文章前面所使用的上传视频自动分类的精准度要高很多,真的很厉害了。我现在贼羡慕会人工智能开发的大佬们5555
其他:
第一希望平台可以开放更多的模型(白嫖脸),我在学习模型使用准备找模型做测试时一开始选择的是:达摩日常行为检测-cv_ResNetC3D_action-detection_detection2d,想借这个测试模块实现【监控家中老人跌倒并自动告警】的应用
准备测试之前还简单想了应用测试场景,但是使用模型时报错,自己这也排不出错,壮壮胆子去群里问了才发现这个模型没有正式发布
其他就是模型库里的模型,文档可以再完善一下,部分模块的应用说明太简略了哈哈
总结:
本次测评对ModelScope的cv_resnet50_video-category达摩视频分类模型做了一个简单的使用测试,测试结果相当精准,平台开放模型库与数据集对开发者学习应用人工智能技术有很大的帮助,像我这样的开发零基础小白也可以简单使用。看到大家对模型有各种各样的骚操作学习到了,有美化人像的还有游戏锁头的,希望模型库和数据集生活中的各个方面有所应用,提升人们的智能生活~