我与昇腾那些事(二)

再回首

仔细想想,我使用过的昇腾AI处理器包括Ascend 310、Ascend 310P、Ascend 910,涵盖了训练和推理,也算是比较全面了。就我个人来说,希望更接近于实际应用场景,靠近用户,因而倾向于做应用开发,即将AI算法做成产品化应用。

个人分享

产品化应用涉及所用硬件性能、模型在实际业务中的准确度以及适配平台或服务开发等等,我个人认为是要根据实际情况不断做调整的,比较依赖于对硬件特性的理解和经验。这里,我站在个人开发者或者说学生开发者的角度,分享下我的感受。

首先,要对待部署的模型有一定了解,知道输入节点、输入数据和排布方式,输出节点、输出数据和排布方式,在此基础上确定输入和输出的数据格式,进而明确预处理和后处理。简单来说,围绕模型,向前要知道输入和预处理,向后要知道后处理和输出。这个是核心,而至于具体操作以及所用硬件则是尽可能压榨硬件性能完成模型部署推理。

其次,了解硬件架构和特性。从经济性的角度来说,一般选择低成本而可行的硬件,而最大可能逼近硬件极限,即尽可能用更加亲和所用硬件的操作。以Ascend 310为例,考虑到具体操作计算量和无法直接调度AI Core,可以调整AI CPU和Ctrl CPU的配比来实现资源的分配,再者使用DVPP和AIPP来完成输入视频或图像的解码操作,专用硬件电路效率会更高。而这些都是要根据所用硬件来调整。

最后,从借鉴开始。初次接触,缺乏经验,这时候要多看官方仓库提供的样例代码,先按照README跑通,之后学习代码,有不懂的部分,可以自行打印出来查看,或者到昇腾论坛和仓库提问,也可以按照自己的需求,试着做些修改,并进行验证,这样一点一点尝试,慢慢搞懂,吃透代码,之后就可以基于此,进行自己想要的开发了。

实际操作

下面就简单介绍下如何跑通一个简单的图片分类的官方样例。图片分类从名称上,我们能直观地看出它的作用:按图片所属的类别来区分图片。

那么图片分类是怎么做到这一点的呢?首先要有一个能做到图片分类的模型,我们可以直接使用一些训练好的开源模型,也可以基于开源模型的源码根据我们的需求进行修改,并重新训练,甚至可以去构建适合自己的模型。鉴于我们是跑通就行,此处我们直接使用官方已训练好的开源模型,毕竟这样最简单,也最快。我们以基于Caffe框架的开源模型ResNet-50模型为例说明其输入、输出,以便理解后续的开发场景,先来介绍下输入和输入:

  • 模型对输入要求:输入图片的编码格式为RGB、分辨率为224*224。

  • 模型的输出:Top5置信度的类别标签及其对应置信度。

这个样例是基于Caffe ResNet-50网络(单输入、单Batch)实现图片分类的功能。在该样例中:

  1. 先使用样例提供的脚本transferPic.py,将2张*.jpg图片都转换为*.bin格式,同时将图片从1024683的分辨率缩放为224224。

  2. 加载离线模型om文件,对2张图片进行同步推理,分别得到推理结果,再对推理结果进行处理,输出top5置信度的类别标识。在加载离线模型前,提前将Caffe ResNet-50网络的模型文件转换为适配昇腾AI处理器的离线模型。

好了,我们来运行看看,先来准备下环境,这里我使用的是华为云提供的ECS,规格为AI加速型 | ai1s.large.4 | 2vCPUs | 8GiB | 1 * HUAWEI Ascend 310/1 * 8G,需要特别注意的是,我们使用的是【 CANN 训练营 • 22 年度第三季】 提供的镜像6.0.RC1.alpha001_new(40GB),而关于ECS的购买和连接,大家可以到新手班学习哈,有很详细的视频介绍。

接下来,我们登录购买的ECS,这里我在本地Windows下使用MobaXterm连接,因为默认是root用户登录,而CANN运行用户是HwHiAiUser,这里我们先设置下密码,之后用HwHiAiUser登录。

先来设置密码:

passwd HwHiAiUser
复制

在切换用户之前,我们先改下bash,执行如下命令,并在弹出的界面中选择 :

sudo dpkg-reconfigure dash
复制

再执行如下命令:

ls -l `which sh`
复制

若提示/bin/sh -> bash,表示修改成功。下面切换到HwHiAiUser用户:

su - HwHiAiUser
复制

此时我们在终端看到的应该是“HwHiAiUser”开头了:

接下来下载sample 仓 代码并上传至环境。之后请先进入本次样例所在目录:

cd samples/cplusplus/level2_simple_inference/1_classification/resnet50_imagenet_classification
复制

请注意,下文中的样例目录均指以上目录。

之后获取模型,可以从以下链接中获取ResNet-50网络的模型文件(*.prototxt)、权重文件(*.caffemodel),并以运行用户将获取的文件上传至开发环境的“样例目录/caffe_model“目录下。如果目录不存在,需要自行创建。

ResNet-50网络的模型文件(*.prototxt):单击Link 下载该文件。

ResNet-50网络的权重文件(*.caffemodel):单击Link 下载该文件。

下面将ResNet-50原始模型转换为适配昇腾AI处理器的离线模型(*.om文件)。切换到样例目录,执行如下命令(以昇腾310 AI处理器为例):

atc --model=caffe_model/resnet50.prototxt --weight=caffe_model/resnet50.caffemodel --framework=0 --output=model/resnet50 --soc_version=Ascend310 --input_format=NCHW --input_fp16_nodes=data --output_type=FP32 --out_nodes=prob:0
复制

如下图所示,则表示转换模型成功。

接着准备数据,请从以下链接获取该样例的输入图片,并以运行用户将获取的文件上传至开发环境的“样例目录/data“目录下。如果目录不存在,需自行创建。

https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/aclsample/dog1_1024_683.jpg

https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/aclsample/dog2_1024_683.jpg

下面切换到“样例目录/data“目录下,执行transferPic.py脚本,将*.jpg转换为*.bin,同时将图片从1024683的分辨率缩放为224224。在“样例目录/data“目录下生成2个*.bin文件。


python3.6 ../script/transferPic.py # 不是python3,以免报错
复制

如果执行脚本报错“ModuleNotFoundError: No module named 'PIL'”,则表示缺少Pillow库,请使用pip3 install Pillow --user命令安装Pillow库。

好了,下面只需要按照该样例的 README 继续操作就行了,最终可以得到推理结果如下图所示:

执行成功后,在屏幕上的关键提示信息示例如上图所示,提示信息中的index表示类别标识、value表示该分类的最大置信度,这些值可能会根据版本、环境有所不同,请以实际情况为准。

说明:类别标签和类别的对应关系与训练模型时使用的数据集有关,本样例使用的模型是基于imagenet数据集进行训练的,您可以在互联网上查阅imagenet数据集的标签及类别的对应关系,例如,可单击Link查看。 当前屏显信息中的类别标识与类别的对应关系如下: "161": ["basset", "basset hound"]、 "267": ["standard poodle"]。

好了,至此我们就跑通了这个图片分类样例,大家感兴趣可以深入了解具体代码,还可以自己改改代码,有机会的话,我也会在讲讲后续。

本文使用 文章同步助手 同步

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,980评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,422评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,130评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,553评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,408评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,326评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,720评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,373评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,678评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,722评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,486评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,335评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,738评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,283评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,692评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,893评论 2 335

推荐阅读更多精彩内容